2025-12-12
오늘 배운 것
11-1 CPU 스케줄링 개요
- CPU 스케줄링 : 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것
프로세스 우선 순위
- 우선 순위가 높은 프로세스 : 빨리 처리해야 하는 프로세스
- 입출력 작업이 많은 프로세스를 먼저 실행하는 것이 더 효율적인 이유
- 입출력 집중 프로세스는 실행 상태보다 입출력을 위한 대기 상태에 더 많이 머무름
- CPU 집중 프로세스는 대기 상태 보다 실행 상태에 더 많이 머무름
- 따라서 두 프로세스를 동일한 빈도로 CPU를 사용하는 것은 비합리적
- 운영체제는 프로세스마다 우선순위를 각 프로세스 PCB에 명시하고 명시된 우선순위를 기준으로 먼저 처리할 프로세스 결정
- 이를 통해 우선순위가 높은 프로세스는 더 빨리, 더 자주 실행
스케줄링 큐
- 운영체제가 CPU 사용, 메모리 적재, 특정 입출력 장치 사용하는 프로세스들을 스케줄링 큐로 구현하고 관리
- 운영체제가 관리하는 큐에는 다양한 종류가 있음
- 준비 큐 : CPU를 이용하고 싶은 프로세스들이 서는 줄
- 대기 큐 : 입출력 장치를 이용하기 위해 대기 상태에 접어든 프로세스들이 서는 줄
- 입출력이 완료되어 완료 인터럽트가 발생하면 운영체제가 대기 큐에서 완료된 PCB에서 찾음
- 그후 PCB를 준비 상태로 변경한 뒤 대기 큐에서 제거
- 해당 PCB는 준비 큐로 이동
- 운영체제는 PCB들이 큐에 삽인된 순서대로 프로세스를 하나씩 꺼내어 실행하되, 그 중 우선순위가 높은 프로세스를 먼저 실행
선점형과 비선점형 스케줄링
- 선점형 스케줄링
- 프로세스가 CPU를 비롯한 자원을 사용하고 있더라도 운영체제가 프로세스로부터 자원을 강제로 빼앗아 다른 프로세스에 할당할 수 있는 스케줄링 방식
- 장점 : 어느 한 프로세스의 자원 독점을 막고 프로세스들에 골고루 자원 분배
- 단점 : 문맥 교환 오버헤드
- 비선점형 스케줄링
- 하나의 프로세스가 자원ㅇ르 사용하고 있다면 그 프로세스가 종료되거나 스스로 대기상태에 접어들기 전까지 다른 프로세스가 끼어들 수 없는 스케줄링
- 장점 : 문맥 교환 횟수가 적어 오버헤드가 적음
- 단점 : 모든 프로세스가 골고루 자원사용 불가
11-2 CPU 스케줄링 알고리즘
스케줄링 알고리즘의 종류
선입 선처리 스케줄링
- FCFS 스케줄링
- 준비 큐에 삽입된 순서대로 프로세스들을 처리하는 비선점형 스케줄링 방식
- 호위 효과(convoy effect)
- 긴 처리시간을 갖고 있는 프로세스가 먼저 들어오면 상대적으로 짧은 실행시간을 가진 프로세스가 장시간 기다려야 하는 현상
- SJF 스케줄링
- 준비 큐에 삽입된 프로세스들 중 CPU 이용 시간의 길이가 가장 짧은 프로세스 부터 실행하는 스케줄링 방식
- 우선적으로 비선점형으로 분류되지만, 선점형으로 구현될 수 있음
- 라운드 로빈 스케줄링
- 정해진 타임 슬라이스만큼의 시간 동안 돌아가며 CPU를 사용하는 선점형 스케줄링
- 정해진 시간을 모두 사용해도 아직 프로세스가 완료되지 않았다면 다시 큐의 맨뒤에 삽입
- 타임 슬라이스 크기가 중요
- 너무 크면 → 호위 효과 발생
- 너무 작으면 → 문맥 교환 오버헤드 매우 큼
- SRT 스케줄링
- SJF + 라운드 로빈 알고리즘을 합친것
- 최소 잔여 시간 우선 스케줄링 하에서 프로세스들은 정해진 타임슬라이스만큼 CPU를 사용하되, CPU를 사용할 다음 프로세스로는 남아있는 작업 시간이 가장 적은 프로세스가 선택
- 우선순위 스케줄링
- 프로세스들에게 우선순위를 부여하고, 가장 높은 우선순위를 가진 프로세스부터 실행하는 스케줄링 알고리즘
- 문제점
- 기아현상
- 우선 순위가 낮은 프로세스가 계속해서 연기되는 것
- 해결 방법
- 에이징 : 오랫동안 대기한 프로세스의 우선순위를 점차 높이는 방식
- 다단계 큐 스케줄링
- 우선순위별로 준비큐를 여러개 사용하는 스케줄링 방식
- 우선순위 가장 높은 큐에 있는 프로세스들을 먼저 처리하고, 우선 순위가 가장 높은 큐가 비어 있으면 그다음 우선순위 큐에 있는 프로세스들을 처리
- 장점
- 큐를 여러개 두어 유형별로 우선순위를 구분하여 실행하는 것이 편리
- 큐별로 타임슬라이스 여러개 지정 가능
- 큐마다 다른 스케줄링 알고리즘 사용 가능
- 다단계 피드백 큐
- 다단계 큐 스케줄링에서는 프로세들이 큐 사이를 이동할 수 없어 우선 순위가 낮은 프로세스가 계속 연기될 여지가 있음
- 다단계 피드백 큐는 다단계 큐 스케줄링과 비슷하게 작동하지만, 프로세스들이 큐 사이를 이동할 수 있음
- 새로 준비 상태가 된 프로세스가 있다면 우선 우선순위가 가장 높은 우선순위 큐에 삽입되고 타임슬라이스 동안 실행
- 해당 큐에서 실행이 끝나지 않으면 점차 우선순위가 낮은 큐로 삽입
- 이를 통해 CPU 집중 프로세스들은 자연스레 우선순위가 낮아지고, 입출력 집중 프로세스들은 자연스레 우선순위가 높은 큐에서 실행
- 또한 에이징 기법으로 낮은 우선순위 큐에서 너무 오래 기다리고 있는 프로세스가 있으면 점차 우선순위가 높은 큐로 이동시켜 기아 현상 예방 가능