1.定义
n = read(fd, buffer, nbytes);
参数说明:
fd:文件描述符
buffer:存放取回数据的缓冲区?
nbytes:要读取的字节数
2.步骤
对于调用者来说,一般是构造一条消息,包含以上三个参数,发送给系统,然后自己阻塞起来。
read函数从消息中提取出fd,找到相应的filp表项以及目标文件的inode。
然后将读请求分段,分段后每一次的操作都对应与一个块,即将跨块的操作分解。
分解之后,检查需要读取的块是否在高速缓存中。若不在,调入之。
fs(文件系统)向task(系统任务)发送一条消息,请求将数据复制到用户缓冲区中。当然复制也是分块操作的。
发送应答消息给库函数,库函数再回应用户(调用程序)。
read操作到此为止,但在具体实现的时候还有一步,就是预读下面的文件块,
这样需要的时候,他们就已经在高速缓存中了。