프로세스
정의 : 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것을 말한다.
code data stack heap을 모두 따로 할당받는다.
- data - 전역 변수
- stack - 함수의 매개변수, 복귀주소와 같은 임시자료
- heap - 동적할당 메모리
프로세스 제어 블록(Process Control Block, PCB)
정의 : PCB는 특정 프로세스에 대한 중요한 정보를 저장하고 있는 운영체제의 자료구조이다.
생성 : 프로세스의 생성과 동시에 고유한 PCB를 생성한다.
존재 이유 : context swtich를 위해
관리 : 링크드 리스트로 관리.
프로세스 생성 과정
- PCB가 생성되며 OS가 실행한 프로그램의 코드를 읽어들여 프로세스에 할당된 메모리의 Text 영역에 저장한다.
- Text segment(혹은 Code segment)는 실행가능한 명령어를 포함하고 있는 메모리 영역이다.
- 초기화된 전역 변수 및 static 변수를 data 영역에 할당.
- HEAP과 Stack은 초기 메모리 주소 초기화
- 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 |