原来OS把HD上分成大小相同的DATA AREA,这个DATA AREA大小相同(当然要是2的倍数,有利于CPU的处理),而在系统和HD之间通过EXT2的VFS来通讯(HD与OS的接口,OS支持多种文件结构就是建立在Virtual File System上的)文件在VFS上的表现形式就是一个inode. 它是一个数据结构.
主要包括为:
Mode//权限,所在目录等
Owner info
Size//文件的大小
Timestamps
Direct Blocks
Indirect
所以我们打开一个文本时,不仅读取了文件内容,还有文件的信息.inode包含的是描述文件数据的指针.
那么,当打开一个文本时,OS是会把全部数据块送到缓冲(这个缓冲指在主内存中的,而且被所有的块设备共巷,曾经怀疑过是否全会送到缓冲区,考虑到如果文件很大的话,必定很开销,但是另一方面,如果从HD上读取的话,必定影响速度,而且会反复读取硬盘,同时又把不要的数据送回硬盘,这样就更加没有效率了).应用程序为文件创建一个副本,应用内存映射来反映文件内容.
不仅数据有缓冲区,VFS也有文件和目录的缓冲区,用来储存常用的文件信息.
bdflush守护进程用来清理buffer
另一种情况是当内存不够时,会送到SWAP中.
最后,我想这也是为什么平常我们删除文件把创建文件快很多的原因了,因为我们删除的只是一个结构体,数据块在HD上只是失去了指针,这也是文件恢复技术存在的可能性.
朋友说,能写出那个DD,就能赚钱了. 哈哈~~~