기술 정리 & CS/기술면접 대비

[기술 면접 대비] Operating System 4 - CPU Scheduling

yubi5050 2024. 9. 22. 20:51

버스트 (Burst)

네트워크 트래픽 / 리소스 관점 : 일정 기간 동안 임시로 허용되는 최대치 이상의 트래픽이나 리소스 사용 초과량

컴퓨터 과학 관점 : CPU Scheduling이나  I/O 작업에서 프로세스의 한 작업이 연속적으로 실행되는 시간

 

프로그램은 일반적으로 CPU Burst - I/O Burst를 번갈아 가면서 실행된다.

https://www.baeldung.com/cs/cpu-io-burst-cycles

 

CPU Burst

- 프로세스가 CPU에 할당된 후 실행을 시작하고, 중단 없이 처리되는 기간. 이후 I/O 작업이 필요하면 CPU Burst가 끝나고, I/O 작업 후 다시 CPU에 할당되면 새로운 Burst가 시작됨

 

Disk I/O Burst 

- 디스크나 네트워크 장치, DB 등에 대한 연속된 데이터 읽거나 쓰는 작업을 수행하는 것

 

바운드 (Bound)

CPU 바운드 (CPU-bound Job)

CPU 바운드 작업은 CPU의 처리 속도에 의해 결정되는 경우를 일컫음

- 즉 CPU가 빠르다면 작업속도가 더 빨라질 수 있는 프로그램

- 복잡한 계산, 데이터 처리, 이미지/비디오 렌더링, 암호화, 압축 등의 CPU 연산이 많이 필요한 작업을 수행

- python의 경우 cpu-bound에 한해서 GIL 때문에 멀티 스레딩을 지원하지 않음 (I/O 바운드가 많은 작업은 적절)

- ex) 병렬처리 (멀티코어 CPU) 활용을 통해 성능 향상 가능

- CPU 바운드 작업의 경우 멀티프로세싱이나 병렬 처리를 고려하여, 비동기 처리보다는 멀티코어 CPU를 활용하는 것이 효과적

 

I/O 바운드 (I/O-bound Job) 

- I/O 바운드 작업은 프로그램의 성능이 주로 입력/출력 작업의 속도에 의해 결정되는 경우

- 파일 읽기/쓰기, 네트워크 통신, 데이터베이스 쿼리 등의 I/O 연산이 많이 필요한 작업

- I/O 작업 중 CPU는 상대적으로 유휴 상태일 수 있음

디스크, 네트워크, 메모리 등 외부 I/O 장치의 성능에 크게 의존

- 비동기 프로그래밍이나 멀티스레딩을 통해 I/O 병목을 줄일 수 있습니다.

- ex) 데이터베이스 서버 / 파일 서버 / 웹 서버 / 네트워크 통신을 많이 하는 애플리케이션

- 멀티스레딩과 비동기 프로그래밍을 통해 높은 성능과 동시성을 유지 가능 

 

CPU 바운드와 I/O 바운드의 차이

특징 CPU 바운드 작업 I/O 바운드 작업
주요 병목 요소 CPU 처리 능력 I/O 장치 성능 (디스크, 네트워크 )
CPU 사용률 높음 낮음 (I/O 대기 시간 동안)
성능 향상 방법 빠른 CPU 또는 멀티코어 CPU 활용 비동기 I/O, 빠른 I/O 장치, 멀티스레딩
복잡한 계산, 데이터 처리, 렌더링 데이터베이스 쿼리, 파일 읽기/쓰기, 네트워크 통신

 

 

CPU Scheduling 알고리즘

1. FCFS (First-Come, First-Served)

- 도착한 순서대로 CPU를 할당받는 스케쥴링 알고리즘

- 작업이 긴 프로세스가 먼저 도착시 이후 프로세스들이 오래 대기 해야 될 수 있음

 

2. SJF (Shortest Job First)

- 가장 짧은 실행 시간을 가진 프로세스에게 우선적으로 CPU가 할당되는 방식.

- 평균 대기 시간이 최소화될 수 있으나, 긴 작업 시간을 가진 프로세스가 무한정 대기 되는 (기아-starvation) 문제 발생

 

3. Priority Scheduling

- 프로세스마다 우선순위를 부여해 CPU를 할당하는 방식

- 중요한 작업 먼저 처리 가능, 우선순위 낮은 프로세스가 무한정 대기 되는 (기아-starvation) 문제 발생장점 (해결책: 에이징 방법)

 

4. Round Robin (RR)

- 고정된 시간 할당량(Time Quantum)을 설정해, 각 프로세스에게 정해진 시간만큼 CPU를 할당하는 방식

- 응답 시간이 일정하며, 공정성을 보장하지만 Time Quantum이 너무 짧으면 문맥 교환 비용이 증가하고, 길면 FCFS와 비슷

 

5. Multilevel Queue Scheduling

- 프로세스들을 여러 개의 우선순위 큐에 나누어 관리하고, 각 큐에 다른 스케줄링 알고리즘을 적용하는 방식

- 서로 다른 특성을 가진 작업들을 효율적으로 처리 가능하며, 결국엔 큐 사이의 우선순위 차이로 인한 기아 문제 발생 가능.

 

6. Multilevel Feedback Queue Scheduling

- Multilevel Queue 방식에서 프로세스가 큐 사이를 이동할 수 있는 스케줄링 방식

- 짧은 작업은 상위 큐에서 빨리 처리되고, 긴 작업은 하위 큐로 이동

- 시스템 상황에 따라 유동적으로 프로세스를 처리하며 기아 문제를 해결하지만, 알고리즘이 복잡하고 조정해야 할 파라미터가 많음