操作系统进程调度机制详解
1. 进程唤醒相关操作
当唤醒一个进程时,会执行一系列操作:
1. 调用 recalc_task_prio() 函数,将进程描述符指针和上一步计算的时间戳作为参数传入。
2. 根据相关规则设置 p->activated 字段的值。
3. 将步骤 6a 计算的时间戳赋值给 p->timestamp 字段。
4. 将进程描述符插入活动集中:
enqueue_task(p, rq->active);
rq->nr_running++;
- 若目标 CPU 不是本地 CPU 或者同步标志未设置,检查新的可运行进程的动态优先级是否高于
rq运行队列中当前进程的优先级(p->prio < rq->curr->prio),若是,则调用resched_task()函数抢占rq->curr。在单处理器系统中,resched_task()函数仅执行set_tsk_need_resched()来设置rq->curr进程的TIF_NEED_RESCHED标志;在多处理器系统中,resched_task()
超级会员免费看
订阅专栏 解锁全文
1140

被折叠的 条评论
为什么被折叠?



