是否有一个很好的描述“系统调用”操作系统中使用的机制? [关闭]

StackOverflow https://stackoverflow.com/questions/126976

我正在寻找一个很好的入门或技术描述系统调用机制,操作系统使用该机制从用户空间转换到内核以调用诸如“打开”等功能。 ;阅读“,”,“写”,等等......

维基百科条目外,还有其他内容吗? 网站,pdf,书籍,源代码,欢迎所有人:)

有帮助吗?

解决方案

对于源代码来说,有很多开源内核需要深入研究。

至于书籍,Linux内核上的 Robert Love的书非常信息。

其他提示

确切的方法取决于处理器体系结构以及它为转移到内核模式定义的操作。一种方法,以及x86上的传统方法,是使用软件中断。事实证明这对于一般情况来说并不是很快,所以后来,英特尔添加了 SYSCALL ,并且AMD添加了 SYSENTER 。 Windows XP及更高版本在启动时为平台选择适当的系统调用技术。

您可以选择将特定软件中断号用于特定功能,但通常处理器没有足够的中断来覆盖所有系统功能,因此必须使其中一个寄存器包含所需的功能号。如果你这样做,那么仅使用一个系统调用函数并不困难。

Windows CE在6.0版之前使用并行进程虚拟地址模型,该模型实际上允许进程直接相互调用。设置页面保护,以便在完成此操作时,发生访问冲突错误:内核获得控制权,修复进程地址空间(将被调用进程移动到插槽0中),修复基于slot-0的参数以指向到调用进程,并返回到用户模式。因为返回地址在另一个进程中,所以当函数调用返回时,会发生相反的过程。不幸的是,这个模型只允许每个进程(32MB)和少量进程(32)的非常小的虚拟地址空间,因此Windows CE 6.0恢复到更传统的系统调用模型。

您可能想看一下minix内核。它是开源的,设计简单,用于许多Uni-level OS课程。仔细研究/usr/src/kernel/proc.c,特别是sys_call函数和周围的功能。请记住,minix是一个微内核,所以有些东西可能与你习惯的有些不同。

如果您想购买对* nix编程非常有用的书籍。我建议“在UNIX环境中使用高级编程”。史蒂文斯和拉戈。 它有深入的解释和代码示例。

有关Linux中系统调用的详细说明,请参阅 Linux设备驱动程序

中的示例设备驱动程序

它依赖于体系结构,需要了解计算机体系结构。 Tanenbaum的“结构化计算机组织”有一个很好的系统调用基础知识的摘要。有关更多信息,请阅读有关操作系统设计的任何教科书。

scroll top