您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 操作系统设计与实现(第五章)
操作系统设计与实现主讲教师:徐战亚Email:zhanyaxu@163.com第五章文件系统文件概念的引入:由于进程的运行空间太小,使得进程运行后的结果无法存放,应用系统中的重要数据无法保存,另外单个进程控制的数据无法同时被其他进程使用…提出了必须对这些信息有控制性的组织和存放的要求。需要满足的条件:**能够存储大量的信息;**进程使用信息后,即使结束,也该保存好信息;**多个进程可以并发的存取信息。在此基础上,引入了文件的概念。文件的控制和管理文件在操作系统中,作为信息的一种组织者和承担者存在,它不受一般进程的影响,为进程提供信息,也可以在权限的允许下被进程修改或添加;文件的管理是由操作系统来实现的,因此,文件的组织结构、命名规则、存取控制、安全保护等等都是由操作系统设计时要考虑解决的,整个处理文件的模块称为文件系统(filesystem)。5.1文件文件:一组带标识的在逻辑上有完整意义的信息项的序列,这个标识为文件名。信息项:构成文件内容的基本单位长度:单个字节,或多个字节文件内容的意义:由文件的建立者和使用者解释把信息以一种单元,即文件的形式存储在磁盘或其他外部介质上。文件是通过操作系统来管理的,包括:命名,文件的结构,存取,使用,保护和实现方法。5.1.1文件命名相同点:都支持1~8个字母组成的字符串作为合法文件名。不同点:系统不同,规则不同:文件名长度、文件名大小写、文件扩展名:一个或多个、特殊扩展名的使用aa.tar.gz.cpp.c5.1.2文件结构文件可由很多方式构成,常见的有三种:a:无结构字节序列:操作系统不关心文件内容,所有的含义都在用户的程序中,用户可以方便的修改文件的内容,任意删减,同时,系统也无法提供帮助和支持。在UNIX、DOS、及WIN95中使用。b:记录序列结构:文件有一些固定长度的记录序列组成,每次读都返回一条记录,写操作是对记录的修改或追加。如CP/M系统即是用这种思想,每条记录由128个字符组成一条记录。c:记录树结构:文件由一棵记录树构成,每个记录的长度可不同,但每个记录的固定位置都有一个关键字域,记录树按照关键字排序,这种结构非常便于检索信息,而且此时操作系统负责记录存放的位置。5.1.3文件类型操作系统一般都支持多种类型的文件,对于UNIX系统,文件一般包括正规文件、目录文件、设备文件(字符设备、块设备)。正规文件:包含有用户信息的文件(与用户使用紧密相关的,包含有用户数据)。目录文件:使用来管理文件系统结构的文件;设备文件:用来模拟外部I/O设备或磁盘。主要研究正规文件。一般的正规文件ASCII文件或二进制文件,对于ASCII文件,一般文件由多行组成,换行的时候可以用回车符,也可以用换行符,依系统而定,每行长度可不同,优点为:方便编辑,可以原样打印。对于二进制文件,很难直接读懂,均由混乱的字符组成,不同的二进制文件,有着不同的内部结构,有对应的程序去读取、修改、执行。看课本P295图5.3(中文)P406图5.3(英文)第一种可执行文件,由五部分组成,每部分有不同含义,程序装入内存后,根据这五部分的内容进行重定位,来运行程序。第二种存档文件,由许多编译过但未链接的库过程或模块组成,每个模块以模块头开始,列出了模块名、创建时间、拥有者、保护代码、模块长度等信息。操作系统中的可执行文件:操作系统自己的执行文件,保持最新的文件执行,采用检查源文件的方式,类似于makefile文件的思想。WINDOWS系统执行时,根据文件的扩展名来判断该启动哪个应用程序,当扩展名不正确时,无法启动那个应用程序,如果强制转换,那么修改后的文件即使能启动程序,也不能正确的读取。5.1.4文件存取早期的系统只能够进行顺序读取,从文件的开始处读取文件中的信息,如果需要的话,就多次读取,这种方式非常适合磁带。现在的系统利用磁盘来存储,故顺序读取不是种高效的方式,即出现了随即存储,这时可以以任意的顺序来读取文件(数据库系统中尤为重要)。5.1.5文件属性文件除了文件名和数据外,还有很多操作系统赋予的属性,创建日期、文件长度等,这些额外的属性称为文件属性。flaglengthtime5.1.6文件操作文件作为信息的载体,即为了存储也为了检索,系统不同,采用的手段也有差异,通用的操作一般有:1.CREATE7.APPEND2.DELETE8.SEEK3.OPEN9.GETATTRIBUTE4.CLOSE10.SETATTRIBUTE5.READ11.RENAME6.WRITE5.2目录在多数系统中,目录也是一种文件。1.文件控制块(FCB):文件控制块是操作系统为管理文件而设置的数据结构,存放了为管理文件所需的所有有关信息,文件控制块是文件存在的标志。•文件控制块的内容:•文件名,文件号,用户名,文件地址,文件长度,文件类型,文件属性,共享计数,文件的建立日期,保存期限,最后修改日期,最后访问日期,口令,文件逻辑结构,文件物理结构2.文件目录:把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合3.目录项:构成文件目录的项目(目录项就是FCB)指向属性的指针5.2.1层次目录系统a:最早最简单的组织方式:这种系统,只需要维护一个单独的目录,里面包含着所有用户的文件,如果用户变多,当使用同样的文件名时,就出现了混乱,系统就无法工作。b:较好的方式:按照用户来管理,给每一个用户一个目录,每个用户的文件就放在他们自己的目录下,此时所有的文件都是平行的,相互的关系没法组织管理,缺乏条理性。c:较为理想的方式:每个用户有自己的目录,并且可以在自己的目录下创建新的目录,并且可以按照自己的方式组织自己的文件。5.2.2路径名绝对路径:最常见且是最直接的方式,来指明文件的具体位置;\DOS中的分隔符/UNIX中的分隔E:\Backup\execfile\test.exe/etc/xinetd.d/telnet/表示根目录(限于UNIX)相对路径:和工作目录一起使用,相对于工作目录的路径;如工作目录为:/usr/astcp/usr/ast/mailbox/usr/ast/mailbox.bak等效于cpmailboxmailbox.bak特殊目录:在创建目录的时候,默认会出现的目录:.表示当前的目录..表示父目录如果用cd..表示退回到父目录/usr如果用cd../lib/dict表示到了/usr/lib/dict/cp/usr/lib/dict.将/usr/lib/dict下所有文件拷贝到/usr/ast/下,文件名不变化5.2.3目录操作不同的系统,对目录操作也有很大差别,通用的操作一般有:1.CREATE(MKDIR)6.RENAME2.DELETE7.LINK3.OPENDIR8.UNLINK4.CLOSEDIR5.READDIR5.3文件系统的实现主要包括文件如何存储、磁盘空间如何分配管理、系统如何高效。5.3.1实现文件文件的实现主要指文件中的数据如何在磁盘上存储的,系统怎样对数据进行添加、修改、检索。常用的方法一般有以下几种:连续分配、链接表分配、使用索引的链接表分配、i节点等****连续分配将文件做成连续的数据块放到磁盘上,根据磁盘上块的大小来划分本身。优点:记录每一个文件只需要记录每个文件的第一个存储块地址,在一次操作中就可以完成整个文件的读取。缺点:一次存储困难,除非文件的大小不再变动,而且文件的大小必须预先知道;另外,此方案会产生磁盘碎片,浪费空间。****链接表分配是第一种方案的改进,存放不再连续,而是通过链接表来将各个分散的块链接起来,每块的第一个字用来指向下一个指针,其余部分存放数据。优点:除了内零头外,可以充分利用磁盘空间,不再有明显的碎片,记录此文件的位置只需要记录第一块的地址即可,顺序读取方便。缺点:随机的存取困难,另外由于指针占用了字节,在寻址和取数据时要花费时间来把他们分开,由于不再是2的幂,效率很难提升。****使用索引的链接表分配在内存中建立每个磁盘块的指针,并通过在内存中建立索引,将指针放入索引表,就可以方便地检索到每个文件所有的磁盘块实现随机存取。内存表的链接表分配每一项中的内容都是指向了下一物理块的地址,在这个表中检索很快,虽然也要顺着链移动,但在内存中的速度就实现的很快。缺点:磁盘大的时候,链接表就变得很庞大,放入内存就要占用很大的空间。(MS-DOS利用了大块的方法来避免过大的表)****i节点给每个文件赋予一张小型索引表,列出文件的属性和各个块在磁盘上的地址。(每个文件包含哪些磁盘块)每个文件都有这样的表,当文件小的时候,开始的磁盘地址都可以在这个节点表中获得,当文件大的时候,就需要间接块。一级间接块包含着附加的磁盘地址,二级间接块包含很多一次间接块的地址,同样,三级间接块包含很多二级间接块的地址。5.3.2实现目录目录文件:为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存,这个文件就叫目录文件。目录项:构成文件目录的项目(目录项就是FCB)根据用户给出的路径名找到相应的目录项,从中找到所需要的信息。系统不同,提供的信息也有差别,总之,目录项的功能就是将用户提供文件名映射成为查找文件数据所需要的信息。相关的问题就是文件的属性该放到何处,是放到目录项中还是放到别的地方?****CP/M中的目录用户码18312块数文件类型(扩展名)范围磁盘块号(16)该系统的目录结构最为简单,系统中只有一个目录,文件系统只需查找这个唯一的目录,当找到对应的目录项的时候,也就知道了文件的磁盘号。当文件过大,目录项中容不下过多的磁盘号的时候,就为这个文件分配额外的目录项。****MS-DOS中的目录扩展名文件名属性保留时间日期第一块块号831102224字节属于层次目录系统,这个目录项中保存第一个磁盘块的块号,参照5.9中的链接方式可以找到文件的所有的磁盘块。****UNIX中的目录UNIX的目录结构简单,每个目录项包含一个文件名和这个文件的i节点号,打开文件的时候,文件系统根据给出的文件名找到它所在的磁盘块。i节点号字节文件名对于查找路径名/usr/ast/mbox,具体的步骤为:先找到根目录(UNIX中,根目录的i节点的位置是固定的),根据根目录中查找路径的第一部分/usr,随即获得/usr的i节点号,然后根据此节点号定位到此节点,根据此i节点,找到目录/usr,接着查找下一部分ast,同样地,一直定位到mbox,将文件mbox的节点读入内存,并保存,直至关闭此文件。5.3.3磁盘空间管理磁道扇区柱面扇区磁头磁臂由于连续的存储文件会导致文件增大时文件的整体移动,一般的系统的文件都采用分块存储的方式。但这又会引入新的问题:块大小的衡量****块大小块过大,对于平均文件较小的系统来说,磁盘空间的浪费是非常严重的,但如果块过小,每个文件则需要许多个块才能存储,那取出时的效率则会非常低。而磁盘空间的利用率和读取磁盘数据的速率是相背的。当空间利用率降低的同时,磁盘数据的读取速率也在提高,因此时间效率和空间效率本质上是相背的。故需要些折中的办法,把块分为512、1K或2K字节,如果在扇区大小为512自己的磁盘选择1K大小的磁盘块时,系统常连续需要连续读取两个扇区,并把他们认为是一个单元。****记录空闲块常用的方法是链接表和位图法链接表:把所有空闲块链成一个链位图法:用一串二进制位反映磁盘空间中分配使用情况,每个物理块对应一位,分配物理块为1,否则为0申请物理块时,可以在位示图中查找为0的位,返回对应物理块号;归还时;将对应位转置0描述能力强,适合各种物理结构5.3.4文件系统的可靠性可靠性:系统抵抗和预防各种物理性破坏和人为性破坏的能力1.坏块问题2.备份通过转储操作,形成文件或文件系统的多个副本海量转储:定期将所有文件拷贝到后援存储器。增量转储:只转储修改过的文件,即两次备份之间的修改,减少系统开销。****文件系统的一致性磁盘块---内存---写回磁盘块若在写回之前,系统崩溃,则文件系统出现不一致*设计一个实用程序,当系统再次启动时,运行该程序,检查磁盘块和目
本文标题:操作系统设计与实现(第五章)
链接地址:https://www.777doc.com/doc-3169419 .html