首页 > 代码库 > 文件管理 - 操作系统概论
文件管理 - 操作系统概论
概述
用户作业中要用到各种各样的信息,如源程序、数据、各种语言的编译程序等等。有的需要长期保存,而有的只是临时使用。为了减轻用户的负担和保证系统的安全,操作系统中设计了对信息进行管理的部分,称为 文件管理 或 文件系统。
- 文件和文件系统
通常把逻辑上具有完整意义的信息集合称为 文件。每个文件都要用一个名字作标识,称为 文件名。
- 文件系统的功能
从用户的角度看,文件系统主要是实现“按名存取”。为了能正确的按名存取,文件系统应具有如下功能:
- 实现从逻辑文件到物理文件的转换。文件系统能将逻辑文件转换为物理文件,即保存到磁盘上;或读取磁盘上的物理文件,转换为逻辑文件给用户使用。
- 有效的分配文件的存储空间。文件系统必须知道存储介质哪些空间未被占用,文件只能保存到空闲的空间中,否则会破坏已保存的信息。
- 建立文件目录。文件目录是实现按名存取的一种手段,一个好的目录结构既能方便检索,又能保证文件的安全。
- 提供合适的存取方式以适应各种不同的应用。
- 确保文件的安全性。多道程序设计系统中有些文件是可以共享的,有些用户不希望其他用户干预和过问他的信息,必须确认使用者的身份。
- 提供一组文件操作。
- 文件的分类
- 按用途:系统文件、库文件、用户文件。
- 按保护级别:只读文件、读写文件、执行文件、不保护文件。
- 按信息流向:输入文件、输出文件、输入输出文件。
- 按存放时限:临时文件、永久文件、档案文件。
- 按设备类型:磁带文件、磁盘文件。
- 按组织方式:逻辑文件、物理文件。
文件的存储介质
可用来记录信息的磁带、硬磁盘组、软磁盘片、光盘、卡片等,称为 存储介质。另外,不要把存储介质和存储设备混为一谈,例如光驱和光盘。
存储介质的物理单位定义为 卷。一盘磁带、一张光盘、一个磁盘组都可称为一个卷。
存储介质上可连续存储信息的一个区域称为 块,或称为 物理记录。块是主存储器与存储设备进行信息交换的物理单位,每次总是交换一块或几块信息,且一定是整数块。根据存储设备的类型,信息传输效率等多种因素,划分块的大小也不同,即便是同一类型的存储介质也可以根据需要划分成不同大小的块。
目前常用的存储设备是磁带机和磁盘机。
磁带机
这是一种按顺序存取的存储设备,总是从磁头的当前位置开始 读/写,所以磁带上的块不是用地址来标识的,而是由它在磁带上的位置来识别,块与块之间留有间隙。
磁盘机
这是一种按地址直接存取的存储设备。它把信息记录在盘片上,每个盘片有正反两面,若干个盘片可组成一个盘组,盘组中的盘片都被固定在一根轴上,沿一个方向高速旋转。每个盘面(盘的正反两面)都有一个读写磁头,所有的磁头都被固定在一个唯一的移动臂上同时移动。把所有的读写磁头按从上到下的次序进行编号,称为 磁头号。每个盘面上有许多磁道,按由外向里的顺序编号,移动臂可移动读写磁头访问所有的磁道。当移动臂移到某一位置时,所有的读写磁头都在同一柱面上,把盘面上磁道的编号称为 柱面号。每个盘面被划分成若干个相等的扇区,每个扇区中的各个磁道都是可存放相等字节数的一个块,沿与磁盘旋转相反的方向给各扇区编号,称为 扇区号。
为了减少移动臂移动花费的时间,存放信息时,不是按盘面上的磁道顺序存放满一个盘面后再存放到下一个盘面上,而是按柱面存放,同一柱面上的磁道放满后,再放到下一个柱面上。所以,磁盘存储空间的位置由三个参数决定:柱面号、磁头号、扇区号,每个参数均从“0”开始。
存取信息时,磁盘机根据柱面号控制移动臂作横向机械运动,带动读写磁头到达指定柱面,再按磁头号确定信息所在的盘面,然后等到待访问的扇区旋转到读写磁头下时,由指定的磁头进行存取,且每次只允许一个磁头进行读或写!
文件的逻辑结构
用户和文件系统往往从不同的角度对待同一个文件。用户是从使用的角度来组织文件,用户把能观察到且可以处理的信息根据使用要求来构造成文件,这种构造方式称为 文件的逻辑结构。
用户按自己对信息的处理要求确定文件的逻辑结构,把用户组织的文件称为 逻辑文件,通常,逻辑文件称为文件。
逻辑文件有两种形式:
- 流式文件。是指对文件内的信息不再划分单位,是由依次的一串信息组成。
- 记录式文件。是指用户把信息按逻辑上独立的含义划分信息单位,每个单位称为一个 逻辑记录,简称记录。逻辑记录可依次编号,其序号称为 逻辑记录号。
例如,在一个学生成绩管理文件中,每个学生的信息都可作为一个逻辑记录(类似 db 中的一条记录,含学号姓名各科成绩等)。记录式文件中的每个逻辑记录至少要有一项特殊的数据项,用以区分不同的记录,能用来唯一标识某个记录的数据项称为 记录的主键。能标识具有某一特性的所有记录的数据项称为 记录的次键。实际上,逻辑记录中除主键外的其余各项都可作为次键(例如按英语分数查找90+的学生记录,这个查询与主键无关)。
文件的存储结构 - 磁盘
文件系统要从文件的存储和检索的角度来组织文件,文件系统根据存储设备的特性、文件的存取方式来决定以怎样的形式把用户文件存放到存储介质上,在存储介质上的文件构造方式称为 文件的存储结构。
存放在存储介质上的文件称为 物理文件。由于存储设备的类型不同,特性各异,因而文件在相应存储介质上的组织方式也有差异。
文件在磁盘上可以有多种组织方式,现仅介绍下面 3 种:
- 顺序结构
把一个文件在逻辑上连续的信息存放到磁盘上依次相邻的块中,便形成了顺序结构。显然,这是一种逻辑记录顺序和物理块的顺序相一致的文件结构,这类文件称为 顺序文件 或 连续文件。首先计算出文件要占用磁盘多少个块,找出能存放文件的连续空闲块,然后建立一个文件目录,目录中指出文件名、文件存放的始址、末址。如下表:
文件名 | 始址 | 末址 |
ABC | 0 | 4 |
DEF | 5 | 7 |
WJ | 8 | 13 |
顺序结构的优点是存取信息的速度快。不必每次去查找信息的存放位置,只要记住当前块号,则后继信息一定在下一块中。
顺序结构的缺点是会使磁盘的存储空间利用率不高。当文件不再需要时,它所占存储空间就会归还给系统,假设之后要存放的文件都大于这个归还的空间,那么它们只能闲置不用。
- 链接结构
链接结构 将逻辑记录顺序与存储空间顺序独立开来,即逻辑记录是顺序的,但文件占用的存储空间块可以任意选择,不必连续。
链接结构的特点:第一块的物理地址登记在文件目录中;每一个物理块的最后一个单元中不能存放文件的信息,而是用来存放物理块之间的链接指针;当某一块中的链接指针为“0”时,表示文件信息至本块结束。这种结构的文件称为 链接文件,又称为 串联文件。所以,链接结构下的文件目录只需保存文件名及占用的第一块地址。文件的链接结构示例,括号中表示指针:记录1(3)→ 记录2(5)→ 记录3(6)→ 记录4(12)→ 记录5(0)。
采用链接结构的文件,允许用户扩充文件,还可以在文件的两个任意记录间插入或删除记录,一切操作只需修改相应块的指针指向即可。但文件按链接结构组织后,想要得到第 i 个记录,就必须依次读出前面的 i – 1 个记录,所以,链接结构也只适合于对记录按先后顺序进行存取的文件。
- 索引结构
索引结构是实现非连续存储的另一种方式。索引结构为每一个文件建立一张索引表,指出文件中每个记录的存放地址,用户需要文件中某个记录时,文件系统只需要查索引表就可知道该记录在磁盘上的位置,从而将其读出。因此,索引结构具有随机存取任意一个记录的能力,克服了上述两种结构的文件只能依次存取记录的缺点。采用索引结构的文件称为 索引文件。
显然,采用索引结构便于增、删文件的记录,但缺点是当文件的记录很多时,索引表就很庞大。
如果把索引文件的记录也按顺序存放到磁盘上依次相邻的块上,则这种索引文件被称为 索引顺序文件。它是顺序文件的扩展,既具有顺序结构的优点(便于快速依次读出记录),又具有索引结构能随机读取任一记录的能力。
文件存储结构 - 磁带
文件在磁带机上只能组织成顺序结构,这是由磁带机只能顺序存取的特性决定的。而且,存放在磁带机上的信息没有地址作标识。
磁带机上每个文件前都设置一个“文件头标”,用来标识一个文件和说明文件的一些属性。“文件头标”的内容可以有:用户名、文件名、文件的分块数、块的长度等。“文件尾标”用来表示一个文件结束。每个文件可以分成若干块,块与块之间设间隙。在每个文件头标、文件信息、文件尾标之间用一个称为“带标”的特殊字符(★)隔开,最后用两个“带标”表示磁带的有效信息到此结束。
●始点 文件头标 ★ 文件 ★ 文件尾标 ★ 文件头标 ★ 文件 ★ 文件尾标 ★★ ●末点
当需要读取一个指定文件时,可以从始点开始检索。先读出文件头标,比较用户名、文件名,若是所需的文件,则前进一个带标后就可读到指定的文件信息,若不是所需的文件,则前进三个带标后,就可读出下一个文件头标再比较,直到找到指定文件,或者找不到,因为该文件不在这卷磁带上。
文件的存取方式
文件在存储介质上的组织方式不仅与存储设备的物理特性有关,而且与用户如何使用文件有关。
从用户对文件的存取次序来考虑,存取方式可以分成两类:
- 顺序存取 是指按文件的逻辑顺序或记录顺序依次进行 读/写 的存取方式。
- 随机存取 是指可以按任意的次序随机 读/写 文件中信息的存取方式。
用户要求系统把文件保存到存储介质上时,必须把自己怎样使用文件的存取方式告诉系统,存取方式的选择由文件的性质而决定。例如,一个源程序文件,它是不分逻辑记录的,或者将它看作只有一个逻辑记录的文件,显然对它应作顺序存取;又如,对职工工资、学生成绩档案等文件,应能方便查找任何一人的情况,所以可用随机存取。
把一个文件分成若干个逻辑记录的文件称为 记录式文件,而把不分记录的文件称为 流式文件。但不管是哪一种文件,用户都可按自己的使用要求采取两种不同的存取方式。
存储结构、存取方式、存储介质类型的关系
综上所述,为了方便管理、快速检索和提高系统效率,对顺序存取的文件,文件系统可把它组织成顺序文件或链接文件;对随机存取的文件,文件系统可把它组织成索引文件。另外,文件系统在组织索引文件时,在索引表中总是把记录按顺序排列,这样的索引文件既可适应顺序存取,又可适应随机存取。
存储结构不仅与存取方式有关,还与存储设备的特性有关,例如,磁带只能顺序存取。所以,文件系统应根据用户的存取方式和存放的存储介质类型来决定文件的存储结构。
记录的成组和分解
用户的文件是按自己的需要组织的,文件中逻辑记录的大小是由文件性质决定的。而存储介质上的块是根据存储介质的特性划分的,所以,逻辑记录的大小往往与存储介质上块的大小不一致,当一个小得多的逻辑记录放入一个块中就会造成存储空间的浪费。而把若干个记录合并成一组存入一个块中,就可充分利用存储空间,这就是 记录的成组。当用户需要某一记录时,必须把含有该记录的一块信息读出,从这一组逻辑记录中找出用户所要的记录传送给用户。这种从一组逻辑记录中把一个逻辑记录分离出来的工作称为 记录的分解。
- 记录的成组
记录的成组在不同的存储介质间进行信息转储是很有用的。例如:每张卡片上的数据为一个逻辑记录,最大长度 80 字符,现有 10 张卡片信息需要转储到磁带上;假设磁带的记录密度为每英寸 800 字符,块与块之间的间隙 0.6 英寸。如果把磁带分成 80 个字符一块,那么存储信息占的空间与间隙占的空间之比为 1:6(据磁带的密度计算,存入 80 字符只需要 0.1 英寸,磁带就形成了 0.1 英寸的数据与 0.6 英寸的间隙,互相交替组成一条 800 字符的文件记录),显然,存储空间利用率不高。若取 800 个字符为一块,则 10 张卡片可成组存放到磁带的一块中,这就减少了间隙所占空间,提高了存储空间的利用率。
由于,数据交换以块为单位,所以成组操作时必须使用主存缓冲区,缓冲区长度等于最大逻辑记录长度乘以成组的逻辑记录个数。上例中,先把卡片的数据依次读入缓冲区,10 个逻辑记录组成一组,然后把缓冲区中一组记录写到磁带的一个块中。
- 记录的分解
由于信息交换以块为单位,而用户处理信息以逻辑记录为单位,所以当逻辑记录成组后,用户要处理这些信息时必须执行分解操作,同样,分解操作也要使用主存储器的缓冲区。例如,磁带的一个块存放着用户 10 个逻辑记录,用户要求顺序处理这些记录,但他的工作区的长度只能存放 1 个逻辑记录,假定每个逻辑记录的长度为 L,磁带上存放这 10 个逻辑记录的存储块的大小为 10 * L,那么主存中也必须设置一个 10 * L 的缓冲区。用户提出读第 1 个逻辑记录时,系统启动磁带机把含有 10 个逻辑记录的存储块内容读到主存缓冲区,且把第 1 个逻辑记录分解出来传送到用户工作区,当用户再提出后处理第 2~10 的逻辑记录时,系统直接从缓冲区中把需要的逻辑记录分解出来并传送到用户工作区。
成组与分解不仅提高了存储空间的利用率,而且能减少存储设备的启动次数。缺点是成组与分解都需要设立主存缓冲区,也增加了操作系统的开销。有时,一个逻辑记录很大,需要存入到多个块中,这些块可以是连续的,也可以是不连续的(采用链接结构),这样的记录称为 跨块记录。
存储空间的分配与回收
用户作业在执行期间经常要建立一个新的文件或撤销一个不再需要的文件,因此,文件系统要为它们分配存储空间或收回它们所占有的存储空间。如何实现存储空间的分配和回收取决于对空闲块的管理方法,下面介绍几种实现磁盘空间分配和回收的方法。
- 位示图法
在主存储器的系统区中取若干个字组成的存储区域构造成一张位示图来指示磁盘存储空间的使用情况。一个盘组的分块确定后,根据可分配的总块数决定位示图由多少字组成,位示图中的每一位与一块对应,“1”为占用,“0”为空闲。
假定一个盘组有 100 个柱面,每个柱面有 8 个磁道,每个盘面分为 4 个扇区。因此,整个磁盘空间有 4 * 8 * 100 = 3200 个存储块(这个存储块就是一张盘面上一个扇区内的一小段磁道)。如果用字长 32 位的字来构造位示图,共需 100 个字。如下表:
| 0 位 | 1 位 | 2 位 | … | 30 位 | 31 位 |
第 0 字 | 0/1 | 0/1 | 0/1 | … | 0/1 | 0/1 |
第 1 字 | 0/1 | 0/1 | 0/1 | … | 0/1 | 0/1 |
… | … | … | … | … | … | … |
第 99 字 | 0/1 | 0/1 | 0/1 | … | 0/1 | 0/1 |
若磁盘空间的存储块按柱面编号,则第一个柱面上的存储块号为 0~31,第 2 个柱面上的存储块号为 32~63,后面以此类推。所以,位示图中第 i 个字的第 j 位,对应的块号就是:块号 = i x 32 + j 。当有文件要存放到磁盘上时,根据需要的块数查询位示图中为“0”的位,一方面将它们的标志位设为“1”,另一方面根据查到的位计算出对应的块号,然后就可以确定这些存储块在哪个柱面上、对应哪个扇区、属于哪个磁头:柱面号 = 块号 / 32;磁头号 = (块号 mod 32) / 4;扇区号 = (块号 mod 32) mod 4。于是,文件就可以准确的存放到磁盘上。
当要删除某个文件归还磁盘空间时,也可以根据归还块的物理地址计算出相应的块号,由块号再推算出它在位示图中的对应位,把这一位的占用标志“1”改为“0”。仍以上述示例为例,根据归还块的柱面号、磁头号、扇区号计算位示图中的字号和位号:块号 = 柱面号 * 32 + 磁头号 * 4 + 扇区号;字号 = 块号 / 32;位号 = 块号 mod 32。
- 空闲块链接法
- 单块链接:把所有空闲块用指针链接起来,每一个都设置一个指向另一空闲块的指针,这就形成了一个空闲块链,系统再设置一个链首指针,指向链中的第一块,最后一个空闲块的指针为“0”。分配一块时,链首指针指向的链头分配给申请者,同时修改链首指针指向后继的空闲块。归还一块时,把归还块加入到链头,链首指针指向归还块。这种方法效率较低,每次分配和回收都要启动磁盘才能取得指针或把指针写入归还块。
- 成组链接:在 UNIX 操作系统中,把磁盘空间成组链接。每 100 个空闲块为一组,每组第一个空闲块中登记下一组空闲块的磁盘物理块号和空闲块数,最后不足 100 块的那部分磁盘物理块号及块数计入专用块中。假定现有空闲块数 438 块,编号从 #12 - #449,那么成组链接是这样组成的:#12 - #50(专用块),#51 - #150,#151 – #250,#251 – #350,#351 – #449;#50 记录了下一组 100 个空闲块的块号为 #51 - #150,同样,#150,#250,#350 这些块中都记录着下一组的空闲块号范围,#449 之后的单元块填了“0”,表示空闲块链到此结束。
文件目录
文件目录是文件系统实现按名存取的重要手段。它由若干目录项组成,每个目录项用来登记一个文件有关的信息:文件名、存放的物理地址;还可包含如何控制和管理文件的信息:文件的类型、文件的组织方式、记录的长度、存取方式、存取权限、建立日期、保存期限等。有些系统把每个目录项看作是一个文件的控制块,因而,文件目录 就是文件控制块的集合。
一级目录
最简单的结构,即把一卷存储介质上的所有文件都登记在一张目录表中,按文件名查找目录就能知道文件存放的地址。但如果文件采用索引结构组织的话,应该登记索引表的存放地址。这是因为:每个索引文件都要有一张索引表,若把所有的索引表都放入主存储器,则必定占了不少主存空间,实际上只是在存取某个文件时才要用到该文件的索引表,所以一般把索引表存放在磁盘上,当要读写文件时,把该索引表读到主存储器中,然后从索引表中查找文件记录的存放地址。
每次新建一个文件就在文件目录中增加一个目录项;每次删除一个文件时就删去该目录项。
一级目录结构管理简单,查找方便,适合微型机的单用户系统,因为它要求在文件目录中登记的文件名都不相同,否则无法实现按名存取。
二级目录
在多道程序设计系统中,要求所有用户定义的文件名各不相同是很困难的,如果人为限制的话,对用户来说极为不方便。为了解决重名问题,多道程序设计系统中常采用二级目录结构或多级目录结构。
二级目录结构是为每个用户设置一张目录表,称为 用户文件目录,再用一张总的目录表来登记各个用户的目录表存放地址,这张总的目录表称为 主文件目录。
可以看出,采用二级目录结构后,即使不同的用户取了相同的文件名也不会引起混乱,系统将分别检索不同用户各自的文件目录,找到的是不同的物理地址。另外,也可使不同用户共享某个文件,只要各用户的文件目录表中某个目录项指向共享文件的物理位置。
树形目录
有的文件系统允许用户建立子目录,再把子目录登记在用户文件目录中,目录还可以嵌套,这就形成了多层次的目录,称为 多级目录结构,这种目录结构就像一个倒置的有根树,故也称为 树形目录结构。
在树形目录结构中,要访问一个文件时,必须指出文件所在的路径名。路径名由根目录开始到该文件的通路上所有各级目录名及文件名拼凑起来,各目录名与文件名之间用“\”间隔,也称为 绝对路径。
但每次从根目录开始搜索文件较为耗时,因此就引入了“当前目录”的概念。每个用户都可以把某级目录设置为当前工作目录,当要访问文件时,就从当前目录开始设置路径,也称为 相对路径。缩短了路径就意味着提高了搜索速度。
采用树形目录结构后,不仅不同用户的文件名可以重名,同一用户的文件也可以重名,只要在不同的子目录即可,这是因为访问时路径名不相同,所以不会混淆。
文件的安全性
文件的安全性体现在文件的保护和文件的保密两个方面。
- 文件的保护
文件的保护 是指防止文件被破坏,文件一旦被破坏,会引起数据丢失或引起混乱,给用户带来损失。
在实现文件保护时应根据不同的情况采取不同的保护措施:
- 防止天灾人祸造成的破坏。可在多个存储介质上建立副本,且这些存储设备最好放在相距较远的若干地方,当遇到不可预测的灾难时不至于丢失所有的副本。
- 防止系统故障造成的破坏。硬件故障或软件失误而引起的文件被破坏,也可采用建立多副本的策略。但也会使系统开销增大,当文件更新时必须要改动所有的副本,因此,这种预防适用于容量较小且极为重要的文件。另一种保护策略是定时转储,可把故障文件恢复到某一时刻的状态,仅丢失最近一次转储以来新的信息,只要从恢复点重新执行就可以得到弥补。
- 防止用户共享文件时造成的破坏。可对每个文件规定存取权限,例如:只读、读写、只能执行、不能删除等。对多用户可共享的文件采用树形目录结构,在目录项中设置存取权限,凡能得到某级目录权限的用户就可得到该级目录所管辖的全部目录和文件,按规定的存取权限去使用目录和文件。
- 防止计算机病毒的侵害。以预防为主:从可信赖的商店购买软件、不从互联网上下载和阅读来历不明的信息。若中毒,可格式化硬盘、格式化引导区、再安装无毒版本的可靠软件。还可针对各种病毒设计相应的杀毒软件。
- 文件的保密
文件的保密 是指防止他人窃取文件。计算机网络迅速发展,有些人怀着各种目的去入侵银行系统、窥视商业机密、剽窃专利技术、窃取军事情报等。因此,须为文件设计加密机制。可为文件设置口令,只有当使用者提供的口令与文件目录中的口令一致时,才允许使用文件,且在使用时也必须遵照规定的存取权限。对极少数极为重要的保密文件,可把文件信息翻译成密码形式保存,使用时再解密。当然这会增加文件编码解码的开销。
基本文件操作
文件系统提供给用户使用文件的手段是一组“文件操作 ”,即文件类的系统调用,有:建立、删除、打开、关闭、读、写。为避免共享文件被多个用户同时使用而造成的混乱,文件系统规定使用文件前先调用“打开”,一个文件打开后,在它被关闭之前不允许非打开者使用,使用结束后必须调用“关闭”来归还文件的使用权。
TEST
1. 什么叫文件?
通常把逻辑上具有完整意义的信息集合称为文件。例如,作业的源程序、数据以及各类软件等。
2. 文件系统应具有哪些功能?
(1)实现从逻辑文件到物理文件的转换。
(2)有效的分配文件的存储空间。
(3)建立文件目录。
(4)提供合适的存取方式以适应各种不同的应用。
(5)确保文件的安全性。
(6)提供一组文件操作。
3. 解释下列这些术语并说明它们之间的关系:存储介质 卷 块 记录 文件。
可用来记录信息的磁带、硬磁盘组、软磁盘片、光盘、卡片等,称为存储介质。存储介质的物理单位定义为卷。存储介质上可连续存储信息的一个区域称为块。用户按自己对信息的处理要求确定文件的逻辑结构,把用户组织的文件称为逻辑文件,也称为文件。是指用户把信息按逻辑上独立的含义划分信息单位,每个单位称为一个逻辑记录,简称记录。
4. 什么是文件的逻辑结构和存储结构?
用户是从使用的角度来组织文件,用户把能观察到且可以处理的信息根据使用要求来构造成文件,这种构造方式称为文件的逻辑结构。
文件系统要从文件的存储和检索的角度来组织文件,文件系统根据存储设备的特性、文件的存取方式来决定以怎样的形式把用户文件存放到存储介质上,在存储介质上的文件构造方式称为文件的存储结构。
5. 解释顺序文件、链接文件和索引文件。
把一个文件在逻辑上连续的信息存放到磁盘上依次相邻的块中,便形成了顺序结构。显然,这是一种逻辑记录顺序和物理块的顺序相一致的文件结构,这类文件称为顺序文件 。
将逻辑记录顺序与存储空间顺序独立开来,即逻辑记录是顺序的,但文件占用的存储空间块可以任意选择,不必连续。第一块的物理地址登记在文件目录中;每一个物理块的最后一个单元中不能存放文件的信息,而是用来存放物理块之间的链接指针;当某一块中的链接指针为“0”时,表示文件信息至本块结束。采用链接结构的文件称为链接文件。
索引结构是实现非连续存储的另一种方式。索引结构为每一个文件建立一张索引表,指出文件中每个记录的存放地址,采用索引结构的文件称为索引文件。
6. 解释记录的成组和分解操作。采用这种技术有什么优点?
把若干个记录合并成一组存入一个块中,就可充分利用存储空间,这就是记录的成组。从一组逻辑记录中把一个逻辑记录分离出来的工作称为记录的分解。
成组与分解不仅提高了存储空间的利用率,而且能减少存储设备的启动次数。
7. 假定某个文件由长度为 80 个字符的 100 个逻辑记录组成,磁盘存储空间被划分成长度为 2048 个字符的块。为有效的使用磁盘空间,要求采用成组方式把文件存放到磁盘上,请回答下列问题:(1)该文件至少占用多少磁盘存储块?(2)若该文件是以链接结构形式存放在磁盘上的,现用户要求使用第 28 个逻辑记录,写出系统为满足用户要求而应做的工作。
2048 / 80 = 25 个逻辑记录,100 个逻辑记录至少需要占用 4 个磁盘存储块。系统首先计算出第 28 条记录在 第 2 个存储块上,系统通过文件目录读出第一个存储块,在该块最后单元找到第 2 个存储块的地址,读出第 2 块,再进行分解操作,将第 28 个逻辑记录传送给用户。
8. 页式存储管理中用位示图表示主存空间的分配情况,磁盘存储空间的分配也可用位示图来表示。请问两者能合用一张位示图吗?为什么?
不能。主存空间和磁盘存储空间是两种不同的存储空间,应该使用不同的位示图来分别表示分配情况。
9. 假定有一个盘组共 100 个柱面,每个柱面有 8 个磁道,每个盘面被划分成 8 个扇区。现采用位示图的方法管理磁盘空间。请回答下列问题:(1)该盘组共被划分成多少个物理块?(2)若采用字长为 32 位的字来组成位示图,共需多少个字?(3)若从位示图中查找到第 50 个字的第 16 位对应的位是“0”,那么其对应的空闲块应在哪个柱面上?应对应哪个扇区?应由哪个磁头来完成信息的传送?
100 x 8 x 8 = 6400,该盘组被划分成 6400 个物理块。若采用字长为 32 位的字来组成位示图,共需 200 个字(6400 / 32)。字号与位号均从 0 开始,那么第 50 个字的字号是 49,第 16 位的位号是 15,则块号为 1583(49 x 32 + 15),其对应的柱面号是 24(1583 / 64),设 N = 1583 mod 64 = 47,则对应的磁头号为 5(47 / 8),对应的扇区为 7(47 mod 8)。
10. 设某文件由 5 个逻辑记录组成,每个逻辑记录的长度均为 510 个字节。该文件采用链接结构存储在磁盘上,磁盘块的大小为 512 个字节,用 2个字节存放链接指针,存放该文件的磁盘块号依次为 50,121,75,80,63。现要使用含有文件中第 1569 个字节的逻辑记录,请问应读出哪个磁盘块中的信息?
第 1569 个字节的记录存放在第 4 个物理块上,块号为 80。应读出物理块号为 80 的存储空间中的信息。
11. 为了实现按名存取,文件目录应包含哪些内容?
为了实现按名存取,文件目录至少要包含文件名、存放的物理地址。除此之外,还可包含如何控制和管理文件的信息:文件的类型、文件的组织方式、记录的长度、存取方式、存取权限、建立日期、保存期限等。
12. 怎样才能防止不同的用户可能给各自的文件取了相同的名字而造成的混乱?
可以采用二级目录或多级目录结构。
二级目录:在主目录中登记每个用户的名字及该用户的用户文件目录的存放地址,在第二级用户文件目录中登记该用户的每个文件的文件名及文件存放位置。这样,不同的用户有同名文件时,由于文件的路径是不一样的,所以不会产生混乱。
多级目录:在二级目录的基础上,在用户目录下,根据项目和应用领域再建立子目录和孙目录,即目录可嵌套。这样可以避免同一个用户的同名文件造成的混乱。
13. 有一个文件可供两个用户共享,但这两个用户却对这个文件定义了不同的名字。为了保证这两个用户都能存取该文件,应怎样设置文件目录?简单画出目录结构关系并加以解释。
可以采用二级目录结构或多级目录结构。在用户各自的目录表中把相应文件的存放地址指向共享文件所在的物理地址,于是,不同用户使用了不同的文件名,也可以共享同一个文件。
14. 总结文件的存取方式、文件的存储结构、存储设备类型之间的关系。
文件的存取方式有两种:顺序存取和随机存取。文件的存储结构有顺序结构、链接结构、索引结构。文件系统应根据用户的存取方式和存放的存储介质类型来决定文件的存储结构。例如,磁带只能顺序存取;而磁盘可以顺序存取,也可以随机存取,这时就取决于用户指定的存取方式,若是用户指定随机存取,文件系统可以采用索引结构。
15. 区分文件的保护和保密。
文件的保护是指防止文件被破坏。文件一旦被破坏,会引起数据丢失或引起混乱,给用户带来损失。文件的保密是指防止他人窃取文件。计算机网络迅速发展,有些人怀着各种目的去入侵银行系统、窥视商业机密、剽窃专利技术、窃取军事情报等。
16. 怎样防止由于系统故障而造成的文件被破坏?
可对文件采用建立多个副本,将这些副本保存到不同类型的存储介质上。还可以采用定时转储的方式,每隔一段时间就把创建文件的副本并保存到其他存储介质上。
17. 怎样防止用户共享文件时可能造成的文件被破坏?
可对每个文件规定存取权限,例如:只读、读写、只能执行、不能删除等。对多用户可共享的文件采用树形目录结构,在目录项中设置存取权限,凡能得到某级目录权限的用户就可得到该级目录所管辖的全部目录和文件,按规定的存取权限去使用目录和文件。
18. 文件系统提供的基本文件操作有哪些?
有:建立、删除、打开、关闭、读、写。
19. 文件系统中为什么要设置“建立”,“打开”和“关闭”操作?
要把一个文件存放到存储介质上就必须调用“建立”操作。若须使用一个已经“建立”在某存储介质上的文件,首先应调用“打开”操作。文件系统规定,使用文件前先要调用“打开”,一个文件打开后,在它被关闭之前不允许非打开者使用。使用结束后必须调用“关闭”来归还文件的使用权。
20. 当用户要读一个尚未打开的文件时,系统应怎样处理?
当用户要读一个文件的时候,系统先要验证该用户是否有使用权力,所以任何一个用户如果要读文件前都要执行“打开”操作。如果系统不允许隐式使用文件,那么当读一个还没有打开的文件,系统不会执行读操作,而是返回一个“文件未打开”的错误信息。如果系统允许隐式使用文件,那么系统将会替用户做打开文件的工作。
21. 文件系统是否允许用户去“关闭”一个不是自己“打开”或“建立”的文件?为什么?
不能!一个不是自己“打开”或“建立”的文件,是没有权力使用和强行关闭的。
文件管理 - 操作系统概论