剑客
关注科技互联网

Linux上应用程序进行系统调用陷入内核后执行的cpu会发生变化吗?

题目没有把问题完全描述清楚,举个栗子:假设在一个多核机器上(当然是Linux操作系统),有进程A当前运行于CPU 0上,当它进行系统调用陷入内核后,执行对应内核代码的也是CPU 0吗?会不会是CPU 1?

这是一个很实际的问题,在编写内核模块提供ioctl与应用程序进行交互,或考虑CPU亲和性等情景时,都可能会考虑到这个问题。

简单的答案抄录在这里:

It will start on the calling CPU, it may be rescheduled to another CPU depending on the syscall and what’s happening elsewhere in the system, unless you have set strict affinity. If you think a little about the behaviour of the getcpu() syscall it should be clearer (ignoring the fact that it may not be a real syscall on x86).

详细的答案见链接:

http://unix.stackexchange.com/questions/186355/few-questions-about-system-calls-and-kernel-modules-kernel-services-in-parallel

Over~

转载请保留地址: http://www.lenky.info/archives/2016/10/2531
http://lenky.info/?p=2531

备注:如无特殊说明,文章内容均出自Lenky个人的真实理解而并非存心妄自揣测来故意愚人耳目。由于个人水平有限,虽力求内容正确无误,但仍然难免出错,请勿见怪,如果可以则请留言告之,并欢迎来
讨论。另外值得说明的是,Lenky的部分文章以及部分内容参考借鉴了网络上各位网友的热心分享,特别是一些带有完全参考的文章,其后附带的链接内容也许更直接、更丰富,而我只是做了一下归纳&转述,在此也一并表示感谢。关于本站的所有技术文章,欢迎转载,但请遵从 CC创作共享协议
,而一些私人性质较强的心情随笔,建议不要转载。

法律:根据最新颁布的《信息网络传播权保护条例》,如果您认为本文章的任何内容侵犯了您的权利,请以 Email
或书面等方式告知,本站将及时删除相关内容或链接。

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址