Presentation is loading. Please wait.

Presentation is loading. Please wait.

Sungkyunkwan University OS Project Dongkun Shin

Similar presentations


Presentation on theme: "Sungkyunkwan University OS Project Dongkun Shin"— Presentation transcript:

1 Sungkyunkwan University OS Project Dongkun Shin
Schedule() 함수 분석 Sungkyunkwan University OS Project Dongkun Shin

2 Schedule()의 목적 CPU마다 존재하는 Run Queue로부터 프로세스 하나를 찾아 CPU 자원 할당
다양한 Scheduler와의 호환

3 schedule() 함수 호출 시기 직접 호출
필요한 자원 이용이 불가하여 다른 프로세스를 실행할 때 특정 디바이스 드라이버로부터 호출 Lazy 호출 (Deferred Invocation) <TIF_NEED_RESCHED flag가 Set되어 있는 경우> 특정 시간 간격 (Time quantum)마다 Try_to_wake_up() 함수가 호출되었을 때 Sched_setscheduler()가 호출되었을 때: 프로세스의 Scheduling policy 와/혹은 Priority를 변경하였을 때

4 Schedule() 개요 4 단계로 이루어짐 Process Switch 이전 Process Switch 중
다음 프로세스를 선택하기 위한 환경 설정 Runqueue로부터 다음 프로세스 선택 Process Switch 중 프로세스 전환을 위한 환경 설정 프로세스 전환 Process Switch 이후 선택된 다음 프로세스가 이전 프로세스와 동일 할 때 하는 작업 Process Switch 종료

5 __schedule() – 변수 설정 schedule()함수에 사용되는 지역변수들 본 함수의 가장 중요한 결과물은 next
switch_count: 특정 Task의 Context가 Switch됨에 따라 올릴 switch_count switch_count는 Process를 분석할 때 사용됨. task_struct의 두 개 변수가 담당 nvcsw: Direct Switching Count nivcsw: Deferred Switching Count rq: 해당 CPU의 Runqueue 포인터 cpu: 현재 CPUID 커널 Preemption을 불가능하게 설정 (preempt count증가, memory barrier 설정) 현재 cpuid를 알아내어 cpu 변수 값 설정 해당 cpu의 runqueue를 가리키도록 rq값 설정 cpu에서 context switch를 위해 사용하는 값들을 rcu락으로 보호 prev 변수를 현재 실행중인 process로 설정

6 __schedule() – 현재 Switching 정보
Lazy호출이라 가정하여 Switch Count 설정 기존 prevstate가 stop되어 있으면 자발적인 switch라고 판단 siwtch count=nvcsw if unlikely함수는 가능성이 거의 없는 branch else 현재 process를 sleep 시키고 runqueue에서 제거 workqueue에 관한 내용 pending된 작업들을 수행할 지를 결정

7 __schedule() – pre_schedule
CFS에는 pre_schedule함수가 정의 되어 있지 않으므로 아무 작업도 하지 않음

8 __schedule() – context switch
runqueue에서 제거한 기존 process를 다시 runqueue에 삽입. CFS에서 정의한 put_prev_task()로 삽입하므로 기존과 다른 상태로 runqueue에 삽입됨  priority에 따라 weight를 재설정하여 삽입 CFS에서 정의한 pick_next_task를 호출해 다음에 실행될 process로 next 변수 설정 다음에 실행될 Process가 이전 Process와 다르면 context switch로 프로세스 전환 이 후 post_schedule은 CFS에 정의X preempt enable시키고 종료


Download ppt "Sungkyunkwan University OS Project Dongkun Shin"

Similar presentations


Ads by Google