Linux内核如何知道哪个进程进行了系统调用?

用户名

假设某个进程进行了系统调用以打开文件,则当Linux内核执行此系统调用时,Linux内核应将fd已打开文件的添加到进行fd系统调用的进程表中。

当传递给系统调用的参数不包含PID时,Linux内核如何知道由哪个进程进行了该系统调用?

斯蒂芬·基特

内核系统调用在调用过程的上下文中执行,只是处于不同的特权级别和具有不同的支持基础结构。Linux内核具有每个CPU的变量,该变量跟踪当前进程current_task它在需要知道当前过程是什么时使用它。在给定的CPU上,当前任务仅在调度程序决定时才会更改,并且上下文切换会注意保存所有必要的信息,以便内核可以跟踪发生在哪里的情况。

LWN有一些关于syscall的有用文章,第1部分第2部分的系统调用剖析他们解释了如何定义系统调用以及如何执行它们,尽管可能没有足够的细节来实际回答您的问题,因为它们没有详细介绍从用户空间到内核空间的转换。但这“仅仅是” CPU上基于陷阱的过渡支持。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

操作系统如何知道哪个进程正在调用函数?

如何知道在处理单个记录时是否进行了“包含”调用?

如何知道jtextarea中是否进行了任何更改?

内核是否进行了碎片整理

我怎么知道在控制器中哪个局部视图进行了回调

我怎么知道,Hyperledger Fabric中的事务进行了哪个Peer?

函数可以知道它们是否已经在Python(joblib)中进行了多进程处理

Linux:如何知道哪些进程固定在哪个内核上?

如何查看一个进程在品红色内核中进行了多少个上下文切换?

如何记录特定的系统调用执行了哪些进程?

如何找出stackview中的哪个视图进行了动画处理

在Django中,登录后如何检测哪个auth后端对用户进行了身份验证?

我有一个代码,其中调用了Lateinit变量后对其进行了初始化,但我不知道如何

如何知道服务人员是否在gatsby-plugin-offline中进行了更新

SQL Server:如何知道每小时进行了多少笔交易?

GitHub 如何知道我在本地存储库中进行了哪些提交?

如何知道/ etc / shadow中的密码是否用SHA或MD进行了哈希处理?

如何知道Jenkins是否在CentOS 7上进行了修补

进行了错误编辑,如何返回?

确定哪个用户进行了调查-Limesurvey

如何找到Linux内核系统调用的实现?

从服务器,如何识别进行了JavaScript fetch()调用(asp.net mvc)

如何使用JavaScript检查是否对服务器进行了调用

如何使用git log查找哪个作者和提交者对项目进行了更多提交?

是否对JavaScript引擎尾部调用(TCO)进行了优化?

错误:nodejs中的getaddrinfo ENOTFOUND进行了get调用

如何知道用户是否通过 firebase 的第一个请求进行了身份验证

如何使用Linux内核模块中的Linux系统调用

知道在Linux上杀死哪个python进程?