zoukankan      html  css  js  c++  java
  • 操作系统——文件系统概述、文件逻辑地址、目录、物理地址

    一、文件系统概述

    软件资源管理
    信息长期保存的需要
    存储介质:磁盘、光盘、磁带…
    完成外存信息的管理和存取


    在前面的学习中,我们知道文件也是一种系统资源。

    这里先给出文件和文件系统的定义。

    1、文件  

    外存中具有符号名的一组有逻辑意义的信息项的集合。

    2、文件系统   

    指OS中管理文件的那一部分软件。它负责管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并为用户提供一整套方便有效的文件使用和操作方法。它在OS接口中占比例最大,是I/O系统的上层软件。文件系统面向用户的主要任务是实现文件的“按名存取”
    按名存取是文件系统最为主要的任务!!!

    3、文件的属性

    主要属性有:文件名、识别符、类型、位置、大小、创建时间、上次修改时间、文件所有者和保护信息等。

     UNIX系统中文件属性:
            -  普通文件   
            d    目录文件
            p   管道文件
            c    字符型设备文件
            b   块设备文件

    4、文件的分类

    按性质和用途分:
            系统文件、库文件、用户文件
    按数据形式:
            源文件、目标文件、可执行文件
    按对文件实施的保护级别分:
            只读文件、读写文件、执行文件
    按逻辑结构分:
            有结构文件、无结构文件
    按文件中物理结构分:
            顺序文件、链接文件、索引文件

    二、文件的逻辑结构

    文件的结构指文件中信息的配置和构造方式,有逻辑结构和物理结构之分。
    用户眼中文件信息的组织形式叫文件的逻辑结构。它包括记录式文件和流式文件两种,每种文件信息的逻辑单位分别是记录和字符。
    UNIX系统视所有文件的逻辑结构为无结构的流式文件
    早期有结构的记录式文件又分定长和不定长两种
    文件的逻辑结构与文件的存储介质无关

     文件的逻辑结构可以分为无结构文件(流式),有结构文件(记录式)

    1、无结构文件

    2、有结构文件

    根据各条记录的长度(占用的存储空间)是否相等,又可以分为定长记录和可变长记录两种。

    根据有结构文件中的各条记录如何组织,可分为三类

    顺序文件

     

    索引文件

    索引顺序文件

    这里进行检索效率的分析:

    多级索引顺序文件

    看完文件的逻辑结构的划分,是不是觉得好像在哪里学过类似的组织方式?

    回想一下在计算机组成原理中Cache的组织方式,是不是也是这样的?

    地址映像的直接映像、全相联映像、组相联映像不就对应着顺序文件、索引文件、索引顺序文件?

    3、总结

    三、文件目录

    文件目录是文件系统管理文件最为重要的依据。

    1、文件控制块

    文件控制块(FCB):是OS为管理文件而设置的数据结构,存放了为管理文件所需的所有有关信息(文件属性),也叫文件目录项
    文件控制块是文件存在的标志
    文件控制块的内容:
    基本信息:文件的名字、地址、大小、结构、类型
    存取控制信息:文件属主、存取权限或属性或口令
    使用信息:共享计数,文件的建立、修改日期等

    文件控制块内容
    Name
    Type
    Address
    Current length
    Maximum length
    Date last accessed (for archival)
    Date last updated (for dump)
    Owner ID (who pays)
    Protection information (discuss later)

    文件目录:把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合
    目录文件:为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存,这个文件就叫目录文件
    目录主要是为了系统快速实现“按名存取”而引入的,查目录是文件系统最频繁的操作,因此目录的合理组织很重要

     

    2、目录结构—单级目录结构

    单级目录结构
    系统为所有文件建立一个目录文件(线性表)
    优点:简单,易实现
    缺点:
    限制了用户对文件的命名(存在“命名冲突”问题)
    顺序检索文件时平均检索时间长
    限制了对文件的共享
    不适于多用户系统

    3、目录结构—两级目录结构

    二级目录结构
    为克服单级目录结构存在的命名冲突问题,并提高对目录文件的检索速度而引入
    目录分为两级:一级称为主文件目录,给出用户名,用户子目录所在的物理位置;二级称为用户文件目录(又称用户子目录),给出该用户所有文件的FCB
    优点:解决了文件的重名问题和文件共享问题;
             可用于多用户系统;
             顺序查找时间降低。
    缺点:增加了系统开销

    4、目录结构—多级目录结构

    多级目录结构又称为树形目录结构

    对二级目录简单扩充可得三级或三级以上的多级目录结构,即允许每一级目录中的FCB要么指向文件,要么指向下一级子目录即可。这是当今主流OS普遍采用的目录结构
    优点: ①解决了命名冲突问题
                    ②提高了文件检索速度
                    ③易于实现文件的共享和保护
                    ④层次结构清晰,便于对文件分类管理
    缺点:查找一个文件按路径名逐层检查,由于每个文件都放在外存,多次访盘影响速度

    这里再介绍一下相对路径绝对路径的概念

    在树形目录结构中,对文件的访问可以按文件的绝对路径名相对路径名符号链接

     树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能更有效地进行文件的管理和保护。但是,树形结构不便于实现文件的共享。为此,提出了"无环图目录结构"

    5、目录结构—无环图目录结构

    6、索引结点(FCB的改进)

    这里先引出一个概念

    文件寻址
      根据FCB中文件物理地址等信息,求出文件的任意记录或字符在存取介质上的地址,称为文件寻址。

    对FCB过大的改进方法
     采用目录项分解法,把FCB分成两部分。
     符号目录顶(次部)
       文件名,文件号
     基本目录项(主部)
       除文件名外的所有项目
       如:UNIX:I节点(索引结点)

    例:

    设物理块大小512字节,一个FCB有48个字节,符号目录项占 8字节,文件名6字节,文件号2字节,基本目录项占 48-6=42字节。若把含有128个目录项的某单级目录文件改造成符号文件目录和基本文件目录的结构,试说明改造后查找一个文件的平均访盘次数,谈一下自己的认识。

    解:分解前:1块含512/48=10个FCB
           分解后:1块含512/8=64个符号目录项,或者,1块含512/42=12个基本目录项
           该目录文件含有128个目录项,分解前占13(⌈128/10⌉)块,分解后其符号文件占2(128/64)块 ,基本文件占11块(⌈128/12⌉)。
           故分解前查找一个文件的平均访盘次数:(1+13)/2=7次;

           分解后:(1+2)/2 +1 =2.5次   先到符号目录项中找(1+2)/2,找到后根据文件号到基本目录项中找+1
             由此可见:改造后减少了访问硬盘的次数,提高了检索速度。

    7、总结

    四、文件的物理结构(文件的分配方式)

    系统眼中文件信息的组织形式叫文件的物理结构。它包括顺序文件、链接文件、索引文件三种(实为连续文件与不连续文件两大类)
    文件的物理结构也叫文件的存储结构,指文件在外存上的存储组织形式,它与存储介质的性能和外存的分配方式有关

    1、文件块、磁盘块

     在很多操作系统中,磁盘块的大小与内存块、页面的大小相同

    2、文件分配方式—连续分配

    连续分配方式要求每个文件在磁盘上占有一组连续的块。

     这里需要明白一下磁盘读取的原理

     

    结论:物理上采用连续分配,存储空间利用率低,会产生难以利用的磁盘碎片。

    可以用紧凑来处理磁盘碎片,但需要耗费很大的时间代价。

    连续分配总结

    文件的信息存放在若干连续的物理块中。

    优点:实现简单,顺序存取速度快,至此顺序访问和直接访问(随机访问)

    缺点:但分配慢,不方便文件拓展,存储空间利用率低,外存碎片多(似内存的可重定位可变分区分配)

    3、文件分配方式—链接分配

    链接分配采取离散分配的方式,可以为文件分配离散的磁盘块。分为隐式链接显示链接两种。

    链接分配—隐式链接

     

     隐式链接总结

    链接分配—显式链接

     看到这里是否想到了数据结构中的静态链表?

     注意:一个磁盘仅设置一张FAT!FAT的各个表项在物理上连续存储,且每一个表项长度相同,因此“物理块号”字段可以是隐含的。

    链接分配总结

    隐式链接方式只支持顺序访问,不支持随机访问;显示链接支持随机访问!

    4、文件分配方式—索引分配

    注意:在显式链接的链式分配方式中,文件分配表FAT是一个磁盘对应一张表。而索引分配方式中,索引表是一个文件对应一张。

    但如果出现一个磁盘块不能装下文件的整张索引表,该如何解决这个问题?

     

    链接方案

    多层索引

    混合索引

     索引分配总结

     支持随机访问?

    例题

    这个范例是帮助读者深入比较文件物理组织的各种方案:顺序文件的连续分配、链接文件的链接分配、二级索引分配。

    一个文件系统中有一个20MB大文件和一个20KB小文件,当分别采用连续、链接、二级索引分配方案时(每块大小为4096B,每块地址用4B表示),问:
    1.各文件系统管理的最大的文件是多少?
    2.每种方案对大、小二文件各需要多少专用块来记录文件的物理地址(说明各块的用途) ?
    3.如需要读大文件前面第5.5KB和后面(16M+5.5KB)信息,则每个方案各需要多少次盘I/O操作?

    1.各种分配方案的文件系统可管理的最大文件
     连续分配:不受限制,可大到整个磁盘文件区。
     链接分配:同上。
     二级索引:由于盘块大小为4KB,每个地址用4B表示,一个盘块可存1K(4096/4=1024)个索引表目,二级索引可管理的最大文件容量为4KB×1K×1K=4GB,如要管理更大的文件需采用三索引,它可管理4TB大小文件。

     2.每种分配方案对20MB大文件和20KB小文件各需要多少专用块来记录文件的物理地址?
    连续分配:对大小二个文件都只需在文件控制块FCB中设二项,一是首块物理块块号,另一是文件总块数,不需专用块来记录文件的物理地址。
    链接分配:对大小二个文件都只需在文件控制块FCB中设二项,一是首块物理块块号,另一是文件总块数;同时在每块存文件的物理块中设置存贮下一块块号的指针。
    二级索引:对大小文件都固定要用二级索引,对20KB小文件,用一块作第一级索引,用另一块作二级索引,共用二块专用物理块作索引块,对于20MB大文件,用一块作第一级索引,用5块作第二级索引,共用六块专用物理块作索引块。(20MB=5×1K×4KB)


    3.为读大文件前面第5.5KB和后面(16M+5.5KB)信息需要多少次盘I/O操作?
    连续分配:为读大文件前面和后面信息都需先计算信息在文件中相对块数,前面信息相对逻辑块号为5.5K/4K=1,后面信息相对逻辑块号为(16M+5.5K)/4K=4097。再计算物理块号=文件首块号+相对逻辑块号,最后化一次盘I/O操作读出该块信息。
    链接分配:为读大文件前面5.5.KB的信息,只需先读一次文件头块得到信息所在块的块号,再读一次第1号逻辑块得到所需信息。而读大文件后面16MB+5.5KB的信息,要先把该信息所在块前面块顺序读出,共化费4097次盘I/O操作,才能得到信息所在块的块号,最后化一次I/O操作读出该块信息。所以总共需要4098次盘I/O才能读取(16MB+5.5KB)字节信息。
    二级索引:为读大文件前面和后面信息的操作相同,首先进行一次盘I/O读第一级索引块,然后根据它的相对逻辑块号计算应该读第二级索引的那块,第一级索引块表目号=相对逻辑块号/1K,对文件前面信息1/1K=0,对文件后面信息4097/1K=4,第二次根据第一级索引块的相应表目内容又化一次盘I/O读第二级索引块,得到信息所在块块号,再化一次盘I/O读出信息所在盘块,这样读取大文件前面或后面信息都只需要3次盘I/O操作。



     某文件系统采用单级索引文件结构,假定文件索引表的每个表项占3B存放一个磁盘块的块号,磁盘块的大小为512B。试问:
    (1)该文件系统能支持的最大文件大小是多少字节?能管理的最大磁盘空间是多大?

    (2)若采用3级索引,该文件系统能支持的最大文件大小是多少字节?


    (1)由于索引表占用一个大小为512B的磁盘,所以该文件系统的索引表可以管理512/3=170个表项,而每一个表项对应一个物理块,因此该文件

    系统可以支持的最大文件为:170*512B=87040B=85KB

    能管理的最大磁盘空间:

    3B有3*8=24位

    2^(24)*512B=8G


    (2).170*170*170*512B=2456500KB=2398.93MB

  • 相关阅读:
    在c++代码中执行bat文件 【转】
    华为交换机限速配置命令2016
    zabbix报错listener failed: zbx_tcp_listen() fatal error: unable to serve on any address
    shell脚本中执行mysql 语句,去除warning using a password on the command line interface can be insecure信息
    zabbix_get :command not found 解决办法
    CentOS7 升级到7.4
    jumpserver v0.5.0 创建用户和管理机器
    zabbix触发的多条件判断表达式
    nginx 配置一个文件下载服务
    ECS 实例网络带宽
  • 原文地址:https://www.cnblogs.com/wkfvawl/p/11847413.html
Copyright © 2011-2022 走看看