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
- 이것이자바다확인문제
- 운영체제
- 백준괄호
- 컴퓨터비전
- 백준스택
- 확인문제
- 백준가운데를말해요
- 백준10828
- 스파르타코딩클럽
- 이것이자바다9장
- 백준9012
- 백준온라인저지
- 딥러닝
- 웹개발기초
- BOJ
- 이것이자바다
- KT포트포워딩
- 가운데를말해요
- 백준
- 2019카카오코테
- 코드트리
- BOJ1655
- java
- 합성곱연산
- 코테
- 냅색알고리즘
- 백준평범한배낭
- 윤곽선검출
- 코딩테스트실력진단
- 카카오코테
Archives
- Today
- Total
코딩하는 락커
10. 스케줄링 알고리즘: Chapter 5. CPU Scheduling (Part 2) 본문
라운드 로빈 스케쥴링, RR(Round-Robin-Scheduling)
- FIFO 알고리즘과 유사하지만 선점이 추가됨
- 타임 퀀텀time quantum 또는 타임 슬라이스time slice라고 하는 작은 단위 시간을 정의
- 레디 큐는 선입 선출 원형 큐로 동작
- CPU 스케쥴러는 레디큐를 돌면서 한 번에 한 프로세스씩 한 번의 타임 슬라이스 동안 CPU를 할당함
- CPU 스케쥴러는 레디큐에서 첫번째 프로세스를 선택해 한 번의 타임 슬라이스 이후에 인터럽트를 걸도록 타이머를 선정한 후 프로세스르 디스패치 함
- 두 가지 경우가 발생 가능
- 프로세스의 CPU 버스트가 한 번의 타임 슬라이스보다 작을 수 있음
- 이 경우 프로세스 자신이 CPU를 자발적으로 방출함
- 스케쥴러는 그 이후 레디큐에 있는 다음 프로세스를 진행함
- 현재 실행중인 프로세스의 CPU 버스트가 한 번의 타임 슬라이스보다 긴 경우
- 타이머가 끝나고 운영체제에 인터럽트가 발생함
- context switch가 일어나고 실행하던 프로세스는 레디 큐의 꼬리에 넣어짐
- 프로세스의 CPU 버스트가 한 번의 타임 슬라이스보다 작을 수 있음
- 위 그림은 시간 0에 도착한 프로세스의 집합임
- P1 -> P2 -> P3 순으로 도착함
- 타임 슬라이스는 4msec으로 설정
- 위 그림은 이 경우의 RR를 사용한 프로세스 처리 시간을 간트 차트를 나타냄
- P1은 처음의 4msec을 사용함
- P2는 4msec을 필요로 하지 않기 때문에 시간 할당량이 끝나기 전에 종료됨
- 대기시간
- P1: 6msec
- P2: 4msec
- P3: 7msec
- 평균 대기시간: (6+4+7)/3 = 5.66msec
- 총처리시간
- P1: 30msec
- P2: 7msec
- P3: 10msec
- 평균 총처리시간: (30+7+10)/3 = 15.67msec
- RR 알고리즘의 성능은 타임 슬라이스의 크기에 많은 영향을 받음
- 시간 할당량이 매우 클 경우: FIFO 스케쥴링과 같음
- 시간 할당량이 매우 작을 경우: context switch 오버헤드가 너무 커지므로 프로세스의 실행이 느려짐
- 그러므로 타임 슬라이스의 크기는 context switch 시간에 비교해 커야함
- RR 알고리즘의 총처리시간 또한 타임 슬라이스의 크기에 많은 영향을 받음
- 한 프로세스 집합의 평균 총처리시간은 시간 할당량의 크기가 증가하더라도 반드시 개선되지는 않음
우선순위 스케쥴링Priority Scheduling
- SJF 알고리즘은 CPU 버스트가 짧은 프로세스가 가장 높은 우선순위를 가진 우선순위 스케쥴링임
- FCFS 알고리즘은 우선순위가 같은 경우 선입 선처리로 스케쥴 되는 우선순위 케쥴링임
- 위 그림은 시간 0에 도착한 프로세스의 우선순위와 CPU 버스트 타임 집합과 이 경우의 Priority Scheduling을 사용한 프로세스 처리 시간을 간트 차트를 나타냄
- 평균 대기 시간: 8.2msec
- 우선 순위 스케쥴림은 선점형이거나 비선점형일 수 있음
- 우선순위 스케쥴링의 주요 문제
- 무한봉쇄indefinite blocking: 실행 준비는 되어 있으나 CPU를 사용하지 못하는 프로세스의 상태
- 기아starvation: 낮은 우선순위의 프로세스들이 무한 봉쇄되어 CPU를 무한히 기다리는 경우
- 우선순위 스케쥴링의 무한봉쇄 및 기아 문제의 해결방안
- 에이징Aging: 오랫동안 시스템에서 대기하는 프로세스들의 우선순위를 점진적으로 증가시키는 것
- RR과 우선순위 스케쥴링을 결합하는 방법
- 시스템이 우선순위가 가장 높은 프로세스를 실행
- 우선순위가 같은 프로세스들은 RR 스케쥴링을 사용하여 스케쥴하는 방식
- 아래 그림과 같이 우선수위가 가장 높은 P4의 경우 완료될 때 까지 실행하고, 우선순위가 같은 P2, P3는 RR 방식으로 실행 후 종료되면 그 다음의 우선순위를 갖는 P1, P5를 RR 방식으로 실행함
다단계 큐 스케쥴링Multilevel Queue Scheduling
- 프로세스의 우선순위마다 별도의 큐를 두어 우선순위가 가장 높은 큐에서 프로세스를 스케쥴링 함
- 우선순위 스케쥴링이 RR과 결합한 경우에 효과적임
- 위 그림에서 각 큐는 다음과 같은 우선순위를 가짐
- 실시간 프로세스
- 시스템 프로세스
- 대화형 프로세스
- 배치 프로세스
- 각 큐는 낮은 우선순위의 큐보다 절대적인 우선순위를 가짐
- 상위 큐들이 모두 비어있지 않으면 하위 큐가 실행될 수 없음
- 하위 큐가 실행되고 있을 때 상위 큐에 프로세스가 레디 큐에 들어가면 상위 큐의 프로세스가 선점됨
다단계 피드백 큐 스케쥴링Multilevel Feedback Scheduling
- 다단계 큐 스케쥴링 알고리즘은 일반적으로 프로세스들이 시스템 진입 시에 영구적으로 하나의 큐에 할당됨
- 대조적으로 다단계 피드백 큐 스케쥴링 알고리즘에서는 프로세스가 큐들의 사이를 이동하는 것을 허용함
- 어떤 프로세스가 CPU 시간을 너무 많이 사용하면 낮은 우선순위의 큐로 이동함
- I/O 중심의 프로세스와 대화형 프로세스들이 높은 우선순위의 큐에 넣어짐
- 예시
- 새로 진입하는 프로세스는 큐0(quantum=8)에 넣어짐
- 만약 프로세스가 이 시간 안에 끝나지 않으면 큐1(quantum=16)의 꼬리에 넣어짐
- 만약 프로세스가 이 시간 안에 끝나지 않으면 선점되어 큐2(FCFS)에 넣어짐
- 큐0과 큐1이 비어있을 때만 큐2에 있는 프로세스가 FCFS의 방식으로 실행됨
- 낮은 우선순위의 큐에서 너무 오래 대기하는 프로세스는 높은 우선순의 큐로 이동할 수 있음
- 이를 통해 기아 현상을 예방할 수 있음
- 현대의 가장 일반적인 CPU 스케쥴링 알고리즘임
5.4 스레드 스케쥴링Thread Scheduling
- 프로세스 모델에 스레드를 도입하면서 유저 레벨과 커널 레벨 스레드로 구분하였음
- 대부분의 운영체제에서 스케쥴 되는 대상은 프로세스가 아니라 커널 레벨 스레드임
- 유저 레벨 스레드는 스레드 라이브러리에 의해 관리되고, 커널 레벨 스레드에 many-to-many 방식으로 매핑됨
'📀 운영체제' 카테고리의 다른 글
12. 동기화 문제의 해결책: Chapter 6. Synchronization Tools (Part 2) (0) | 2022.06.07 |
---|---|
11. 프로세스 동기화: Chapter 6. Synchronization Tools (Part 1) (0) | 2022.06.06 |
09. CPU 스케줄링: Chapter 5. CPU Scheduling (Part 1) (0) | 2022.05.31 |
07 ~ 08. 쓰레드의 이해: Chapter 4. Thread & Concurrency (Part 1 ~ Part 2) (0) | 2022.05.30 |
06. 프로세스간 통신의 실제: Chapter 3. Processes (0) | 2022.05.24 |
Comments