CS/운영체제

프로세스와 쓰레드의 차이

:)jun 2023. 9. 12. 23:19

프로세스

정의 : 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것을 말한다.

code data stack heap을 모두 따로 할당받는다.

  • data - 전역 변수
  • stack - 함수의 매개변수, 복귀주소와 같은 임시자료
  • heap - 동적할당 메모리

프로세스 제어 블록(Process Control Block, PCB)

정의 : PCB는 특정 프로세스에 대한 중요한 정보를 저장하고 있는 운영체제의 자료구조이다.

생성 : 프로세스의 생성과 동시에 고유한 PCB를 생성한다.

존재 이유 : context swtich를 위해

관리 : 링크드 리스트로 관리.

프로세스 생성 과정

  1. PCB가 생성되며 OS가 실행한 프로그램의 코드를 읽어들여 프로세스에 할당된 메모리의 Text 영역에 저장한다.
    • Text segment(혹은 Code segment)는 실행가능한 명령어를 포함하고 있는 메모리 영역이다.
  2. 초기화된 전역 변수 및 static 변수를 data 영역에 할당.
  3. HEAP과 Stack은 초기 메모리 주소 초기화
  4. PCB에 여러 정보가 기록되면 Ready Queue에서 CPU를 할당받기까지 대기한다.

프로세스 종류

  • 자식 프로세스
    • fork로 자식 프로세스를 만든 상태, 부모의 데이터, 힙, 스택, PCB 복사
  • 데몬 프로세스
    • 백그라운드에서 동작하면서 특정한 서비스를 제공하는 프로세스
  • 고아 프로세스
    • 부모 프로세스가 먼저 종료되어 고립된 자식 프로세스, 자식 프로세스의 부모 프로세스를 1(init 프로세스)로 바꿔준다.
  • 좀비 프로세스
    • 자식 프로세스가 먼저 종료되었음에도 불구하고 부모 프로세스로부터 작업 종료에 대한 승인(wait)을 받지 못한 프로세스 - 부모에서 자식 조회하고 싶을 때가 있기 떄문에 커널은 자식 프로세스가 종료되도 최소한의 정보를 가지고 있다. 종료되었지만 삭제되지 않았다.

'CS > 운영체제' 카테고리의 다른 글

프로세스 상태 전이  (0) 2023.09.16
프로세스 스케줄러  (0) 2023.09.15
멀티 쓰레드 vs 멀티 프로세스  (0) 2023.09.14
Context Switching  (0) 2023.09.13
운영체제란?  (0) 2023.09.11