프로세스 관리
CPU를 프로세스한테 어떻게 잘 나눠주는가에 대한것.
Process
실행중인 프로그램.
프로그램은 무덤속에 있는것. 프로세스는 살아있는것.
program in execution: text + data + stack, pc, sp, registers, …
프로세스의 상태
new - 메인 메모리로 올라온 상태.
ready - 실행할 준비가 모두 다 된상태 ( waiting이 끝나도 ready로 돌아옴)
running - CPU가 실행중인 상태 (CPU를 잡게된 상태)
waiting - 기다리는 상태. ( hwp 프로그램이 프린터를 요청하고 기다림. 즉 IO를 만나는 경우에도 wating상태가 된다,)
terminated - 끝난상태.
ready, running, wating의 반복으로 프로세스가 동작
타임쉐어링 시스템은 일정시간이 지나면 바로 ready 상태로 간다
PCB(Process Control Block )
Task == Process
프로세스 제어 블록이며 Task Control Block (TCB) 이라고도 함.
PCB는 프로세스에 대한 모든 정보를 담고있다.
하나의 프로세스에 대해 PCB를 갖고있다. 다른 프로세스로 처리가 넘어가다러도 다시 돌아올 수 있도록 관리.
상태정보, PC(지금은 몇번지인지. 번지정보), registers, MMU info (base, limit), CPU time(CPU 이용시간), process id, list of open files(얘가 지금 어떤파일을 사용하고 있는지)…
PCB는 OS의 프로세스 관리 부서(프로세스 매니지먼트,모르겠으면 이전포스팅 참고) 안에 들어있다.
모든프로그램은 원래 하드디스크 안에 들어있다.
여러가지 Queue
하드디스크에서 메모리로 올라가기 위해서는 줄서서 기다려야한다. 그런것을 Job queue
라고 한다.
메인메모리에 올라와서 CPU를 받으려면 줄서야 하는데 이를 Ready queue
라고 한다.
I/O를 사용하려 해도 줄서서 기다려야 한다. 이를 Device queue
라고 한다.
I/O를 끝내면 ready상태로 가는데 여기서도 줄서서 기다려야 한다.
Job scheduling(Long-term scheduler)
하드디스크에서 메인메모리에 올라가기 위해 job queue에 대기하는 프로그램중 어느놈을 먼저 올려야하는지에 대한것을 Job scheduling(Long-term scheduler)
라 한다. 잡 스케줄링은 역시 O/S 안에 프로세스 관리안에 존재한다.
일반적으로 프로세스가 끝나고 메모리가 비워져야 일어나기 때문에 Long-term scheduler 라고도 한다. 즉 스케줄러가 일어나는 시간이 몇분이 걸린다.
CPU Scheduler( Short-term scheduler )
메모리에 올라온 프로세스들은 CPU를 받기위해 줄서있는데 어느놈을 선택해서 서비스해줄지에 대한것을 CPU Scheduler( Short-term scheduler )
이라 한다.
메인 메모리에 여러 프로그램이 있는데 스위칭이 빠르게 일어난다. 1초에 수십번,수백번도 발생한다. 그래서 Short-term scheduler 라고도 부른다. 다른 스케줄링 보다도 가장 중요한 스케줄링이다.
Device Scheduler
디바이스 서비스를 받기위해 기다리는것을 Device Scheduler
이라 한다.
멀티프로그래밍
메인메모리에 하나의 프로그램, 프로세스를 올리는것이 아니라 여러개를 올리는것.
Degree of multiprogramming
- 멀티프로그래밍의 정도 ( 메인메모리에 몇개의 프로세스가 올라와있는가)
프로세스의 구분
프로세스는 크게 두가지로 나눌 수 있다,
i/o-bound : 프로세스가 하는게 주로 I/O를 사용하는것(ex. 워드프로세서)
CPU-bound process : 프로세스가 주로 cpu를 사용함.(ex. 일기예보와 같은 계산)
O/S는 작업을 적당히 섞어서 잡 스케줄링결과로 CPU 혹은 IO에만 작업이 치중해 한쪽이 놀지 않도록 한다.
Medium-term scheduler
서버컴퓨터에 여러명이 사용중이라 가정하자. B라는 사람이 심심해서 커피를 마시러 갔다하자. 그동안 B를 위한 메모리는 올라와있지만 CPU는 아무역할도 하지 않는다. 즉 낭비다. B를 위한 자원을 쫒아내는것이 이득인데 이를 위해 디스크로 쫒아내고 비어있는 메모리공간을 확보한다. 여기서 쫒아내는 것을 Swap out
라고 한다. 이처럼 디스크를 프로세스 이미지를 쫒아내는 목적으로 사용하는것을 swap device
라고 한다. 다시 B가 커피를 마시고 돌아와 마우스를 움직이면 Swap device로 갔던 프로세스를 불러들이는데 이를 Swap in
이라 한다. swap device로 swap in되고 swap out 되는것을 Swapping 이라 한다.
이때 쫒겨났을때 쫒겨난 자리로 그대로 들어가는것을 보장하지는 않는다.
즉 Medium-term scheduler 는 현재 사용되고 있지 않은 어떤놈을 쫒아낼지 결정하는것이다.