본문 바로가기

[운영체제] 3주차: Review (2)

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