我试图更好地理解 Linux 系统上从用户模式切换到内核模式的过程。
当进程需要访问低级硬件/受限内存空间时,它是否向内核发出系统调用,并且内核代表其运行代码并将信息传递回进程?或者内核是否将进程置于特权模式,现在进程本身正在内核模式下运行并且可以访问它请求的任何资源?
谢谢 !
答案1
它是否向内核发出系统调用,然后内核代表它运行代码并将信息传递回进程?或者内核是否将进程置于特权模式,现在进程本身正在内核模式下运行并且可以访问他请求的任何资源?
是的。上述任何一个,取决于系统调用。
有时,进程会转换到内核模式并执行某些操作。有时内核线程会处理工作,尤其是与 I/O 和文件系统相关的工作。对于gettimeofday()
,vDSO 意味着它只读取值而不进入内核空间。
阅读介绍系统调用接口的文章,例如LWN 的系统调用剖析。架构特定,因此 x86 上的 Linux 的详细信息不可移植到其他操作系统或 CPU 类型。但可能有类似的概念。
使用分析工具查看适合您的工作负载的堆栈。了解您的工作负载的典型“系统 CPU”百分比。