-
기아 상태가 무엇인가요?
프로세스가 원하는 자원을 사용하지 못하고 무한정 기다리는 상태
- CPU 스케줄링 관점에서 기아 상태란 CPU 제어권을 얻기 위해 ready queue에 줄 서 있는 상황에서 특정 프로세스는 CPU를 얻지 못하고 무한정 기다리는 상태를 말한다.
- CPU 스케줄링 기아 상태 예시
- SJF : CPU 사용 시간이 짧은 프로세스를 우선 처리하기 때문에, ready queue에 프로세스가 계속해서 투입되는 상황에서 CPU 사용 시간이 긴 프로세스는 무한정 기다리고 있는 상황 발생 가능
- Priority Scheduling : 우선 순위가 높은 프로세스를 우선 처리하기 때문에, ready queue에 프로세스가 계속해서 투입되는 상황에서 우선 순위가 낮은 프로세스는 무한정 기다리고 있는 상황 발생 가능
-
기아 상태를 어떻게 해결할 수 있나요?
- 기아 상태 발생 불가능한 스케줄링 방식을 채택
- FCFS : ready queue에 도착한 순서대로 CPU 제어권을 부여
- Round Robin : ready queue에 도착한 순서대로 CPU 제어권을 부여하되, 할당시간이 끝나면 다시 ready queue에 뒤에서 자기 차례를 기다리도록
- 멀티레벨 피드백 큐를 활용하여 오래 기다린 프로세스에 높은 우선순위를 부여하도록 할 수 있음
- 여러 개의 큐가 서로 다른 우선순위를 가지고 있고
- 프로세스가 서로 다른 큐를 오갈 수 있기 때문에
- 낮은 우선순위의 큐에서 일정 시간 이상 기다린 프로세스는
- 높은 우선순위의 큐로 이동시켜 기아 상태를 예방할 수 있도록
-
CPU 스케줄링에 대해 설명해주세요.
CPU를 사용하고자 ready queue에서 대기 중인 프로세스들에 대해 누구에게 얼마만큼의 CPU 사용권을 부여할지 결정하는 방법
- 각 프로세스는 균일하지 않다.
- CPU를 길게 많이 쓰는 프로세스와 사용자와 인터렉션이 자주 일어나 CPU를 짧게 쓰는 프로세스가 섞여있기 때문에
- 컴퓨터 자원을 효율적으로 놀리기 위해 어떤 프로세스에게 CPU를 먼저 주고 얼만큼 주어야 하는지 결정하는 것이 중요한 문제가 된다.
- I/O bound job에게 CPU를 먼저 주지 않아서 IO 디바이스가 놀고 있으면 비효율적
- IO 요청이 많은 io bound job이 CPU 제어권을 잡지 못하면 IO 디바이스에 요청 자체가 안들어와서 아무 일도 안한채로 기다리는 상태가 될 수 있다.
- 너무 짧게 CPU를 제어권을 다른 프로세스로 넘겨 Context Switching이 많아지면 비효율적
-
스케줄러의 종류는 무엇이 있나요?
- 하나의 큐를 가지는 스케줄링 방식
- FCFS (Nonpreemptive)
- SJF (Nonpreemptive, Preemptive)
- Priority Scheduling (Nonpreemptive, Preemptive)
- Round Robin (Preemptive)
- 여러개의 큐를 가지는 스케줄링 방식
- Multilevel Queue
- Multilevel Feedback Queue
-
선점형 스케줄링과 비전형 스케줄링의 차이가 무엇인가요?
- 선점형 스케줄링 : CPU를 다른 프로세스에 빼앗길 수 있는 방식
- FCFS : 자기에게 CPU가 할당되면 사용하고자 하는 시간 동안 다른 프로세스에게 빼앗기지 않는다.
- 비선점형 스케줄링 : CPU를 빼앗기지 않는 방식
- Round Robin : 더 사용하고 싶더라도 할당시간이 끝나면 다른 프로세스에게 빼앗긴다.
- 두 버전 모두 존재하는 스케줄링 방식
- SRJF : 선점형의 경우, 자신이 할당 받아서 사용하고 있더라도 CPU 사용시간이 더 적은 프로세스가 queue에 도착하면 해당 프로세스에게 CPU를 빼앗김
- Priority Scheduling : 선점형의 경우, ….. 우선순위 더 높은 프로세스에게 CPU 빼앗김
-
선입선출 스케줄링(FCFS)에 대해 설명해주세요.
ready queue에 도착한 순서대로 CPU를 부여하는 방식
- 일단 CPU를 부여받은 프로세스는 작업이 끝날 때까지 빼앗기지 않는다.
- 사용시간이 긴 프로세스가 먼저 도착하면 짧은 프로세스들이 오래 기다려야한다는 단점이 있다.
-
최단 작업 우선 스케줄링(SJF)에 대해 설명해주세요.
CPU 사용 시간이 가장 짧은 프로세스에게 CPU를 부여하는 방식
- 장점
- 사용시간이 짧은 프로세스들이 먼저 처리되고 나가기 때문에, 전체적인 대기시간 측면에서는 가장 optimal한 방식이다.
- 단점
- ready queue에 프로세스가 계속 투입되는 상황에서 사용시간이 긴 프로세스는 영원히 CPU를 얻지 못하는 상황이 생길 수 있다.
- 사전에 CPU 사용시간을 정확하게 예측하는 것도 한계가 있기 때문에 예측 결과와 사용시간이 다를 수 있다는 점이 있다.
-
최소 잔류 시간 우선 스케줄링(SRTF) 방식에 대해 설명해주세요.
CPU 사용 시간이 가장 짧은 프로세스에게 CPU를 부여하고, 새로운 프로세스의 사용 시간이 현재 CPU를 사용 중인 프로세스의 사용 시간보다 적다면 CPU를 뺏어 해당 프로세스에게 부여하는 방식
- CPU 스케줄링 방식 중 평균대기시간 측면에서 가장 optimal한 방식
-
우선순위 스케줄링에 대해 설명해주세요.
우선순위가 높은 프로세스에게 CPU를 부여하는 방식
- SJF도 일종의 우선순위 스케줄링 방식으로, CPU 사용시간을 우선순위 기준으로 잡은 스케줄링 방식이다.
- queue에 프로세스가 계속 투입되는 상황에서 우선순위가 낮은 프로세스가 영원히 실행되지 않을 수 있다는 문제가 있다.
-
라운드 로빈 스케줄링에 대해 설명해주세요.
각 프로세스에 동일한 할당 시간을 부여하고, 해당 시간만큼만 CPU를 사용하고 다시 queue에 줄을 서는 것을 반복하며 처리하는 방식
- 범용 컴퓨터의 실제 CPU 스케줄링의 근간이 되는 방식이다.
- 본인이 사용하고자 하는 CPU 사용시간과 대기시간이 어느정도 비례하기 때문에 공정하게 분배할 수 있다.
- 장점
- 기아현상을 막을 수 있다.
- CPU를 기다리는 프로세스가 N개 라면, N-1 할당시간 내에는 CPU를 한 번은 사용할 수 있다.
- 단점
- 할당시간이 너무 짧거나 길면 비효율적이다.
- 할당시간이 너무 짧으면 불필요한 context switching 오버헤드가 많이 일어나게 된다.
- 할당시간이 너무 길면 FCFS와 동일하게 사용시간이 짧은 프로세스들이 너무 오래 기다려야 한다는 문제가 있다.
-
멀티 레벨 큐 스케줄링에 대해 설명해주세요.
ready queue를 여러 개로 분할하여 관리하는 방식
- 하나의 프로세스는 한 큐에만 속할 수 있다.
- foreground queue : io bound job
- background queue : cpu bound job (batch job)
- 각 큐는 독립적인 스케줄링 알고리즘을 가질 수 있다.
- foreground queue는 rr, background queue는 fcfs
- 큐들에 대한 스케줄링도 필요하다.
- foreground queue, background queue가 있다면 어떤 큐의 우선순위를 더 높게 가져갈 것인지를 결정
- fixed priority scheduling : foreground queue가 비어있을 때만 background queue를 처리
- time slice : 각 큐에 cpu 사용시간 비중을 부여, foreground queue에 80퍼센트, background queue에 20퍼센트
-
멀티 레벨 피드백 큐 스케줄링에 대해 설명해주세요.
ready queue를 여러 개로 분할하여 관리하는 방식
- 하나의 프로세스가 여러 개의 큐를 이동할 수 있다.
- 기아상태를 해결하는 방법 중 하나인 aging 방식을 구현하는데 사용됨
- 일정 시간 이상 기다린 프로세스를 우선순위가 높은 큐로 이동시켜서 처리가 되도록..