CPU 스케줄링

Dev.Dana·2024년 10월 28일

Operating System

목록 보기
6/11
post-thumbnail

프로세스의 우선순위

모든 프로세스는 운영체제로부터 자원을 할당받는다. 프로세스마다 필요하는 자원이 각자 다르지만 모든 프로세스가 공통으로 사용하는 자원이 있다면 그건 CPU !!

  • 운영체제가 어떻게 CPU를 프로세스에게 나눠주는지 ⇒ 스케줄링

프로세스에게 CPU를 어떤식으로 할당해야 가장 효율적일까? 요청한 순서대로 나눠주는 것은 좋은 방식이 아니다. 프로세스마다 우선순위가 다르기 때문이다.

상황에 맞게, 중요도에 맞게 프로세스가 CPU를 이용할 수 있도록 운영체제는 각 프로세스의 PCB에 우선순위를 명시하고 그를 기준으로 먼저 처리할 프로세스를 결정한다.

  • 프로세스 우선순위 내 눈으로 확인하는 법 프로세스 우선순위는 터미널에서 ps -el 명령어를 통해 확인이 가능하다.

    PRI (Priority) : 프로세스의 실제 우선순위를 표시한다. 값이 작을수록 우선순위가 높고 CPU 할당을 더 빨리 받을 가능성이 크다.
    NI (Nice) : 프로세스의 니스 값으로 프로세스의 우선순위에 영향을 주는 값. 값이 낮을수록 우선순위가 높아진다. -20부터 19까지 값이 일반적으로 들어가고 nice명령을 통해 우선순위를 조정할 수 있다.

스케줄링

스케줄링 큐

CPU를 사용할 다음 프로세스를 찾기위해 모든 PCB를 뒤져서 우선순위가 높은 프로세스를 찾는 것은 매우 비효율적이다.

그래서 운영체제는 프로세스들을 줄을 세워 관리한다. ⇒ 스케줄링 큐로 구현

준비 큐(ready queue)

  • CPU를 이용하고 싶은 프로세서들이 서는 줄

대기 큐(waiting queue)

  • 입출력장치를 이용하기 위해 대기 상태에 접어든 프로세서들이 서는 줄

프로세스 스케줄링이 필요한 이유

프로세스 스케줄링은 CPU와 같은 자원을 효율적으로 사용하고, 프로세스의 공정한 실행을 보장하기 위해 필요하다

  1. CPU 자원의 효율적 사용 : 스케줄링을 통해 CPU 유휴 시간을 최소화하고, 각 프로세스가 CPU 시간을 균등하게 사용할 수 있게 한다.
  2. 응답 시간 개선 : 사용자 요청에 빠르게 응답하기 위해 긴급한 프로세스를 우선적으로 처리하여 시스템 응답성을 높일 수 있다.
  3. 공정성 보장 : 다중 프로세스 환경에서 특정 프로세스가 자원을 독점하지 않도록 하여 모든 프로세스가 공평하게 CPU를 사용할 수 있도록 한다.
  4. 다중 사용자 환경 지원 : 여러 사용자의 요청을 동시에 처리하여 사용자 경험을 개선하고 시스템의 성능을 최적화할 수 있다.

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

선점 스케줄링 (Preemptive Scheduling)

선점 스케줄링은 현재 실행 중인 프로세스를 중단하고, 더 높은 우선순위의 프로세스에 CPU를 할당하는 방식이다. 실시간 시스템과 같이 응답 속도가 중요한 환경에서 주로 사용된다.

  • 빠른 응답 시간, 문맥 전환 오버헤드 존재
  • 대표 알고리즘
    • Round Robin (RR) : 각 프로세스가 정해진 시간 동안 CPU를 사용하고, 시간이 다 되면 다음 프로세스로 전환
    • Shortest Remaining Time First (SRTF) : 남은 실행 시간이 가장 짧은 프로세스에 우선적으로 CPU를 할당
    • Priority Scheduling : 우선순위가 높은 프로세스가 먼저 실행

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

비선점 스케줄링은 프로세스가 자발적으로 종료하거나 입출력 요청이 있을 때만 CPU를 다른 프로세스에 할당하는 방식이다. 배치 작업 등 긴급성이 낮은 시스템에 적합하다.

  • 문맥 전환 오버헤드가 적고, 응답 시간은 느림
  • 대표 알고리즘
    - First-Come, First-Served (FCFS) : 도착 순서대로 프로세스를 실행
    - Shortest Job First (SJF) : 실행 시간이 가장 짧은 프로세스를 먼저 실행
    - Priority Scheduling : 우선순위에 따라 순서대로 프로세스를 실행

👇🏻 위의 CPU 스케줄링 알고리즘을 시각화해서 보고 싶다면 아래 링크에서 확인해보자

OS CPU SCHEDULING ALGORITHM VISUALISER
라운드로빈

💡 기아현상(상태)이란 뭘까?


기아 현상(Starvation)은 운영체제의 스케줄링 과정에서 우선순위가 낮은 프로세스가 무한정 대기하게 되는 문제를 의미한다. 특히 시스템 부하가 많을 때 발생하기 쉬운데 이로 인해 낮은 우선순위의 프로세스가 CPU를 계속 배정받지 못하고 대기하는 상황이 지속될 수 있다.

해결 방안 → 에이징(Aging) 기법

  • 에이징(Aging)은 오랫동안 대기 중인 프로세스의 우선순위를 점진적으로 높이는 기법으로, 기아 현상을 해결하는 주요 방법.
  • 이 기법을 사용하면 초기 우선순위가 낮았던 프로세스도 시간이 지남에 따라 우선순위가 높아져 결국 CPU 할당을 받을 수 있다.
  • 일정한 시간마다 대기 중인 프로세스의 우선순위를 한 단계씩 올려줘서 특정 프로세스가 무한정 대기하지 않도록 한다.

참고 사이트

profile
어제의 나보단 나은 오늘의 내가 되기를

0개의 댓글