티스토리 뷰
CPU 스케줄러란?
- 프로세스가 생성된 후 종료될 때까지 모든 상태 변화를 조정하는 일을 한다.
- 모든 프로세스가 공평하게 작업할 수 있도록 하는 것이 본 목적이다.
- 하지만, 안정성과 효율성을 높이기 위해서 공평성의 일부분을 희생하는 경우도 있다.
스케줄링이 추구하는 목적
- 공평성: 모든 프로세스가 자원을 공평하게 배정받아야 한다. 특정 프로세스가 배제되어서는 안된다.
- 효율성: 시스템 자원을 늘리는 시간 없이 스케줄링 해야한다.
- 안정성: 우선순위를 사용하여 중요한 프로세스가 먼저 처리되도록 해야한다.
- 반응 시간 보장: 응답이 없는 경우, 사용자는 시스템이 멈춘 것으로 가정하기 때문에 시스템은 적절한 시간 안에 프로세스의 요구에 반응해야 한다.
- 무한 연기 방지: 특정 프로세스의 작업이 무한이 연기되면 안된다.
스케줄링 알고리즘 평가기준
- CPU 입장
- CPU utilization: 시스템 동장 시간 중, CPU가 작업을 처리하는 시간의 비율. 최대한 CPU를 바쁘게 만드는 것. 가장 이상적인 수치는 100%
- 처리 량(Throughput): CPU가 단위 시간당 처리하는 프로세스 개수. CPU 버스트를 처리한 수
- 프로세스 입장
- 반환시간: 프로세스가 생성된 후 종료되어 사용하던 자원을 모두 반환하는데까지 걸린 시간. 대기시간 + 실행시간
- 대기시간: 프로세스가 CPU를 할당받아 실행되기 전 대기상태일 때의 시간. 보통 준비 큐에서 대기하는 시간.
- 응답시간: 프로세스가 대기 상태에 들어와 CPU를 최초로 얻기까지 걸리는 시간. 대기시간은 여러번 있을 수 있고, 그 총합이 대기시간인데 응답 시간은 최초의 한번이다.
preemptive(선점형) vs non-preemptive(비선점형)
preemptive
- CPU를 할당받아 실행중인 프로세스로부터 운영체제가 CPU를 강제로 빼앗을 수 있는 방식
- CPU 처리 시간이 매우 긴 프로세스의 CPU 독점을 막을 수 있다.
- 잦은 문맥 교환으로 오버헤드가 많이 발생한다.
non-preemptive
- CPU를 할당받아 실행중인 프로세스로부터 운영체제가 CPU를 빼앗을 수 없는 방식
- 필요한 문맥 교환만 일어나기 때문에 오버헤드가 상대적으로 적다.
- 프로세스의 배치에 따라서 효율성의 차이가 많이 난다.
CPU bound vs I/O bound
프로세스가 대기 상태에 있다가 CPU를 할당받아서 실행하면 **CPU burst**,
입출력 작업하면 **I/O burst** 라고 한다.
CPU bound process(CPU 집중 프로세스)
- CPU를 많이 사용하여 CPU burst가 많은 프로세스
I/O bound process(입출력 집중 프로세스)
- 입출력을 많이 사용해 IO burst가 많은 프로세스
전면 프로세스 vs 후면 프로세스
전면 프로세스
- GUI를 사용하는 os에서 화면의 맨 앞에 놓여 현재 입출력이 사용되고, 사용자와 상호작용이 가능해 상호작용 프로세스라고도 불린다.
후면 프로세스
- 사용자의 입력 없이 작동하여 일괄 작업 프로세스라고 불린다.
스케줄링 알고리즘 종류
FCFS(First Come First Served)
- 선입선출 방식
- 준비 큐에 도착한 순서대로 CPU를 할당하는 비선점형 방식
- 모든 프로세스의 우선순위가 동일
- CPU 처리 시간이 긴 프로세스가 앞에 올 경우, 뒤의 프로세스가 한없이 기다려야 하기 때문에 비효율적이게 된다. (콘보이효과)
SJF(Shortest Job First)
- 준비 큐에 있는 프로세스 중 실행 시간이 가장 짧은 프로세스부터 CPU를 할당하는 비선점형 방식
- 장점
- FCFS보다 효율성이 매우 높다.
- 늦게 도착하더라도 CPU 처리시간이 앞에 대기중인 프로세스보다 짧으면 먼저 CPU를 할당받을 수 있다. (콘보이효과 완화)
- 단점
- 비선점형 방식이기 때문에 CPU를 사용중인 프로세스보다 처리 시간이 짧더라도 빼앗지는 못한다.
- 처리 시간이 긴 프로세스 경우에 처리 시간이 짧은 프로세스가 계속해서 들어올 경우 대기 큐에서 영엉 CPU를 할당받지 못할 수 있다.(starvation 현상)
HRN(Highest Response Ratio Next)
- SJF 스케쥴링에 **Aging** 기법을 합친 비선점형 알고리즘
- Aging: starvation을 해결하기 위해 대기 시간이 길어지면 우선순위를 높여주는 방법
- 실행 시간이 적은 프로세스의 우선 순위가 높지만 대기시간이 너무 길어지면 실행 시간이 길더라도 CPU를 할당받을 수 있다.
SRTF (Shortest Remaning Time First)
- SJF의 선점형 방식
- 먼저 온 프로세스가 CPU를 할당받고 있어도 처리시간이 짧은 프로세스가 오면 CPU를 빼앗긴다.
- 장점
- 어떤 알고리즘보다 평균 대기 시간이 가장 짧다.
- 단점
- 선점형 방식이기 때문에 잦은 문맥교환이 일어나고, 그에 따른 오버헤드가 커진다.
- starvation 현상이 더 심각하게 발생할 수 있다.
Priority Scheduling
- 프로세스의 중요도에 따라 매긴 우선순위를 반영한 알고리즘
RR(Round Robin)
- 프로세스에게 각각 동일한 CPU 할당 시간(quantum)을 부여해서 이 시간 동안만 CPU를 이용하게 한다. -> 할당 시간동안 처리를 다 못할경우, CPU를 빼앗기기 때문에 선점형 방식이다.
- CPU 처리시간을 계산하지 않아도 돼서 선점형 방식의 가장 단순하고 대표적인 방법이다.
'CS 공부 > 운영체제' 카테고리의 다른 글
[운영체제] 파일 시스템 - Disk (0) | 2021.09.24 |
---|---|
[운영체제] Virtual Memory (가상 메모리) (0) | 2021.08.28 |
[운영체제] - 메모리 관리 기법 (0) | 2021.08.25 |
[운영체제] - 프로세스 동기화 (0) | 2021.08.18 |
[운영체제] - 프로세스와 스레드 차이 (0) | 2021.08.09 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 5397
- allauth
- 백준
- 소셜로그인
- 동적프로그래밍
- 4계층
- 알고리즘
- 완전탐색
- Network
- C++
- cs공부
- DP
- 파이썬
- cs
- IPv4
- 코테
- 운영체제
- BFS
- OS
- 인텔리제이
- 프로그래머스
- 브루트포스
- 코딩테스트
- dfs
- intellij
- SQL
- SQLD
- 다대다매핑
- Python
- 네트워크
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함