CPU 스케줄링

SeungJoo
|2023. 10. 9. 20:44
728x90

CPU 스케줄링

컴퓨터 운영체제에서 중앙 처리 장치를 여러 프로세스 또는 작업들 사이에서 효율적으로 할당하는 방법을 관리하는 프로세스를 의미합니다. CPU 스케줄러는 다양한 프로세스들이 CPU를 공유하며 실행되는 상황에서 어떤 프로세스가 CPU를 사용할 수 있는지 결정하고 관리합니다.

 

프로세스 우선순위

입출력 작업이 많은 프로세스 (= 입출력 집중 프로세스)의 우선순위는 CPU 작업이 많은 (=CPU 집중프로세스)의 우선순위보다 높습니다.

일반적인 프로세스는 CPU와 입출력장치를 모두 사용하며 실행됩니다. 쉽게 말하면 프로세스는 실행 상태와 대기 상태를 반복하며 실행됩니다.

 

입출력 집중 프로세스 (I/O)

프로세스가 주로 입출력 작업에 시간을 소비하는 프로세스를 의미합니다. 이러한 프로세스들은 CPU 시간보다 입출력 작업(읽기,쓰기, 통신, 액세스)에 더 많은 시간을 사용하며 CPU 자원을 적게 사용합니다.

특징

  • CPU 대기 : 입출력 작업이 완료될 때까지 CPU 대기 상태에 있을 수 있습니다. CPU는 다른 프로세스에게 할당될 수 있고, 다중 프로세스 환경에서 효율적인 자원 활용을 가능하게 합니다.
  • 프로세스 스케줄링 : 입출력 집중 프로세스는 입출력 요청이 발생할 때만다. CPU에서 대기해야 하므로, 스케줄링 알고리즘이 효율적으로 CPU를 관리해야 합니다.

 

CPU 집중 프로세스

중앙 처리 장치 자원을 많이 사용하는 프로세스이며 프로세스들은 계산 작업, 알고리즘 실행, 계산량이 많은 연산 등과 같이 CPU 자원에 대한 높은 수요를 가집니다.

특징

  • 높은 CPU 사용량 : CPU 집중 프로세스는 CPU를 주로 사용하며, 다른 프로세스에 비해 상대적으로 높은 CPU사용량을 가집니다.
  • 짧은 입출력 시간 : 입출력 작업이나 입출력 대기 시간이 상대턱으로 짧으며 CPU 집중 프로세스는 계산 작업에 중점을 두기 때문에 입출력이 필요한 작업보다는 CPU에서 실행되는 시간이 더 많습니다.

 

스케줄링 큐

컴퓨터 운영체제에서 프로세스 스케줄링을 관리하기 위한 자료 구조입니다.

스케줄링 큐는 다양한 프로세스들을 관리하고 이들을 적절한 순서대로 CPU에 할당하는 데 사용됩니다.

일반적으로 다중 큐 스케줄링이나 다중 레벨 큐 스케줄링과 같은 복잡한 스케줄링 알고리즘에서 여러 개의 레디 큐와 블록 큐가 사용되며 각 큐마다 서로 다른 우선순위 또는 스케줄링 정책에 따라 프로세스가 할당됩니다.

 

레디 큐

  • CPU를 할당받기 위해 기달리를 프로세스들의 대기열
  • 스케줄러는 레디 큐에서 다음으로 실행할 프로세스를 선택하여 CPU 할당

 

블록 큐

  • 입출력 작업 등의 완료를 기다리는 프로세스들을 대기시키는 큐
  • 입출력 요청과 같은 블록된 작업은 완료되기 전까지 CPU를 사용하지 못하며 블록 큐에 대기
  • 입출력 작업이 완료되면 해당 프로세스는 레디 큐로 이동하여 CPU를 얻을 수 있는 상태 전환

 

스케줄링 큐를 효과적으로 관리함으로 시스템의 성능을 최적화하고 응용 프로개름의 응답 시간을 개선할 수 있습니다!!

 

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

선점형 스케줄링 (자원을 뺏을수 있는 스케줄링)

프로세스가 CPU를 비롯한 자원을 사용하고 있더라도 운영체제가 프로세스로부터 자원을 강제로 빼앗아 다른 프로세스에 할당할 수 있는 스케줄링 방식을 의미합니다. (어느 하나의 프로세스가 자원 사용을 독점할 수 없는 스케줄링을 말합니다.) 

 

비선점형 스케줄링 (자원을 빼앗을 수 없는 스케줄링!)

하나의 프로세스가 자원을 사용하고 있다면 그 프로세스가 종료되거나 스스로 대기 상태에 접어 들기 전까지 다른 프로세스가 끼어들 수 없는 스케줄링 방식을 말합니다.(쉽게 말하면 자원 사용을 독점할 수 있다고 말할수 있습니다.)

비선점형 스케줄링 방식으로 자원을 이용하는 프로세스가 있을때는 다른 프로세스들은 비선점형 스케줄링 방식으로 자원을 이용하는 프로세스가 사용이 끝날 때까지 기다려야 합니다.

728x90

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

동기화  (0) 2024.03.15
프로세스와 스레드  (0) 2023.09.07
운영체제  (0) 2023.08.16