1、5.15.25.3本章讲述内容:本章讲述内容:5.4 按文件的保护性质,可把文件分成:只读文件、读写文件、可执行文件、不保护文件。1.所谓“文件”,是指具有完整逻辑意义的一组相关信息的集合。文件与文件之间用符号名加以标识,这个符号名被称为“文件名”。文件被存放在大容量的辅助存储器中。当用户需要使用时,就通过文件名把相应的文件读到内存。2.所谓“文件系统”,是指与文件管理有关的那部分软件、被管理的文件以及管理所需要的数据结构(如目录、索引表等)的总体。.3.按文件的性质和用途,可把文件分成:系统文件、用户文件、库文件。.按照文件的保护期限,可以把文件分成:临时文件、档案文件、永久文件。.按照文件
2、的存取方式,可以把文件分成:顺序存取文件、随机存取文件。.按照设备的类型,可以把文件分成:磁盘文件、磁带文件、打印文件。.按照文件的逻辑结构,可以把文件分成:流式文件、记录式文件。.按照文件的物理结构,可以把文件分成:连续文件、链接文件、索引文件。.按照文件的内容,可以把文件分成:普通文件、目录文件、特殊文件。记录式文件:把文件信息划分成一个个记录,存取以记录为单位进行,称这种文件的逻辑结构为“记录式文件”。在这种文件中,每个记录顺序编号,称为“记录号”。在记录式文件中,总有一个数据项能够唯一地标识记录,这种数据项称为记录的“主关键字”。查找文件中的某个记录时,按主关键字去搜索,肯定能够找到。
3、记录中的其他项被称为“次关键字”。利用次关键字可以对文件中的记录进行分类。流式文件:把文件视为有序的字符集合,其内部不再对信息进行组织划分,称这种文件的逻辑结构为“流式文件”。流式文件以字符为操作对象,适用于进行字符流的正文处理。1.所谓“文件的结构”,是指以什么样的形式去组织一个文件。用户总是从使用的角度组织文件,系统总是从存储的角度组织文件。因此,从用户使用角度组织的文件,称为文件的“逻辑结构”;从系统存储角度组织的文件,称为文件的“物理结构”。2.在文件的逻辑结构与相应的物理结构间建立起映射关系,并实现两者间的转换。即如果用户要使用他文件中的某个信息,那么文件系统就必须根据用户给出的文件
4、名以及所指的信息,找到这个文件,找到这个文件里的那个信息。3.1.2.文件按不同的组织方式存放在辅存上,就得到文件不同的“物理结构”。文件的物理结构有时也称为文件的“存储结构”。通常是以记录成组的方式把文件存放到辅存的。即一个辅存块里,可能存放多个逻辑记录,块是辅存与内存之间进行信息传输的单位。在文件的物理结构里,把块称为一个“物理记录”。连续存放:连续文件 用户总是把自己的文件信息看作是连续的。若把这种逻辑上连续的文件信息依次存放到辅存连续的物理块中,那么所涉及的这些物理块就构成了该文件的物理结构。因为这些物理块是连续的,故这种文件的物理结构称为“顺序结构”,或“连续文件”。00612734
5、8569234501101112131415扇区号:01230123磁道号123456文件:MYFILE.链接块存放:串联文件 若把逻辑上连续的用户文件信息存放到辅存的不连续物理块中,并在每一块里包含一个指针,指向与它链接的下一块所在的位置,最后一块的指针放上“-1”,表示文件的结束。那么这时所涉及的物理块,就是这个用户文件的物理结构。由于这些物理块是不连续的,逻辑文件信息的连续性通过这些块里的指针表现出来,因此把该文件的物理结构称为“链接结构”,或“串联文件”。0061234562345017111213815扇区号:01230123磁道号123456文件:MYFILE1091410914-
6、16首块指针.索引表存放:索引文件 若把逻辑上连续的用户文件信息存放到辅存的不连续物理块中,系统为每个文件建立一张索引表,表中按照逻辑记录存放的物理块顺序记录了这些物理块号。那么这时所涉及的物理块,就是这个用户文件的物理结构。由于这些物理块是不连续的,逻辑文件信息的连续性通过索引表里记录的物理块的块号反映出来,因此把这个文件的物理结构称为“索引结构”,或“索引文件”。006123456234507111213815扇区号:01230123磁道号123456文件:MYFILE1091410914-10611029314索引表1.由磁带机的物理特性,文件在其上只能采用顺序结构存放,也只能采用顺序存
7、取的方式对文件进行访问。对于磁盘,文件可以采用顺序结构、链接结构、索引表结构在其上存放。顺序存取方式对它们都是适用的。2.用户访问文件时,可采用顺序存取和随机存取两种方式。对磁带机上的文件,不适宜采用随机存取的方式进行访问;对磁盘上的文件,如果该文件使用的是链接结构,那么也不适宜采用随机存取的方式进行访问。存储设备存储结构存取方式磁 盘磁 带连续文件顺序、随机串联文件顺序索引文件顺序、随机连续文件顺序3.所谓“顺序存取”,即是按照文件记录的排列次序一个接一个地存取。为了存取第i个记录,必须先通过记录1到记录i-1。.所谓“随机存取”,即是可以以任何次序存取文件中的记录,无须先涉及它前面的记录,
8、只要给出记录号即可。.已知柱面号、磁头号、扇区号。求其对应相对块号、字号、位号的公式为:相对块号k=柱面号m+磁头号n+扇区号,字号=k/m,位号=k%m 若每个盘面有n个扇区,相对块号k。那么求柱面号、磁头号、扇区号的公式为:柱面号=k/m,磁头号=(k%m)/n,扇区号=(k%m)%n 字长为m,那么第i字第j位对应的相对块号k是:k=im+j。1.具体做法是:为所要管理的磁盘设置一张位示图,其大小由磁盘的总块数决定。位示图中的每个二进制位与一个磁盘块(假定一个扇区就是一个磁盘块)对应,该位为“1”,表示对应的块已分配;为“0”,表示对应的块空闲,可以参加分配。2.所谓“相对块号”,即是指
9、从0开始,按柱面和盘面(即磁头)的顺序对磁盘块进行统一编号。0/10/10/10/10/10/10/10/10/10/10/10/10/10/10/10/10/10/10/10/10/10/10/10/10/10/10/10/10/10/10/10/10位1位2位3位30位 31位第0字第1字第99字1个柱面3.创建新文件时,根据文件的长度查找空闲区表,从状态为“有效”的表目里找到合适的表项进行分配;删除一个文件时,在空闲区表里找一个“空白”表项,将该文件原先占用的连续存储空间信息填写进去,并把表项的状态改为“有效”。1.2.系统设置一张表格,表中每个表目记录磁盘空间中的一个连续空闲盘区的信息
10、,比如该空闲盘区的起始空闲块号、连续的空闲块个数、以及表目的状态,称此表为“空闲空闲区表区表”。1.所谓“空闲块链”,即在磁盘的每个空闲块里设一个指针,指向另一个磁盘空闲块,所有的空闲块形成一个链表,即空闲块链。这时,系统要设一个空闲块链首指针,链表最后一个空闲块中的指针应该表明为结束,比如记为“-1”。2.申请存储块时,根据链首指针从链首开始一块块地摘下分配;若释放存储块,就把释放的块从链首插入。当然,无论是申请还是释放,都必须随时修改链首指针,并调整空闲块里的指针。文件存取控制信息:这些信息将规定系统中各类用户对该文件的访问权限,起到保证文件共享、保密的作用。文件的物理结构:物理结构反映文
11、件在辅存是如何存放的,它确定了对文件可以采用的存取方式,对完成逻辑结构与物理结构之间的映射是有用处的。文件的物理位置:因文件在磁盘上的存储结构可以不同,因此指明其在辅存上位置的信息也不一样,目的都是要通过这些信息得到该文件存放在哪些盘块上。这些信息对完成文件逻辑结构与物理结构之间的映射是有用处的。1.操作系统为每个文件开辟一个存储区,在它里面记录该文件的有关信息,该存储区称为“文件控制块(FCB)”。于是,找到一个文件的FCB,也就得到了这个文件的有关信息,就能够对它进行所需要的操作了。2.文件名称:用户为自己的文件起的符号名,它是在外部区分文件的主要标识。.文件的逻辑结构:该信息确定文件是流
12、式的,还是记录式的,记录是固定长度的还是变长的,以及每个记录的长度。.文件管理信息:如文件的创建日期和时间、文件最近一次访问的日期和时间等。1.把所有文件的FCB都登记在一个文件目录中,这样由文件名查文件目录项,直接就能够找到所需要的文件,这种文件目录为“一级目录结构”。test文件目录文件countwaithelprobitfoodclassgroupdata一个目录项ZONG的文件WANG的文件LING的文件FANG的文件2.testcountwaithelprobitfoodclassgroupdataZONG的目录WANG的目录LING的目录FANG的目录ZONGWANGLINGFAN
13、G用户目录:主目录(根目录):二级目录结构由“主目录”与“用户目录”两级构成。主目录里,每个目录项的内容只是给出文件主名以及他的目录所在的磁盘地址。在一个个用户目录里,才是由文件FCB组成的目录。因此,二级目录结构里的用户目录,实际上就是一个一级目录。3.树型目录结构即是目录的层次结构,允许每个用户拥有多个自己的目录。在这棵倒置的树里,第1层为根目录,第2层为用户目录,再往下是用户的子目录。另外,每一层目录里,既可以有子目录的目录项,也可以有具体文件的目录项。利用这种目录结构,用户可以按照需要,组织起自己的目录层次,既灵活,又方便。CCCCCCCCCBBBBBAA/用户C的目录用户C的子目录C
14、根目录:.树型目录结构.路径名.绝对路径与相对路径 用树型结构组织文件系统时,为了能明确地指定文件,不仅文件要有名字,目录和子目录也都要有名字。从根目录出发到具体文件所经过的各层名字,就构成了文件的“路径名”。从根目录出发到达一个文件的路径,也称为文件的“绝对路径”。要注意,文件的绝对路径名必须从根目录出发,且是唯一的。路径名中的每一个名字之间用分隔符分开。用户还可指定一个目录作为当前目录(也称工作目录),从它往下的文件的路径,称为文件的“相对路径”。一个文件的相对路径名与当前所处的位置有关,它不是唯一的。命令验证合法后,系统就开始进行把对文件的读/写请求从逻辑结构映射到物理结构的工作。找到了
15、文件MYFILE的FCB后,系统就把该命令改变成为:READ(FCB,3,A)(2)文件系统通过命令中提供的文件名MYFILE查文件目录,看哪个文件控制块里记录的文件名是“MYFILE”。要读文件MYFILE第3个记录,存放到数组A:A0,A1,A499中。为此,在程序里发读命令如下:READ(MYFILE,3,A)(1)1.用户访问文件时,系统根据文件名查文件目录,找到它的FCB。经过合法性检查,从FCB里得到该文件所在的物理地址,然后进行所需要的存取操作。1273相对块号5624501101112131415扇区号:0120123磁道号40896MYFILE的起址逻辑字节地址块内相对字节地
16、址2.第3个记录 把相对块号转换成物理地址:道号和块号。公式是:道号=相对块号/每道块数=7/4=1 块号=相对块号%每道块数=7%4=3于是,命令(4)转换成:READ(FCB,1,3,500,A)(5)至此,文件系统实现了由逻辑记录到物理记录的转换。把逻辑字节地址转换成相对块号和块内相对字节地址。公式是:相对块号=(逻辑字节地址/物理块尺寸)+相对起始块号=(1500/1000)+6=1+6=7块内相对字节地址=逻辑字节地址%物理块尺寸=1500%1000=500 于是,命令(3)转换成:READ(FCB,7,500,A)(4)把逻辑记录号3转换成相应的逻辑字节地址,即这个记录相对于该文件
17、起点的字节数。公式是:逻辑字节地址=逻辑记录号*逻辑记录长度=3*500=1500于是,命令(2)转换成:READ(FCB,1500,A)(3)1273相对块号5624501101112131415扇区号:0120123磁道号40896MYFILE的起址逻辑字节地址块内相对字节地址第3个记录.任何时刻只允许一个用户使用共享文件,在一个用户打开共享文件后,另一个用户只有等到该用户使用完毕、将其关闭后,才能把它重新打开,然后使用,即“大家都能使用,但一次只能一个用户用”。1.所谓文件的“共享”,是指一个文件可以被多个授权的用户共同使用。文件共享不仅减少了文件复制操作花费的时间,节省了大量文件的存储
18、空间,而且也为不同用户完成各自的任务所必须。2.允许多个用户同时使用同一个共享文件,但只允许多个用户同时打开共享文件进行读操作,不允许多个用户同时打开共享文件后有读有写,也不允许多个用户同时打开共享文件后同时进行写操作。3.文件主不仅要指明哪些用户能够使用这个文件,哪些用户不能使用这个文件,还要指明可以使用该文件的用户的使用权限,。这些信息都将记录在FCB里。.要共享的用户必须能找到这个文件。1.“文件保护”是指要防止未经授权的用户使用文件,也要防止文件主自己错误地使用文件而给文件带来伤害。2.存取控制矩阵 用户A用户B用户C用户DRRWERRWERRRWRWRWERWR文件1文件2文件3文件
19、4文件5文件权限用户 所谓“存取控制矩阵”,即系统维持一个二维表,一维列出系统中的所有文件名,一维列出系统中的所有用户名,在行、列交汇处给出用户对文件的存取权限。.存取控制表 文件主:(用户B)同组用户:(用户A,用户C)其他用户:(用户D)RWER文件1 如果只按存取控制矩阵的列存储,且只存储非空元素,就形成了所谓的“存取控制表”。存取控制表以文件为单位构成,每个文件一张,可以把它存放在文件控制块FCB里。在形成文件的存取控制表时,应对用户分组,如:“文件主”、“同组用户”、以及“其他用户”三类(当然还可以多分),然后赋予各类用户对此文件的不同存取权限。当用户发出对某个文件的使用请求后,系统
20、会要求他给出口令,用户就要在键盘上键入口令,否则无法使用它。当然,用户键入时,口令不会在屏幕上显示,以防止旁人窥视。只有输入的口令核对无误,用户才能使用指定的文件。3.如果只按存取控制矩阵的行存储,且只存储非空元素,就形成了所谓的“权限表”。权限表以用户为单位构成,记述了用户对系统中每个文件的存取权限。通常,用户的权限表被存放在他的进程控制块PCB里。4.文件1文件2文件3文件4文件名文件5RRWERRW权限用户A 当前,个人信息、商业和政府部门的信息都被保存在计算机里,都要在网络中进行传递,因此操作系统应该提供一个环境,以保证信息使用的私密和共享,这是内部安全问题。.另一方面,操作系统还需要
21、提供各种手段,防止来自各方的有意或无意的入侵和攻击,这是外部安全问题。事实上,比起对人为入侵者(比如黑客)的防范,关注数据的意外丢失(比如发生火灾、突然断电等)显得更为重要,因为它们的发生会带来更为惨痛的、无法挽回的损失。所以,操作系统的文件系统必须解决文件的备份问题。1.即使是同一个I/O请求,如果其要访问的数据分布在多个磁盘上,则该请求也可以并行地得到执行。这实际是在磁盘上组织数据的问题。通过多个磁盘,只要它们所需要的数据分布在不同的磁盘中,多个独立的I/O请求可以并行地得到处理。.分散存放的第一种方法是在多磁盘上分散每个字节的位,称为“位级分散”。例如有8个磁盘,则可将每个字节的第i位写
22、到第i个磁盘上。这样,每个磁盘都参与每次访问,每次访问可在同样时间内与单个磁盘系统读8倍的数据相同。也就是说,相比把一个字节存放在一个磁盘上,这样的多磁盘阵列由于并行操作,其传输率提高了8倍。.第二种方法是“块级分散”,即是将文件数据分块,以块为单位分散存放在多个磁盘上。若有n个磁盘,可把一个文件的第i块存放在第(i mod n)+1个磁盘上。比如要处理10块数据,磁盘速度为1块/ms,CPU处理1块数据的时间是10s。在不考虑内存存储访问开销时,对单磁盘和5个磁盘(采用块级分散)的系统,完成任务的时间分别为:单一磁盘 多个磁盘 每次读出一块:1ms每次读出5块:1ms CPU处理1块:10s
23、CPU处理5块:50s 读出10次+处理10次所需读出2次+处理2次所需 总时间为:10ms+0.1ms=10.1ms总时间为2ms+0.1ms=2.1ms可见,在多磁盘下,各磁盘独立处理I/O请求,实现并行处理,使整体处理速度提高了近5倍。.综上述,利用多磁盘阵列,可改善磁盘的传输率,也可以增强磁盘的可靠性。现在,将同时具有这两种性能的磁盘阵列称为“独立磁盘冗余阵列(RAID)”。利用多磁盘的大容量能力,还可改善磁盘存储的可靠性。这是因为在多个磁盘组成的磁盘阵列里,可存储有关数据的额外信息,它们或是数据本身的备份,或是诸如差错纠正码、奇偶校验码等信息。这样的冗余信息,正常情况下没有什么用,但
24、在系统出错或磁盘损坏时,却可用来进行对数据的纠错,或修复。.2.“文件备份”的含义,就是为系统中的文件建立相应的副本,它通常有两种方法,一是所谓的“全量转储”,一是所谓的“增量转储”。.全量转储又称“周期性转储”或“定期后备”,即按固定的时间周期把系统中所有的文件内容转存到另外的磁带或磁盘上。优点是在恢复的同时,可以重新整合文件在辅助存储器上的分布。缺点是由于转储量大,可能要耗费很多时间,因此这种转储不能频繁进行,一般每周进行一次,灾难后所带来的损失,有时仍然是极其严重的。.增量转储指每次只是转储上次转储后新建立的或发生过变更的那些信息,而不是转储系统中的整个信息。这样的转储信息量较小,因此进
25、行的周期可以缩短。优点是每次耗费的转储时间少,一旦系统遭受破坏,能够恢复到几小时前的系统状态,造成的损失不大。但实施增量转储,必须要对更新的文件作上记号,并在转储后删除该记号。在实际工作中,常将这样的两种转储方法结合在一起使用。.把不再需要的文件从系统里删除。主要功能是:收回该文件占用的磁盘存储空间,收回该文件控制块所使用的存储区。删除一个文件后,系统就无法感知到它了。.创建文件(CREATE)删除文件(DELETE)打开文件(OPEN)创建一个原本不存在的文件。该命令的主要功能是:向系统申请一个存储区,作为创建文件的FCB;把诸如文件名、创建日期等有关文件属性存入FCB。一个文件被创建后,系
26、统中有了它的FCB,因此表示该文件已经存在,用户可以使用它了。.使用一个文件前,为后续访问做好准备。主要功能是:把指定文件在FCB中的属性复制到内存的活动目录表中,以便随后可直接从活动目录表里获得该文件的信息,避免每次涉及到文件时,都要与磁盘交往,加快进行后续的文件访问工作。.使用完一个文件后,做善后工作。主要功能是:释放该文件在内存活动文件目录表里所占位置,以便腾出活动文件目录表里的表目,供别的用户打开别的文件时使用。关闭文件(CLOSE).在文件中读取数据。主要功能是:申请一个输入缓冲区,读出的数据先存放在申请到的缓冲区里,然后将缓冲区中所需要的数据截出,送到指定的内存区域里。读文件(READ)写文件(WRITE)往文件中写数据。主要功能是:把输出的数据送入内存缓冲区。缓冲区满后,按指定位置做写操作。