Computer Science/운영체제

프로세스(Process)와 스레드(Thread)

김세진 2021. 11. 6. 18:11
반응형

프로세스(Process)


  • 현재 실행 중인 프로그램을 의미
  • 운영체제로부터 주소 공간, 파일, 메모리 등을 할당받음
  • 프로세스마다 고유한 PCB(Process Control Block)이 존재함

      1. 프로세스 상태 : new, ready, running, waiting, terminated 등의 상태를 저장
      2. 프로세스 식별자(PID, Process IDentity number) : 프로세스 식별을 위한 각 프로세스의 고유한 번호
      3. 프로세스 카운터 : 프로세스가 다음에 실행할 명령어의 주소
  • 프로세스는 각각 독립된 메모리 영역을 할당받음 (Code, Data, Stack, Heap)
    • Code(text) : 프로세스가 실행할 코드가 담긴 영역으로, 컴파일 타임에 결정된다. 코드 변경이 불가능하도록 Read-Only 형태로 저장된다.
    • Data : 전역, Static 변수가 저장되는 공간
    • Stack : 함수에서 다른 함수 실행과 같은 서브루틴에 대한 정보를 저장(재귀). 재귀함수의 깊이가 너무 깊거나 지역변수가 지나치게 많아 stack 영역을 초과하면 stack overflow 오류가 발생함.
    • Heap : 다른 영역과 다르게 프로세스 런타임에 동적으로 할당

 

스레드(Thread)


  • 프로세스 내에서 실행되는 흐름의 단위
  • 프로세스의 Code, Data, Heap은 공유하고 Stack 부분만 각각의 스레드에 할당됨
    • 따라서 각각의 스레드는 다른 스레드와 프로세스의 Code, Data, Heap 영역은 공유하며 실행된다.
    • 일반적으로 프로세스는 메인 스레드라고 하는 단일 스레드로부터 시작한다.

 

  • 하나의 프로세스에서 여러 스레드를 실행하여 자원을 효율적으로 사용하는 것을 멀티 스레딩이라고 함
반응형