이번 포스팅에서는 CPU burst와 I/O burst의 개념, CPU 스케줄링의 정의와 목표, 그리고 스케줄링 알고리즘의 다양한 평가 기준에 대해 살펴보겠습니다.
1. CPU Burst와 I/O Burst
프로그램이 실행되는 동안, CPU 연산과 I/O 작업이 반복적으로 이루어집니다. 이를 CPU burst와 I/O burst라고 부릅니다.
- CPU Burst: 프로그램 실행 중 CPU 연산(계산 작업)이 연속적으로 발생하는 상황을 의미합니다. CPU burst는 주로 복잡한 계산이나 데이터 처리 작업에서 나타납니다.
- I/O Burst: 프로그램 실행 중 I/O 장치의 입출력이 이루어지는 상황을 의미합니다. I/O burst는 파일 읽기/쓰기, 키보드 입력, 화면 출력 등과 같은 작업에서 발생합니다.
일반적인 프로그램의 실행 패턴은 CPU burst와 I/O burst가 반복되는 형태를 보입니다.
예를 들어, 프로그램이 데이터를 계산한 후, 그 결과를 파일에 저장하거나 화면에 출력하는 과정을 반복하는 것이 일반적입니다.
2. CPU 스케줄링: 정의와 목표
운영체제에서 CPU 스케줄링은 매우 중요한 역할을 합니다.
CPU 스케줄링의 기본 정의와 목표는 다음과 같습니다.
- 정의: CPU 스케줄링은 실행 준비 상태에 있는 여러 스레드 중에서 하나를 선택하여 CPU를 할당하는 과정을 의미합니다.
- 기본 목표: CPU 스케줄링의 주요 목표는 CPU의 활용도를 극대화하여 컴퓨터 시스템의 처리율을 향상시키는 것입니다. 즉, CPU가 가능한 한 유휴 상태에 머무는 시간을 줄이고, 지속적으로 작업을 처리하도록 하는 것이 목표입니다.
3. CPU 스케줄링의 기준 (Criteria)
CPU 스케줄링의 목표는 단순히 CPU 활용률을 높이는 것뿐만 아니라, 시스템과 사용자 요구에 맞춰 다양한 기준을 충족하는 것입니다.
스케줄링 알고리즘을 평가할 때 고려되는 주요 기준은 다음과 같습니다.
- CPU 활용률 (CPU Utilization): 전체 시간 중 CPU가 실제로 사용된 시간의 비율입니다. 운영체제 입장에서 중요한 기준입니다.
- 처리율 (Throughput): 주어진 시간 내에 처리된 프로세스 또는 스레드의 수를 의미합니다. CPU의 효율성을 측정하는 데 사용됩니다.
- 응답 시간 (Response Time): 대화형 시스템에서 사용자가 명령을 입력한 후, 시스템이 응답하기까지 걸리는 시간입니다. 사용자 경험에 큰 영향을 미치는 중요한 기준입니다.
- 대기 시간 (Waiting Time): 스레드가 실행 준비 상태에서 대기하는 시간입니다. 스케줄링 알고리즘이 효율적인지 판단하는 중요한 지표입니다.
- 소요 시간 (Turnaround Time): 프로세스 또는 스레드가 시스템에 도착한 후, 모든 작업이 완료되기까지 걸린 시간입니다. 배치 처리 시스템에서 중요한 평가 기준입니다.
- 공평성 (Fairness): 모든 스레드에게 CPU를 공정하게 배분하는 것을 의미합니다. 특정 스레드가 무한정 대기하는 '기아(starvation)' 상태를 방지하는 것이 핵심입니다.
- 시스템 정책 (Policy Enforcement): 시스템의 특정 목적을 달성하기 위한 스케줄링입니다. 예를 들어, 실시간 시스템에서는 작업이 기한 내에 완료되도록 하거나, 특정 시스템에서는 안전을 우선시하는 스케줄링 정책을 적용할 수 있습니다.
- 자원 효율성 (Resource Efficiency): 시스템 자원을 효율적으로 사용하는 것을 목표로 하는 기준입니다.
4. 타임 슬라이스와 스케줄링
대부분의 운영체제는 하나의 스레드가 너무 오랫동안 CPU를 독점하지 않도록 타임 슬라이스(time slice)라는 개념을 도입합니다.
- 타임 슬라이스 (Time Slice): 각 스레드에게 한 번 할당되는 CPU 사용 시간을 의미합니다. 이 시간 동안 스레드는 CPU를 독점적으로 사용할 수 있으며, 이후에는 스케줄러가 다음 스레드를 선택하게 됩니다. 타임 슬라이스는 타이머 인터럽트를 통해 관리되며, 현재 실행 중인 스레드를 강제로 중단하고 준비 리스트에 삽입합니다.
타임 슬라이스는 공정한 CPU 사용을 보장하고, 시스템 전체의 응답성을 높이는 데 중요한 역할을 합니다.
결론
운영체제에서 CPU 스케줄링은 시스템 자원의 효율적 사용과 사용자 경험의 향상을 위해 매우 중요한 역할을 합니다.
CPU와 I/O burst의 반복적인 실행 패턴을 이해하고, 다양한 스케줄링 기준을 고려하여 최적의 스케줄링 알고리즘을 선택하는 것이 핵심입니다.
'운영체제' 카테고리의 다른 글
CPU 스케줄링의 동작 방식과 그 중요성 (1) | 2024.08.24 |
---|---|
멀티 스레드 구현: N:1, 1:1, N:M 방식의 이해 (0) | 2024.08.21 |
커널 레벨 스레드와 사용자 레벨 스레드의 차이점 이해하기 (0) | 2024.08.20 |
스레드 주소 공간과 컨텍스트 (0) | 2024.08.19 |
프로세스와 스레드: 실행 단위의 진화 (0) | 2024.08.18 |