PCB(프로세스 제어 블록), multi process?
2024. 1. 17. 15:12ㆍCS/운영체제
pcb
- process가 현재 어떤 상태로 수행되고 있는지에 대한 총체적인 정보를 context라고 하는데, 이러한 context정보는 pcb에 저장한다.
- pcb는 운영체제가 프로세스를 표현한 자료구조로, pcb에는 프로세스의 중요한 정보가 있기때문에 일반사용자가 접근하지 못하도록 커널 메모리 영역안에 저장이 된다.
- pcb는 커널의 위치하며, 이 메모리 영역은 보호를 받으면서도 비교적 접근하기 편리하기 때문이다.
- pcb에 담기는 정보
- pid
- 레지스터 값
- 레지스터값이 pcb에 담기는 이유
- 프로세스는 자신의 실행차례가 오면, 이전까지 사용한 레지스터값을 복원하여 다시 실행을 재개하기 때문이다.
- 즉, 자신의 실행차례가 오면, 이전까지 실행한 것을 재개하기 위해서!
- 레지스터값이 pcb에 담기는 이유
- 프로세스 상태
- 실행, 준비, 봉쇄
- running : 프로세스가 cpu를 점유하고 명령을 수행중인 상태
- ready : cpu만 할당받으면 즉시 명령을 수행할 수 있는 상태
- blocked : cpu를 할당받아도 명령을 수행할 수 없는 상태 (ex: i/o작업을 기다리는 경우)
- 실행, 준비, 봉쇄
- cpu스케줄링 정보
- 메모리 정보
- 사용자 파일과 입출력파일 정보
multi process
- 동일한 작업을 수행하는 단일 스레드 프로세스를 여러개 실행하는 것을 multi process라고 한다.
- 프로세스끼리는 남남처럼 실행되면서 자원을 공유하지 않는다.
multi thread
- 하나의 프로세스를 여러 스레드로 실행
- 스레드끼리는 같은 프로세스내의 자원(code, data, heap)을 공유하며 실행된다.
- 위 그림 양쪽 모두 "hello, os"가 3번 출력된다.
- 멀티 프로세스(왼쪽)
- 멀티 프로세스는 세번 fork()한 것으로, fork()는 code, data, heap, stack영역 등이 모든 자원이 복제되어 저장된다.
- 메모리 주소를 제외하면, 모든 것이 동일한 프로세스 3개가 메모리에 적재된다.
- 멀티 스레드(오른쪽)
- 하나의 프로세스를 여러 스레드로 실행한다.
- 프로세스의 자원을 공유하며 실행한다.
'CS > 운영체제' 카테고리의 다른 글
프로세스끼리 협력하는 방법 (0) | 2024.01.17 |
---|---|
프로세스 수행 상태 변화과정, 중기 스케줄러(=Swapper) (0) | 2024.01.17 |
프로그램, 프로세스, 프로세스 주소공간, 스레드 (0) | 2024.01.17 |
좀비프로세스와 고아프로세스 (0) | 2024.01.15 |
프로세스 관리 (0) | 2024.01.15 |