일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- #크랙미4번
- java
- #보안이슈
- #abex크랙미
- #보안뉴스
- #abex
- leetcode
- springframework
- #크랙미 10번
- #심플즈 크랙미
- 리버싱
- #크랙미 9번
- #심플즈
- #크랙미 5번
- Spring
- #크랙미
- #abex크랙미4번
- java8
- #크랙미2번
- #고클린
- GraphQL
- #파밍
- Easy
- #리버싱
- #크랙미3번
- Today
- Total
Halo World
CPU 스케줄링 본문
스케줄러는 실행 준비가 되어있는 메모리 내의 프로세스들 중에서 선택하여, 이들 중 하나에게 CPU를 할당한다.
| 스케줄링 기준
> CPU 이용률
> 처리량 : 단위 시간당 완료된 프로셋의 개수
> 총 처리 시간 : 프로세스를 실행하는데 소요된 시간
> 대기 시간 : 프로세스가 준비 완료 큐에서 대기하는 시간
> 응답 시간 : 응답이 시작되는 데까지 걸리는 시간
>> CPU 이용률, 처리량 최대화, 총 처리 시간, 대기 시간, 응답 시간 최소화
| 스케줄링 종류
1) 선입 선출 스케줄링(FCFS : First Come, First Served)
: 가장 먼저 들어온 프로세스부터 차례로 할당되는 방식 (비선점형)
프로세스 |
버스트 시간 |
P1 |
24 |
P2 |
3 |
P3 |
3 |
프로세스들이 P1,P2,P3 순으로 도착하고, FCFS로 서비스 받는다면
위와 같이 동작한다.
> 대기 시간 : P1=0, P2=24, P3=27
> 평균 대기시간 : (0+24+27)/3=17
반면, P2, P3, P1 순으로 도착하면,
위와 같이 동작하고
> 대기 시간 : P1=6, P2=0, P3=3
> 평균 대기 시간 : (6+0+3)/3=3
으로 앞의 경우보다 평균 대기 시간이 많이 줄어든다.
> 호위 효과(convoy effect) 발생 가능
: 짧은 프로세스들이 긴 프로세스가 CPU를 양도하기를 기다림
짧은 프로세스들이 먼저 처리될 때보다 CPU와 장치 이용률이 저하
2) 최단 작업 우선 스케줄링(SJF:Shortest Job First)
: 가장 실행시간이 짧은 작업 먼저 수행하는 방식으로, 주어진 프로세스 집합에 대해 최소의 평균 대기 시간을 가지는 스케줄링 방법(비선점형)
> 동작 예
> 평균 대기 시간 : (0+6+3+7)/4=4
3) SRT(Shortest Remaining Time first)
: SJF 방식의 선점형 방식으로 준비 큐에 있는 프로세스들 중에서 가장 짧은 시간이 소요된다고 판단되는 프로세스를 먼저 수행
> SRT 방식 동작 예
> 평균 대기 시간 = (9+1+0+2)/4=3
4) Round Robin(RR) 스케줄링
- FCFS로 프로세스들이 내보내지며 각 프로세스는 같은 크기의 CPU 시간을 할당받는다. (선점형)
- 시분할 시스템에 적합
- 시간 할당량이 매우 크면, FCFS와 같아진다.
- 시간 할당량이 최소한 문맥 교환시간 보다는 커야함 (너무 작을 경우 오버헤드가 커짐)
> 동작 예
> 시간할당량은 4 밀리초
> 평균 대기 시간 = (6+4+7)/3 = 5.66/ms
5) HRN(Highest Response ratio Next) 스케줄링
- 긴 작업과 짧은 작업 간의 지나친 불평들을 어느정도 해소한, SJF의 약점을 보완한 기법 (비선점형)
- 일단 한 작업이 CPU를 차지하면 그 작업은 완성될 때까지 실행함
- 우선순위 = (대기시간+서비스를 받을시간) / 서비스를 받을시간 = 시스템 응답시간
6) 다단계 큐 스케줄링(MLQ)
- 작업들을 여러 종류의 그룹으로 나누어 여러 개의 큐를 이용하는 기법 (선점형)
- 그룹화된 작업들을 각각의 준비 큐에 넣어두고 각 큐의 독자적인 스케줄링 알고리즘에 따라서 CPU를 할당받는 방법 (포그라운드:RR, 백그라운드:FCFS)
- 다단계 큐 알고리즘에서는 상위 단계에서 하위 단계까지 5개의 큐로 분할되어 있다. (시스템 작업, 대화형 작업, 편집 작업, 일괄처리 작업, 학생 작업)
- 포그라운드 큐는 백그라운드 큐보다 절대적으로 높은 우선순위 부여
7) 다단계 피드백 큐 스케줄링(MFQ)
- 입출력 위주와 CPU 위주인 프로세스의 특성에 따라 서로 다른 타임 슬라이스를 부여 (선점형)
- 프로세스가 큐들 사이를 이동하는 기법으로, 프로그램이 들어오면 높은 우선순위를 할당해 주어 단계 1에서 즉시 수행해주고, 점차 낮은 우선순위를 부여하여 단계 n쯤 되는 나중에는 작업이 완료될 때까지 라운드 로빈으로 순환한다.
- 큐들 사이 이동으로 aging을 구현하여 기아 상태를 예방
* 기아 상태 : 낮은 우선순위 프로세스들이 CPU를 무한히 대기하는 상태
- 결과적으로, CPU 사용시간이 짧은 입출력 중심의 프로세스와 대화형 프로세스들이 높은 우선순위 큐에서 실행되고, 반대로 계산 위주의 작업은 낮은 단계의 큐에 머물면서 우선순위는 낮지만 충분한 시간동안 CPU를 할당받게 된다.
- UNIX 시스템은 이 방식을 스케줄링 알고리즘으로 채택
종류 |
방법 |
특징 |
선점/비선점 |
FCFS |
작업이 시스템에 들어온 순서대로 수행하는 방법 |
- 대화형에 부적합 - 간단하고 공평 - 반응속도 예측가능 |
비선점 |
Round Robin |
FCFS 방식의 변형으로 일정한 시간을 부여하는 방법 |
- 시분할 방식에 효과적 - 할당시간이 크면 FCFS와 같음 - 할당시간이 작으면 문맥교환이 자주 발생 |
선점 |
SJF |
수행시간이 짧은 작업을 우선적으로 처리하는 방법 |
- 작은 작업에 유리하고 큰 작업은 상당히 시간이 많이 걸림 |
비선점 |
SRT |
수행도중 나머지 수행시간이 짧은 작업을 우선적으로 처리 |
- 작업 처리는 SJF와 같으나 이론적으로 가장 작은 대기시간이 걸림 |
선점 |
HRN |
SJF에서 큰 작업 시간이 많이 걸리는 점을 보완한 방법 |
- 에이징 기법으로 기아상태 해결 |
비선점 |
MLQ |
서로 다른 작업을 각각의 큐에서 timeslice로 처리 |
- 각각의 큐는 독자적인 스케줄링 알고리즘 사용 |
선점 |
MFQ |
하나의 준비상태 큐를 통해서 여러 개의 피드백 큐를 거쳐 일을 처리 |
- CPU와 I/O 장치의 효율을 높일 수 있음 |
선점 |
[참고]
정보보안기사&산업기사 필기 / 탑스팟 / 조상진
http://cs.sch.ac.kr/lecture/os/2013/13-OS.htm
'개발 지식 > OS' 카테고리의 다른 글
교착상태(Deadlock) (0) | 2017.07.12 |
---|---|
프로세스 간 동기화 (공유 자원에 대한 접근 문제) (0) | 2017.07.11 |
프로세스의 개념과 PCB (0) | 2017.07.09 |
[OS 문제] 2일차 (0) | 2017.07.06 |
커널과 쉘 (0) | 2017.07.06 |