0

我正在阅读有关设备驱动程序的信息,并且我有一个与 UNIX 哲学有关的问题,即一切都是文件。

当用户发出例如打开文件的命令时,什么会起作用 - 系统调用或文件操作? sys_open是系统调用,open是文件操作。你能详细说明一下这个话题吗?

提前致谢。

4

2 回答 2

1

快速回答,我希望它会有所帮助:

所有系统调用都以相同的方式工作。系统调用号与系统调用参数一起存储在某处(例如,在寄存器中)。在打开系统调用的情况下,参数是:指向文件名和权限字符串的指针。syscall然后 open 函数使用适当的指令( ,int...,它取决于硬件)引发软件中断。

对于任何中断,都会调用内核(在内核模式下)来处理中断。系统检测到中断是由系统调用引起的,然后读取寄存器中的系统调用号,发现是open系统调用,在内核内存中创建文件描述符,然后调用驱动程序open继续实际打开文件功能。然后将文件描述符 id 存储回寄存器并返回到用户模式。

然后从寄存器中检索文件描述符并由open().

于 2012-10-15T13:18:12.400 回答
0

“每个打开的文件(在内部由一个文件结构表示,我们将很快研究)与它自己的一组函数相关联(通过包含一个名为 f_op 的字段,它指向一个 file_operations 结构)。这些操作主要负责实现系统调用,因此被命名为 open、read 等等。

这是来自LDD章节字符驱动程序。谁能详细说明最后一行是什么意思。

于 2012-10-16T11:55:17.577 回答