데브림의 블로그 포스팅 한 것들을 한 눈에 확인하고 싶다면 클릭!
👉 https://github.com/DevLimK1/tistory-map 👈
운영체제에서 스케줄링 기법들이 어떤 것이 있고
스케줄링 기법 마다 실행시간, 대기시간, 반환시간이 어떻게 되는지도 알아봅시다🧐
프로세스 스케줄링(=CPU 스케줄링)
👉 정의 : 컴퓨터 시스템의 성능을 높이기 위해 사용 순서를 결정하기 위한 정책
👉 목적(성능 평가)
- 처리율 증가
- CPU 이용률 증가
- 우선 순위 제도
- 응답 시간 / 반환 시간 / 대기 시간 최소화
- 균형 있는 자원의 사용
- 무한 연기 회피
- 오버헤드(부하) 최소화
스케줄링 기법
1) 비선점 스케줄링 (Non Preemptive) : 비효율적, 비양보
- 프로세스에게 이미 할당된 CPU를 강제로 빼앗을 수 없음 (사용이 끝날 때까지 기다려야 함)
- 일괄 처리(오버헤드 발생하지 않음)
- 실시간 처리 ❌ - > 중요한 작업이 기다리는 경우 발생
- 대표적인 스케줄링: FIFO, SJF, HRN 👉 아래에서 좀 더 자세히 알아봅시다🧐
2) 선점 스케줄링 : 효율적, 양보
- 우선 순위가 높은 다른 프로세스가 할당된 CPU를 강제로 빼앗을 수 있음
- 대화식 시분할 처리 (오버헤드 발생)
- 실시간 처리 ⭕
- 대표적인 스케줄링 : RR, SRT 👉 아래에서 좀 더 자세히 알아봅시다🧐
1) 비선점 스케줄링
1️⃣ FIFO(First-In First-Out) = FCFS (First-Come First-Service) : 먼저 들어온 것이 먼저 나간다. (선입선출)
👉 준비상태에서 도착한 순서에 따라 CPU 할당
😃 실행시간은 말 그대로 A, B ,C 가 작업을 처리, 실행하는 시간을 나타낸다.
대기시간은 A가 작업할 동안 B가 작업을 실행하기 위해서 대기하는 시간,
B가 작업할 동안 C가 작업을 실행하기 위해 대기하는 시간들을 의미한다.
반환시간은 실행시간과 대기시간을 합친 시간으로 작업이 완료되어 반환되는 시간이다.
2️⃣ 최단 작업 우선 : SJF(Shortest Job First)
👉 작업이 끝나기까지의 실행 시간 추정치가 가장 작은 작업을 먼저 실행
👉 FIFO 보다 평균 대기 시간이 작지만 긴 작업의 경우 FIFO 기법보다 더 크고 예측이 더욱 어려움
👉 작업 시간이 큰 경우 오랫동안 대기하여야 함
1) A,B,C가 동시에 도착 가정
2) 도착 시간이 주어질 경우 : A(0초) , B(1초 후에 도착) , C(2초 후에 도착) 가정
😀 A,B,C 순으로 도착을 했다. A가 작업을 먼저 진행하는 동안에 B가 도착하고 그 다음에 C가 도착했지만, 둘 중에 작업 시간이 더 작은 C가 A의 작업이 끝난 후 B보다 더 먼저 작업을 처리하게 된다.
대기 시간은 늦게 도착한 시간 만큼 빼주면 된다.
여기서 또 하나 중요한 것은
실행시간이 큰 작업은 무한연기(기근현상)이 발생할 수 있다.
따라서,
해결 방법으로 Aging 기법(강제 우선순위 부여) 로 해결할 수 있겠다.
3️⃣ HRN(Highest response ration Next)
👉 SJF 방식의 단점인 긴 작업과 짧은 작업시간의 불평등을 보완하는 기법
👉 우선순위 계산식 : (대기시간+서비스 시간) / 서비스 시간 => 대기시간이 길면 우선순위가 높아짐!
※ 그 외 비선점 스케줄링
- 우선순위: 대기 큐에서 기다리는 각 프로세스마다 우선 순위를 부여하여 그 중 가장 높은 프로세스에게 먼저 CPU를 할당하는 기법
- 기한부: 프로세스에게 일정한 시간을 주어 그 시간 안에 프로세스를 완료하도록 하는 기법
(현재 작성중입니다... 빠르게 작성완료 하도록 할게요💪)
댓글