java affinity_sched_setaffinity()如何工作?

我试图了解linux系统调用sched_setaffinity()的工作原理 . 这是我的问题here的后续内容 .

我有this guide,它解释了如何使用系统调用并且有一个非常整洁(工作!)的例子 .

所以我下载了Linux 2.6.27.19 kernel sources .

我对包含该系统调用的行进行了'grep',得到了91个结果 . 没有前途 .

最后,我试图了解内核如何为特定内核(或处理器)设置指令指针 .

我熟悉单核单线程程序的工作原理 . 有人可能发出'jmp foo'指令,这基本上将IP设置为'foo'标签的内存地址 . 但是当一个有多个内核时,必须说“在内存地址foo处获取下一条指令,并设置内核编号2的指令指针以便在那里开始执行 . ”

在汇编代码中,我们指定哪个核心执行该操作?

回到内核代码:这里重要的是什么?文件'kernel/sched.c'有一个名为sched_setaffinity()的函数,但返回类型"long" - 这与manual page不一致 . 那么重要的是什么?这些模块中的哪一个显示了组装说明?什么模块正在读'task_struct',查看'cpus_allowed'成员,然后将其转换为指令? (我还翻阅了glibc源代码 - 但我认为它只是调用内核代码来完成这项任务 . )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值