Computer Science / Engineering

컴퓨터 과학 / 공학

코스 전체목록

닫기
본 토픽은 현재 준비중입니다. 공동공부에 참여하시면 완성 되었을 때 알려드립니다.

(3) Priority-based Scheduling, Fair Share Scheduling

@ 지금까지 설명한 Scheduling 기법은

    // 모듈을 위한 Scheduling 기법입니다.

        > 굉장히 General한 부분이죠

        

@ Real Time System

    // 비행기 항법장치 등

    // 이런 System은 주어진 시간 안에 완전하게 수행되어야 합니다.

        > 이런 시스템에서는 OS가 Critical한 시스템을 먼저 수행시켜야 합니다.

            .. 이런 경우에는 Process 선호도를 먼저 수행시키는 Scheduling을해야 합니다.

            .. 이를 Priority-based Scheduling 우선순위 스케쥴링이라고 합니다.

            

@ 이를 General한 곳에 사용하면

    // 우선순위 매기는 것이 중요해지고

        > Starvation이라는 문제가 생깁니다.

            .. 수행할 준비를 받고 프로세스가 CPU를 무기한 기다리는 문제 (우선순위 하락)

 

@ 이와 같이 Application에 따라서 Policy가 바뀌는 경우가 많습니다.

 

@ 그 다음 Scheduling Fair Share Scheduling입니다.

    // Bandwidth, Proportial로도 불리는 것으로

        > 앞에서 나온 것들과 살짝 다른 기법입니다.

 

@ CPU라고 하는 Resource는 주어진 용량이 있으며,

    // 그 용량을 Bandwidth라고 하면

        > 각, Process마다 달리 가져가게 됩니다.

    // 단, 이럴 때, 특정한 Application이 CPU를 독점하게 되면 문제가 생깁니다.

        > 예를 들어 Continuos media에 있어서는 일정 CPU가 무조건 필요하기 때문입니다.

    // 그렇기에 어떤 프로세스가 필요한 CPU를 정해두고 이에 따라 Bandwidth를 할당하는 것입니다.

    

@ 자동차 OS에 있어서를 생각해보겠습니다.

    // 예를 들어 자동차의 Head unit이 다양한 일들을 해준다고 생각하겠습니다.

        > 주어진 CPU에서 웹브라우저가 CPU를 차지하는 영향을 30%로 한계를 두는 것을 요구할 수 있습니다.

            .. 이런 Bandwidth Scheduling이 필요합니다.

            

@ 이게 가능하도록 하는 Bandwidth 관련 함수가 존재합니다.

    // CFS (complitely fair Scheduling)

    

@ 지금까지 많은 Scheduling을 살펴보았습니다.

    

    // 이를 다시 정리해보겠습니다.

        > Shortist Job First

            .. 하지만 waiting time을 예상하기 힘들었습니다.

        > FIFO - Round Robin Scheduling 도임

            .. 하지만 아직 잠재적인 문제가 존재했습니다.

        > MLFQ를 도입

            .. Mission Critical 문제가 존재하게 됩니다.

        > 우선순위 스케쥴링

            .. Bandwidth Scheduling의 필요성이 증가합니다.

        > Linuxd에서 Rotating Staircase Deadline Scheduler를 도입합니다. (Fair Share)

            .. MLFQ에서 제일 뒤로 가는 것이 아니라 Deadline 값에 따라 Queue의 원하는 위치로 갈 수 있습니다.

            .. 이 Deadline은 Bandwidth에 따라 정해지게 됩니다.

        > 그러나 결국은 CFS를 만들고 Linux의 기본적인 커널 스케쥴러로 받아들입니다.

        

@ 지금은 기본적으로 모두 CFS를 가집니다. 

 

@ 학부에서는 MLFQ까지 알고 있으면 되고, 

    // 그 이후의 내용은 좀더 현실적인 부분에서 생각하시면 되겠습니다.

댓글

댓글 본문
버전 관리
박천명
현재 버전
선택 버전
graphittie 자세히 보기