        O(1) 塼͡ʥ塼Ϣ᥽åɤΥե
                Robert Love <rml@tech9.net>, MontaVista Software


߷פˤꡢΥ᥽åɤΤۤȤɤ kernel/sched.c ǥȤʤä
ޤΤդƤ塼ϼʴ뷿ǡڤΥƤ
ʤΤǤΥɥȤŪϥ塼򤹤뤳ȤǤꡢ
塼ؤΥ󥿡եҲ𤹤뤳ȤǤϤޤ󡣤ȤϸΤΡ
Ƥ륤󥿡եΤδĤϡŪʥץ塼󥰡
᥽åɤǤΥ᥽åɤ include/linux/sched.h Ƥޤ


פʥ塼󥰥᥽å
------------------------------

void load_balance(runqueue_t *this_rq, int idle)
        CPU ̤ѹղ뤿ᡢɬפСĤ CPU 
        ¾ CPU ذư褦ȻߤޤΥ᥽åɤϡrunqueue Զѹդ
        ʤäƤˡ⤷ϥޥƥåˤäŪˡŪ˸Ƥ
        ФޤƽФΩäơߤ runqueue åߤ
        ̵ˤɬפޤ

void schedule()
        ᥤΥ塼󥰴ؿǤؿȤǤͥ٤ι⤤
        ץƥ֤ˤʤޤ


å
------

 runqueue Ϥ줾Υå rq->lock ݻƤޤʣ runqueue 
åɬפϡ&runqueue ͤξǥåƤʤ
ʤޤ

 runqueue Υå

        task_rq_lock(task_t pid, unsigned long *flags)

Ǥʤޤδؿϡץꥨץȳߤ̵ˤpid ư
Ƥ runqueue åޤƱͤˡ

        task_rq_unlock(task_t pid, unsigned long *flags)

 pid ưƤ runqueue Υåߤξ֤ᤷ
ץꥨץͭˤޤ

ؿ

        double_rq_lock(runqueue_t *rq1, runqueue_t *rq2)

ȴؿ

        double_rq_unlock(runqueue_t *rq1, runqueue_t *rq2)

Ϥ줾졢ꤵ줿Ĥ runqueue ˥åڤӥåޤ
ʤ顢Υ롼Ǥϳߤ̵򤪤ʤޤ
Υ롼λȻѸ˥桼ȤǤʤɬפޤ



--

MAX_PRIO
        ƥκץ饤ƥǡtask->prio Ȥƥ˳Ǽ
        ޤץ饤ƥ㤤Τۤͤ礭ʤޤ̾ (ꥢ
        ǤϤʤ) ץ饤ƥϰϤ MAX_RT_PRIO  (MAX_PRIO - 1)
        ޤǤǤ

MAX_RT_PRIO
        ƥκꥢ륿ࡦץ饤ƥͤǤͭʥꥢ륿ࡦ
        ץ饤ƥϰϤ 0  (MAX_RT_PRIO - 1) ޤǤǤ

MAX_USER_RT_PRIO
        桼֤˥ݡȤꥢ륿ࡦץ饤ƥǤ
         MAX_RT_PRIO ʲǤʤФʤޤͤ MAX_RT_PRIO 
        ꤹС桼֤ΤɤΥץ饤ƥι⤤
        ͥ륹åɤ뤳ȤǽȤʤޤ

MIN_TIMESLICE
MAX_TIMESLICE
        줾졢ץκǾ⤷ϺΥॹ饤 () Ǥ


ǡ
------

struct runqueue
        CPU Υᥤ runqueue ǡ¤ΤǤ

struct task_struct
        ץΥᥤΥǡ¤ΤǤ


ѥ᥽å
------------

cpu_rq(cpu)
        ꤵ줿 CPU  runqueue ֤ޤ

this_rq()
        ߤ CPU  runqueue ֤ޤ

task_rq(pid)
        ꤵ줿 pid ݻ runqueue ֤ޤ

cpu_curr(cpu)
        ꤵ줿 CPU ǸưΥ֤ޤ

rt_task(pid)
        pid ꥢ륿ʤп򡢤Ǥʤе֤ޤ


ץ᥽å
--------------------

void set_user_nice(task_t *p, long nice)
         p  nice ͤꤵ줿ͤ˥åȤޤ

int setscheduler(pid_t pid, int policy, struct sched_param *param)
        ꤵ줿 pid Υ塼󥰡ݥꥷȥ塼󥰡
        ѥ᡼򥻥åȤޤ

int set_cpus_allowed(task_t *p, unsigned long new_mask)
        ꤵ줿 CPU affinity () 򥻥åȤŬڤ CPU ؤ
        ܹԤޤƽФϡؤͭʻȤݻΥ
         exit ʤȤݾڤƤʤФʤޤ󡣸ƽФΤ
        åݻ뤳ȤϤǤޤ

set_task_state(tsk, state_value)
        ξ֤ꤵ줿ͤ˥åȤޤ

set_current_state(state_value)
        ߤΥξ֤ꤵ줿ͤ˥åȤޤ

void set_tsk_need_resched(struct task_struct *tsk)
        ꤵ줿 need_resched 򥻥åȤޤ

void clear_tsk_need_resched(struct task_struct *tsk)
        ꤵ줿 need_resched 򥯥ꥢޤ

void set_need_resched()
        ߤΥ need_resched 򥻥åȤޤ

void clear_need_resched()
        ߤΥ need_resched 򥯥ꥢޤ

int need_resched()
        ߤΥ need_resched åȤƤп򡢤Ǥʤ
        ֤ޤ

yield()
        ߤΥץ runqueue ֤schedule ƽФޤ

------------------------------------------------------------
Ρ JF ץ < http://www.linux.or.jp/JF/ >
ԡ    ɧ < takahiko(a)hakubi.co.jp >
   2004/01/29
ԡ    ŵ < zap03216(a)nifty.ne.jp >
