read和open系统调用
- 首先,读取磁盘文件首先要通过open系统调用从磁盘中打开文件
- 之后,read系统调用从打开文件表中找到该文件并读取
1. open系统调用过程
- 用户提供路径和文件名两个信息
- 操作系统根据路径和文件名找到FCB并调入内存。调入内存的是FCB,不是文件,且FCB中也仅仅只有文件的一个指针
- 并在打开文件表中添加表项
- 此时open系统调用返回一个文件描述符(文件对应打开文件表表项的索引值)
2. read系统调用过程
- 用户程序使用文件描述符查找文件是否在内存中。注意,read时不需要提供路径和文件名,只需要提供文件描述符即可
- 此时用户程序从用户态变换到核心态
- 如果发现文件不在内存的话,就产生中断,进程阻塞,等待将数据调入内存