검색결과 리스트
글
<CPU Scheduling>
현재 실행 중인 프로세스로부터 다른 프로세스로 CPU를 넘길때, 기다리고 있는 여러 프로세스 중 누구를 선택해야 할지에 대한 방식을 정하는게 스케줄링 기법이다.
스케줄링이란 여러 프로세스들이 번갈아 사용해야 하는 자원이 있을 경우, 주어진 시점에서 어떤 프로세스가 이 자원을 사용할 수 있도록 해줄 것인가를 결정하는 것이다.
<스케줄링의 단계>
1. 장기 스케줄링
어느 작업을 커널에 등록시켜 프로세스로 만들어 줄 것인가를 결정하는 것으로 작업 스케줄링이라고도 한다.
2. 중기 스케줄링
보류 상태의 프로세스들 중에서 어느 프로세스에게 메모리를 할당해 줄 것인가를 결정한다.
Swapped out된 프로세스들 중에서 어떤 프로세스를 Swapped In 할 것인가를 결정하는 부분이다.
3. 단기 스케줄링
준비 상태에 있는 프로세스들 중에서 어느 프로세스에게 CPU를 할당할지를 결정하는 것이며, 프로세스 스케줄러 또는 디스패처라고 불리는 것에 의해 수행된다.
<스케줄링의 목적>
CPU를 할당받을 프로세스를 잘 골라 실행시켜줘서 시스템의 전체적인 성능이 올라가게 하는 것이 목적이다.
1. 사용자의 관점
프로세스의 요청에 대해 시스템이 최초로 출력을 내주기 시작할 때 까지 걸린 시간을 응답시간이라 하며 바로 응답시간이 대표적인 지표가 된다.
2. 시스템의 관점
스케줄링을 통해 CPU가 얼마나 잘 활용됐는가를 나타낼 수 있는 처리량과 활용도 등이 있다. 처리량이란 단위시간에 완료되어진 프로세스의 개수이고, 활용도는 주어진 시간 동안 특정 자원이 실제로 가동된 시간의 비율이다.
<스케줄링 기법>
[스케줄링이 가동되어야 할 경우]
- 프로세스가 실행 상태에서 대기 상태로 전환 (입출력 요청)
- 프로세스가 실행 상태에서 준비 상태로 전환 (시간 종료와 같은 인터럽트 발생)
- 프로세스가 대기 상태에서 준비 상태로 전환 (입출력의 종료)
- 프로세스가 수행을 마치고 종료될 때
스케줄링 기법들은 선점과 비선점 스케줄링으로 나뉜다.
선점 스케줄링은 CPU를 할당받아 실행중인 프로세스로부터 CPU를 빼앗아 다른 프로세스에 할당할 수 있는 방식이다.
비선점 스케줄링은 한 프로세스가 CPU를 할당받았을 때 CPU를 스스로 반납할 때까지 계속 사용하도록 허용하는 방식이다.
1. FCFS(First Come First Service) 스케줄링
준비 큐에 먼저 도착한 프로세스에게 먼저 CPU를 할당해주며, CPU를 할당받은 프로세스는 스스로 CPU를 반납할 때까지 CPU를 독점하는 비선점 방식이다.
이 방법은 CPU를 독점하여 사용하기 때문에 긴 프로세스가 실행 될 경우 뒤에 있는 프로세스들은 오래 기다려야 하므로 대화식 시스템에 적합하지 않으며, 평균 응답 시간이 길어지는 단점이 있다.
[계산법]
도착시간이 같다고 가정한다.
프로세스의 CPU할당 순서를 바꾼다면
2. SPN(Shortest Process Next) 스케줄링
준비 큐에서 기다리고 있는 프로세스 중에서 CPU 요구량이 가장 적은 것을 먼저 실행시켜 주는 비선점 방식이다.
평균 응답 시간을 최소화 할 수 있지만, 실행 시간이 긴 프로세스가 CPU를 할당받지 못하고 계속해서 대기하는 무한 대기 현상이 발생할 수 있다.
[계산법]
도착시간이 조금씩 다르다는것을 주의할 것!
3. SRT(Shortest Remaining Time) 스케줄링
실행 도중 남은 실행 시간이 더 적은 프로세스가 준비 큐에 올 경우 현재 실행중인 것을 중단하고 새 프로세스에게 CPU를 할당하는 선점 방식이다.
이 방법은 실행시간이 짧은 프로세스가 자주 도착할 경우 잦은 선점으로 인한 문맥교환의 부담이 있다. (잦은 스케줄링)
[계산법]
Copyrightⓒ2014 By 휴먼사이언스
'OS > Theory' 카테고리의 다른 글
CPU Scheduling(스케줄링) - 다단계 큐 스케줄링, 다단계 피드백 큐 스케줄링, Fair-share 스케줄링, 실시간 스케줄링 (0) | 2016.04.11 |
---|---|
상호배제의 문제점 코드들, 그리고 해결책 (Peterson 알고리즘) (0) | 2016.04.11 |
쓰레드(Thread) (0) | 2016.04.09 |
CPU Scheduling(스케줄링) - HRRN 스케줄링, 라운드 로빈 스케줄링 (0) | 2016.04.09 |
프로세스(Process) (0) | 2016.04.08 |
RECENT COMMENT