20、Linux进程调度:系统调用、优先级与处理器亲和性解析

Linux进程调度:系统调用、优先级与处理器亲和性解析

1. sched_yield() 系统调用

Linux 作为一个抢占式多任务操作系统,提供了 sched_yield() 系统调用,允许进程显式放弃执行权,让调度器选择新的进程执行。

#include <sched.h> 

int sched_yield (void);

调用 sched_yield() 会暂停当前运行的进程,之后调度器会选择新的进程运行,就好像内核主动抢占当前进程一样。若没有其他可运行的进程,放弃执行权的进程会立即恢复执行。该调用成功时返回 0,失败时返回 -1 并设置 errno 。在 Linux 及大多数 Unix 系统中, sched_yield() 不会失败,总是返回 0,但严谨的程序员仍会检查返回值:

if (sched_yield (  )) 
    perror ("sched_yield");
1.1 合理使用场景

在 Linux 这样的抢占式多任务系统中, sched_yield() 的合理使用场景较少。内核能做出最优、最高效的调度决策,比单个应用程序更适合决定何时抢占和抢占哪个进程。不过,在以下情况中仍有一定作用:
- 等待外部事件 :例如一个进程需要等待另一个进程完成,可使用

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值