摘要: schedule 函数的调用过程 asmlinkage __visible void __sched schedule(void) { struct task_struct *tsk = current; sched_submit_work(tsk); do { preempt_disable(); 阅读全文
posted @ 2020-02-21 19:03 坚持,每天进步一点点 阅读(927) 评论(0) 推荐(0) 编辑
摘要: 抢占式调度 两种情况: 执行太久, 需切换到另一进程; 高优先级进程被唤醒 切换到另一进程实现: 时钟中断处理函数会调用 scheduler_tick()查看是否是需要抢占的时间点 void scheduler_tick(void) { int cpu = smp_processor_id(); s 阅读全文
posted @ 2020-02-21 18:29 坚持,每天进步一点点 阅读(540) 评论(0) 推荐(0) 编辑
摘要: 调度策略与调度类 进程分为实时进程和普通进程,分别对应实时调度策略和普通调度策略 在 task_struct 中,有一个成员变量,我们叫调度策略 unsigned int policy; 它有以下几个定义: #define SCHED_NORMAL 0 #define SCHED_FIFO 1 #d 阅读全文
posted @ 2020-02-21 18:11 坚持,每天进步一点点 阅读(519) 评论(0) 推荐(0) 编辑