高级操作系统chp4.ppt_第1页
高级操作系统chp4.ppt_第2页
高级操作系统chp4.ppt_第3页
高级操作系统chp4.ppt_第4页
高级操作系统chp4.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章文件系统,文件系统存在的原因在于系统要求对数据进行长期的存储。 (1)可以存储大量信息 (2)在使用信息时,信息要存在 (3)必须能使多个进程并发存取有关信息 解决的方法是采用文件的形式来管理信息。主要包括对文件的操作,如何分配存储空间,及相应的保护机制。 处理文件的操作系统的部分称为文件系统(File System)。,4.1 文件 (1)域:是数据的基本单位。有自己的长度和数据类型。在不同的文件系统中,域可以是定长的,也可以是变长的。 (2)记录:是相关域的集合。记录也可以是定长的,也可以是变长的。 (3)文件:是具有名字的一组相关记录的集合。 文件是一个单独的实体,也可以创建和删除。对于访问的控制和限制通常是文件级的。在复杂的系统中,对访问的控制和限制也可以是记录级或域级的。,4.1.1 文件命名 文件命名是管理文件的有效形式。当进程创建文件时给出文件名,在进程终止之后,文件名依然存在,其它进程可以通过这个文件名对文件进行存取。 文件的具体命名规则在不同的系统中是不同的。 很多的操作系统都采用圆点隔开的两部分的文件名。圆点后的部分称为扩展名,表示文件的一些信息。扩展名只是一些约定,并没有强迫采用。,4.1.2 文件结构 文件结构通常有三种方式:字节序列、记录序列、树。 在字节序列中操作系统并不关心文件的内容,它的任何含义都可以由用户进程来解释。在UNIX和MS-DOS中采用这种方法。这种方法的特点是灵活,缺点是操作系统不能、提供任何形式的帮助。 在记录序列中文件是具有一定长度的记录的序列,每个记录都有它的内部结构。记录是文件增加、删除、修改的单位。记录的长度是相等的。这种方法在早期的计算机系统中。 在树结构中,文件由一棵记录树构成,每个记录的长度可以不相等,记录的固定位置上有关键字段,记录按关键字段排序,可以实现快速查找。主要用于现代的商业系统。,4.1.3 文件类型 文件类型有很多种。例如UNIX和MS-DOS中有普通文件、目录文件、字符特殊文件、块特殊文件。 在普通文件中包含用户要存储的信息,是本章的重点。 在目录文件中保存磁盘文件系统结构,是系统文件。 在字符特殊设备中管理和设备的输入输出。 使用块特殊文件用于表示磁盘。 普通文件是ASCII文件或者二进制文件。 ASCII文件由多行正文组成,可以显示和打印。可以用通用的文本编辑器进行编辑。 二进制文件不用于显示和打印,有一定的内部结构。,4.1.4 文件存取 文件存取类型有顺序存取、随机存取。 顺序存取指用户只能从开始的地方顺序读文件的所有记录,不能跳过一些内容。主要用于磁带设备。 随机存取指可以按任何次序读取记录。如按照关键字来进行读取。主要用于磁盘设备。 4.1.5 文件属性 操作系统为管理文件为文件保存文件属性。 文件属性在不同的操作系统中有很大的差别。 保护、口令、创建者、所有者等属性(文件保护) 各种标志(如只读、隐藏、系统、存档) 记录长度、关键字位置、关键字长度(查找) 文件的创立时间、最近访问时间、最近修改时间 文件的长度,4.1.6 文件操作 CREATE:创建没有数据的文件,并设置文件属性。 DELETE:删除文件,释放磁盘空间。 OPEN:使用文件之前必须打开文件。用于把文件属性和磁盘地址表装入内存。 CLOSE:不再使用文件时,关闭文件释放文件属性和磁盘地址表占用的空间。 READ:从文件的当前位置中读取数据。应指明读取的长度和存放数据的缓冲区。 WRITE:对文件写数据。如果当前位置是文件末尾,则文件长度增加。如果不是,则覆盖现有数据。 APPEND:在文件的末尾增加数据。,SEEK:定位当前位置指针到指定位置。 GET ATTRIBUTES:读取文件属性。 SET ATTRIBUTES:设置文件属性。 RENAME:重命名文件。 4.1.7 存储映像文件 为了减少从磁盘上访问文件的不方便,一些系统提供一种将文件映像到一个正在运行的进程的地址空间中。 用两个系统调用MAP和UNMAP来实现。前者给出一个文件名和一个虚拟地址,从而使操作系统把文件映像到虚拟地址指定的地址空间。 当进程结束时,将地址空间的内容写回磁盘。,这种方法的缺点是: (1)在页式管理中,无法知道一个文件的实际长度。 (2)当多个进程同时调用一个文件并修改文件的内容时,有可能造成文件的映像的不一致性。 (3)文件有可能很大,甚至大于整个虚拟地址空间的大小。这时需要只映像文件的一个局部,而不是整个文件,造成很大的复杂性。 4.2 目录 4.2.1 层次目录结构 通常一个目录包含很多项,称为目录项。每个目录项代表一个文件。 在打开文件时系统先查找目录,直到找到要打开文件的文件名。然后从目录项中得到文件的属性和磁盘地址,放到内存相应的表中。,文件目录在实现时,不同的系统采用不同的方法。要找到一个文件,就要先找到这个文件所对应的目录项,这就需要目录文件中顺序查找。 这个查找过程是在内存中实现的。一种方法是把目录文件调入内存中,按名字来顺序比较,直到找到这个文件的目录项为止。这时,如果文件很少,目录文件很小,则容易实现;当文件很多时,目录文件很长,占用大量内存空间,而每次比较时只用文件名,其它信息都要等这个文件的目录项找到后才会关心。 所以一些系统采用索引节点的方法。把文件的描述信息单独形成一个称为索引节点的数据结构,简称为i节点;而文件目录中的每个目录项中只有文件名和指向该文件i节点的指针。这样,为找到一个文件,节省了平均启动磁盘的次数,提高了效率。,目录的实现方法有三种。 (1)单级目录结构: 单级目录结构是最简单的目录结构。在整个系统中建立一张目录表,为每个文件分配一个目录项。在查找一个文件时,顺序查找目录文件,直到找到为止;当要创建一个文件时,从目录中先看是否有相同的文件名,如果没有,则找一个空闲目录项,把它放到目录文件中。这时,所有用户共享这个目录。这会导致用户在命名时不重名。而这在多用户情况下,带来许多不便。且这种目录查找速度慢。,(3)树型目录结构 在两级目录中,如果有一个用户有很多的文件,则在自己的UFD中,仍有混乱的问题。他们希望能按一定的逻辑结构来组织自己的文件。这就形成树型目录结构。这时用户可以拥有自己的子目录去区分不同的文件。,4.2.2 路径名 在树型目录结构中,从根目录到任何一个文件之间只有一条唯一的通路。从根目录开始,把这条通路上所有的目录名和文件名顺序写出,中间用/分隔,称为绝对路径名。 用户可以设定一个目录为工作目录,这时,所有的路径名都是从工作目录开始的。 从工作目录开始,而不是从根目录开始的路径名为相对路径名。 层次目录中一般都支持两个特殊的目录项:“.”和“”。其中“.”指当前目录,“”指父目录。,4.2.3 目录操作 CREATE(创立目录) DELETE(删除目录) OPENDIR(允许读取目录) CLOSEDIR(读目录结束后关闭目录来释放内存空间) READDIR(返回下一层目录) RENAME(更换目录名称) LINK(共享文件) UNLINK(删除连接共享文件),4.3 文件系统的实现 4.3.1 实现文件 4.3.1.1 连续分配方法 这种方法是将文件作为连续的数据块存储在磁盘上。因为文件是连续分配的,所以只需要记录文件的开始盘块和文件的长度。 这种方法有外部碎片,需要用紧凑来得到大的空闲空间。由于文件的大小必须在文件创立时提出,所以在估计不好时,会导致估计过大,从而导致浪费空间。,4.3.1.2 链表分配 在链式分配中,分配是以块为基础的。每块有自己的指向链中下一块的指针。只要记录开始块和块的长度。这是一种动态分配策略。如果想扩大文件空间,只要在链尾加入一块就可以了。这种方法没有外部碎片,适合于顺序文件的顺序处理。 缺点在于数据分散,读文件时不能保证一次读的都是有用的块。用合并的方法来解决这个问题。,4.3.1.3 采用索引的链表分配 每个文件建立索引,保存文件各个块所存储的磁盘块的顺序。 也可以将链表分配中的指针统一放到内存中的一个内存表中。内存表以物理块为索引,显示下一个物理块的块号。目录项中只需要记录文件的起始块号就可以找到文件的全部块。,4.3.1.4 I节点 开始几个磁盘地址存储在I节点中,对于小文件所有信息都在 I节点中。稍大些的文件,用一级间接块地址;如果还不够用,就用二级间接块的地址;如果还不够用,就用三级间接块的地址。 UNIX系统中采用这种方法。,4.3.2 实现目录 4.3.2.1 MS-DOS中的目录 MS-DOS中的目录项由32个字节组成。其中包括文件名、文件属性、第一个磁盘块的块号,它是指向内存表的索引。 4.3.2.2 UNIX中的目录 UNIX中的目录很简单,由文件名和I 节点号组成。文件的所有属性都放在I节点中。,(1) 基于索引节点的共享方式 在树型目录结构中,当有两个或多个用户要共享一个子目录或文件时,必须将共享文件或子目录链接到这个文件或目录。这时的目录结构,已经不是树型结构,而是个有向非循环图。,4.3.3 共享目录 现代计算机系统中,有大量的文件,必须提供文件共享的功能。使系统中只保存一个文件的副本,而不需要所有的用户都拥有这个文件的副本。 用户可以为文件设置不同的共享方法。在树型目录中常用的共享方法有:,这种方法的缺点在于:共享文件的所有者是C,并不是B。共享并不改变拥有的关系。这时,共享文件的I节点有一个连接记数加1来表示目前有多少个目录指向这个文件。 当C要删除这个文件时,系统如果删除文件,会导致B指向一个不存在的I节点。 这时通过记数只能知道有人在用这个文件,但不知道谁在用这个文件,所以不能删除所有目录中指向这个文件的连接。 这时只能删除C与文件的连接,不删除I节点,并将记数减1。这会让B指向文件,而文件的所有者是C。B使用文件,而C付钱。,(2) 利用符号链实现文件共享 利用文件符号链实现共享文件的方法是由系统创建一个LINK文件,将要共享的文件写入请求者的目录中,实现共享链接。这时,?文件是A的文件,C通过LINK文件共享?文件。LINK文件中只包含被链接的文件的路径名。这种方法是通过符号链来进行链接,实现对文件的共享。 这种方法的缺点在于:要浪费空间来存储LINK文件。,4.3.4 磁盘空间管理 4.3.4.1 块大小 块的大小影响系统的效率和磁盘的利用率。块是磁盘存储的基本单位。 块大,则内部碎片大。块小,读取磁盘的效速降低。,磁盘访问时间主要分为以下几个部分: 寻道时间Ts:指把磁头从当前位置移到指定的磁道上所用的时间。这时间是启动时间S和移动几条磁道所用的时间之和。Ts=mxn+S(其中m是一个常数,与磁盘驱动器的速度有关。一般m=0.3ms;s=20ms。好一些的m=0.1ms;s=3ms。) 转动时间Tr:指找到指定扇区的时间。硬盘的转速一般为3600r/min,每转用时16.7ms,平均转动延迟为8.3ms。软盘的转速为300到600r/min,则每转用时200到100ms。 传送时间Tt:指把数据从磁盘读出,或向磁盘写入数据所经历的时间。它与每次读/写的字节数B和旋转速度R,及每条磁道上的字节数N有关:Tt=B/(RN),下面看如何计算平均磁盘访问时间。假设有一个典型的系统,磁盘的平均寻道时间是20ms,传输率是1MB/S。每个磁道32个扇区,每个扇区512字节。平均转动延迟是8.3ms。假设读一个文件,这个文件由256个扇区组成。请在连续存储和不连续存储的情况下估算磁盘访问时间。 如果是连续存放,则读一个磁道的时间是:Ts=20ms;Tr=8.3ms;读一个磁道数据的时间=32X512/(1MB/S)=15.6ms。256个扇区共占8个磁道。假设读其余的磁道仍然有转动延迟,则读完8个磁道的时间是:20

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论