Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- error
- js to ts
- 일상
- 정렬
- 기초100제
- 알고리즘
- codeup
- C++
- memory
- 프로그래머스
- 공부
- 토이프로젝트
- 코드업
- 분할메모리할당
- 자료구조
- 협업
- Operating System
- Redux
- Java
- Spring
- 타입스크립트
- react-redux
- 파이썬
- CPU 스케줄링
- 리덕스장바구니
- web
- 스프링
- OS
- react
- 백준
Archives
- Today
- Total
감자튀김 공장🍟
[OS] CPU 스케줄링 알고리즘 (CPU Scheduling Algorithm) 본문
Study/Operating System
[OS] CPU 스케줄링 알고리즘 (CPU Scheduling Algorithm)
Potato potage 2022. 4. 4. 00:09반응형
선점형 스케줄링
Round Robin (RR) 스케줄링
- 설계 방침 : 모든 프로세스에게 공편한 실행 기회를 주기 위해 일정 시간 간격으로 프로세스들을 번갈아 실행시킨다.
- 알고리즘 : 큐에 대기중인 프로세스들을 타임 슬라이스 주기로 돌아가면서 선택하는 방법이다. 도착하는 프로세스들은 큐의 끝에 삽입되며, RR은 준비 리스트의 맨 앞에 있는 프로세스를 선택한다.
- 성능과 문제점 : RR은 공정하고, 기아 현상이 없으며, 구현이 쉽다는 장점이 있다. 하지만 잦은 스케줄링으로 인해 스케줄링 때마다 소요되는 컨텍스트 스위칭 오버헤드가 크다는 단점이 있다.
프로세스도착 시간실행 시간(예상 값)
P1 | 0 | 4 |
P2 | 1 | 3 |
P3 | 2 | 1 |
P4 | 5 | 3 |
SRTF (Shortest Remaining Time First)
- 설계 방침 : 새로운 프로세스가 큐에 도착하는 시점에서, 현재 실행 중인 프로세스의 남은 실행 시간보다 도착한 프로세스의 예상 실행 시간이 더 짧은 경우, 현재 프로세스를 중단시키고 새로 도착한 프로세스를 실행시키자는 의도이다.
- 알고리즘 : 큐에서 남은 실행 시간이 가장 짧은 프로세스를 먼저 실행시킨다. 실행 중인 프로세스의 남은 실행 시간보다 더 짧은 프로세스가 큐에 도착하면 실행을 중단하고 도착한 프로세스를 실행시킨다.
- 성능과 문제점 : 가장 짧은 프로세스를 먼저 실행하므로, 프로세스들의 평균 대기 시간은 최소화된다. 하지만 현실에서는 프로세스의 실행 시간을 예상 할 수 없기 때문에 거의 사용되지 않는다.
프로세스도착 시간실행 시간(예상 값)
P1 | 0 | 4 |
P2 | 1 | 3 |
P3 | 2 | 1 |
P4 | 5 | 3 |
Priority Scheduling (Fixed Priority Preemptive Scheduling)
- 설계 방침 : 프로세스에 우선 순위를 두는 컴퓨터 시스템에서 철저히 우선 순위에 따라 프로세스를 실행시킨다.
- 알고리즘: 큐에서 가장 높은 우선 순위의 프로세스를 먼저 스케줄링한다. 실행 중인 프로세스가 종료하거나 더 높은 순위의 프로세스가 도착할 때, 스케줄링을 다시 시행한다. 프로세스마다 우선 순위가 할당되며 종료할 때까지 바뀌지 않는다.
- 성능과 특징 : 순위가 높은 프로세스일수록 대기 시간이나 응답 시간이 짧다.
비선점 스케줄링
FCFS (First Come First Served)
- 설계 방침 : 큐에 도착한 순서대로 프로세스를 실행시켜, 매우 단순하고 구현하기 쉽도록 하는데 착안되었다.
- 알고리즘 : 큐에 먼저 도착한 프로세스를 먼저 스케줄링한다.
- 성능과 문제점 : 기아는 발생하지 않지만 일반적으로 처리율이 낮다.
프로세스도착 시간실행 시간
P1 | 0 | 4 |
P2 | 1 | 3 |
P3 | 2 | 1 |
P4 | 5 | 3 |
SJF (Shortest Job First)
- 설계 방침 : 실행시간이 가장 짧은 프로세스를 먼저 실행시켜 프로세스들이 평균 대기 시간을 최소화 하는데 목표가 있다.
- 알고리즘 : 큐에서 실행 시간이 가장 짧은 프로세스를 선택한다.
- 성능과 문제점 : 긴 프로세스보다 짧은 프로세스를 먼저 실행하면 그 뒤에 대기 중인 모든 프로세스의 대기 시간이 짧아진다. SJF는 가장 짧은 프로세스를 먼저 실행하므로, 평균 대기 시간은 최소화 된다. 하지만 SJF는 현실에서 사용할 수 없다. 실제 프로세스의 실행 시간을 예상할 수 없기 때문이다.
프로세스도착 시간실행 시간(예상 값)
P1 | 0 | 4 |
P2 | 1 | 3 |
P3 | 2 | 1 |
P4 | 5 | 3 |
선점 / 비선점 스케줄링
MLQ (Multi-level Queue)
- 설계 방침 : 프로세스들을 n개의 우선 선위 레벨로 구분하여 레벨이 높은 프로세스들을 우선적으로 처리하고자 하는 목적으로 설계되었다.
- 알고리즘 : 컴퓨터 시스템에 n개의 우선 순위를 두고 우선 순위별로 하나씩 큐를 두며, 프로세스 역시 우선 순위를 가진다. 프로세스가 도착하면 우선 순위에 따라 큐에 삽입된다. 스케줄러는 가장 높은 순위의 큐에서 맨 앞에 있는 프로세스를 선택한다. 가장 높은 순위의 큐가 비어 있으면, 그 다음 순위의 큐에서 프로세스를 선택한다.
- 선점 / 비선점
- 선점 : 프로세스의 실행 중에 더 높은 순위의 큐에 프로세스가 도착하면 실행을 중단하고 새로 도착한 프로세스를 스케줄 하면 선점 스케줄링이 된다.
- 비선점: 실행중인 프로세스가 실행을 끝냈을 때 스케줄링 하도록 구현하면 비전섬 스케줄링이 된다.
- 성능과 특징 : 높은 순위를 가진 프로세스들의 대기 시간이나 응답 시간이 짧은 장점이 잇다. 하지만 낮은 레벨의 큐에 잇는 프로세스가 높은 레벨의 큐로 이동할 수 없어 지속적으로 높은 레벨의 프로세스가 도착하면 기아가 발생한다.
MLFQ (Multi-level Feedback Queue)
- 설계 방침 : 여러 레벨의 큐 사이에 프로세스들이 이동할 수 있게 함으로써, 짧은 프로세스나 CPU 사용량이 비교적 적고 I/O가 많은 프로세스를 먼저 실행시켜 프로세스의 평균 대기 시간을 줄인다.
- 알고리즘 : 프로세스에게 주어지는 우선 순위는 없고, 우선 순위는 큐에만 주어진다.
- 새로 생성된 프로세스는 가장 높은 레벨의 큐에 삽입된다.
- MLFQ 스케줄러는 가장 높은 레벨의 큐에서 맨 앞에 잇는 프로세스를 선택하여 CPU를 할당한다.
- 프로세스가 CPU를 사용한 총 시간이 큐 시간 할당량을 넘어서게 되면 아래 레벨의 큐에 삽입된다. CPU 총 사용 시간이 큐 시간 할당량을 넘어서면 아래 레벨의 큐에 삽입된다.
- 프로세스가 I/O로 실행이 중단된 이후 I/O가 끝나 실행이 준비되면 하나 높은 레벨의 큐에 삽입된다.
- 큐에서 대기하는 시간이 오래되면 프로세스의 기아를 막기 위해 위 레벨의 큐에 삽입한다.
- 프로세스가 최하위 레벨의 큐에 들어가면 프로세스가 완료될 때까지 RR 알고리즘을 이용하여 돌아가면서 스케줄링된다.
- 선점 / 비선점
- 선점 : 더 높은 레벨의 큐에 프로세스가 도착할 때 실행을 중단하고 새 프로세스를 스케줄링하면 선점 스케줄링이 된다.
- 비선점: 현재 프로세스가 실행을 끝낼 때 비로소 스케줄링을 하도록 구현하면 비선점 스케줄링이 된다.
- 성능과 특징: 서로 다른 레벨의 큐를 두어 프로세스들이 큐 사이로 이동할 수 있게 하여 CPU의 사용 시간이 짧은 프로세스나 I/O-bound 프로세스들이 높은 레벨의 큐에 오래 머무르도록 하고, 낮은 레벨의 큐에 오래 머무른 프로세스를 높은 레벨의 큐로 이동시켜 기아가 발생하지 않도록 한다.
참고
운영체제(Operating system), 황기태 지음
반응형
'Study > Operating System' 카테고리의 다른 글
[OS] 상호배제(Mutual exclusion)이란? (0) | 2022.04.06 |
---|---|
[OS] 동기화(Synchronous)에 대해서 (0) | 2022.04.05 |
[OS] CPU 스케줄링 알아보기 (CPU Scheduling) (0) | 2022.04.03 |
[OS] Context Switching이란? (0) | 2022.04.02 |
[OS] IPC 통신이란? (Inter Process Communication) (0) | 2022.04.01 |
Comments