我正在阅读有关设备驱动程序的文章,我有一个与 UNIX 哲学有关的问题,即一切皆文件。
当用户发出一个命令,比如打开一个文件时,什么会起作用——系统调用还是文件操作?
sys_open
是系统调用,open
是文件操作。您能否详细说明一下这个主题。
提前致谢。
最佳答案
快速回答,希望对您有所帮助:
所有系统调用的工作方式相同。系统调用号与系统调用参数一起存储在某个地方(例如在寄存器中)。在打开系统调用的情况下,参数是:指向文件名和权限字符串的指针。然后 open 函数使用适当的指令(syscall
、int
...,这取决于硬件)引发软件中断。
至于任何中断,调用内核(在内核模式下)来处理中断。系统检测到中断是由系统调用引起的,然后读取寄存器中的系统调用号,判断是open系统调用,在内核内存中创建文件描述符,然后调用驱动程序open真正打开文件功能。然后将文件描述符 id 存储回寄存器并返回到用户模式。
然后从寄存器中检索文件描述符并由 open()
返回。
关于linux - Linux中的系统调用和文件操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12895971/