본문 바로가기

CS/운영체제(OS)

OS - 프로세스 관리와 CPU 스케줄링

728x90

Context switching (문맥 전환)

  • CPU가 프로세스에서 작업을 하던 중 인터럽트가 발생하거나 OS의 스케줄대로 프로세스가 변경될 수 있다.
  • 프로세스가 변경될 때 PCB에 있던 정보를 저장하고, 새로 작업해야할 프로세스의 정보는 불러와야한다. 스케줄러가 선택한 프로세스에 실질적으로 프로세서를 할당하는 역할을 한다.
  • 이러한 작업을 해주는 것을 Dispathcher 라 하며 디스패쳐는 OS의 프로세스 관리 부서에 있다.
  • 디스패쳐는 운영체제 모드를 커널에서 유저로 변경하는 역할까찌 수행한다.
  • 그러나 디스패쳐는 Context switching overhead를 일으킨다. 그러므로 너무 많은 전환은 성능에 좋지 않다. 그래서 CPU 스케줄러가 중요하다.

간단한 컴퓨터 구조 Dispathcer는 Ready Queue와 CPU사이에서 활동한다.

 

  • 컴퓨터 구조를 간략하게 그려보면 다음과 같다. 하드디스크에서 메인 메모리에 적재할 프로그램을 job queue에서 job 스케줄러의 스케줄대로 적재한다.
  • 그리고 메인 메모리에 들어가 프로세스가 되면 프로세스는 준비상태로 들어가고 준비가 되면 Ready Queue에 들어간다.
  • 레디큐에서 cpu로 작업을 넘길 때는 cpu 스케줄러가 역할을 담당하게 된다.
  • 그리고 가장 빈번하게 일어나는 작업이 바로 cpu 스케줄러이다.

CPU Scheduling

  • 선점 vs 비선점
    • 선점과 비선점은 말 그대로 선점권이 있느냐 없느냐를 뜻한다.
    • 예를들면 선점은 응급실과 같다. 나보다 급한 환자들이 오면 나는 더 기다려야한다.
    • 비선점은 동네 병원과 같다. 앞 사람이 끝날 때 까지 기다려야한다.
  • 스케줄링 척도
    • CPU 이용률
    • 처리율
    • 반환시간
    • 대기시간
    • 응답시간
  • CPU 스케줄링 알고리즘
    • First-Come, First-Serverd
    • Shortest-Job-Frist
    • Priority
    • Round-Robin
    • Multilevel Qeueu
    • Multilevel Feedback Queue

First-Come, First-Serverd

  • 이름 그대로 들어온 순서부터 처리하는 알고리즘이다. 가장 간편하고 효과적으로 보일 수 있다.
  • 평균 대기 시간 관점

  • 프로세스가 들어온 순서대로 처리하면 평균 17초씩 기다려야한다. 그러나 짧은 시간을 먼저 하면 3초만 기다리면 된다. 이 것은 알고리즘 문제에서도 자주 볼 수 있는 최적화 문제이기도 하다.

https://school.programmers.co.kr/learn/courses/30/lessons/42627

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

  • Convoy Effect
    • 위 처럼 p1을 p2, p3는 마치 호위무사처럼 뒤에서 기다려야한다. 그래서 이런 이름이 붙었다.
    • FCFS는 비선점 알고리즘이다.