English 中文(简体)
操作系统中使用的“系统调用”机制有很好的描述吗?[已关闭]
原标题:
  • 时间:2008-09-24 13:01:02
  •  标签:

我们不允许为书籍、工具、软件库等寻求推荐的问题。你可以编辑问题,这样就可以用事实和引文来回答问题。

Closed 5 years ago.

我正在寻找系统调用机制的良好入门或技术描述,操作系统使用该机制从用户空间过渡到内核,以调用“打开”、“读取”、“写入”等函数。。。

Is there anything other than the Wikipedia entry? Websites, pdfs, books, source code, all are welcome :)

最佳回答

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

至于书籍,Robert Love关于Linux内核的书内容丰富。

问题回答

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

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

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

您可能想看看minix内核。它是开源的,设计简单,并被用于许多Uni级别的操作系统课程。深入研究/usr/src/kernel/proc.c,尤其是sys_call函数和周围的功能。请记住,minix是一个微内核,所以有些东西可能与您习惯的东西有细微的不同。

If you want to purchase a book that is extremely useful for *nix programming. I would recommend "Advanced Programming in the UNIX Environment" by Stevens and Rago. It has in depth explanations, and code examples.

要想更好地解释Linux中的系统调用,请查看Linux设备驱动程序

它依赖于体系结构,并且需要了解计算机体系结构。Tanenbaum的《结构化计算机组织》很好地总结了系统调用的基本原理。欲了解更多信息,请阅读任何关于操作系统设计的教科书。





相关问题
热门标签