안녕하세요? 허니입니다. 많은 스케줄링 알고리즘이 존재하기 때문에 어떤 스케줄링 기법을 활용하냐에 따라 성능차이가 많이 납니다. 때문에 비교 기준이 필요합니다. 때문에 저는 스케줄링 알고리즘을 어떻게 비교할 수 있을까에 대해 포스팅을 하려고 합니다. 학생이나 연구원분들에게 많은 도움이 될 것이라고 생각하며 언제든지 질문은 환영입니다.

 


오늘의 주제

 스케줄링 알고리즘의 비교기준

 


스케줄링 알고리즘의 비교기준

 

무엇인가를 평가하는 것은 분명 나름대로의 기준이 있기 마련이다. 무조건 공부 잘하는 학생을 최고의 학생으로 평가하는 선생님도 있을 것이고 공부보다는 친구들과의 관계, 여러 활동 상황 등의 사회성을 보다 높게 평가하는 선생님도 있기 마련이다. 가치있는 삶을 돈이란 기준으로 평가하는 이들도 있고 인간관계라고 평가하는 이들도 권력이라고 평가하는 이들도 있다. 그 어느 것이 보다 좋다는 것을 말하려는 것이 아니다. 바로 각자가 가진 평가기준에 따라 최고라는 기준은 달라지게 마련이다. 그렇기에 보다 다양한 사람들이 모인 사회가 되는 것일 테지만 말이다. 이와 같이 시스템 설계자 또한 스스로가 선택한 한가지의 기준에 따라 최적의 스케줄링 알고리즘을 설계하는 것이다. 여기서 말하는 기준이란 바로 다음과 같다..

 

 CPU utilization

이 경우의 기준은 사용자가 컴퓨터를 이용한 전체시간 중에 작업처리를 위해 실제 CPU가 이용된 시간의 비율을 말한다. 바로 CPU의 낭비가 가장 적은 것에 초점을 두고 스케줄링하는 것이다. 다시 말해 CPU utilization는 ‘몇%의 일이 처리되었나’가 관심사이다.  예를 들어 은행에 A직원은 3명의 손님을 처리하였고 B직원은 30명의 손님을 처리했다면 어느 직원이 열심히 일한 것일까. 별다른 고려없이 표면적인 수치로만 이해한다면 분명 B직원이 열심히 작업을 수행했다고 생각할 수 있다. 그러나 만일 A직원이 처리한 3명 손님의 작업은 시간이 오래 소요돼 잠시도 쉴 틈이 없었고 B직원이 처리한 30명의 작업은 1분씩의 시간이 소요돼 30분만에 마치고 나머지 시간은 사적인 일을 처리했다면 어떨까. 그렇다면 단순히 처리된 손님수로만 직원의 성실도를 체크할 수는 없는 것이다. 이와 같이 은행직원이(CPU) 얼마나 쉼 없이 일을 처리했느냐는 것이 바로 CPU utilization의 관점인 것이다. CPU utilization의 관점에서 가장 효율적인 스케줄링은 FCFS(First Come First Served) 이다. FCFS의 경우는 프로세스에 대한 별도의 처리없이 (예를 들어 타임퀀텀이 다 되어 수행하던 프로세스를 저장하고 다음 프로세스를 처리) 계속해서 작업이 수행됨으로 overhead가 적어진다. 따라서 CPU의 낭비가 가장 적은 스케줄링인 것이다. Priority의 경우에는 하나의 프로세스를 처리하던 중 우선순위가 높은 프로세스가 처리되어야 할 경우 앞서 수행되던 프로세스를 저장하고 이후 제자리를 찾아주는 등의 작업에 overhead가 소요되는 것이다. 또한 Round Robin의 경우 타임퀀텀 내에 완료되지 않은 프로세스들을 관리하는 작업에 overhead가 소요되는 것이다 

 

Response time

이 경우의 기준은 하나의 프로세스가 일을 시작해서 끝날 때까지 걸리는 시간에 초점을 맞춘 것으로 작업처리 평균시간이 가장 적게 걸리도록 스케줄링하는 것이다. 은행에 한손님이 들어서 은행을 나설 때까지 걸리는 시간을 최대한 줄이는 것이 바로 Response time을 기준으로 설계된 것이다. 여러 방법 중 Round Robin으로 설계했을 때 Response time이 가장 적게 걸린다. 스케줄링 알고리즘에서도 언급했듯이 FCFS의 경우 긴 시간을 필요로 하는 작업이 앞에 놓였을 때 작업처리평균시간은 길어지게 마련이다. 바로 짧은 타임퀀텀을 갖고 있는 Round Robin이 Response time을 가장 적게 해주는 설계방법인 것이다.

 

 Throughput

처리량을 기준으로 할 경우 기준시간당 얼마나 많이 일을 처리했느냐 하는 것이 관건이다. 바로 한 명의 은행직원이 몇 명의 손님을 처리 했는냐 하는 것인데 빨리 빨리라는 개념이 최상의 서비스란 생각을 갖고 있는 은행장이라면 처리량을 기준으로 은행시스템을 설계할 것이다. 은행직원의 관심은 오직 ‘한 시간 동안-기준시간을 한 시간이라 한다면-몇 명의 일을 처리 했나’일 것이다. 은행은 1시간당 100명의 손님이 오는데 직원 1명은 1시간당 평균 25명을 처리하니까 창구직원을 4명을 두어야겠다 라는 생각을 분명 갖고 있을 것이다.

 

 Waiting time

프로세스가 준비상태의 큐로부터 얼마나 빨리 나오게 할 수 있느냐에 초점을 맞춘 것이 Waiting time이다. 은행에 들어서 번호표를 빼어 든 다음 자신의 번호가 표시되어 처리가 시작될 때까지 기다리는 시간을 최소로 하는 것이 바로 Waiting time의 관점에서의 설계기준인 것이다. 최근 어느 은행에서는 손님이 10분 이상 Waiting time을 가졌을 경우 1000원을 보상해주는 제도가 도입되었었다. 바로 그 은행은 최고의 서비스란 손님들의 Waiting time을 최소화하는 것이란 생각이 분명 내재되어 있었을 것이다.

 

질문) throughput의 관점이 결국 CPU utilization의 관점과 유사한 개념이 아닐까요?

답) throughput의 관점에서는 CPU, memory, I/O를 다 보는 것이다. throughput는 보다 넓게 시스템의 균형을 중심으로 보는 것이다.              

질문) CPU 스케줄링이 시스템의 균형과 무슨 관계가 있는 것입니까. (앞서 우리는 CPU가 프로세스의 처리속도와는 별다른 관계가 없다고 하었다)

답) CPU 스케줄링을 잘하면 시스템이 효율적이게 된다. 결국 CPU 스케줄링이 시스템 전체에 어떤 영향을 미치는 것인가를 주목하는 것이다.

 


요점정리

 

 Scheduling의 비교기준

1. CPU utilization

이 경우의 기준은 바로 CPU의 낭비가 가장 적은 것에 초점을 두고 스케줄링하는 것이다. 다시 말해 ‘몇%의 일이 처리되었나’가 관심사이다.

2. Response time

이 경우의 기준은 하나의 프로세스가 일을 시작해서 끝날 때까지 걸리는 시간에 초점을 맞춘 것으로 작업처리평균시간이 가장 적게 걸리도록 스케줄링하는 것이다.

3. Throughput

처리량을 기준으로 할 경우 기준시간당 얼마나 많은 일을 처리했느냐 하는 것이 관건이다.

4. Waiting time

프로세스가 준비상태의 큐로부터 얼마나 빨리 나오게 할 수 있느냐에 초점을 맞춘 것이 Waiting time이다.

 

목 차

 운영체제를 시작하는 분들을 위해

 운영체제의 역사와 구체적으로 어떤 일들을 수행하나요?

 운영체제의 목표와 역할이 미래에도 계속 증대될까요?

 운영체제를 이해하기 위해 필요한 기본 개념들은 무엇인가요?

 운영체제 프로세스 생애주기(Process Lifecycle)는 무엇인가요?

 운영체제 프로세스 관리(Process Management)는 어떻게 하나요?

 운영체제 프로세스(Process)의 처리 속도는 어떻게 높일까?

 운영체제 스레드(Thread)는 무엇인가요?

 운영체제 스케줄링 (Scheduling)은 어떻게 하나요?

 운영체제 스케줄링 알고리즘의 비교 기준이 있나요?

 운영체제 프로세스 동기화가 무엇인가요?

 운영체제에서 세마포어(Semaphore)란?

 운영체제 메모리 관리(Memory Management)는 어떻게 하나요?

 운영체제 메모리 분할 방법은 어떻게 하나요?

 운영체제 가상메모리(Virtual Memory)는 무엇인가요?

 운영체제 Page in/out, Swapping 등이 Page Table Entry와 어떤 관계인가요?

 운영체제 메모리 관련해서 알아야 할 개념은 어떤것이 있나요? (TLB, Locality, Working Set, Overlay)

 운영체제 Page replacement (페이지 대체) 알고리즘이란?

 운영체제 파일시스템(File System)은 어떻게 운영되나요?

 운영체제 파일시스템 내부구조는 어떻게 되나요?

 운영체제 디스크 공간 할당(Disk Space Allocation) 알고리즘과 효과적 알고리즘의 판단 기준은?

 운영체제 파일시스템에서 접근 시간, 디스크 스케줄링을 위한 알고리즘, I/O 시스템이란?

 리눅스 인터럽트 (Interrupt)에 대해 자세히 설명해 주세요.

 인텔 구조에서 운영체제 가상 메모리 (Virtual Memory)는?

 운영체제 아키텍처의 종류는 얼마나 있나요?

 

+ Recent posts