操作系统之文件系统

来源:互联网 发布:电脑淘宝直播怎么看 编辑:程序博客网 时间:2024/05/16 04:54

文件目录:

      single-level

      two-level

      tree-level

      graph-level

文件系统的目标:

地址独立:一个而文件在产生的时候无需担心存放的磁盘地址,即文件数据的产生于文件将来存放的磁盘地址相互独立

地址保护:对文件的访问进行一定的闲置,不是任何人都可以访问文件的

 

从用户角度,文件名字--------磁盘地址(扇面号)

                     扩展名:仅仅是指示性的,并不具有强制性,unix操作系统扩展名仅用来提醒用户,系统并不遵守,但是windows是强制性的,如果一个文件扩展名不是.bat,exe,com

                    则改程序无法执行,即使该文件确实是一个可执行文件


                    内容寻址:给照片的内容,查找照片


文件内容组织:

                   1 关系导向型组织

                          记录流  树型组织 网型组织                  

                   2 非关系导向型组织

                         字节流,字位流,数据块流,这个更好,现代商业操作系统基本上使用字节流,因为他它简单


文件类型:

                 文件分三种:目录(记录文件的文件),一般文件(数据,分为文本文件和二进制文件),块文件(模拟输入输出,对每个输入输出设备,用一个块文件来表示)



文件格式:不同的文件有不同的格式(标题,入口,尺寸,权限.....)


文件访问:顺序访问和随机访问

  

文件属性: 谁创立的,谁拥有这个文件,可否随机访问,等等


文件夹:保存关于文件及文件系统的信息,文件夹对文件来说,就相当于动态地址翻译对于虚拟地址的作用,即从虚拟地址到实际地址的一种翻译机制

              ls和dir:读取文件夹的简单数组的内容

              根目录:文件系统的起点,在操作系统启动的时候加载到内存


共享与链接


内存映射的文件访问:

     把需要访问的文件映射到一个进程的虚拟地址内,当进程终止的时候,与文件对应的这个内存内容将被冲洗(flush)到磁盘上

               

文件系统的实现:

    分区:为什么要分区?1.不同的分区可以建立不同的文件系统   2.计算机内存字长度有限,而磁盘地址需要存放在内存字里面,这样操作系统能够访问到的磁盘地址数量就是一个有限数

    为什么一个分区只能建立一个文件系统呢?

 计算机启动,主板ROM里面BIOS运行,对磁盘扇面0进行读操作,将MBR里面的程序读到内存并运行,MBR找到主分区,将主分区里面的BOOT RECORD加载并运行,BOOT RECORD里面是一个小程序,该程序找到操作系统映像,并加载到内存,从而启动操作系统,这里是所有的文件系统都要遵循的

                                                                              整块磁盘

 主引导记录(MBR Master Boot Record)  |    分区表    |        分区1(主分区)    |    分区2    | ...


                     分区1(主分区,操作系统装在这里)

引导记录   |   超级数据块    |     闲置空间管理   |    I-NODE区    |     根目录区    |   文件和目录区


超级数据块里面存放的是关于该文件系统的各种参数,如文件系统类型,数据块尺寸,不同的文件系统布局是不一样的,FAT没有I-NODE区




文件的实现:

  连续存放方式:

      优点:简单,1.给出文件头地址和文件大小,可以寻找到所有的文件数据块,2.读写效率高

      缺点:空间浪费,磁盘碎片,不易扩展

  非连续存放方式:

      链表:

         存放文件数据块指正的表叫做文件分配表(File Allocation Table,FAT)

         利用FAT随机读写只需要一次内存访问

         使用FAT机制的文件系统叫做FAT文件系统

      索引文件组织:

          FAT表太大,记录项和物理磁盘块数一样多,解决方法:将每个文件的所有数据块的磁盘地址收集起来,集中放在一个索引数据块里面,而在文件打开              时将该数据块加载到内存,这样内存里存放的只是我们需要使用的文件的数据块的所有地址,而不是各种不相干的文件的地址全部一次加载到内存,FAT占用内存太多的问题    就解决了,这种索引数据块叫做I-NODE,I代表index

           优点:1.随机访问很方便 2.文件增长灵活 

           缺点:1.每个数据块需要选点,顺序访问效率不太高,2 如果一次文件大小的增长超过了预期,怎么办?

      多级索引组织:在分页系统中,我们使用多级页表,这里我们可以使用多级索引头,即间接使用I-NODE

           缺点:1.访问数据块所需要的磁盘访问增加了 2.对于小文件,使用的磁盘数据块不会超过一个I-NODE的指针数,白白浪费了I-NODE空       间,怎么办?

      非对称多级索引:索引既可以是单级,也可以是多级,每个文件都有一个顶级索引节点,里面的指针被分为两部分,一部分用来存放数据块所在的磁盘地址,一部分用来存放次级I-NODE的地址,如果文件尺寸较小,所有磁盘地址全部存放在顶级I-NODE上,如果文件较大,还要使用次级I-NODE,根据心理学用户体验,一开始顶级I-NODE中的磁盘地址先快速地读取出来让用户处理着,等他处理好了,次级I-NODE也读取完了,从用户体验的角度看,非对称索引大大提高了文件的访问速度

 


文件缓存:
  将文件里面经常要访问的内容存放在缓存里面,使得文件的访问可以在缓存里面满足


目录实现:地址独立的实现

    文件夹的任务,文件名到文件地址的映射

     1.文件连续存放,文件夹里面存放的映射是文件头数据块地址

     2.链表组织形式,文件夹里面存放的映射是文件头数据块地址

     3.FAT组织形式,映射仍然不变,文件夹里面存放的映射是文件头数据块地址

     4 I-NODE组织形式,文件夹里面存放的映射是到I-NODE编号


文件共享:

   文件映射情况被保存在多个文件夹里,在文件头I-NODE里面记录其被链接的次数,文件删除时,将I-NODE里面的链接计数减一,如果为0,就删除文件,这种叫做硬链接,文件创立者没有权利断开用户的链接

   软链接:在创立者将文件删除后,链接用户将无法再访问到该文件,从链接目录访问文件需要经过原始路径,当原始路径断开后,该链接自然就断开了,软链接从严格意义上不是链接,所以Windows的快捷方式不是链接


链接的问题:在备份的时候,如果选择备份的文件夹里面存在符号链接,将造成该文件备份多次,这只不过浪费了空间而已,问题出在恢复的时候,由于被链接的文件备份了多个复本,造成每个路径都有自己的文件复本


文件系统挂载:

   挂载用来将一个文件系并入另一个文件系统的办法,实际上就是修改挂载点的目录内容,增加一个记录将该文件的根目录I-NODE地址保存起来,平常使用的光盘,U盘,软盘上面存在一个文件系统,但是该文件系统我们平常是无法访问的,需要将它们插入计算机的相应设备或接口上,而这种插入就是挂载操作,

    卸载:将挂载点的目录内容中的相关记录删除,光盘就是弹出光盘,U盘就是拔出 


空闲空间管理:机制和内存管理一样,位图和链表


磁盘分配块:

    文件系统在分配空间时是按照块(block)进行分配的,windows把这种分配块叫做蔟


磁盘配额: 在多用户环境下,文件系统通常给每一个用户一个配额





0 0
原创粉丝点击