当尝试执行read()/write()系统调用时,发生了哪些事件/步骤?内核如何知道要发出这些命令的文件系统。
假设一个进程调用了write()。 然后它会调用sys_write()。
现在可能是因为sys_write()代表当前进程执行,所以它可以访问struct task_struct,因此它可以访问包含文件系统信息的struct files_struct和struct fs_struct。
但之后我没有看到fs_struct如何帮助识别文件系统。
编辑:现在Alex已经描述了流程...我仍然怀疑读/写是如何路由到文件系统的,因为VFS不会这样做,那么它必须发生在其他地方,另外底层块设备、最终硬件协议PCI/USB是如何连接的。
一个涉及实际数据结构的简单流程图会有所帮助。
请帮忙。
假设一个进程调用了write()。 然后它会调用sys_write()。
现在可能是因为sys_write()代表当前进程执行,所以它可以访问struct task_struct,因此它可以访问包含文件系统信息的struct files_struct和struct fs_struct。
但之后我没有看到fs_struct如何帮助识别文件系统。
编辑:现在Alex已经描述了流程...我仍然怀疑读/写是如何路由到文件系统的,因为VFS不会这样做,那么它必须发生在其他地方,另外底层块设备、最终硬件协议PCI/USB是如何连接的。
一个涉及实际数据结构的简单流程图会有所帮助。
请帮忙。
read
/write
调用”。这个调用如何传播到块设备层,然后到ATA/AHCI等是另一个问题。如果你在弄清楚它方面有困难,可以发布另一个问题来询问。 - Alex D