2011. 10. 13. 13:12
schedule() OS이야기2011. 10. 13. 13:12
다음번 수행할 프로세스를 선택하고 그 프로세스에게 실행권한을 넘기는 작업은 schedule()에서 수행
하는 일은 간단함. 다음은 가장 높은 우선순위의 태스크를 결정하는 일이다.
struct task_struct *prev, *next;
struct list_head *queue;
struct prio_array *array;
int idx;
prev = current;
array = rq->active;
idx = sched_find_first_bit(array->bitmap);
queue = array->queue + idx;
next = list_entry(queue->next, struct task_struct, run_list);
만약 prev, next가 다르면, 새 태스크가 선택돼 실행된다. 그러고 나서 아케텩체 종속적인 context_switch() 함수가 호출돼 실행권한을 prev로부터 next에게 넘긴다.
하는 일은 간단함. 다음은 가장 높은 우선순위의 태스크를 결정하는 일이다.
struct task_struct *prev, *next;
struct list_head *queue;
struct prio_array *array;
int idx;
prev = current;
array = rq->active;
idx = sched_find_first_bit(array->bitmap);
queue = array->queue + idx;
next = list_entry(queue->next, struct task_struct, run_list);
만약 prev, next가 다르면, 새 태스크가 선택돼 실행된다. 그러고 나서 아케텩체 종속적인 context_switch() 함수가 호출돼 실행권한을 prev로부터 next에게 넘긴다.
'OS이야기' 카테고리의 다른 글
Sleep And Block (0) | 2011.10.13 |
---|---|
우선순위와 타임슬라이스계산 (0) | 2011.10.13 |
타임슬라이스 재계산 (0) | 2011.10.13 |
프로세스 종료 (0) | 2011.10.11 |
커널 스레드 (0) | 2011.10.11 |