본문 바로가기
이론 공부 내용 정리

OS4-스케줄러,CPU 스케줄러,동기와 비동기의 차이

by mazayong 2021. 6. 10.

1. 스케줄러

1-1) 스케줄링?

프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업.
다중 프로그래밍을 지원하는 OS에서 프로세서를 효율적으로 관리하기 위해 필요.

 

1-2) 스케줄링의 목적

CPU나 자원을 효율적으로 사용하기 위함이다.

공정성 : 모든 프로세스에 공정하게 할당.

처리율(량) 증가: 단위시간당 프로세스를 처리하는 비율 증가.

CPU 이용률 증가 : 프로세스 실행 과정에서 주 기억장치를 액세스하는 것, 입출력 명령실행 등의 원인에 의해 발생할 수 있는 CPU의 낭비시간을 줄이고, CPU가 순수하게 프로세스를 실행하는 데 사용되는 시간 비율 증가.

우선순위 제도 : 우선순위가 높은 프로세스 먼저 실행

오버헤드 최소화 

응답시간 최소화 : 작업을 지시하고 반응하기 시작하는 시간 최소화

반환시간 최소화 : 프로세스를 제출한 시간부터 실행이 완료되는 시간 최소화

 

1-3) 스케줄러의 정의

스케줄링하려는 프로세스가 담긴 프로세스 큐의 모음.

Job Queue : 현재 시스템 내의 모든 프로세스가 담긴 큐

Ready Queue : 현재 메모리 내에 적재되어 있으며 CPU를 할당받아 실행되기를 기다리는 프로세스가 담긴 큐

Device Queue : Device I/O처리를 기다리는 프로세스가 담긴 큐

 

1-4) 스케줄러의 종류

* 장기 스케줄러 : 작업 스케줄러라고 부르며 어떤 프로세스를 ready queue로 옮길지를 결정한다.(new -> ready)

메모리는 한정되어 있는데 많은 프로세스들이 메모리에 올라올 경우, 대용량 메모에 임시로 할당되는데 여기서 메모리를 할당해 ready queue로 옮기는 것을 결정하는 스케줄러이다. (=pool로부터 프로세스를 선별하고 실행을 위해 메모리에 적재)

초, 분단위로 가끔 호출되므로 속도가 느려도 허용.

(CPU bound process(CPU 계산 비중이 큰 프로세스)와 I/O bound process(입출력 많이 요구하는 프로세스)의 균형을 맞춰줌.)

메모리-디스크 사이 스케줄링 담당.

프로세스에 메모리(각종 자원)를 할당

메모리에 동시에 올라가 있는(실행 중인) 프로세스의 수 조절.

++시분할 시스템에서 장기 스케줄러가 이용되지 않음.(과거에는 적은 양의 메모리를 많은 프로세스들에게 할당하면 프로세스당 메모리 보유량이 적어져 장기 스케줄러가 이를 조절하는 역할을 했지만 현대 OS에서는 프로세스가 시작되면 장기 스케줄러 없이 바로 프로세스에 메모리를 할당해 준비 큐에 넣어주게 됨.)

 

* 단기 스케줄러 : CPU 스케줄러라고 불리며 ready상태의 프로세스 중 어떤 것을 실행 상태로 바꿀지를 결정하는 스케줄러.

(ready -> running -> waiting -> ready) 

시분할 시스템에서는 타임 인터럽트로 인해 스케줄러가 호출됨.

CPU-메모리 간 스케줄링 담당

프로세스에 스케줄링 알고리즘에 따라 CPU를 할당(shceduler dispatch)

 

* 중기 스케줄러 : 현 시스템에서 메모리에 너무 많은 프로그램이 동시에 올라가는 것을 조절하는 스케줄러(ready -> suspended)

메모리에 적재된 프로세스의 수 조절.(Swapper)

여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄.(swapping)

blocked 상태는 다른 I/O 작업을 기다리는 상태기 때문에 스스로 ready state로 돌아갈 수 있지만 suspended 상태는 외부적인 이유로 suspended되어 스스로 돌아갈 수 없다.

 

 

2. CPU 스케줄러

2-1) 스케줄링 기법의 종류

* 비선점 스케줄링

이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법

프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU를 사용함.

프로세스 응답 시간 예측이 용이, 일괄 처리 방식에 적합.

중요한 작업이 중요하지 않은 긴 작업을 기다리는 경우가 발생할 수 있음.

FCFS, SJF, 우선순위 큐, HRN 알고리즘이 이용됨.

 

* 선점 스케줄링

하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법.

우선순위가 높은 프로세스 빠르게 처리 가능.

주로 빠른 응답시간을 요구하는 대화식 시분할 시스템에 사용.

많은 오버헤드 초래.

선점 가능하도록 일정 시간 배당에 대한 인터럽트용 타이머 클락(하나의 시스템 내에서 동작하는 장치들을 감시하기 위해 주기적인 신호를 발생하는 것. 하나의 프로세스 자원 독점 방지가 목적임.)이 필요.

선점 스케줄링의 종류는 Round-Robin, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 알고리즘이 이용됨.

 

2-2) cpu스케줄링의 종류

* FCFS : 먼저 요청한 프로세스 순으로 스케줄링.

비선점 방식.

자원의 효율성이 높고, 일괄 처리 시스템에 적합.

프로세스를 장기간 독점하는 경우 평균 응답 시간이 길어짐.(오랜 시간 기다림)

대화형 시스템에 부적합.

 

* SJF : cpu 작업 시간이 가장 짧은 프로세스 순으로 스케줄링

비선점 방식.

작업시간 동일할 경우 FCFS 정책을 따름.

평균 대기 시간 최소화

시스템 내의 대기 프로세스 수 최소화

많은 프로세스들에게 빠른 응답 시간 제공

무기한 연기 현상 발생 가능(starvation)

프로세스 생성 시 총 실행 시간에 대한 정확한 계산 불가능.

 

* SRTF : 선점 SJF 알고리즘 방식

프로세스 생성시 총 실행시간 추정 작업 필요

잦은 선점으로 문맥 교환 오버헤드 증대

실행 시간이 긴 프로세스들의 평균 응답 시간 길어짐(구현 및 사용 비현실적)(starvation)

 

* RR(Round-Robin) : time quantum라는 작은 시간을 정의해 이 시간이 경과할 때마다 현재 프로세스를 중단하고 다음 프로세스 실행.

응답시간이 짧아 대화형 시스템에 적합

시분할 시스템에서 사용.

프로세스가 기다리는 시간이 cpu를 사용할 만큼 증가.

선점 방식

time quantum에 알고리즘 성능이 의존해 크기가 커지면 FCFS와 차이가 없고, 작으면 문맥 전환 많이 발생.

 

* 우선 순위 스케줄링 : 우선순위가 높은 프로세스 순으로 CPU 할당.

선점 또는 비선점

우선순위가 같으면 FCFS로 할당, 낮은 수일수록 우선순위 높음.

우선순위가 낮은 프로세스의 경우 영구 대기 현상 발생.(오래 기다리면 우선 순위 높이기)

 

 

 

3. 동기와 비동기의 차이

* 동기 : 요청을 보낸 후 응답을 받아야지만 다음 동작이 이뤄지는 방식.

어떤 일을 처리할 동안 다른 프로그램은 정지.

실제 cpu가 느려지진 않지만 시스템의 전체적 효율 저하.

설계가 간단하고 직관적.

한 번에 한 작업만 가능해 다른 작업을 실행하려면 기다려야 함.

 

* 비동기 : 요청을 보낸 후 응답과 상관없이 다음 프로세스 작동.

결과가 주어지는 데 시간이 걸리더라도 그 시간동안 다른 작업이 가능해 자원 효율적인 이용 가능.

비동기식 처리를 요청할 때 일이 끝난 후 처리 결과를 알려주기 위해 callback 함수를 함께 보냄.

callback은 처리가 끝나면 요청한 함수를 호출해 처리 결과를 전달하게 됨.(처리 결과 응답이 아닌 요청에 대한 확인 동작. 일을 마친 시스템이 호출하는 형태)

DOS같은 단일 OS는 불가능. window같은 multitask환경에서만 가능.

동기식보다 설계 복잡.

 

 

 

출처

https://jieun0113.tistory.com/73

 

[용어정리] 동기방식&비동기방식 비교

동기방식 (Synchronous) 요청을 보낸 후 응답(=결과)를 받아야지만 다음 동작이 이루어지는 방식이다. 어떠한 일을 처리할 동안 다른 프로그램은 정지한다. 실제 cpu가 느려지는 것은 아니지만 시스

jieun0113.tistory.com

https://velog.io/@yerin4847/CPU-스케줄링CPU-Scheduling

 

CPU 스케줄링(CPU-Scheduling)

CPU 스케줄링에 대해서 알아봅시다.

velog.io

https://jhnyang.tistory.com/372

 

[운영체제OS] 장기스케줄러 vs 중기스케줄러 vs 단기스케줄러에 대해 알아보자! long, medium, short sche

[양햄찌가 알려주는 운영체제 완전정복 목차 링크모음] 안녕하세요 ㅎㅎ 오랜만에 다시 운영체제 관련 포스팅을 들고 왔습니다 저번시간에 프로세스의 상태에 대해서 얘기하고,, 그 다음에 아

jhnyang.tistory.com

https://technote-mezza.tistory.com/70

 

[운영체제 OS]프로세스의 상태와 스케줄러의 종류,하는일

프로세스의 상태를 변화시키는 스케줄러를 공부하다 보니 프로세스 상태까지 다시 보게 되었다. 한번 본다고 끝이 아니라 보다 보면 헷갈리는 게 계속 나오는듯하다! 스케줄러(Scheduler)란? :어떤

technote-mezza.tistory.com

https://coding-factory.tistory.com/309

 

[OS] 운영체제 스케줄링이란 무엇인가?

 스케줄링이란? 1. 스케줄링은 프로세스가 생성되어 실행될때 필요한 시스템의 여러자원을 해당 프로세스에게 할당하는 작업을 의미합니다. 2. 프로세스가 생성되어 완료될때까지 프로세스는

coding-factory.tistory.com