우보천리 개발

[OS] 프로세스 스케줄링 본문

Computer Science/운영체제

[OS] 프로세스 스케줄링

밥은답 2023. 5. 16. 16:19
반응형

다중 프로그래밍에서는 운영체제는 프로세스들에게 CPU를 할당하거나 회수하면서 프로세서의 이용률과 처리율을 높일 수 있다.

프로세서가 다음에 어떤 프로세스를 실행할 것인지 정해야하는데 그것을 프로세스 스키줄링이라고 한다.

즉, 어떤 프로세스에게 언제 프로세서를 할당할 것인지를 결정해야한다.

 

일반적으로 프로세스는 I/O Burst와 CPU Burst를 번갈아가며 실행이 된다.

프로세서를 사용하고 있을 때를 CPU Burst, I/O 를 기다리고 있을 때는 I/O Burst라고 한다.

 

보통 I/O 위주의 프로세스는 CPU Burst가 짧고 반대로 프로세서 중심의 작업(계산)은 CPU Burst가 길다.

그렇기 때문에 I/O가 많은 프로세스는(예를 들어 사용자와 상호작용을 많이 하는 작업)은 CPU를 기다리는 시간이 길어진다. 

이렇게 지연이 발생이 되기 때문에 프로세서의 효율을 높이기 위해서는 적절한 스케줄링 작업이 필요하다.

 

큐잉 도표

Queueing Diagram

시스템에 들어오는 작업은 PCB가 생성되고, 생성된 PCB는 Ready Queue에 들어가며 4가지 사항 중 1개가 발생한다. 이는 작업이 종료 될때까지 반복하게 된다.

 

1. I/O Request를 하고 I/O Queue에 들어가기

2. 자식 프로세스를 생성하고 Ready Queue들어가기

3. 할당된 시간이 끝나서 Ready Queue 들어가기

4. 인터럽트로 인해 다시 Ready Queue 들어가기

 

스케줄러

스케줄링을 위해서 스케줄러를 사용하는데 

장기 스케줄러, 중기 스케줄러, 단기 스케줄러가 있다

 

장기 스케줄러: 디스크에서 메모리로 작업을 가져와서 처리할 순서를 정한다.이때 선택한 작업에 PCB를 탑재하여 메모리에 적재하면 프로세스가 되는 것이다.

단기 스케줄러: 이렇게 메모리에 적재된 프로세스 중에서 자원의 요청을 만족한 프로세스에 대해서 어떤 프로세스를 실행할 것인지 결정한다

 

비선점형 스케줄링과 선점형 스케줄링

Preemptive and Non-preemptive 스케줄링은 실행중인 프로세스를 중단하고 다른 프로세스를 실행할 수 있는지에 따라 구분 된다.

선점형 스케줄링에서는 프로세스 하나가 계속해서 프로세서를 독점하여 사용할 수 없기 때문에 다른 프로세스들에게도 기회가 온다. 

또한 우선순위가 높은 프로세스가 프로세서를 잡고 수행할 수 있다.

그렇기 때문에 프로세서를 효과적으로 사용할 수 있다. 다만 오버헤드가 많이 발생할 가능성이 있다.

 

비선점형 스케줄링은 선점형과 다르게 하나의 프로세스가 프로세서를 잡고 있으면 다른 프로세스가 중간에 끼어들지 못한다.

그렇기 때문에 우선순위와 상관없이 하나의 프로세스가 끝날때 까지 기다려야한다. 이러한 이유로 응답시간을 예측할 수 있기도 하다.

 

스케줄링 알고리즘 선택법

좋은 스케줄링 알고리즘은 프로세서의 사용률과 처리율을 최대화, 반환시간, 대기시간, 응답시간을 최소화 하는 것이다.

 

1. CPU Utilization(사용률): 프로세서를 바쁘게(효율적으로) 유지하는 것이다. 즉 CPU 작업 위주로 한다

2. Throughput(처리율): 단위시간당 처리하는 작업의 수를 늘리기 위해서 짧은 작업을 먼저한다

3. Turnaround Time(반환시간): 프로세스가 메모리에 들어가서 작업을 완료할 때 까지 걸리는 총 시간

4. Waiting Time(대기시간): 도착하여 준비 큐에서 기다리다는 총 시간

5. Response Time(응답시간): 요청한 시간부터 처음으로 CPU를 획득할 때 까지의 시간. 대화식 시스템에서 중요하다.

반응형

'Computer Science > 운영체제' 카테고리의 다른 글

[OS] DeadLock  (0) 2023.05.25
[OS] 스케줄링 알고리즘  (0) 2023.05.17
[OS] 프로세스 생성과 협력 개요  (0) 2023.05.15
[OS] Thread, Multi-Process, Multi-Thread  (1) 2023.05.13
[OS] 프로세스와 문맥교환  (0) 2023.04.24
Comments