1、为了提高效率,内核也使用缓冲技术来提高对磁盘的访问速度。
2、内核缓冲分为读和写两个方面。
3、当一个用户空间中的进程要从磁盘上读取数据时,内核一般不直接读磁盘,而是将内核缓冲区中数据复制到进程的缓冲区中。
4、当进程所要求的数据块不在内核缓冲区时,内核会把相应的数据加入到请求数据列表中,然后把该进程挂起,接着为其他进程服务。
5、一段时间之后(很短),内核把相应的数据块从磁盘读到内核缓冲区,然后再把数据复制到进程的缓冲区中,最后唤醒被挂起的进程。
6、read把数据从内核缓冲区复制到进程缓冲区,write把数据从进程缓冲区复制到内核缓冲区,他们并不等价于数据在内核缓冲去和磁盘之间的交换。
7、从理论上讲,内核可以在任何时候写磁盘,但并不是所有的write操作都会导致内核的写动作。内核会把要写的数据暂时存在缓冲区中,积累到一定数量后再一次写入,有时会导致意外情况,比如突然断电,内核还来不及把内核缓冲区上的数据写到磁盘上,这些更新的数据就会丢失。
8、应用内核缓冲技术导致的结果
提高磁盘I/O效率
优化磁盘的写操作
需要及时的将缓冲数据写入磁盘