3장: 본격적인 내용
Process: Program in execution -> Active entity
<-> Program: passive entity
프로그램을 클릭하면 그게 프로세스가 되어 메모리에 올라가고 Stack, Heap, Data, Text로 구성됨
I/O-bound process: I/O 작업을 많이 하는 프로세스
CPU-bound process: CPU 작업을 많이 하는 프로세스
프로세스 상태 전이: NEW, READY, WATING, RUNNING, TERMINATED (Process lifecycle)
NEW: 프로세스 생성 시
READY: CPU 할당 대기
RUNNING: CPU 할당 받음
WATING: RUNNING에서 I/O 요청 받음, I/O 끝나면 READY로 돌아감
TERMINATED: 프로세스 종료
PCB(Process Control Block): Process에 관한 정보 저장
Context switch: $P_0$가 실행되다가 $P_1$로 전환될 때는 그 시점의 $P_0$의 상태 정보(Context)를 $PCB_0$에 저장하고, $P_1$의 실행이 끝나 다시 $P_0$을 실행할 때 $PCB_0$에서 정보를 읽어와 $P_0$이 실행된다.
Context switch를 하는 동안에는 아무것도 못 하기 때문에 순수 overhead가 된다 -> 짧을수록 좋다
Process scheduling
자원은 물리적으로 한정되어 있으므로 여러 개의 프로세스가 동시에 사용하려면 운영체제라는 중재자가 필요하다.
스케줄링 작업이 필요하다 = 대기 queue가 필요하다.
Job queue
Ready queue: CPU 할당(실행)을 기다리는 Queue
Device queue: 각 Device(HDD, I/O/...) 사용을 기다리는 Queue
Scheduler
Short-term scheduler: Ready queue의 프로세스 중 어느 프로세스에 CPU를 할당할 것인가?
Long-term scheduler(Job scheduler)
Process mix: I/O-bound process와 CPU-bound process를 잘 섞어 줘야 함
-> Long-term scheduler가 Degree of multiprogramming을 결정한다.
Mid-term scheduler: Virtual memory - swapping
IPC(Inter-Process Communication)
Message passing
$P_A$가 $P_B$에게 Message를 주려면
$P_A$가 운영체제에게 message를 주고, 운영체제가 그 message를 $P_B$에 줌
Shared memory
두 프로세스가 접근할 수 있는 메모리 영역(Shared memory) 설정
Producer는 Buffer에 쓰고, Consumer는 Buffer에서 읽어오는 식으로 communication한다.
이 Buffer는 공유되어야 하므로 Share memory 영역에 넣음
Synchronization
Producer와 Consumer가 동시에 buffer에 접근하면 buffer 내 data가 깨질 수 있다.
'강의노트 > 운영체제' 카테고리의 다른 글
[운영체제] Term project: Nachos (0) | 2021.03.28 |
---|---|
[운영체제] 3주차: Thread (0) | 2021.03.23 |
[운영체제] 3주차: Review (1) (0) | 2021.03.22 |
[운영체제] 2주차 (3) (0) | 2021.03.14 |
[운영체제] 2주차 (2) (0) | 2021.03.13 |