백/back-end

[운영체제] CPU Scheduling이란?

연지양갱 2023. 10. 21. 23:31
728x90
반응형
SMALL

취업난인 지금,, 채용 사이트를 보니까 웬만해서는 모두 백엔드 개발자를 찾고 있더라고요,,

프론트 엔드 개발자는 적고, 프론트 프로젝트는 많이 해봤는데 거의 비슷한것 같기도 해서 이제 백엔드도 공부할 겁니다!

가볍게 기본적으로 알아야하는 개념들을 정리해서 올릴 거고, 개인 프로젝트를 실행하면서 실무 코딩을 해보려고 합니다..!

공부는 제로베이스에서 제공한 백엔드 로드맵을 토대로 공부하겠습니다

 

 

CPU란?

일단 CPU가 무엇인지 알아야 겠죠?

CPU는 중앙처리장치입니다. 

중앙처리장치의 역할은 서버의 핵심 계산 장치인 하드웨어 구성 요소입니다.

 

서버 및 기타 스마트 장치는 데이터를 디지털 신호로 변환하고 이에 대한 수학적 연산을 수행합니다.

신호를 처리하고 컴퓨팅을 가능하게 하는 기본 구성 요소입니다. 즉 모든 컴퓨팅 장치의 두뇌 역할입니다.

 

 

제어장치 : 명령 처리를 관리하고 CPU 내부 및 다른 컴퓨터 구성 요소들 간의 데이터 흐름 조정

레지스터 : CPU 내의 소형 고속 메모리 저장 위치

ALU : 산술 논리 장치이며 데이터에 대한 기본 산술 연산과 논리연산을 수행

메모리 관리 장치 : CPU 아키텍처에 따라 별도의 버스 인터페이스 장치 또는 메모리 관리 장치가 있음

클럭 : 클럭 신호를 사용하여 내부 작업을 동기화함

 

 

즉 CPU는 프로그램을 작동하여 데이터를 처리하고 전자 디바이스 간의 정보 흐름을 관리하는 것입니다.

 

 

 

 

CPU 스케줄링이란?

CPU 스케줄링은 컴퓨터 시스템에서 여러 프로세스나 스레드가 CPU 자원을 효율적으로 사용할 수 있도록 하는 방법입니다. 운영체제의 핵심 기능 중 하나로, CPU 사용률을 최대화하고 대기 시간을 최소화하는 등의 목표를 가지고 있습니다.

 

  1. First-Come, FIrst-Served(FCFS)먼저 도착한 프로세스를 먼저 처리합니다. 가장 단순하지만 긴작업이 앞에 오면 짧은 작업이 오래 기다려야 하는 문제(병목현상)가 발생할 수 있습니다.
  2. Shortest Job Next(SJN) / Shortest Job First(SJF) : 가장 짧은 실행시간을 가진 프로세부터 처리합니다. 평균 대기 시간을 줄일 수 있지만, 실행 시간이 긴 프로세스가 계속해서 대기 상태에 놓여있는 '기아'상태가 발생할 수 있습니다.
  3. Priority Scheduling : 각 프로세스에 우선 순위를 부여하고, 우선 순위가 높은 프로세스부터 처리합니다. 중요한 작업을 빠르게 처리할 수 있지만, 낮은 우선순위 작업이 계속 대기해야하는 '기아' 상태가 발생할 수 있습니다.
  4. Round Robin(RR) : 각 프로세스에 동일한 시간 할당량(time quantum)을 부여하고, 이를 순환하면서 처리합니다. 모든 프로세스에 공평한 CPU접근 시간을 제공하지만, 적절한 시간 할당량 설정이 중요합니다.
  5. Multilevel Queue Scheduling : 프로세스를 여러 우선순위 큐에 불류하여 각 큐마다 다른 스케줄링 알고리즘을 적용하는 방식입니다. 예를 들어, 전경(foreground)큐는 RR방식으로 스케줄링되고, 배경(background)큐는 FCFS 방식으로 스케줄링 됩니다.
  6. Multilevel Feedback Queue Scheduling : Multilevel Queue Scheduling과 비슷하지만 프로세스가 다른 큐로 이동할 수 있는 알고리즘입니다. 이는 프로세스의 우선순위를 동적으로 변경하여 더 유연한 스케줄링을 가능하게 합니다.

 

 

각각의 CPU 스케줄링 알고리즘은 특정 환경에서 장단점이 있으며 그에 따라 선택해야 합니다. 때문에 실제 시스템에서는 위에서 언급된 여러 가지 기법들이 혼합되거나 변형되어 사용됩니다.

위에 설명한 스케줄링 방식을 자세하게 작성하도록 하겠습니다.

 

 

Preemptive(선점) 및 Non-preemptive(비선점) 스케줄링

Preemptive(선점)

Preemptive(선점)은 프로세스가 CPU를 점유하고 있는 동안 I/O나 인터럽트가 발생한 것도 아니고 모든 작업이 끝나지도 않았는데 다른 프로세스가 해당 CPU를 강제로 점유하는 것을 말합니다.

정상적으로 수행중인 가운데 다른 프로세스가 CPU를 강제로 점유하여 실행 할 수 있는 것입니다.

 

Non-preemptive(비선점)

Non-preemptive(비선점)은 말 그대로 preemptive의 반대입니다. 

한 프로세스가 한번 CPU를 점유했다면, I/O(프로세스 상태가 실행 -> 대기로 변경되는 경우) 또는 프로세스가 종료될 떄까지 다른 프로세스가 CPU를 점유하지 못하는 것입니다.

 

 

 

Preemptive VS Non-preemptive

구분  Preemptive Non-preemptive
장점 CPU 독점을 줄여 시분할 시스템 적합 작업량이 적고 컨텍스트 스위칭 오버헤드가 적음
단점 컨텍스트 스위칭 오버헤드 많음 프로세스가 계속 기다리는 '기아' 상태
중요도 높음 낮음

 

 

First-Come, FIrst-Served(FCFS)

먼저 도착한 프로세스를 먼저 처리합니다. 가장 단순하지만 긴작업이 앞에 오면 짧은 작업이 오래 기다려야 하는 문제(병목현상)가 발생할 수 있습니다.

 

 

Shortest Job Next(SJN) / Shortest Job First(SJF)

가장 짧은 실행시간을 가진 프로세부터 처리합니다. 평균 대기 시간을 줄일 수 있지만, 실행 시간이 긴 프로세스가 계속해서 대기 상태에 놓여있는 '기아'상태가 발생할 수 있습니다.

 

 

Priority Scheduling

각 프로세스에 우선 순위를 부여하고, 우선 순위가 높은 프로세스부터 처리합니다. 중요한 작업을 빠르게 처리할 수 있지만, 낮은 우선순위 작업이 계속 대기해야하는 '기아' 상태가 발생할 수 있습니다

 

 

Round Robin(RR)

각 프로세스에 동일한 시간 할당량(time quantum)을 부여하고, 이를 순환하면서 처리합니다. 모든 프로세스에 공평한 CPU접근 시간을 제공하지만, 적절한 시간 할당량 설정이 중요합니다.

 

 

Multilevel Queue Scheduling

프로세스를 여러 우선순위 큐에 불류하여 각 큐마다 다른 스케줄링 알고리즘을 적용하는 방식입니다. 예를 들어, 전경(foreground)큐는 RR방식으로 스케줄링되고, 배경(background)큐는 FCFS 방식으로 스케줄링 됩니다.

 

 

Multilevel Feedback Queue Scheduling

Multilevel Queue Scheduling 과 비슷하지만 프로세스가 다른 큐로 이동할 수 있는 알고리즘입니다. 이는 프로세스의 우선순위를 동적으로 변경하여 더 유연한 스케줄링을 가능하게 합니다.

 

 

 

위 스케쥴링에 대해 자세하게 공부하고 이해하기 쉽게 정리하겠습니다

 

 

 

 

 

 

 

 

 

참고

https://aws.amazon.com/ko/what-is/cpu/

https://imbf.github.io/computer-science(cs)/2020/10/18/CPU-Scheduling.html

https://velog.io/@suker80/Day7.-%EC%84%A0%EC%A0%90-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81%EA%B3%BC-%EB%B9%84%EC%84%A0%EC%A0%90-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81%EC%9D%98-%EC%B0%A8%EC%9D%B4

반응형