본문 바로가기
목차훔치기/면접을 위한 CS 전공지식 노트

CPU 스케줄링 알고리즘(면접을 위한 CS 전공지식 노트)

by 해삼2 2023. 9. 23.
728x90
반응형
CPU 스케줄링 알고리즘

CPU 스케줄링 알고리즘

CPU 스케줄링 알고리즘은 컴퓨터 운영체제에서 다중 프로세스를 관리하고 

CPU 자원을 효율적으로 할당하는 방법을 결정하는 중요한 개념입니다. 

CPU 스케줄링은 여러 프로세스가 CPU를 공유하며 실행될 때, 

어떤 프로세스가 언제 CPU를 사용할 것인지를 관리합니다. 

이러한 알고리즘은 시스템 성능, 응답 시간, 공평성 등 다양한 요구 사항을 고려하여 설계됩니다.

 

CPU 스케줄링 알고리즘 예시

FCFS (First-Come, First-Served): 

FCFS 스케줄링은 프로세스가 큐에 도착한 순서대로 CPU를 할당하는 가장 간단한 알고리즘입니다. 

그러나 이 알고리즘은 평균 대기 시간이 길 수 있으며, 

선점 기능이 없어 중요한 작업이 대기열에서 길게 기다릴 수 있습니다.

SJF (Shortest Job First): 

SJF 스케줄링은 대기 중인 프로세스 중에서 실행 시간이 가장 짧은 프로세스에 

CPU를 할당하는 알고리즘입니다. 

이로써 평균 대기 시간이 최소화되며, 최적의 성능을 제공할 수 있습니다. 

하지만 실행 시간을 미리 알아야 하고, 선점 기능이 없는 경우 예측이 어려울 수 있습니다.

Priority Scheduling: 

우선순위 스케줄링은 각 프로세스에 우선순위 값을 할당하고, 

가장 높은 우선순위를 가진 프로세스에 CPU를 할당하는 알고리즘입니다. 

이는 중요한 작업을 우선 처리하고자 할 때 유용하지만, 

우선순위 부여의 공정성과 불공평성 문제가 발생할 수 있습니다.

Round Robin (RR): 

라운드 로빈 스케줄링은 각 프로세스에 시간 할당량 (quantum)을 부여하고, 

이 시간 동안 CPU를 사용하게 합니다. 시간 할당량이 지나면 해당 프로세스는 대기 큐로 이동하고, 

다음 프로세스에게 CPU가 할당됩니다. 이 방식은 공평한 스케줄링을 제공하며, 응답 시간도 빠릅니다. 

하지만 시간 할당량 설정이 중요하며, 프로세스가 긴 작업을 실행하는 경우 오버헤드가 발생할 수 있습니다.

Multi-Level Queue Scheduling: 

다단계 큐 스케줄링은 프로세스를 여러 개의 큐로 분할하고, 

각 큐에 다른 스케줄링 알고리즘을 적용하는 방식입니다. 

예를 들어, 시스템 큐, 대화형 큐, 배치 처리 큐 등 다양한 큐를 사용하여 각각의 요구 사항에 맞게 

스케줄링을 수행할 수 있습니다.

Priority Inversion: 

우선순위 역전은 프로세스 간의 우선순위 관계로 인해 발생하는 문제를 해결하기 위한 

스케줄링 방식 중 하나입니다. 

이를 통해 높은 우선순위의 프로세스가 낮은 우선순위의 프로세스에 의해 블록되는 현상을 

방지할 수 있습니다.

이 외에도 다양한 CPU 스케줄링 알고리즘이 존재하며, 실제 시스템에서는 

특정 요구 사항과 환경에 따라 이러한 알고리즘을 조합하여 사용하기도 합니다. 

CPU 스케줄링은 시스템 성능과 사용자 경험에 큰 영향을 미치므로 중요한 주제 중 하나입니다.

 

CPU 스케줄링의 필요성과 성능

CPU 스케줄링의 필요성

다중 프로세스 관리: 

다수의 프로세스가 동시에 실행되므로 CPU 스케줄링은 프로세스를 효율적으로 관리하고 

CPU 자원을 할당합니다.


성능 최적화: 

올바른 스케줄링 알고리즘을 선택하고 구현하여 CPU 자원을 최대한 활용하고 시스템의 성능을 

최적화합니다.


공평성: 

CPU 스케줄링은 CPU 자원을 공평하게 분배하여 모든 사용자나 프로세스에 공평한 서비스를 제공합니다.


응답 시간 개선: 

일부 스케줄링 알고리즘은 응답 시간을 개선하여 사용자가 시스템의 빠른 응답을 경험할 수 있도록 합니다.


자원 활용량 최적화: 

스케줄링은 CPU 뿐만 아니라 다른 자원도 효과적으로 관리하여 에너지 효율성을 높입니다.


우선순위 관리:

중요한 작업을 우선 처리하고자 할 때 우선순위 스케줄링을 사용합니다.


동시성 및 병렬 처리: 

스케줄링은 다중 코어 CPU에서 여러 프로세스 또는 스레드를 병렬로 실행하여 

처리량을 높이는 데 사용됩니다.

 

성능 차이

하드웨어 차이:

다양한 CPU는 아키텍처, 속도, 캐시 크기 등에서 차이가 있어 다른 성능을 가집니다.


코어 수: 

다중 코어 CPU에서는 코어 수에 따라 병렬 처리 능력이 다를 수 있습니다.


하드웨어 가속기: 

일부 CPU에는 특수한 목적을 위한 하드웨어 가속기가 있어 특정 작업을 빠르게 수행할 수 있습니다.


전력 관리: 

CPU는 전력 소비와 성능 사이의 균형을 조절하는 기능을 가질 수 있습니다.

CPU 스케줄링은 다양한 환경과 요구 사항을 고려하여 시스템의 성능을 향상시키고 

용자 경험을 향상시키는 중요한 역할을 합니다.

 

CPU 스케줄링 알고리즘 자세히 알기!!

상황:

해성이는 학교의 컴퓨터 공학 수업을 듣고 있습니다. 

수업에서 CPU 스케줄링 알고리즘에 대한 개념을 배우게 되었습니다. 

강의 시작: 

수업 첫 날, 교수님은 CPU 스케줄링을 소개하고 다양한 알고리즘에 대한 기본 개념을 설명합니다. 

해성이는 이때 처음으로 FCFS (First-Come, First-Served) 스케줄링 알고리즘을 듣게 됩니다. 

이 알고리즘은 먼저 도착한 프로세스가 CPU를 먼저 사용한다는 원리를 이해하게 됩니다.

시험 공부: 

중간 시험을 앞둔 해성이는 스케줄링 알고리즘을 공부하기 시작합니다. 

SJF (Shortest Job First) 알고리즘을 예제를 통해 이해하며, 

이 알고리즘이 실행 시간이 가장 짧은 프로세스를 먼저 처리하는 원리를 숙지합니다.

프로젝트 제출: 

학기 중간에는 팀 프로젝트가 있습니다. 

해성이와 그의 팀은 우선순위 스케줄링을 사용하여 프로젝트 작업을 관리합니다. 

특정 작업에 높은 우선순위를 부여하고, 프로젝트를 빠르게 완료할 수 있도록 합니다.

시뮬레이션 프로그램: 

교수님은 CPU 스케줄링 알고리즘을 시뮬레이션하는 프로그램을 제공합니다. 

를 사용하여 해성이와 다른 학생들은 다양한 스케줄링 알고리즘의 동작을 직접 시뮬레이션하고

결과를 분석합니다.

이를 통해 스케줄링 알고리즘의 동작 원리를 명확하게 이해하게 됩니다.

해성이는 이러한 학교 환경에서 CPU 스케줄링 알고리즘에 대한 이해를 향상시키며, 

실제 시스템에서의 적용 가능성과 중요성을 깨닫게 됩니다.

 

 

*바쁜 사람을 위한 깜찍한 정리

CPU 스케줄링 알고리즘은 컴퓨터 운영체제에서 다중 프로세스를 관리하고 CPU 자원 및 메모리 입출력 장치 등을 효율적으로 할당하는 방법을 결정하는 개념으로 여러 프로세스가 CPU를 공유하며 실행될 때, 어떤 프로세스가 언제 CPU를 사용할 것인지를 관리하는 역할을 합니다. CPU스케줄링은 FCFS,SJF,RR 등 많은 알고리즘이 있으면 이 알고리즘 들은 각각 CPU가 어떻게 공유되고 할당 시키는지에 대한 알고리즘입니다. CPU는 코어 수에 따라 성능 차이를 나타내는데 코어가 많으면 병렬 처리할 수 있는 능력이 향상되기 때문입니다.

 

 

728x90
반응형