Linux 系统到底是如何读取一个档案的内容呢?底下我们分别针对目录与档案来说明:
目录:
当我们在 Linux 下的 ext2 档案系统建立一个目录时, ext2会分配一个 inode 与至少一块 Block 给该目录。其中,inode 记录该目录的相关属性,并指向分配到的那块 Block ;而 Block 则是记录在这个目录下的相关连的档案(或目录)的关连性!
档案:
当我们在 Linux 下的 ext2 建立一个一般档案时, ext2 会分配至少一个 inode 与相对於该档案大小的 Block 数量给该档案。例如:假设我的一个 Block 为 4 Kbytes ,而我要建立一个 100 KBytes 的档案,那麼 linux 将分配一个 inode 与 25 个 Block 来储存该档案!
要注意的是, inode 本身并不纪录档名,而是记录档案的相关属性,至於档名则是记录在目录所属的 block 区域! 那麼档案与目录的关系又是如何呢?就如同上面的目录提到的,档案的相关连结会记录在目录的 block 资料区域, 所以当我们要读取一个档案的内容时,我们的 Linux 会先由根目录 / 取得该档案的上层目录所在 inode , 再由该目录所记录的档案关连性 (在该目录所属的 block 区域) 取得该档案的 inode , 最后在经由 inode 内提供的 block 指向,而取得最终的档案内容。我们以 /etc/crontab 这个档案的读取为例, 他的内容资料是这样取得的: