38、操作系统中的进程调度与内存管理

操作系统中的进程调度与内存管理

1. 进程调度相关系统调用

在操作系统中,有多个系统调用可用于让进程改变其优先级和调度策略。一般而言,用户可以降低自己进程的优先级,但如果要修改其他用户进程的优先级或提高自己进程的优先级,则需要超级用户权限。

1.1 nice()系统调用

nice()系统调用允许进程改变其基本优先级。该调用的增量参数中的整数值用于修改进程描述符的nice字段。Unix的nice命令就是基于此系统调用,让用户能以修改后的调度优先级运行程序。

sys_nice()服务例程处理nice()系统调用。尽管增量参数可以是任意值,但绝对值大于40的值会被截断为40。传统上,负值表示提高优先级的请求,需要超级用户权限;正值表示降低优先级的请求。若增量为负,函数会调用capable()函数验证进程是否有CAP_SYS_NICE能力,还会调用security_task_setnice()安全钩子。若用户有修改优先级的权限,sys_nice()会将当前进程的静态优先级转换为nice值范围,加上增量值,然后调用set_user_nice()函数。该函数会获取本地运行队列锁,更新当前进程的静态优先级,调用resched_task()函数让其他进程抢占当前进程,最后释放运行队列锁。不过,nice()系统调用仅用于向后兼容,已被setpriority()系统调用取代。

1.2 getpriority()和setpriority()系统调用

nice()系统调用仅影响调用它的进程,而getpriority()和setpriority()系统调用则作用于给定组中所有进程的基本优先级。getpriority()返回给定组中所有进程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值