操作系统目录结构

系统可以有多个文件系统,且文件系统可以有不同的类型,就比如说一个典型的Solaris系统当中就可以有多个UFS文件系统、一个VFS系统和一些NFS系统

  • 关于UFS文件系统概念:UFS是UNIX文件系统的简称,它来源于4.3Tahoe发行版中提供的BSD Fat Fast File System(FFS)系统,属于FFS的演化版本。UFS几乎是大部分UNIX类操作系统默认的基于磁盘的文件系统,包括Solaris、Free BSD、Open BSD、Net BSD、HP-UX等,甚至Apple的OS X也能支持UFS文件系统。
    在最初的FFS文件系统的设计中,为了使文件系统在遭到毁灭性打击,如硬盘发生整个磁道、整个盘面或者整个柱面损坏时能够得以恢复,在文件系统初始化时,会将文件系统的重要数据结构复制到整个磁盘的多个位置,以便在发生硬件损坏时能够读取,而UFS文件系统也继承了这些优良的特性。
    另外,为了提高运行效率,UFS文件系统与磁盘的结构也有着完美的结合,UFS将整个磁盘的所有逻辑柱面平均分配为若干个组,每组称为一个“柱面”。在UFS内部就用柱面组队文件系统进行分段组织和管理,每个柱面组中都有文件系统关键数据结构的备份,所有文件在各个柱面组中相对独立地存储而又有机地结合在一起。这就使磁盘中的磁头在访问文件系统中的数据时有效地减小了摆动,提高了访问效率。
  • 关于NFS其实就是NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样
  • VFS(virtual File System)的作用就是采用标准的Unix系统调用读写位于不同物理介质上的不同文件系统,即为各类文件系统提供了一个统一的操作界面和应用编程接口。VFS是一个可以让open()、read()、write()等系统调用不用关心底层的存储介质和文件系统类型就可以工作的粘合层
  • exFAT只是一个折中的方案,特别适合于闪存的文件系统
    现在超过4GB的U盘格式化时默认是NTFS分区,但是这种格式是很伤U盘的,因为NTFS分区是采用“日志式”的文件系统,需要记录详细的读写操作,肯定会比较伤闪盘芯片,因为要不断读写

磁盘可以整体地用于一个文体系统,但是有时需要在一个磁盘上装多种文件系统,或者一部分用于文件系统而另一部分就用于其他部分比如交换空间(类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况)或者是非格式化的磁盘空间。这部分称为分区或者是片,或者称为小型磁盘(IBM的说法)

多个分区可以在一个磁盘当中,一个分区也可以在多个磁盘当中

关于目录结构

树是最为常用的目录结构,树是有根目录,系统内的每个文件都有唯一的路径名,目录包括一组文件和子目录,一个子目录只不过是一个需要按照特定方式访问的文件。所有目录具有同样的内部格式,每个目录条目都用一位来定义其为文件(0)或者是子目录(1)

可以允许用户定义自己的子目录的结构,就比如说我们可以按照不同的主题来组织文件,比如说不一样种类的书籍就设置不同的目录,还有就是可以按照不同信息类型来组织文件比如说目录programs可以包含源程序,而目录bin可存储所有的二进制文件

对于删除目录的处理策略问题,在MS-DOS下,如果目录不为空就不能删除,所有为了删除一个目录时,用户必须先删除其中的所有内容,另一种方式就是UNIX的rm命令提供了旋转,当需要删除一个目录的时候,所有该目录的文件和子目录可以直接删除

对于无环图目录来说树状结构禁止共享文件和目录,允许目录含有共享子目录和文件,同一文件或子目录可以出现在两个不同的目录当中,无环图是树状结构目录方案的扩展

采用无环图的主要优点就是希望可以用简单算法遍历图,并且去确定是否存在文件引用,这样做的原因就是因为性能原因,大家希望避免多次遍历无环图的共享部分。如果搜索一个共享目录以查找特定文件,没有找到的话就要去避免再次搜索该子目录,第二次再去搜索同样的目录就是浪费时间

如果目录当中允许有环存在的话,那么无论是从中正确性还是从性能角度,我们都要考虑去避免多次搜索同一部分,一个设计的不好的算法就很有可能会无穷地搜索循环而不终止,解决方法可以是强制限制在搜索时所访问目录的次数

你可能感兴趣的:(操作系统概念)