2020年5月9日 下午11:11
作为初学者,理解系统调用的角度:
- 设计了比较好的组合数据结构,目的是达到查找的加速
- 系统调用很多都是对已有数据结构的遍历
- linux内部的核心数据结构+在这个数据结构上的操作
- 如何理解、记忆系统调用过程:千万别背,这和做leetcode是一样的,一行行得被代码忘掉很快,关键抓住两点:数据结构的设计+在这套数据结构下有几个大的操作步骤
系统调用 read 和 write

- 在 VFS 层调用的是 vfs_read 和 vfs_write 并且调用 file_operation。在 ext4 层调用的是 ext4_file_read_iter 和 ext4_file_write_iter。
- 接下来就是分叉。你需要知道缓存 I_O 和直接 I_O。直接 I_O 读写的流程是一样的,调用 ext4_direct_IO,再往下就调用块设备层了。缓存 I_O 读写的流程不一样。对于读,从块设备读取到缓存中,然后从缓存中拷贝到用户态。对于写,从用户态拷贝到缓存,设置缓存页为脏,然后启动一个线程写入块设备