나의 브을로오그으

#6. 프로세스 관리 본문

Computer Science/운영체제

#6. 프로세스 관리

__jhp_+ 2022. 6. 29. 07:51

프로그램 vs 프로세스 (program vs process)

- process, task, job ...

- program in execution : (text + data + stack) area, pc, sp, registers, ...

- 무덤 속 프로그램, 살아 움직이는 프로세스

 

프로세스 상태

- new, ready, running, waiting, terminated

- 프로세스 상태 천이도 (process state transition  diagram)

- 상태 천이는  언제 발생?

 

 

Process Control Block (PCB)

- Task Control Block (TCB)

- 프로세스에 대한 모든 정보

- process state (running, ready, waiting, terminated, new...), PC, registers,

MMU info (base, limit), CPU time, process id, list of open files(현재 사용중인 파일 정보) 등...  

(PCB는 OS 내부의 Process Management안에 들어있다.)

 

 

(하드 디스크에는 많은 job(program)들이 있는데, 이들이 MainMemory로 올라오기 위해서 줄서서 기다린다. 왜? MainMemory는 크기가 작으니까. 따라서 이 줄에 해당하는 통로를 Job Queue라고 한다.

그러면 MainMemory에 올라와있는 job(process)외에 Job Queue에 수많은 Job들이 대기상태로 있는데,

Time-Sharing System에 따라 일정 CPU 시간동안 MainMemory에 올라와 있는 프로세스는 Queue로 쫓겨나고, 순서를 기다리고 있는 Job들이 그 자리를 차지하게 된다.

그런데, 동일한 I/O장치를 사용하는것도 마찬가지이다. I/O장치를 이미 다른 Job이 사용하고 있다면? 이 역시

I/O장치를 위한 Queue가 존재한다.) 

  * Queue도 대기하는 곳마다 이름이 다르다. HardDisk에서 MainMemory로 올라가기 위한 Queue를 Job Queue라고 하고, CPU의 서비스를 받다가 쫓겨나서 다시 Ready상태로 CPU Processor의 서비스를 받기위해 다기하는 Queue를 ReadyQueue라고 한다.

I/O 장치를 사용하려면 ? HardDisk를 사용하려면? 등등 이러한 장치를 사용하기위해 대기하는 Queue를 Device Queue라고 통칭하여 부른다. Terminated상태가(죽음) 되면 줄안서도 됨.)

 

 

자 그렇다면 앞서 말한것 처럼 HardDisk가 MainMemory보다 훨씬 크기 때문에 많은 Job들이 MainMemory에 올라갈 수 없다. 따라서 Job Queue에서 대기하게 되는데, 과연 어떤 Job이 먼저 MainMemory에 올라갈 수 있을까??

제일 쉽게는 그냥 먼저 들어온 Job 부터 차례대로 MainMemory에 올리면 될 것 같지만, 이방법 외에도 다양한 방법이 있고, 다양한 방법이 적용되고 있다.

이것을 결정하는 것을 Job Scheduling이라고 하며, 이것을 결정하는 프로그램을 Job Scheduler라고 하며, 

Job Scheduler 프로그램이나 Queue는 전부 OS내부의 Process Management에 들어있다. 

 

 

*  그리고 Ready상태의 프로세스 중에 어느것을 선택해서 실행해 줄지 결정하는

스케쥴러를 CPU Scheduler라고 한다. (Ready Queue에서 대기중인 작업들 중)

* Device(I/O, Disk)역시 Scheduler가 있다. 이것들을 통칭해서 Device Scheduler라고 한다.

정리 : Process Management내부에는 Job(Process)들이 프로세서(CPU)의 실행(서비스)을 기다리는 Queue가 존재한다. Job Queue, Ready Queue, Device Queue가 있다. 각 Queue안에 있는 어떠한 Job(Process)들을 우선적으로 실행 할 지를 결정하는 것을 Job Scheduler  프로그램이 결정한다.(OS 코드 일부임)

 

 

- Job Queue

  * Job Scheduler

  * Long-term scheduler

(Job Scheduler가 Long-term scheduler인 이유는 Job Scheduler는 Process가 끝나서 Main Memory가 비어있을 때 동작한다. Job Queue에 대기중인 Job을 MainMemory에 올리는데, 이 주기가 길기 때문이다.)

 

- Ready Queue

  * CPU Scheduler

  * Short-term scheduler

(CPU Scheduler가 Short-term scheduler인 이유는 각 process가 I/O 작업을 해야해서 Waiting상태가 되어 다음 process를 실행하거나, time expired가 되어  switching이 일어나는 주기가 굉장히 짧기 때문이다.)

 

- Device Queue

  * Device schdeuler 

 

 

Multiprogramming

- Degree of multiprogramming

(멀티 프로그래밍의 수준(정도) : MainMemory에 Process의 갯수를 의미)

- I/O-bound process vs CPU-bound process

(I/O-bound가 되었다라는 의미는, process가 주로 I/O작업을 하는 프로세스를 의미 ex) 워드 프로세스 등)

(CPU-bound Process도 역시 CPU 작업을 많이 하는 process를 의미 ex) 기상관측, 슈퍼컴퓨터 사용 등) 

(참고로 I/O-bound process만 너무 반복적으로 이루어지거나(MainMemory에 I/O-bound process만 올라감...)

반대로 CPU-bound process만 너무 반복적으로 이루어지지 않도록 하는 것도 Job Scheduler의 역할임.)

 

- Medium-term scheduler

  * Swapping

(예를 들어 하나의 서버 컴퓨터를 여러면의 사용자가 이용중이라고 하자. (사용자 A, B, C)

그리고 사용자 A, B, C의 프로그램이 메모리에 올라와서 실행중이다. 이 때, 사용자 B의 프로세스가

5분동안 사용을 않하는 것을 OS가 감시하다가 발견하였다. 이러면 OS는 현재 B 프로세스에 뭔가 문제가 있다고 생각하고, 해당 B 프로세스를 하드디스크로 옮겨놓고, B 프로세스가 있던 자리에 새로운 프로세스 D를 올린다. 메모리는 비싼 자원이기 때문에 이처럼 SWAP이 이루어지는데 이렇게 프로세스 B가 쫓겨나는 것을 Swap Out이라고 한다.)

Swap Device : Swap Out이 일어나서 저장되는 대상 장치(하드디스크)

Swap In : B 프로세스가 Swap Device로 이동했다가 재개되면서 다시 MainMemory로 올라오는 것을 의미

(그렇다고 반드시 B 프로세스가 원래 할당되었던 메모리의 자리로 가는것은 아님.)

이런걸 통칭해서 Swapping이라고 한다.

그래서 이러한 스케쥴링을 하는 Scheduler이기에 Short-term scheduler보다는 더디게 일어나고,

Long-term scheduler보다는 더 많이 일어나므로 Medium-term scheduler라고 한다.

 

- Context switching (문맥전환)

  * Scheduler

  * Dispatcher