操作系统考研——文件管理

一、文件系统基础

1.文件的概念

a.文件的定义

     文件是以计算机硬盘为载体的存储在计算机上的信息的集合,文件可以是文本文档、图片、程序等。
    在系统运行时,计算机以进程为基本单位进行资源的调度和分配。而在用户进行的输入输出中,则以文件为基本单位。
    文件的结构如下(自底向上的方式):
    数据项:数据详实文件系统中最低级的数据组织方式,可分为以下两种类型:1.基本数据项:用于描述一个对象的某个属性的一个值。是数据中可命名的最小逻辑数据单位,即原子数据。2.组合数据项:由多个基本数据项组成。
    记录:记录是一组相关数据项的集合,用于描述一个对象在某个方面的属性。
    文件:文件是指由创建者所定义的一组相关信息的集合,逻辑上可分为有结构文件和无结构文件两种。

b.文件的属性

    (1)名称。文件名称唯一,以容易读取的方式保存。
    (2)标识符。标识文件系统内文件的唯一标签,通常为数字,是对人不可读的一种内部名称。
    (3)类型。被支持不同类型的文件系统所使用。
    (4)位置。指向设备和设备上文件的指针。
    (5)大小。文件当前大小(用字节、字和块表示),也可包含文件允许的最大值。
    (6)保护。对文件进行保护的访问控制信息。
    (7)时间、时期和用户标识。文件创建、上次修改、和上次访问的相关信息,用于保护和跟踪文件的使用。
    所有文件信息都保存在目录结构中,而目录结构保存在外存上。文件信息在需要时才调入内存。

c.文件的基本操作

    文件属于抽象数据类型。操作系统提供了系统调用,它对文件进行创建、写、读、重定位、删除和截断等操作。
    (1)创建文件。创建文件有两个必要的步骤,一是系统为文件找到空间。二是在目录中为新文件创建条目,该条目记录文件名称,在文件系统中的位置及其他可能的信息。
    (2)写文件。执行系统调用,指明文件名称和要写入文件的内容。
    (3)读文件。执行系统调用,指明文件名称和要读入的文件块的内存位置。
    (4)文件重定位。按某种条件搜索目录 ,将当前的文件位置设为定值,并且不会读、写文件。
    (5)删除文件。先从目录中找到要删除文件的目录项,使之成为空项,然后回收这个文件所占用的存储空间。
    (6)截断文件。允许文件所有属性不变,并删除文件内容,即将其长度设为0,并释放其空间。

d.文件的打开与关闭

(1)open请求

    首次使用文件,会调用open请求指明文件的属性(包括其物理位詈)从外存复制到内存打开文件表的一个表目中,并将该表目的编号(索引)返回给用户。
    大部分操作系统都要求在文件使用之前就被显式地打开。操作open会根据文件名搜索目录,并将目录条目复制到打开文件 调用open诮求(创建、只读、读写、添加等)得到允许,则进程就可以打开文件,open就会返回一个纸箱打开文件表中的一个条目的指针,通过指针进行所有的I/O操作,以简化步骤节约资源。
    在open调用完成后,操作系统对该文件的任何操作都不在需要文件名,而只需要open调用返回的指针。

(2)文件关联信息

    每个打开文件都有如下关联信息:
    文件指针。系统跟踪上次的读写位置作为当前文件位置的指针,这种指针针对打开文件的每个进程来说都是唯一的,因此必须和磁盘文件分开保存。
    文件打开计数。文件关闭时,系统必须重用其打开文件表的条目,否则表内空间会不够用。
    文件磁盘位置。绝大多数文件操作都要求系统修改文件数据。该信息保存在内存中,以免为每个操作都从磁盘中读取。
    访问权限。每个进程打开文件都需要有一个访问模式(创建、只读、读写、添加等)。

2.文件的逻辑结构

a.无结构文件(流式文件)

    无文件结构是最简单的文件组织形式。无结构文件将数据按照顺序组织记录并积累、保存。它是有序相关信息项的集合。由于其没有结构,所以对记录的访问只能采用更穷举搜索的方式。那些对基本信息单位操作不多的文件更适合采用字符流的无结构方式。

b.有结构文件(纪录式文件)

    有结构文件按照记录的组织形式可分为如下几种:
    顺序文件。文件中的记录一个接一个地排列,记录通常是定长的,可以顺序存储或以链表形式存储。顺序文件有两种结构,一种是串结构,记录之间的顺序与关键字无关。通常是有时间决定的。第二种是顺序结构,指文件中的所有记录按照关键字顺序排列。批量处理时,顺序文件的效率是所有逻辑文件中效率最高的。
    索引文件。对于定长记录文件,按照公式A=i*L可以直接得到文件地址(第i条记录,L是文件长度)。对于变长记录文件,查找前i-1条记录后,才能查找第i条记录,通过建立索引表后可以有效提高查找速度。
    索引顺序文件。顺序和索引两种组织形式的结合.索引文件将顺序文件中的所有记录分成若干组,为顺序文件建立起一张索引表,在索引表中为每组中的第一条记录建立一个索引项,其中含有该记录的关键字值和指向该记录的指针,索引顺序文件提高了查找效率,但是索引表也占用了存储空间。
    直接文件或散列文件。给定记录的键值或通过散列函数转换的键值直接决定记录的物理地址,这种映射结构不同于顺序文件或者索引文件,没有顺序的特性。

3.目录结构

    文件目录包含有关文件信息如属性、位置和所有权等,这些信息主要由操作系统进行管理。

a.文件控制块和索引结点

(1) 文件控制块(FCB)

    文件控制块是用来存放控制文件需要的各种信息的数据结构,实现“按名存取”。
    FCB主要包含如下信息:    基本信息:如文件名、文件的物理位置、文件的逻辑结构、文件的物理结构等。
    存取控制信息:如文件存取权限等。
    使用信息:如文件建立时间,修改时间等。

(2)索引结点

    索引结点:检索目录文件时,不需要将文件调入内存,只是查找其目录项,文件的描述信息单独形成为索引节点的数据结构。
    存放在磁盘上的索引结点称为磁盘索引结点,,UNIX中每个文件都有唯一的磁盘索引结点,主要包括以下几个方面:
    文件主标识符:拥有该文件的个人或小组的标识符。
    文件类型:普通文件 目录文件 特别文件。
    文件存取权限:各类用户对该文件的存取权限。
    文件物理地址:每个索引节点中含有13个地址项,直接或者间接的方式给出数据文件所在盘块的编号。
    文件长度:以字节为单位。
    文件链接计数:本文件系统中所有指向该文件的文件名的指针计数。
    文件存取时间:文件最近被进程存取,修改以及索引节点最近被修改的时间。
    文件打开后内存索引结点增加的内容有:
    索引结点编号:用于标识内存索引节点。
    状态:指示i结点是否被上锁或者被修改。
    访问计数 :每当有 个进程要访问此结点时,计数加1,访问结束减1。
    逻辑设备号:文件所属文件系统的逻辑设备号。
    链接指针:设置分别指向空闲链表和散列队列的指针。

b.目录结构

(1)目录结构操作

    在目录这个层次上执行的操作如下:
    搜索:用户使用一个文件时,时,需要搜索目录,找到该文件对应的目录项。
    创建文件:创建一个新文件时需要在目录中增加 个目录项。
    删除文件:删除一个文件时,需要在目录中删除相应的目录项。
    显示目录:用户可以请求显示目录的内容,显示该用户目录中的所有文件及属性。
    修改目录:某些文件属性保存在目录中,因而这些属性的变化需要改变相应的目录项。

(2)目录结构分类

    单级目录结构:整个文件系统只建立一张目录表,每个文件占一个目录项。
    两级目录结构:将文件分为主目录和用户目录,主目录记录用户名及相应用户文件目录所在的存储位置,用户目录项记录该用户文件的FCB信息。
    多级目录结构(树形目录结构):将两级目录结构的层次关系加以推广,就形成了多级目录结构,即树形目录结构,进程对各文件的访问都是相对于当前目录进行的。
    无环图目录结构:在树形目录结构基础上增加了一些指向同 结点的有向边,使整个目录称为一个有向无环图。(引入无环图目录结构的目的就是为了实现文件共享)

4.文件共享

a.基于索引结点的共享方式(硬链接)

    在文件目录中只设置文件名及指向相应索引节点的指针,在索引节点中还有一个链接计数count,用于表示链接到本索引结点上的用户目录项的数目。硬链接是多个指针指向一个索引结点,需要保证只要还有一个指针指向索引节点,索引节点就不能被删除。优点:硬链接的查找速度要比软链接快。

b.利用符号链实现文件共享(软链接)

    B用户共享A用户的文件F时候,系统创建一个LINK类型的新文件,也取名F,然后将文件F写入用户B的目录中,但是新文件中只是含有被链接文件F的路径名。这样的方法叫做符号链接法。
    软链接就是把到达共享文件的路径记录下来,当要访问文件时,根据路径寻找文件。优点:网络共享只需要提供该文件所在机器的网络地址及该机器中的文件路径。缺点:由千是根据文件路径名查找文件,因此会增加时间开销井且增加了启动磁盘的频率,同时符号链的索引节点也会耗费一定的硬盘空间。

5.文件保护

    为了防止文件共享导致文件被破坏或者未经允许修改文件,文件系统必须控制用户对文件的存取,解决对文件的读、写、执行的许可问题。文件保护通过口令保护、加密保护和访问控制等方式实现。

a.访问类型

    可加以控制的访问类型有以下几种:读、写、执行、添加、删除、列表清单(列出文件名和属性名),还可以对文件重命名、复制、编辑等加以控制。

b.访问控制

    根据用户身份进行控制,为每个文件和目录增加一个访问控制列表,规定每个用户名及其所允许的访问类型。
    精简访问列表:
    拥有者:创建文件的用户。
    组:—组需要共享文件且具有类似访问的用户。
    其他:系统内的所有其他用户。
    口令和密码是另外两种访问控制的方法:
    口令:用户请求访问时需要提供相应的口令。
    密码:用户对文件进行加密,用户访问时需要相应的密匙解密。
    口令和密码都是防止文件被他人存取或者窃取,没有控制用户对文件的访问类型。

二、文件系统实现

1.文件系统层次机构

    用户调用接口:文件系统为用户提供与文件及目录有关的调用。
    文件目录系统:管理文件目录,管理活跃文件目录表,管理读写状态信息表,管理用户进程的打开文件表,管理与组织存储设备上的文件目录结构、调用下一级存取模块。
    存取控制验证模块:实现文件保护,将用户的访问请求与FCB中指示的访问控制权限进行比较,以确认访问的合法性。
    逻辑文件系统与文件信息缓冲区:逻辑文件系统与文件信息缓冲区的主要功能是,根据文件的逻辑结构将用户要读写的逻辑记录转换成文件逻辑结构内的相应块号。
    物理文件系统:把逻辑记录所在的相对块号转换成实际的物理地址。
    辅助分配模块:管理辅存空间,负责分配辅存空闲空间和回收辅存空间。
    设备管理程序模块:分配设备,分配设备读写用缓冲区,磁盘调度,启动设备,处理设备中断,释放设备读写缓冲区,释放设备。
在这里插入图片描述

2.目录实现

    在读文件之前,必须先打开文件,打开文件时,操作系统利用路径名找到相应目录项,目录项中提供了查找文件磁盘块所需要的信息。目录实现的基本方法有线性列表和哈希表两种,线性列表实现对应的线性查找,哈希表实现对应的散列查找。

a.线性列表

    最简单的目录实现方法是使用存储文件名和数据块指针的线性表。其优点在于实现简单,不过由于线性表的特殊性,比较费时。

b.哈希表

    哈希表根据文件名得到一个值,并返回一个纸箱线性列表中元素的指针。这种方法的优点是查找非常迅速,插入和删除比较简单,最大的困难是哈希表长度固定以及哈希函数对表长的依赖性。

3.文件分配方式

a.连续分配

    连续分配方法(访存1次)要求每个文件在磁盘上占有一组连续的块,磁盘地址定义了磁盘上的一个线性排序。这种排序使得作业在访问磁盘时需要的寻道数和寻道时间最小。
    文件的连续分配可以用第一块的磁盘地址和连续块的数量来定义。其优点是实现简单,存取速度快,使得访问磁盘需要的寻道数和寻道时间最小,缺点是文件长度不宜动态的培加,会产生外部碎片。
在这里插入图片描述

b.链接分配

    链接分配(访存n次)采用离散分配方式,提高了磁盘空间利用率,消除了外部碎片。链接分配又分为隐式链接与显式链接两种形式。

(1)隐式链接

    隐式链接指每个文件对应一个磁盘块的链表,磁盘块分布在磁盘的任何地方,出最后一个盘块外,每个盘块都有指向下一个盘块的指针,这些指针对用户都是透明的。目录包括文件的第一块指针和最后一块指针。
在这里插入图片描述

(2)显式链接

    显式链接是指把用于链接文件各物理块的指针,从每个物理块的块末尾中提取出来,显式的存放在内存的一张链接表中 。该表在整个磁盘中仅设置一张,称为文件分配表(FAT),每个表项中存放对应块的下一块链接指针。其优点在于显著的提高了检索速度,减少了访问磁盘的次数,缺点是文件分配表的使用需要占用一定的存储空间。
在这里插入图片描述

c.索引分配

    索引分配(m级要访问m+1次)解决了连续分配外部碎片和文件大小管理的问题以及链接分配不能直接访问的问题。它把每个文件所有的盘块号都几种放在一起构成索引块。
    每个文件都有其索引块,这是一个磁盘块地址的数组,索引块的第i个条目指向文件的第i个块。目录条目包括索引块的地址。要读第i块,通过索引块的第i个条目的指针来查找和读入所需的块。
    由于索引块的分配,增加了系统存储空间的开销,索引块的大小是一个问题。解决该问题可使用以下机制:
    链接方案。一个索引块通常为一个磁盘块,为了处理大文件,可以将多个索引块链接起来。
    多层索引。第一层索引块指向第二层索引块,第二层索引块指向文件块。
    混合索引。多种索引分配方式相结合的分配方式。系统既采用直接地址,又采用单级索引分配方式或者两级索引分配方式。
在这里插入图片描述

4.文件存储空间管理

    文件存储在一个文件卷中,文件卷可以是物理盘的一部分,也可以是整个物理盘。在一个文件卷中,文件数据信息的(文件区)和存放文件控制信息FCB的空间是分离的。
    文件存储设备分成许多大小相同的物理块,以块为单位交换信息。文件存储设备管理的实质是对空闲块的组织和管理,包括空闲块的组织、分配与回收等问题。

a.空闲表法

    空闲表法属于连续分配方式,系统为空闲区建立一张空闲盘块表,每个空闲区第一个盘块号,该去的空闲盘块数等信息。

b.空闲链表法

    空闲链表法:将所有的空闲盘区拉成一条空闲链,根据构成链所有的基本元素不同,可以把链表分成两种形式:
    空闲盘块链:将磁盘上所有空闲空间以盘块为单位拉成一条链。
    空闲盘区链:将磁盘上所有空闲盘区拉成一条链。

c.位示图法

    位示图法采用二进制的一位来标识一个盘块的使用情况,,磁盘上的所有盘块都由一个二进制位与之对应。
    盘块的分配(i行j列):b=n(i-1)+j
    盘块的回收:i=(b-1)DIVn+1
                          j=(b-1)MODn+1

d.成组链接法

    UNIX使用,结合了空闲表和空闲链表法克服了表太大的缺点,把顺序的n个空闲扇区地址保存在第一个空闲扇区内,其后一个空闲扇区内则保存另一个顺序空闲扇区的地址。

三、磁盘组织与管理

1.磁盘的结构

    磁盘是由表面涂有磁性物质的金属或塑料构成的圆形盘片,通过一个称为磁头的导体线圈从磁盘读取数据。磁盘盘面上的数据存储在一组同心圆中,称为磁道。一个盘面有上千个磁道,磁道又划分为几百个扇区,每个扇区固定存储大小,一份扇区称为一个盘块。扇区就是磁盘可寻址的最小存储单位,磁盘地址用柱面号-盘面号-扇区号(块号 )表示。
在这里插入图片描述
    固定头磁盘:磁头相对于盘片的径向方向固定。
在这里插入图片描述

    活动头磁盘 每个磁道一个磁头,磁头可以移动。
在这里插入图片描述

    固定盘磁盘:磁头臂可以来回伸缩定位磁道,磁盘永久固定在磁盘驱动器内。
在这里插入图片描述

    可换盘磁盘 :可以移动和替换。
在这里插入图片描述

2.磁盘调度算法

    一次磁盘读写操作的时间由寻道时间、旋转延迟时间和传输时间决定。
    (1)寻道时间:活动头磁盘在读写信息前,将磁头移动到指定磁道所需要的时间(跨越n条磁道+启动磁臂) :Ts= m*n +s     延迟时间:磁头定位到某—磁道扇区所需要的时间,Tr = 1/2r(转速为r )
    传输时间:从磁盘读出或向磁盘写入数据经过时间,这个时间取决于每次读写的字节数和磁盘旋转的速度。Tr=b/rN

a.先来先服务算法(FCFS)

    FCFS算法按照进程请求访问磁盘的先后顺序进行调度。其优点在于公平、实现简单。适用于少量进程访问,如果进程过多算法更倾向于随机调度。

b.最短寻找时间有限算法(SSTF)

    SSTF算法选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道,以便使每次的寻找时间最短。该算法的性能强于先来先服务算法,但是也容易产生饥饿现象。

c.扫描算法(SCAN)

    SCAN算法又称电梯调度算法,在磁头当前移动方向上选择与当前磁头所在的磁道距离最近的请求作为下一次服务对象。其优点在于寻道性能好,可以避免饥饿现象,但是对最近扫描过的区域不公平,访问局部性方面不如FCFS和SSTF好。
在这里插入图片描述

d.循环扫描算法(C-SCAN)

    在扫描算法的基础上规定磁头单向移动,回返时直接回到起始端,而不服务任何请求。
    磁头只需要到达最远端的一个请求即可返回,不需要到达磁头端点。这种形式的SCAN算法和C-SCAN算法称为LOOK与C-LOOK算法。
在这里插入图片描述
在这里插入图片描述

3.磁盘的管理

a.磁盘初始化

    低级格式化为磁盘的每个扇区采用特别的数据结构。每个扇区的数据结构都由头、 数据区域、 尾部组成,头部和尾部含有一些磁盘控制器所使用的信息。
    为了使用磁盘存储文件,操作系统还需要将自己的数据结构记录在磁盘上 ,第一步将磁盘分为由一个或多个柱面组成的分区(即C盘、D盘等形式的分区)第二步,对物理分区进行逻辑格式化(创建文件系统),操作系统将初始的文件系统数据结构存储到磁盘上,这些数据结构包括和已分配的空间及一个初始为空的目录。

b.引导块

    计算机启动时运行自举程序,初始化CPU寄存器、 设备控制器和内存等,然后启动操作系统组局程序通常保存在ROM中,在ROM中保留很小的自举块,完整的自举程序保存在启动块上,拥有启动分区的磁盘称为启动磁盘或系统磁盘。

c.坏块

    由于磁盘有移动部件且容错能力弱,因此容易导致一个或多个扇区损坏。部分磁盘甚至从出厂时就有坏磁盘,对这些块有 如下几种处理方式:
    简单磁盘:手动处理,对坏块进行标记,程序不会使用。
    复杂磁盘:控制器维护一个磁盘坏块链表,同时将一些块作为备用,用于替代坏块(扇区备用)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值