35、进程调度机制深度解析

进程调度机制深度解析

1. 实时进程调度规则

实时进程在可运行状态时会抑制所有低优先级进程的执行,与常规进程不同,实时进程始终被视为活跃状态。用户可以通过 sched_setparam() sched_setscheduler() 系统调用更改进程的实时优先级。

当多个实时可运行进程具有相同的最高优先级时,调度器会选择本地 CPU 运行队列对应列表中最先出现的进程。

实时进程仅在以下情况之一发生时才会被其他进程替换:
- 被具有更高实时优先级的进程抢占。
- 执行阻塞操作,进入睡眠状态(TASK_INTERRUPTIBLE 或 TASK_UNINTERRUPTIBLE)。
- 进程停止(TASK_STOPPED 或 TASK_TRACED 状态)或被杀掉(EXIT_ZOMBIE 或 EXIT_DEAD 状态)。
- 主动调用 sched_yield() 系统调用放弃 CPU。
- 进程为轮转实时(SCHED_RR)类型,且时间片已用完。

对于轮转实时进程, nice() setpriority() 系统调用不会改变其实时优先级,而是改变基础时间片的持续时间。实际上,轮转实时进程的基础时间片持续时间不取决于实时优先级,而是根据进程的静态优先级确定。

2. 调度器使用的数据结构
  • 进程列表与运行队列 :进程列表链接了所有进程描述符,而运行队列列表则链接了所有可运行进程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值