Process Scheduling

citron03·2021년 10월 29일
0

운영체제

목록 보기
7/11

메모리의 프로세스들 중에서 어떤 것에 먼저 CPU를 할당해야 하는가?
CPU의 사용을 극대화하고, 시간 공유를 위해서 빠르게 프로세스를 CPU로 switch한다.

🥤 Process Scheduler

  • 사용 가능한 프로세스 중에서 어떤 것을 CPU에서 실행할 것인지 선택한다.
  • 메모리에 저장된 모든 프로세스는 하드디스크에 똑같은 원본이 있어야 한다.

🌱 프로세스들의 scheduling queues

  • Job queue : 시스템의 모든 프로세스들
  • Ready queue : 메인 메모리에 존재하는 실행 대기중인 모든 프로세스들
    🍃 메모리속에 CPU를 기다리는 프로세스들
  • Device queues : I/O장치를 기다리는 프로세스들
  • 프로세스는 다양한 큐들 사이에서 옮겨다닌다.
  • queue의 header는 PCB를 가리킨다.
  • running은 queue가 없다.

Schedulers

🍊Long-term scheduler

  • 다른 이름으로 job scheduler
  • 하드디스크의 어떤 프로그램을 ready queue에 넣을지 선택한다.
  • 자주 호출되지 않는다. 따라서 느리다. (second, minute)
  • degree of multiprogramming을 제어해야 한다.
    degree of multiprogramming : 메인 메모리의 프로세스들의 수

🥖 Long-term scheduler가 아래의 둘을 적절히 혼합되도록 프로세스를 가져와야 한다.
I/O bound Process : I/O 사용시간 > CPU 이용 연산 시간,
CPU bursts가 짧다.
CPU bound Process : I/O 사용시간 < CPU 이용 연산 시간,
긴 CPU bursts가 거의 없다.

🍘 Short-term scheduler

  • 다른 이름으로 CPU scheduler
  • 메모리 사이에 어떤 프로세스를 CPU에서 실행할 것인지 선택한다. (CPU를 할당한다)
  • 시스템에서 유일한 스케쥴러가 될 수도 있다.
  • 자주 실행되기 때문에 빨라야 한다. (ms)

🌺 Medium-term scheduler

  • degree of multiple programming를 줄여야 하는 경우에 사용한다.
  • 메인 메모리에 프로세스가 너무나 많기 때문에 경쟁이 심화되고, 하드디스크로 swap out한다.
  • CPU 스케쥴러가 빈번하게 사용되면 메모리의 빈 공간이 적어지고, 새로운 프로세스가 들어오지 못하게 된다.
    그렇게 되면 기존 프로세스의 추가 메모리 할당이 되지 않고 이는 전체 시스템의 성능 저하 로 이어지게 된다.
  • 누구를 swap out할지 결정한다.
  • swapping : 메모리에서 프로세스를 제거한다.
    그리고 그 프로세스를 디스크에 저장하고 추후에 디스크에서 다시 가져와 계속해서 실행한다.

Context Switch

  • CPU가 다른 프로세스로 switch할 때 시스템은 이전 프로세스의 상태를 저장하고(PCB) context switch를 통해 새 프로세스에 대해 저장된 상태(PCB)를 불러와야 한다.
  • 즉, PCB의 내용을 교환한다.
    CPU의 레지스터값, 메모리 관리정보, 프로세스 상태 정보 등
  • 이때 context switch는 overhead이다. 즉, 짧을수록, 될 수 있으면 빠른 것이 좋다.
    🥔 switch 하는 동안에는 시스템이 사용자의 일을 수행하지 않는다.
  • OS와 PCB가 복잡할수록 context switch는 더 오래 걸린다.
  • 걸리는 시간은 하드웨어의 도움에 달려있다.
    몇몇 하드웨어는 CPU당 여러개의 registers set을 제공한다.
    이를 통해서 한번에 여러 contexts를 불러온다.
  • 소프트웨어는 되도록 빠르도록 assembly language로 구현된다.
profile
🙌🙌🙌🙌

0개의 댓글