(운영 체제) 프로세스 및 스레드

프로세스와 스레드를 다룹니다.

프로세스란 무엇입니까?

  • 컴퓨터에서 지속적으로 실행되는 컴퓨터 프로그램입니다.

  • 종종 예약된 작업이라는 용어와 거의 동의어입니다.

절차 및 프로세스

  • 프로그램: 하드디스크 등에 저장된 실행 가능한 코드를 말합니다.

  • 프로세스: 프로그램 자체와 그 상태가 메모리에서 실행되도록 프로그램을 실행하는 작업 단위를 말합니다.

공정 특성

  • 모든 프로세스에는 적어도 하나의 스레드(메인 스레드)가 있습니다.

  • 각 프로세스는 별도의 주소 공간에서 실행되며 한 프로세스가 다른 프로세스의 리소스에 액세스할 수 없습니다.

  • 프로세스가 다른 프로세스의 리소스에 액세스하려면 프로세스 간 통신(IPC)을 사용해야 합니다.

  • 프로세스는 운영 체제에서 시스템 리소스를 할당합니다.

  • 할당된 시스템 리소스의 예로는 CPU 시간, 주소 공간 및 별도의 메모리 영역이 있습니다.


(출처) https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

독립 메모리 영역의 구조는 그림과 같이 Code, Data, Stack, Heap입니다.

  • 코드 영역: 프로세스가 실행할 코드를 기계어로 저장하는 공간입니다.

    (컴파일 타임에 결정, 읽기 전용)
  • 데이터 영역: 전역 변수와 정적 변수를 저장하는 공간입니다.

    전역 변수 또는 정적 변수를 참조하는 코드는 컴파일 후 데이터 영역의 주소 값을 가리킵니다.

    (컴파일 시 결정, 읽기-쓰기: 실행 중 변경 가능)
  • 힙 영역: 개발자가 관리하는 메모리 영역으로 힙 영역에 메모리를 할당하는 것을 동적 할당이라고 합니다.

    (실행시 결정, 스택보다 더 많은 메모리 공간을 할당할 수 있지만 데이터 읽기 및 쓰기가 느림)
  • 스택 영역: 함수에서 선언한 로컬 변수, 매개 변수, 반환 값 및 반환 주소를 저장합니다.

    스택의 LIFO(Last In First Out) 방식에 따르면 함수가 호출되면 기록되고 호출이 완료되면 제거된다.

    (컴파일 시 결정, 고정 크기로 인해 스택 오버플로 오류가 발생할 수 있음)

스레드란 무엇입니까?

  • 프로그램, 특히 프로세스 내에서 실행되는 프로세스 단위입니다.

  • 프로세스는 할당된 리소스의 실행 단위를 사용합니다.

스레드의 특성


(출처) https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

  • 스레드는 프로세스의 코드 영역, 데이터 영역, 힙 영역, 스택 영역 중 하나의 스택만 할당하고 코드 영역, 데이터 영역, 힙 영역을 공유한다.

  • 스레드는 프로세스 내의 주소 공간 또는 리소스가 동일한 프로세스 내의 스레드 간에 공유될 때 실행됩니다.

  • 스레드는 동일한 프로세스의 여러 스레드와 동일한 힙 공간을 공유합니다.


    반면에 한 프로세스는 다른 프로세스의 메모리에 직접 액세스할 수 없습니다.

인용하다

https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

(OS) 프로세스와 스레드의 차이점 – Heee’s Development Blog

한 번에 한 걸음씩 먼 길을 간다.

gmlwjd9405.github.io

https://github.com/Seogeurim/CS-study/tree/main/contents/operating-system

GitHub – 서그림/CS-study: 진정한 컴퓨터 엔지니어가 되기 위한 지식 정리 공간

진정한 컴퓨터 엔지니어가 되기 위한 우리의 지식 조직 공간. GitHub에 계정을 생성하여 서그림/CS-스터디 발전에 기여해 주세요.

github.com

https://en.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4#

프로세스 – Wikipedia, 모두를 위한 백과사전

무료 백과사전 Wikipedia. –>

en.wikipedia.org

https://en.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85)

스레딩(컴퓨팅) – Wikipedia, 프리랜서 백과사전

무료 백과사전 Wikipedia. 프로세스는 두 개의 스레드를 실행합니다.

스레드는 프로그램 내에서, 특히 프로세스 내에서 실행되는 프로세스 단위입니다.

일반적으로 말하면

en.wikipedia.org