2021. 1. 15. 20:50ㆍ운영체제/프로세스
프로세스 스케줄링 목적
프로세스 스케줄링은 CPU가 끊임없이 일할 수 있도록 스케줄을 짜주는 것을 의미한다. 한정된 자원으로 높은 성능을 이끌어내기 위해서는 CPU가 놀지 않고 계속 일을 할 수 있게 해줘야하기 때문에 적절한 타이밍에 연속적으로 일을 할 수 있도록 스케줄을 짜줘야한다.
프로세스 스케줄링의 목적은 시스템 성능을 향상시키는 것이며, 구체적으로 정리하자면 다음과 같다.
- 공평성: 모든 프로세스가 시스템 자원을 공평하게 배정받아야 하며, 특정 프로세스를 배제하지 않는다.
- 효율성: 시스템 자원은 노는 시간 없이 일을 해야한다.
- 안정성: 우선 순위를 사용하여 중요한 프로세스가 먼저처리되도록 해야한다.
- 반응시간 보장: 응답이 없는 경우, 사용자는 시스템이 멈춘 것으로 가정하기 때문에 시스템은 적절한 시간 안에 프로세스 요구에 반응하도록 한다.
- 무한 연기 방지: 특정 프로세스 작업이 무한이 연기되지 않도록 한다.
아무리 컴퓨터라도 위에 나열한 목적을 모두 충족할 순 없다. 따라서 스케줄링은 목적에 맞게 고려하여 사용되야한다.
비 선점 스케줄링과 FCFS 알고리즘
비 선점 스케줄링은 프로세스가 자원을 할당받으면 스스로 자원을 반납하거나, 작업이 끝날 때까지 프로세스 전환이 일어나지 않는다. 이런 이유로 우선순위가 높은 스케줄링이 오더라도 작업 순서는 바뀌지 않는다. 하지만 자원을 할당받은 프로세스의 응답시간이 길 경우, 모든 작업 처리 시간에 영향을 준다는 단점이 있다.
FCFS 알고리즘(선입 선출 알고리즘)은 비 선점 스케줄링 기법을 사용한다. 먼저 도착한 순서에 따라 처리하기 때문에 반응형 보다는 배치형(일괄처리) 시스템에 적합하다. 비 선점 스케줄링을 사용하고 있어서 오버헤드가 낮다는 장점을 가지고 있지만, 긴 수행시간을 가지고 있는 프로세스가 자원을 점유하고 있을 경우, 다른 프로세스들이 그만큼 대기시간을 갖게된다. 이러한 현상을 Convey Effect라고 부른다.
FCFS(선입 선출) 알고리즘은 어떻게 동작될까? 네 개의 프로세스를 예시로 FCFS(선입 선출) 알고리즘이 어떻게 동작하는지 설명하려한다. [그림 2]는 각 프로세스의 도착시간(Arrival Time), 대기 시간(Waiting Time), 소요 시간(Turnaround Time), 정규화(Nomalized)을 나타낸 테이블이다.
대기시간, 왕복시간, 정규화시간에 대한 간략한 설명과 계산하는 공식은 다음과 같다.
- 대기시간: 프로세스가 생성되어 작업을 마치고 종료될 때까지 큐에서 기다리는 시간, 공식: 왕복 시간 - 수행 시간
- 소요시간: 프로세스가 생성되어 작업을 마치고 종료될 때까지의 걸리는 시간, 공식: 종료 시간 - 도착한 시간
- 정규화(Nomalized): 일의 효율성 측정, 총 소요된 시간, 공식: 수행시간 / 대기시간
이제 [그림 2]를 이용하여 FCFS 알고리즘이 어떻게 동작하는지 설명하도록 하겠다. 먼저, P1이 제일 먼저 레디 큐에서 나와 3초 동안 일을 한다. 1초에 P2가 도착은 하였으나, FCFS는 비선점 알고리즘이기 때문에 P1의 작업이 완전히 끝날 때까지 기다려야한다. 프로세스 1이 0초에 도착해서 3초에 작업을 끝냈기 때문에 대기시간, 소요시간은 3초가 된다. 일의 효율성을 측정하는 정규화 값은 1이 된다.
P1은 완전히 작업이 종료됐다. 따라서 두 번째로 도착한 P2가 3초부터 일하기 시작한다. P2의 수행시간은 7초다. 따라서 3초에 일을 시작한 P2는 10초에 일을 완전히 끝낸다. P2가 처음으로 도착한 시간은 1초고, 작업을 완료한 시간은 10초이기 때문에 소요시간은 9초가 된다. 또한 1초에 도착해서 일하기까지 2초동안 대기했으므로 대기시간은 2초가 된다. 그리고 정규화 값은 대략 1.3이 된다.
P2의 작업이 종료되었기 떄문에 세 번쨰로 도착한 P3가 준비 큐에서 나와 프로세서를 할당받아 일을하기 시작한다. P3는 10초에서 14초까지 일을 한다. 따라서 소요시간은 10이다. 그리고 대기시간은 6초가 된다. 정규화 값은 10 / 4 의 값인 2.5가 된다.
마지막으로 P4가 레디큐에서 나와 일을 진행한다. P4는 14초에서 16초까지 작업을 진행했다. 따라서 대기시간은 4초이고, 소요시간은 6초가 된다. 정규화 값은 6 / 2의 값인 3이 된다.
Convey Effect
P1에서 P4까지 모든 작업을 처리하는데 걸린 시간은 16초다. 여기서 P2를 주목할 필요가 있다. P2는 네 개의 프로세스 중에 수행 시간이 가장 오래 걸린다. FCFS는 비 선점 스케줄링이기 때문에 P2 같이 수행시간이 긴 프로세스가 전체 성능에 많은 영향을 끼치게 된다. 나는 현재 예제가 P3, P4의 도착 시간이 서로 비슷할 뿐더러, P2의 작업이 끝나는 시간에 도착하기 때문에 비교적 효율적인 방법이라고 생각한다.
하지만, 만약에 P3의 도착시간이 3일 경우, 먼저 온 P2부터 작업을 진행 할 시에는 다른 프로세스들이 작업이 끝날 때까지 대기시간을 갖기 때문에, FCFS 알고리즘을 사용할 지에 대해서 고민해봐야한다. 이러한 현상을 Convey Effect라고 한다.