关闭

操作系统之文件目录原理笔记

841人阅读 评论(0) 收藏 举报
分类:

  文件目录的数据结构

       在磁盘中,目录其实也是占有空间的,而且也是以文件的形式分配。通常叫做目录文件。

      那么在磁盘中目录和文件之间到底有什么关系呢?说白了,目录其实是又文件控制块(FCB)的集合。这个概念很重要!

        FCB是一个很重要的数据结构,关于一个文件的一切都在FCB中有记录,而且对文件的操作必须通过FCB。FCB中的信息有文件名,文件大小,文件创建的日期,文件的权限,文件的所有者,文件所在分区的盘符,盘块物理地址

        在Liunx,Unix,Windos下用的都是多级目录结构。每个目录都分配有一个盘块或多个。里面存放着该目录下的所有文件的FCB和目录的FCB。操作系统要查找一个文件,先要找到该文件的目录,就必须将目录的第一个盘块的数据调入内存,然后比较FCB中的文件名是否相等。如果不相等,再调入下一个盘块中的FCB做比较。假如一个FCB的大小为64B,盘块大小为1kb,则目录的一个盘块只能存放16个FCB,若一个文件目录有640个FCB,则需要40个FCB,平均查找一个文件需要启动磁盘20次!这样查找的效率显然很低。

     于是我们提出一个索引结点的概念,因为我们通常比较的是文件名,所以没必要把文件的全部信息都加载到内存,一个目录由16个字节组成,其中文件名为14字节,索引结点指针2字节。而将其他文件的所有信息都存放到索引结点中,这样目录的一个盘块就可以存储更多的文件名,加载一个盘块到内存查找的范围大大增宽


共享文件的实现

           用户A要共享文件给B,只要索引结点指针给B就可以了,这样都指向一个文件。

      Linux中的ln链接命令创建一个硬链接软链接可以这样解释:

          当创建一个软链接,操作系统在工作目录下创建一个文件控制块,在索引结点指针处填上目标文件的指针值,这就解释了为什么在目标文件中修改文件的内容在软链接中也相应的得到改变,删除之后软链接就失效了。又解释了软链接是不占磁盘空间的。   

          当创建一个硬链接时,在工作目录下创建一个PCB,然后将目标文件的PCB内容全盘拷贝过来,这就解释了为什么删除了目标文件,而硬链接仍然有效。

       创建链接文件必须在同一个文件系统中,理由是显而易见的,只有在相同的文件系统下,文件组织才相同。


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:101142次
    • 积分:2338
    • 等级:
    • 排名:第16006名
    • 原创:129篇
    • 转载:21篇
    • 译文:2篇
    • 评论:12条
    最新评论