Closed youngreal closed 2 years ago
작업 스케줄링은 준비 대기열로 가져와야 하는 프로세스를 선택하는 메커니즘 CPU 스케줄링은 다음에 실행할 프로세스를 선택하고 해당 프로세스에 CPU를 할당하는 메커니즘
CPU 이용률, 처리량을 최대화하고 총처리 시간, 대기 시간, 응답 시간을 최소화하는 것이 바람직하다.
FCFS (First Come First Served)
SJF (Shortest Job First)
SRTF (Shortest Remaining Time First)
우선순위 (priority scheduling)
RR (Round Robin)
멀티레벨 큐
멀티레벨 피드백 큐
여러 개가 동시에 실행되는 특성상 순서를 정해줄 필요가 있습니다. 순서를 대기하는 곳을 큐(Queue)라 하고, 순서를 정해주는 알고리즘을 스케줄링(Scheduling) 이라 합니다. 큐에 따른 스케줄링 종류에는 Job Queue - Job Scheduler
, Ready Queue - CPU Scheduler
, Device Queue - Device Scheduler
가 있습니다.
비선점형 방식은 프로세스가 스스로 CPU 소유권을 포기하는 방식이며 강제로 프로세스를 중지하지 않습니다. 따라서 컨텍스트 스위칭으로 인한 부하가 적습니다. 비선점형 방식에는 FCFS
, SJF
, 우선순위
등이 있습니다.
선점형 방식은 현대 운영체제가 쓰는 방식으로 지금 사용하고 있는 프로세스를 알고리즘에 의해 중단시켜 버리고 강제로 다른 프로세스에 CPU 소유권을 할당하는 방식을 말합니다. 선점형 방식에는 RR
, SRF
, 다단계 큐
등이 있습니다.
라운드로빈(RR)은 현대 컴퓨터가 사용하는 스케줄링인 우선순위
스케줄링의 일종으로 각 프로세스는 동일한 할당 시간을 주고 그 시간 안에 끝나지 않으면 다시 준비 큐의 뒤로 가는 알고리즘입니다. 할당시간이 너무 크면 FCFS
가 되고 너무 짧으면 컨텍스트 스위칭이 잦아져서 오버헤드가 많아집니다. 일반적으로 전체 작업 시간이 길어지지만 평균 응답 시간은 짧아진다는 특징이 있습니다. 그리고 라운드 로빈 알고리즘은 로드밸런서에서 트래픽 분산 알고리즘으로 사용된다고 합니다.
자원을 효율적으로 사용하기 위해 자원을 사용한느 순서를 결정짓는 작업이다!
어떤 프로세스가 CPU를 할당받아 실행 중에 있어도 어떤 프로세스가 CPU를 할당 받으면 그 프로세스가 종료되거나 입출력 요구가 발생하여 자발적으로 중지될 때까지 계속 실해도록 보장한다.
- 순서대로 처리되는 공정성이 있고, 다음에 처리해야 할 프로세스와 관계없이 응답 시간을 예상할 수 있다.
- 모든 프로세스에 요구에 대해 공정하다.
한 프로세스가 cpu를 할당받아서 실행하고 있을 때 다른 프로세스가 cpu를 사용하고 있는 프로세스를 중지시키고 cpu를 차지할 수 있는 스케줄링 기법을 선점 스케줄링 기법이다.
Time Sharing System 에서는 주기적으로 Context Switching을 진행한다.
Running 상태의 프로세스가 I/O 작업을 수행하지 않더라도 일정시간이 되면 Ready 상태로 만든다. 이때 사용하는 스케줄링 방법이 라운드로빈 스케줄링이다. -> 말 그대로 뺑뺑 돌면서 프로세싱을 수행하게 된다.
라운드로빈은 위에 적은거처럼 일정시간마다 프로세스가 강제로 교체된다. 이 때 사용되는 일정시간이 바로 Time Slice이다.
Time Slice를 무한대로 선정할 경우 FCFS 스케줄링과 동일해지게 됩니다.
그 이유는 해당 프로세스가 끝나야만 다음 프로세스로 전환되기 때문입니다. 반대로 0인 경우 Sharing된 상태입니다. 프로세스3개가 존재하면 그 3개가 동시에 수행되게 되는데, 이럴경우 Context Switching의 Overhead가 너무 커지게 됩니다.
스케줄링 이라는건 무엇이고 목적이 무엇일까요?
선점 스케줄링, 비선점 스케줄링이 무엇인가요?
책의 4장에서 라운드로빈 스케줄링이 언급됐습니다. 라운드로빈 스케줄링 알고리즘은 어떤메커니즘인가요?