스레드 스케쥴링
• 컨텍스트구조체
– 스레드가 마지막으로 수행되었을 때의 CPU레
지스터들의 정보를 가지고 있다.
– Context Switching
32.
스레드 스케쥴링
• 컨텍스트전환이 일어나면 Cpu시간을 할당
받은 스레드는 프로세스의 주소 공간 내에
위치한 코드를 수행하고 데이터를 사용하
게 된다.
• 다시 20밀리초가 지나면 윈도우는 CPU레
지스터 정보를 스레드의 컨텍스트로 저장
하게 되고 스레드는 수행이 정지된다.
33.
스레드의 정지와 계속수행
• 스레드 커널 오브젝트 내에는 Suspend Count라는 값이 저장되어 있
다.
• CreateThread가 불리는 순간 1로 초기화가 되고,
• CreateThread속에서 초기화가 모두 끝났을때,
• CREATE_SUSPENDED플래그만 켜져있지 않다면 정지카운트를 0
으로 만들고 스케줄 가능한 상태가 된다.
• CREATE_SUSPENDED플래그가 켜져있었다면, 스케줄 불가능 상태
가 된다.
스레드 우선순위
• 모든스레드들은 0~31의 우선순위 번호를 가짐
• 시스템은 다음에 수행할 스레드를 선택할 때 31번 우선순위를 가진
스케줄 가능한 스레드들을 선택하고 라운드 로빈 방식으로 이러한 스
레드들을 수행한다.
– 스레드에 할당된 Time Slice가 끝나면 시스템은 31번 우선순위를 가진
스레드 중 스케줄 가능한 스레드가 있는지 확인하고 있을경우 할당.
– 31번이 스케줄 가능일 경우는 0~30은 절대 CPU를 할당 받을 수 없다.
(starvation state가 됨)
– 멀티 스레드일 경우는 31번과 30번이 동시에 돌아갈 수 있기 때문에 발
생 빈도가 적은 편.
– CPU는 스케줄 가능한 스레드가 없는 경우에만 유휴 상태가 된다.
38.
스레드 우선순위
• 시스템 내의 대부분의 스레드들은 스케줄 불가능 상태를 유지한다.
• 예)
– 프로세스의 주 스레드가 GetMessage를 했는데 Message가 없을때 프로세스를 정지시
킴.
– Message가 삽입되는 순간, 시스템은 해당 스레드가 더 이상 정지 상태로 있지 않아야
한다는것을 알게 되고, 현재 스레드보다 높은 우선순위의 실행가능 스레드가 없을 때,
CPU시간을 할당함.
– 낮은 우선 순위의 스레드가 어떤 작업을 하고 있든지, 높은 우선순위가의 스레드가 스케
줄 가능 상태가 되면, 지체없이 높은 우선순위의 스레드에 CPU시간을 할당함.(Time
Slice가 남았더라도 포기)
– 제로페이지 스레드
• 시스템 전체에서 어떠한 스레드도 스케줄 가능 상태가 아닐때 램의 사용되지 않는 페이지를 0
으로 만들어주는 작업을 수행
• 시스템 전체에서 유일하게 0번 우선순위를 가진 스레드.
스레드 우선순위
• 우선순위개념
– 프로세스의 우선순위
• 운영체제 내의 다른 프로그램들과 순위 척도
– 스레드들의 우선순위
• 애플리케이션 내의 스레드들의 상대적 순위 척도
41.
스레드 우선순위
• 높은우선순위 레벨의 스레드는 오랫동안 스
케줄 가능 상태로 남아 있지 않도록 하고,
• 낮은 우선순위 레벨 스레드는 가능한 오랫동
안 스케줄 가능한 상태를 유지해서 가능한 오
랫동안 CPU를 잡고 있도록 하는게 좋다.
• 전체적인 운영체제의 응답성이 개선된다.
스레드 우선순위
• 동적인우선순위 레벨 상승
– 시스템은 I/O이벤트에 응답이나 디스크를 읽을 때 일시적으로 우선순위
레벨을 상승시킨다.
• 프로세스/스레드 우선순위를 토대로 기본 우선순위 값이 정해진다.
• I/O 이벤트가 일어날 경우 일시적으로 우선순위레벨을 증가 시킬 수 있다.
• 1~15에서만 증감이 일어남.
• 기본 우선순위 값 밑으로는 떨어지지 않음
• 동적 변경이 싫다면,
– Set/GetProcessPriorityBoost
– Set/GetThreadPriorityBoost
44.
스레드 우선순위
• ForegroundProcess
– 사용자는 당연히 현재 사용중인 프로세스가
BackgroundProcess보다 빨리 응답하길 원할 것이
다.
– 그래서 윈도우는 Foreground에게는 일반적인 퀀
텀시간보다 좀 더 긴 시간의 퀀텀을 제공할 수 있
도록 한다.
– ForegroundProcess가 보통 우선순위 클래스일때
만! 적용된다.
45.
스레드 선호도
• 특정시스템구조를 고려한 기능으로
• 어느 스레드를 어떤 CPU에서 수행할지 제어
하는 방법을 제공하는 것
• 예)
– A스레드는 0번 CPU에서만,
– B스레드는 2번 CPU에서만 작동하도록