프로세스란 하드디스크에 있는 프로그램이 메모리에 올라와 있는 것을 의미한다. Task 혹은 JOB이라고도 불린다. 프로세스는 메모리에 올라와서 종료될 때까지 여러 state를 겪는다.
running -> waiting -> ready
running 상태에 있는 프로세스가 프린트(I/O) 작업을 수행해야 한다. 더 이상 CPU가 이 프로세스에 시간을 할애할 필요가 없다. CPU는 그다음 프로세스로 넘어가 그 프로세스를 running 상태로 바꾼다. 기존의 프로세스는 waiting 상태가 된다. waiting 상태에 있다가 프린트 작업이 끝나면 다시 ready 상태로 된다.
running -> ready
TSS 즉 시분할 시스템에서는 프로세스에 할당되어 있는 CPU 시간이 정해져 있다. 따라서 프로세스에 할당된 시간이 지나면 ready 상태로 된다.
PCB는 프로세스에 대한 모든 정보가 모여있는 곳으로 Task Control Block(TCB)이라고도 한다. 각각의 프로세스마다 PCB가 따로 존재한다. PCB들은 OS의 Process management가 관리한다. PCB에 들어있는 정보는 다음과 같다.
프로세스는 한번에 하나만 수행되므로 나머지 프로세스들은 대기를 해야 하는데 이때 큐를 사용한다.
job queue : 하드디스크에 있는 프로그램이 메인 메모리에 올라오기 위해 기다리는 큐.
ready queue : CPU 할당 순서를 기다리는 큐.
device queue : I/O 장치를 사용하기 위한 큐, 각 장치마다 큐 존재.
job queue, ready queue, device queue 모두 OS의 Process management에 들어있다. 또한 queue안에는 PCB들이 줄을 서서 대기한다.
큐 안의 프로그램들의 순서를 정해주는 과정을 스케쥴링이라 하고 이러한 프로그램을 스케쥴러 프로그램이라 부른다. 스케쥴러 프로그램은 OS의 Process management에 코드로 들어있다.
job queue 안의 프로세스들의 순서를 정해주는 것을 job Scheduler라고 한다. job Scheduler는 long term Scheduler라고도 부른다. 메모리가 꽉 차있는 경우를 생각해 보자. job Scheduler는 프로세스가 완전히 끝나고 메모리가 비워져야 일어나는데 이러한 일은 자주 일어나지 않고 대략 몇 분 간격으로 일어나기 때문이다. 또한 job Scheduler는 CPU/IO bound process들을 적절히 섞어서 올리는 것이 중요하다.
CPU bound process : 프로세스가 하는 일들이 주로 CPU를 사용하는 것, 대표적으로 일기예보.
I/O bound process : 프로세스가 하는 일들이 주로 I/O 관련 작업, 대표적으로 word 같은 문서 편집.
ready queue 안의 프로세스들의 순서를 정해주는 것을 CPU Scheduler라고 한다. CPU의 스위칭은 굉장히 빠르므로 CPU Scheduler은 short term Scheduler라고도 부른다.
device queue 안의 프로세스들의 순서를 정해주는 것을 device Scheduler라고 한다. device Scheduler는 print Scheduler, disk Scheduler 등으로 구성되는데 통칭해서 device Scheduler라고 한다.
OS의 역할 중 하나는 성능 향상이다. 만약 메인 메모리에 A라는 프로세스가 활동을 하지 않는다면 이 프로세스에 CPU time을 할애하는건 비효율적이다. Medium term Scheduler는 주기적으로 메인 메모리에 있는 프로세스들을 검사하여 하드디스크로 옮길 프로세스를 찾아서 옮겨준다.
이러한 과정을 통칭해서 swapping이라고 한다. Process management는 비어있는 메모리에 다른 프로세스를 올리거나 A와 C에 더 할당하는 식으로 효율적으로 관리할 수 있다.