|
在《Linux内核源代码情景分析》一书中文件系统章节中,读到如下的话:
段落1:
“从磁盘驱动程序的角度看,则整个介质只是一个由若干记录块组成的一维阵列(记录块数组)......当文件系统层要从磁盘上读出一个索引节点时,要根据索引节点号和超级块中提供的信息,计算出这个索引节点在磁盘上的哪一个记录块以及在此记录块中的相对位移。然后,通过磁盘驱动程序读入这个记录块,再根据相对位移找到这个节点......从磁盘读一个特定文件的内容(数据)则要麻烦一点。先要读入该文件的索引节点,然后根据索引节点中提供的信息将数据在文件中的位移换算成磁盘上的记录块号,再通过磁盘驱动程序从磁盘上读入”
段落2:
“作为‘设备文件’的磁盘......只是将磁盘看成一个巨大的线性存储空间(字节数组)。当从作为设备文件的磁盘读出时,只要将数据在此文件中的位移换算成磁盘上的记录块号,就可以通过磁盘驱动程序读入了。”
段落1比较好理解,它实际讲述的是从磁盘读取一个文件大概过程。段落2是作为对比,写在段落1之后的一段话,我不太理解,因为虽然我了解在Linux/Unix下一切都是文件,包括设备。对设备可以使用文件接口open,read,write,ioctl等等,但小弟可能见识有点短浅,并没有见到针对磁盘文件的open,read,write操作,而且也想象不出这样做会发生什么(难道可以对hda1直接进行write么?)。哪位老大能够解释一下,最好深入探讨一下。 :thank |
|