컴퓨터과학(CS)/운영체제

프로세스 관리

sondiaa 2022. 1. 26. 22:23

 

프로그램 vs 프로세스  = task = job

프로그램은 하드 디스크에 있고 프로세스는 메모리에서 실행중인 프로그램이다.

 

프로세스의 상태

new -> ready  <-> running -> (waitng  -> ready) or terminiated 

 

ready: 실행준비가 다 되었다, TSS의 경우 I/O를 안만나도 일정 시간이 지나면 running에서 ready로 강제로 스위칭된다.

running: CPU가 프로그램을 실행

waiting: I/O을 할 때 혹은 

terminated: 프로그램 종료

 

 

PCB(Process Control Block)

다른 말로 TCB(Task Control Block)이라 하며 이 안에 프로세스에 대한 모든 정보가 있다.

일정 시간 후 다시 작업하기 위해 기록해두는 것이다.

 

PCB는 OS안의 프로세스 관리 부서안에 있음.

주민등록정보와 비슷하다고 생각하면 된다.

프로세스 큐

프로그램은 바로 메모리에 올라가지 못하고 큐에 저장되어 차례를 기다린다. (job queue)

메인 메모리에 올라와도 CPU 서비스를 기다린다. (ready queue)

I/O을 사용하려 해도 차례를 기다린다. 각 장치를 기다리는 큐가 존재(device queue)

그러나 terminated로 가는 것은 기다리지 않는다.

 

job queue에 대기한 것 중 어떤 것을 올려야 할까?

job 스케쥴링은 long term 스케쥴러이다. -> 프로세스가 끝나고 메모리가 비워져야지 결정할 수 있으므로 수 분이 걸린다.

해당 프로그램은 OS안에 코드로 들어있다.

 

CPU 스케쥴러는 short term 스케쥴러이다. -> 어떤 프로그램을 실행시킬지 1초에 수 십 ~ 수 백번 스위칭이 빠르게 일어나야하기 때문

 

device queue는 device 스케쥴러가 있으며 각 장치마다 스케쥴러가 각각 존재한다.

 

멀티 프로그래밍

한 메모리에 여러 프로그램을 올리는 것으로 동시에 실행하지는 않는다.

 

degree of multiprogramming

메인 메모리에 프로세스가 몇개 올라올 수 있나?

 

I/O bound process: 주로 I/O 관련 작업(입출력) ex) 워드, 한글

CPU bound process: 주로 CPU를 사용하는 작업(계산) ex) 일기예보

컴퓨터는 I/O bound, CPU bound가 골고루 되도록 job 스케쥴러가 적절하게 작업을 믹스한다.

따라서 하나가 놀지 않도록 한다.

 

medium-term 스케쥴러(OS가 메인메모리에서 몰아낼 프로세스를 정한다.)

자리를 비운 process의 일이 없으면 해당 프로세스를 메모리에서 쫓아낸다. 그 후, 다른 프로세스를 올리거나 기존 다른 작업에게 나눠준다. -> 이것을 swap out이라고 한다.

 

일반적은 하드디스크는 swap device(= backing system) + 파일 시스템으로 구성된다.

swap device로 쫓겨나고 다시 돌아오면 프로그램이 동작해야 하므로 다시 메모리를 할당해주는 것을 swap in이라 한다.

 

이러한 과정을 swaping이라고 한다.

또한 다시 돌아갈 때 원래의 자리로 돌아간다는 보장이 없으며(OS가 추적 및 기억) 비어있는 다른 자리로 갈 수 있다.