It is What it is
로그인
It is What it is
로그인
[운영체제] CPU 스케줄링
.
·
2021년 10월 14일
팔로우
0
0
운영체제
목록 보기
5/6
기본 개념
코어가 하나인 시스템에서는 한순간에 오직 하나의 프로세스만 실행 가능
나머지 프로세스는 CPU의 코어가 가용 상태가 되어 다시 스케줄 될 수 있을 때까지 기다려야 함
멀티프로그래밍의 목적은 CPU 이용률을 최대화하기위해 항상 실행중인 프로세스를 가지게 하는 것
CPU I/O 버스트 사이클
프로그램이 실행되면 CPU가 일을 수행하고, I/O 요청에 대한 응답을 기다리는 일을 반복한다
Cpu Burst Time : CPU가 일을 수행하는 시간
I/O Burst Time : I/O 요청에 대한 응답을 기다리는 시간
CPU 스케줄러
CPU가 사용 가능한 상태가 될 때마다 운영체제는 준비 큐에 있는 프로세스 중 하나를 선택해 실행
준비 큐는 선입선출큐, 우선순위큐, 트리, 연결리스트 등 다양하게 구현 가능
큐에 있는 레코드들은 일반적으로 PCB이다
선점 및 비선점 스케줄링
CPU 스케줄링 결정은 다음 네가지 상황에서 발생
프로세스가 실행 상태에서 대기 상태로 전환 (I/O 요청)
프로세스가 실행 상태에서 준비 완료 상태로 전환 (인터럽트 발생)
프로세스가 대기 상태에서 준비 완료 상태로 전환 (I/O 종료)
프로세스가 종료
1,4번 상황은 반드시 새로운 프로세스를 선택해야 한다. 이러한 스케줄링 방법을 비선점(nonpreemptive) 협조적(cooperative) 스케줄링이라 함
2,3 번상황은 선점(preemptive) 스케줄링 이라고 함
디스패처
디스패처 : CPU 코어의 제어를 CPU 스케줄러에 주는 모듈 한 프로세스에서 다른 프로세스로 문맥 교환 사용자 모드로 전환 프로그램을 다시 시작하기 위해 사용자 프로그램을 적절한 위치로 이동
디스패치 지연 : 디스패처가 한 프로세스를 정지하고 다른 프로세스의 수행을 시작하는데까지 소요되는 시간
스케줄링 기준
CPU 이용률 : CPU를 최대한 바쁘게 유지
처리량 : 단위 시간 당 처리되는 프로세스의 개수
총처리 시간 : 특정 프로세스를 처리하는데 걸리는 총 시간(준비큐에서 대기 한 시간 + CPU에서 실행한 시간 + I/O 시간)
대기 시간 : 준비큐에서 대기한 시간
응답 시간 : 하나의 요구를 제출한 후 첫 번째 응답이 나올 때까지의 시간
CPU 이용률과 처리량을 최대화하고 총처리 시간, 대기 시간, 응답 시간을 최소화 해야 함
스케줄링 알고리즘
선입 선처리 스케줄링(First-Come First-Served)
CPU를 먼저 요청하는 프로세스가 CPU를 먼저 할당 받음
프로세스가 준비큐에 진입하면 이 프로세스의 PCB를 큐의 끝에 연결
CPU가 가용 상태가 되면, 준비 큐의 앞부분에 있는 프로세스에 할당
실행 상태의 프로세스는 준비 큐에서 제거
호위 효과 : 처리 시간이 짧은 프로세스들이 긴 프로세스가 CPU를 양도하기 기다리는 것
CPU와 장치 이용률이 저하
비선점형 알고리즘으로 CPU가 프로세스에 할당되면 그 프로세스가 종료하거나 I/O 처리를 요구할 때 까지 CPU를 점유
대화형 시스템에서는 각 프로세스가 규칙적으로 CPU에 할당되도록 하는것이 중요하므로 선입 선처리 스케줄링을 사용할 수 없음
최단 작업 우선 스케줄링(Shortest Job First)
각 프로세스에 다음 CPU 버스트 길이를 연관
가장 작은 CPU 버스트를 가진 프로세스에 CPU 할당
동일한 CPU 버스트를 지니면 선입선처리 스케줄링 사용
선점형 또는 비선점형 스케줄링으로 작동
선점형 : 새로운 프로세스가 이용 가능 할 때 그 프로세스의 CPU 버스트가 현재 실행되는 프로세스의 CPU 버스트보다 짧으면 새로운 프로세스에 CPU 할당
SRTF(Shortest-Remaining-Time-Friest) 스케줄링이라고 불림
프로세스들의 평균 대기 시간을 줄여줌
프로세스의 CPU 버스트 시간을 예측
이전 CPU 버스트 시간을 측정하여 지수 평균한것으로 예측
우선순위스케줄링
우선순위가 가장 높은 프로세스에 CPU 할당
SJF는 CPU 버스트 시간이 우선순위인 우선순위스케줄링
기아(Starvation) 문제점을 노화(Aging) 방법으로 해결
기아 : 낮은 우선순위를 지닌 프로세스가 평생 실행되지 못함
노화 : 시간이 흐르면 해당 프로세스의 우선순위를 높임
라운드로빈(RR)
각 프로세스들은 시간 할당량(time quantum)이라는 작은 단위의 시간을 지님
일반적으로 10-100밀리초로 해당 시간이 지나면 다른 프로세스에 CPU를 넘기고 준비큐에 끝에 다시 삽입
준비 큐는 선입선출 큐로 동작하며 새로운 프로세스들은 큐의 꼬리에 추가
프로세스의 CPU 버스트가 시간 할당량보다 작을 때 해당 프로세스는 CPU를 자발적으로 방출
프로세스의 CPU 버스트가 시간 할당량보다 클 때 타이머가 끝나면 운영체제에 인터럽트 발생
이 후 문맥교환이 발생하고 프로세스는 준비큐의 끝으로 삽입
준비큐에 n개의 프로세스가 있고 q의 시간 할당량을 지니면 모든 프로세스는 (n-1)q 이상의 시간을 대기하지 않음
RR 알고리즘의 성능은 시간 할당량에 영향을 받음
시간 할당량이 크다면 선입선처리 스케줄링과 똑같음
시간 할당량이 매우 적다면 많은 문맥교환을 발생시켜 성능 악화
시간 할당량이 문맥 교환 시간과 비교하여 더 크게 만들어야 함
다단계 큐 (Multileve Queue)
포그라운드(대화형) 프로세스와 백그라운드(배치) 프로세스를 구분
포그라운 프로세는 백그라운드 프로세스보다 우선순위를 가질 수 있음
포그라운드 큐 - RR 사용
백그라운드 큐 - FCFS 사용
큐와 큐 사이에 스케줄링 구현 - 일반적으로 고정 우선순위의 선점형 스케줄링으로 구현
Ex) 실시간 큐는 대화형 큐보다 높은 우선순위를 지님
큐 사이에 시간을 나누어 사용 - 각 큐는 CPU 시간의 일정량을 받아 자기 큐에 있는 프로세스를 스케줄링
Ex) 포그라운드 큐는 CPU의 80% 시간이 할당되고 백그라운드 큐는 CPU의 20% 시간이 할당
다단계 피드백 큐 (Multilevel Feedback Queue)
다단계 큐 스케줄링 알고리즘에서는 프로세스들이 시스템 진입 시점에 영구적으로 하나의 큐에 할당
오버헤드의 장점이 있으나 융통성이 적음
다단계 피드백 큐에서는 프로세스 큐들 사이를 이동하는것을 허용
다단계 피드백 큐 스케줄러는 다음의 매개변수에 의해 정의
큐의 개수
각 큐의 스케줄링 알고리즘
한 프로세스를 높은 우선 순위 큐로 올려주는 시기를 결정하는 방법
한 프로세스를 낮은 우선순위 큐로 강등시키는 시기를 결정하는 방법
프로세스에 서비스가 필요할 때 프로세스가 들어갈 큐를 결정하는 방법
새로 진입하는 프로세스는 첫번째 큐에 넣어진다
8밀리초동안 프로세스가 완료되지 않으면 다음 큐로 이동
16밀리초동안 프로세스가 완료되지 않으면 다음 큐로 이동
첫번째 큐와 두번째 큐가 비었을때만 세번째 큐는 FCFS 방식으로 실행
기아를 방지하기 위해 우선순위가 낮은 큐에서 오래 대기하는 프로세스는 우선 순위가 높은 큐로 이동 가능
.
지금부터 공부하고 개발한것들을 꾸준하게 기록하자.
팔로우
이전 포스트
[운영체제] 스레드와 병행성
다음 포스트
[운영체제] 메모리관리
0개의 댓글
댓글 작성
관련 채용 정보