View

선점형과 비선점형 스케쥴러


비선점형

  • 프로세스가 자발적으로 blocking상태로 들어가거나, 실행이 끝났을 때만, 다른 프로세스로 교체 가능
  • 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없음
  • 예) A가 프로세스가 자체적으로 running이 아니어야만(Block 혹은 종료 혹은 ready 상태) B 프로세스가 실행되는 것.

선점형

  • 프로세스 running 중에 스케쥴러가 이를 중단시키고, 다른 프로세스로 교체 가능
  • 하나의 프로세스가 다른 프로세스 대신에 CPU를 차지할 수 있음. 스케쥴러 실행이 프로세스 스테이트에 영향 받지 않음.
  • 이전 프로세스 중단 및 다음 프로세스 실행 기준에 고려할게 많기 때문에 비선점형보다 이후에 나옴.
  • 예) A 프로세서가 스케쥴러에 의해 실행될 때, 어느 시점(ex. 2초 단위로)에 A를 중지하고 B를 실행시키게 된다.

선점형과 비선점형 알고리즘의 차이


스케쥴러(정책, policy) 구분

  • FIFO(FCFS), SJF, Priority-based는 어떤 프로세스를 먼저 실행시킬지에 대한 알고리즘=>비선점형 방식에 가깝다.
  • RoundRobin은 시분할 시스템을 위한 기본 알고리즘 => 선점형 스케쥴러

스케쥴링 알고리즘 조합

  1. 우선순위 기반(정적)
  2. 선점형
  3. 시분할
  4. 프로세스 상태
  • 위 4가지의 알고리즘을 조합한 스케쥴링 알고리즘에 대해 살펴보자.
  • 1칸의 시간을 1초로 설정하였을때, 2초 마다 스케쥴러는 프로세스의 우선순위를 판단하게 된다.
  • 우선순위는 사용자에게 빠른 시간에 응답해주어야 하는 것을 우선으로 하여 순위를 매기는 것이 사용자로 하여금 편안함을 느끼게 한다.


마우스/키보드/GUI 반응이 느린 이유에 대해 생각해보자.

스케쥴러가 해결해야하는 이슈이다!
다양하고 복잡한 스케쥴링 알고리즘 필요

  • 버벅 거리는 현상을 통해 스케줄링 알고리즘에 대해 생각할 수 있다.
  • 리눅스 스케줄러 : O(1), CFS와 같이 다양한 방식으로 스케쥴러 알고리즘을 변경 시도 중
    • 인터렉티브, IO, CPU 중심 프로세스로 미리 구분할 수 있다면 보다 개선된 스케쥴링이 가능함.
      => 프로세스의 수가 많을 수록 컴퓨터가 느려질 확률이 높다.
  • 프로세스의 타입에 따라 우선순위를 매겨 그에 맞는 스케쥴링 알고리즘을 사용하면 스케쥴링을 최적으로 개선 가능한 점이 있다.
Share Link
reply
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31