CPU 스케줄링

2025. 11. 24. 15:03·CS/운영체제

프로세스 우선순위와 스케줄링 큐

운영체제가 공정하고 합리적으로 자원을 배분하는 방법 == 스케줄링

 

정해진 시간 동안 돌아가면서 CPU를 사용하는 것이 가장 좋나? => NO!

프로세스마다 우선순위*가 다르다.

 

ps -el을 통해 우선순위를 볼 수 있음.

 

우선순위의 차이를 보이는 대표적인 프로세스 유형

* I/O bound process > CPU bound process

CPU burst, IO burst

IO bound process는 잠깐 실행하고 나면 볼 일이 없음. (거의 바로 대기상태) 그래서 우선순위가 높음.

 

프로세스 우선순위를 토대로 CPU 할당 받는 방법 == CPU 스케줄링 알고리즘

 

스케줄링 큐 = '줄'

  • 자원은 한정되어 있고 실행 중인 프로세스는 여러 개
  • 프로세스들의 요구사항을 일목요연하게 관리하는 방법

스케줄링 큐는 꼭 FIFO는 아님.

 

대표적인 스케줄링 큐

준비 큐 CPU 이용을 기다리는 프로세스들의 큐
대기 큐 대기 상태 프로세스들의 큐 (입출력 끝 대기)

 

한 프로세스 실행 도중 다른 급한 프로세스가 실행되어야 한다면?

 

*선점형 스케줄링

    현재 실행 중인 프로세스의 자원을 빼앗아 해당 프로세스에 할당

    [프로세스에 자원을 골고루 할당 가능]

    [문맥 교환 과정도 소요가 발생하는데. 오버헤드가 생김.]

*비선점형 스케줄링

    현재 실행 중인 프로세스의 실행이 끝날때까지 기다렸다가 프로세스에 할당

    [고르지 않은 자원 분배]

    [오버헤드가 적음]

 

CPU 스케줄링 알고리즘

운영체제마다 CPU 스케줄링 알고리즘이 다름.

 

선입 선처리 스케줄링 (FIFO 스케줄링)
CPU를 먼저 요청한 프로세스부터 CPU 할당. [비선점형]
최단 작업 우선 스케줄링 준비 큐 프로세스 중 CPU 이용 시간이 짧은 프로세스부터 실행
라운드 로빈 스케줄링 돌아가면서 하겠다.
선입 선처리 + 타임 슬라이싱
준비 큐에 삽입된 순서로 실행하되, 타임 슬라이스만큼만 실행. 
최소 잔여 시간 우선 스케줄링 최단 작업 우선 스케줄링 + 라운드 로빈 스케줄링
우선순위 스케줄링 프로세스마다 우선순위 부여하고 우선순위 높은 순서로 스케줄링
다단계 큐 스케줄링 우선순위별로 준비 큐를 여러 개 사용하는 스케줄링
다단계 피드백 큐 스케줄링 프로세스가 큐 간의 이동 가능

 

리눅스와 스케줄링

실시간 정책 스케줄링 (우선순위 높음) SCHED_FIFO
SCHED_RR
일반 정책 스케줄링 (우선순위 낮음) SCHED_OTHER/SCHED_NORMAL
SCHED_BATCH
SCHED_IDLE

 

보통 CFS를 활용함. (Completely Fair Scheduler)

비실시간 프로세스를 대상으로 하는 스케줄링 방식.

 

vruntime (virtual runtime)

- 프로세스가 그 동안 실행한 시간을 정규화한 정보.

- vruntime이 작은 프로세스를 다음 실행할 프로세스로 삼음.

- vruntime 별 테스크를 고르는 과정에서 RB tree 사용

 

타임 슬라이스

- nice 값에 비례해 가중치 할당, 가중치를 바탕으로 타임 슬라이스 할당.

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

파일 시스템  (1) 2025.12.01
가상 메모리 관리  (0) 2025.12.01
동기화와 교착 상태  (0) 2025.12.01
프로세스와 스레드  (0) 2025.11.24
운영체제  (0) 2025.10.23
'CS/운영체제' 카테고리의 다른 글
  • 가상 메모리 관리
  • 동기화와 교착 상태
  • 프로세스와 스레드
  • 운영체제
Yun Lab.
Yun Lab.
Yun Lab.
  • Yun Lab.
    윤랩
    Yun Lab.
  • 글쓰기 방명록 관리자
  • 전체
    오늘
    어제
    • 분류 전체보기 (26)
      • CS (13)
        • 컴퓨터구조 (6)
        • 운영체제 (7)
        • 네트워크 (0)
        • 시스템 프로그래밍 (0)
        • 데이터베이스 (0)
      • Git (0)
      • AI Study (6)
        • LLM (0)
        • Machine Learning (6)
      • 자격증 (2)
        • AICE (1)
        • 리눅스마스터 (1)
      • 논문리뷰 (4)
        • NeurIPS (0)
        • ICLR (1)
        • ICML (1)
        • 기타 (2)
      • 코딩테스트 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    도커
    쿠버네티스
    프로세스와 스레드
    SVM
    운영체제
    머신러닝
    의사결정나무
    서포트벡터머신
    multi-agent
    K-최근접이웃
    LLM
    ML
    2025ICML
    디시전트리
    ICLR2025
    Machine Learning
    리눅스마스터
    교착상태
    명렁어
    ICML
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.5
Yun Lab.
CPU 스케줄링
상단으로

티스토리툴바