CPU 스케쥴링


윈도우에서 프로그램을 실행하는데

CPU MEMORY Disk

디스크에서 프로그램을 실행하게되면

 

데이터가 메모리안에 들어가고(프로그램) 그걸 처리하는걸(프로세스) cpu(프로세서)

프로그램은 굉장히 여러개 실행되고있음(작업관리자같은거)
그런것들이 프로세스임
그게 다 실행되고있냐? 동시보단 시분할로 실행하고있음(비동기)

 

예시)

일당을 들고있는 많은 사람들
이걸 한번에 처리하기보단
아주조금씩 처리해주고 하는거임

빠른녀석들을 가장빨리 처리해주고 오래걸리는애들 나중에 시켜줌

복사실에 사람들이 쭉 써있다고 생각하고

어떤사람들은 한두장일수도있고 책한권인사람도있음

그럼누가 중요할까요?
알바를생을 최대한 활용하면서 이사람들의 평균만족도를 올리는거

어떻게하는게 이런 자원효율도를 높일수가있을까


이게바로  CPU 스케쥴링(알고리즘)

시분할(시간으로 쪼개서 실행) 이고 선점형(Preemptive),비선점형 같은거 씀

선점형(Preemptive) 기법은 하나의 프로세스가 CPU를 점유하고 있을 때 다른 프로세스가 CPU를 빼앗아 차지할 수 있는 방법으로, 대화식 시분할 시스템과 같은 실시간 시스템에서 사용되는 기법입니다

위에껄봐도 모르겠으면 아래있는 예시로 이해하자

선점형 하나의 프로세스가 다른 프로세스 대신에 프로세서(CPU)를 차지할수 있다는 뜻이다.

선점형이라는건 말그대로 프로세스에 우선순위를 정한다라는거임.

 시분할을 어느정도로 해줄것인가!

사용자관점에서는 빠른 응답을 받는게 중요하고

태생이 백그라운드인 녀석들에게 힘을쓰면 사용자관점이 좀느려보임

백그라운드가 느린거에대해서는 별로중요하지않다

선점형에서는 여러개가 또있다

 

  • 1.SJF 스케줄링[최소작업우선순위] 실행시간이 가장짧은놈부터 실행
    2.라운드로깅 (돌아가면서 복사를 한장씩해주는거임) 


대표적인 비선점형(다른 프로세스를 끝낼수 없는) 스케쥴링

  • 1.FIFO : 대기 큐에 먼저 들어온 작업순으로 CPU를 할당
    2.SJF(Shot Job First) : 소요시간이 짧은 작업순으로 할당
    3.HRN : 우선순위와 대기 시간에 따라 작업을 할당


복사했습니다!