이 블로그 검색

2015년 11월 23일 월요일

우선순위(Priority) 스케줄링(Scheduling) 알고리즘

우선순위(Priority) 스케줄링(Scheduling) 알고리즘 :

각각의 프로세스마다 우선순위를 부여해서 우선순위가 높은 프로세스를 먼저 실행한다.

우선순위가 다른 두 프로세스를 동시 실행할 때,

우선순위가 높은 프로세스가 작업을 마치지 않는다면(블로킹 상태가 되거나 I/O 작업을 하지 않는다면)
우선순위가 낮은 프로세스는 절대로 실행되지 않는다. (기아 상태 : Starvation)



라운드 로빈(Round-Robin) 스케줄링 알고리즘 :

우선순위가 동일한 프로세스들의 형평성 유지를 위해
정해진 시간 간격(타임 슬라이스(Time Slice), 퀀텀(Quantum))만큼만 실행하고 CPU 할당을 넘긴다.

타임 슬라이스 ↑ -> 반응속도 ↓
타임 슬라이스 ↓ -> 성능 ↓ (잦은 컨텍스트 스위칭 발생으로 인하여 시스템이 무리가 가서 성능이 저하된다)



Windows의 스케줄링 알고리즘 :


스케줄링이 진행되는 시점 :

1. 매 타임 슬라이스마다 스케줄러 동작.
2. 프로세스가 생성 및 소멸될 때마다 스케줄러 동작
3. 현재 실행 중인 프로세스가 블로킹 상태에 놓일 때마다 스케줄러 동작



Windows 프로세스 우선순위 :

 Priority 의미
 IDLE_PRIORITY_CLASS 기존 우선순위 4
 NORMAL_PRIORITY_CLASS 기존 우선순위 9
 HIGH_PRIORITY_CLASS 기존 우선순위 13
 REALTIME_PRIORITY_CLASS 기존 우선순위 24
 ABOVE_NORMAL_PRIORITY_CLASS NORMAL_PRIORITY_CLASS 보다 높고
 HIGH_PRIORITY_CLASS 보다 낮다.( 9< x < 13 )
 BELOW_NORMAL_PRIORITY_CLASS IDLE_PRIORITY_CLASS 보다 높고
 NORMAL_PRIORITY_CLASS 보다 낮다. ( 4 < x < 9 )

프로세스 우선순위 변경 :

BOOL SetPriorityClass(
        HANDLE hProcess,              // 우선순위를 변경할 프로세스의 핸들
        DWORD dwPriorityClass        // 새롭게 적용할 우선순위 상수값
);


Priority Inversion :

프로세스의 우선순위가 뒤바뀌는 상황

(예 : 

프로세스 A > 프로세스 B > 프로세스 C (우선순위)

프로세스 A가 실행이 되다가 프로세스 C에게 데이터를 받을 일이 생겼다.

프로세스 C가 실행이 되게 하기 위해 자신이 Blocked 상태가 되었다.

하지만 프로세스 C보다 우선순위가 높은 프로세스 B가 실행이 되어 프로세스 C가 실행이 되지 않으므로 

프로세스 A 또한 실행이 될수 없게 된다.
(즉, 프로세스 A 보다 우선순위가 낮은 프로세스 B가 우선순위가 가장 높은것처럼 되었다))

댓글 1개:

  1. [안전검증] MAX88 주소: m88ez.com

    해외 에이전시 상위라인인 페이먼트사로
    라이센스는 물론 300억대 마권보험 가입有

    [제공중인 배팅종류]
    스포츠북 : 10BET,IBCBET,CMD Sports
    카지노: 아시아게이밍,마이크로게이밍,게임플레이
    슬롯: 게임플레이,마이크로게이밍

    ·페이먼트사로 코드없이 가입가능
    ·슬롯,카지노 모바일 무설치 지원

    한국 외 6개 아시아지역 동시 온라인 서비스 제공

    가입하기: m88ez.com

    ※ 신규 첫 입금 20% 제공
    ※ 카지노 매일 첫충 15% 롤링2배
    ※ 스포츠 평일 첫충 5% / 주말 10% 롤링1배
    ※ 축배팅 등 별도의 배팅 제재 없습니다.
    ※ 신규 첫 입금시 최대 100,000KRW 제공
    ※ 전세계 모든 스포츠 경기 라이브배팅 지원
    ※ 더블찬스 배팅 등 수많은 스페셜배팅 제공

    주소: m88ez.com
    파트너 제휴 신청 스카이프: m88partner

    답글삭제