본문 바로가기

🔥 🔥

[강의] 그림으로 쉽게 배우는 운영체제 - 2. CPU 스케줄링

반응형

 

1. cpu 스케줄링 개요

  • 프로그램을 실행시키면 메모리에 프로세스가 생성되고 각 프로세스에는 1개 이상의 스레드가 있음
  • cpu 스케줄링 : 운영체제가 프로세스에게 cpu를 할당, 해제하는 것
    • 고려사항
      • 어떤 프로세스에게 cpu 리소스를 줘야하는가
      • cpu를 할당받은 프로세스가 얼마의 시간동안 cpu를 사용해야하는가 (시분할 처리 방식으로 여러프로세스에게 짧은 시간 동안 돌아가며 할당)
  • cpu벌스트 : cpu를 할당받아 실행하는 작업
  • io벌스트 : 입출력 작업

2. 다중큐

  • 생성 > 준비 > (스케줄러에 의해) 실행 > (cpu할당시간이 다 됐으면 다시) 준비 > (io요청이 있다면) 대기 > 작업 끝 완료
  • 준비상태, 대기상태 > Queue 자료구조로 관리
  • 실행에서 준비로 돌아갈때 > 운영체제가 프로세스의 우선순위를 보고 맞는 준비큐에 넣음
  • 준비상태의 다중큐에서 적당한 프로세스 선택하여 실행상태로 전환

i.o요청시

  • 하드디스크 작업은 > HDD큐로 들어가고 작업 완료 후 인터럽트 발생시 > HDD 큐를 꺼냄
  • 큐에 프로세스의 정보를 가지고 있는 PCB가 들어감

3. 스케줄링 목표

  • 리소스 사용률
    • cpu 사용률을 높이는 것 목표 or io디바이스의 사용률 높이기
  • 오버헤드 최소화
    • 컨텍스트 스위칭을 너무 자주하면 안됨
  • 공평성
    • 모든 프로세스에게 공평하게 cpu가 할당
    • (시스템에 따라 다름)
  • 처리량
    • 같은 시간 내에 더 많은 처리를 할 수 있는 방법을 목표
  • 대기 시간
    • 작업을 요청하고 실제 작업이 이루어지기전까지 대기하는 시간이 짧은 것이 목표
  • 응답 시간
    • 사용자의 요청이 얼마나 빨리 반응하는지가 중요하기 때문에 응답시간이 짧은 것 목표
    • 처리량과 응답시간의 목표를 같이 달성할 순 없음

4. FIFO

  • cpu 스케줄링 알고리즘
  • 먼저들어온 프로세스가 완전히 끝나야만 다음 프로세스가 실행됨 (brust time이 짧은게 먼저 실행 > 대기시간이 짧아짐)
  • 장점 : 단순, 직관
  • 단점 : 먼저들어온 프로세스가 완전히 끝나야만 다음 프로세스가 실행되기 때문에 실행시간이 짧고 늦게 도착한 프로세스가 실행기간이 길고 기다려야됨
  • io작업이 있다고 하면 io작업을 기다려하기 때문에 cpu 사용률이 떨어짐
  • 스케줄링의 성능은 평균 대기시간으로 평가됨

5. SJF (shortes job first)

  • fifo에서 버스트타임이 짧은 순서대로 실행시 평균 대기 시간이 짧아 지기 때문에 짧은 작업 먼저 실행하는 알고리즘
  • 장 : 이론적으로 fifo보다 성능이 좋긴함
    • 어떤 프로세스가 얼마나 실행될지 예측하기 불가능
    • 버스트타임이 짧은게 먼저 실행되기 때문에 시간이 긴 프러세스는 오랫동안 실행을 못할 수 있음
  • sjf는 사용되지 않음

6. RR (Round Robin)

  • 라운드 로빈 알고리즘 > 일정 시간이 지나면 강제로 다른 프로세스에게 일정 시간만큼 cpu 할당
  • 프로세스에게 할당하는 일정시간 > 타임 슬라이스 또는 타임 컨텀
  • 평균대기시간이 비슷하다면 rr알고리즘이 더 비효율적인 방식
    • rr알고리즘은 컨텍스트 스위칭이 잇기 때문에 컨텍스트 스위칭 시간이 더 추가되기 때문
  • 타임슬라이스에 따라 상황이 다름
    • 큰 > 먼저 들어온 프로세스의 작업이 종료될때까지 실행하니 fifo처럼 됨
    • 작은 > 동시에 동작하는 것처럼 느껴짐, 컨텍스트 스위칭 자주 일어남 > 오버헤드가 너무 큼
  • 최적 > 사용자가 동시에 실행되는 것처럼 느끼고, 오버체드가 많이 안일어나도록 느껴지게(20ms-100ms 사이)

6. MLFQ (Multi-level Feedback Queue)

  • 가장 일반적으로 쓰임
  • rr의 업그레이드된 알고리즘

 

 


 

해당 글은 [인프런 - 그림으로 쉽게 배우는 운영체제] 강의를 듣고 정리한 글 입니다.

https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C

 

그림으로 쉽게 배우는 운영체제 | 감자 - 인프런

감자 | 이 강의를 통해 모든 개발자들이 필수로 알아야하는 운영체제의 원리를 알 수 있습니다., 개발자의 필수 지식 운영체제를 배워서뿌리 깊은 나무가 되어 봐요 🌳 강의 주제 📖 [임베딩 영

www.inflearn.com