与处理器绑定有关的系统调用


     Linux调度程序提供强制的处理器绑定机制。也就是说,虽然它尽力通过一种软的或者说自然的亲和性试图使进程尽量在同一个处理器上运行。但它也允许用户强制指定“这个进程无论如何必须在这些处理器上运行。”这种强制的亲和性保存在进程task_struct的cpu_allowed这个位掩码标志中。该掩码标志的每一位对应一个系统可用的处理器。 默认情况下,所有的位都被设置,进程可以在系统中所有可用的处理器上执行。用户可以通过sched_setaffinity()设置一个不同的一个或几个位组合的位掩码。而调用sched_getaffinity()则返回当前的cpus_allowed位掩码。
    内核提供的强制处理器绑定的方法很简单。首先,当进程第一次创建时,它继承了其父进程的相关掩码。由于父进程运行在指定的处理器上,子进程也运行在相应的处理器上。其次,当处理器绑定关系改变时,内核会采用“移植线程”把任务推到合法的处理器上。最后,负载平衡器只把任务拉到允许的处理器上。因此,进程只运行在指定的处理器上,对处理器的指定是由该进程描述符的cpus_allowed域设置的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值