1第七章文件系统7.1文件与文件系统–文件具有符号名而且在逻辑上具有完整意义的信息项的序列。–文件系统文件与管理文件的程序集合。信息项信息项…信息项…信息项读(写)指针编号:01…k…n-1读指针:记录文件当前的读取位置,指向下一个将要读取的信息项写指针:记录文件当前的写入位置,下一个将要写入的信息项将被写到该处2文件分类不同文件分类–按照所有者:系统文件、用户文件–保存期限:临时文件、永久文件–访问方式:只读文件、只写文件、读/写文件–设备类型:磁盘文件、磁鼓文件–用途:目录文件和普通文件–内容:程序文件和数据文件37.2文件的访问(存取)方式顺序访问从文件起始位置开始顺序访问从文件中间某处开始顺序访问随机访问按记录编号随机访问按关键字(key)随机访问文件的存取是指文件的访问方式,就是要找到文件内容所在的逻辑地址。即用户使用文件时按何种次序存取文件的各个信息项。一般文件的访问方法如下:47.3.1文件的逻辑组织逻辑组织:文件的外部组织形式–用户看到的文件组织形式记录式文件:记录的序列流式文件:字节的序列记录记录…记录…记录读(写)指针编号:01…k…n-1字节字节…字节…字节读(写)指针编号:01…k…n-157.3.2文件的物理组织物理组织:是确定如何将记录或字节保存在存储型设备的物理块中。考虑因素–记录格式定长:一个文件的所有记录项长度相同变长:允许一个文件的所有记录项长度不同–空间开销除保存文件内容之外的内、外存储开销–存取速度顺序存取速度和随机存取速度–长度变化文件长度的动态增长和动态减少61、顺序结构:一个文件占有若干连续的磁盘块。优点:速度快,节省空间缺点:长度变化困难…块18块19块20块21块22...磁盘空间…首块=18块数=5...FCB71.多个连续文件012345678910111213141516171819202122232425262728293031文件名始址块数count02tr143mail196list284f62文件目录countftrmaillist82、链接结构:一文件可存于不连续块中,块间以指针相连。优点:节省空间,长度变化容易。缺点:随机访问速度慢。…块18...块80...块92...磁盘空间…首块=18块数=3...FCB93、索引结构:一文件可存于不连续块中,块号记在索引块中。优点:速度快,长度变化容易。缺点:索引块占空间,存储开销大。磁盘空间…索引块=29块数=4...FCB…块18块19...块26...块30...索引块291819263010多级索引114、Hash结构/散列结构/杂凑结构:适合定长记录和按键随机查找的访问方式。是通过计算来确定一个记录在存储设备上的存储位置。计算地址:hash(key)=addr(在磁盘或文件中的存放位置)问题:给定key1key2hash(key1)=addr1;hash(key2)=addr2;但是addr1=addr2(冲突)处理冲突:顺序探查法如发生冲突,则在冲突位置开始顺序探查第一个空闲的存储位置。125、倒排结构:以键值和记录地址构成的索引结构。•主键:能够区别所有记录的键•次键:其他为次键•主索引:键值为主键的索引,即主键+记录地址;•次索引:键值为次键的索引,即次键+记录地址;13长度变化内存开销外在开销顺序存取速度按号随机存取速度按键随机存取速度定长变长定长变长定长变长顺序结构难小小快快快慢慢慢链接结构易小小快快慢慢慢慢索引结构易大大快快快慢慢慢Hash结构易小小快倒排结构易大大快快各种文件物理结构比较147.4文件目录文件控制块与目录项(等同)–文件控制块(FCB)文件存在的标志,其中保存系统管理文件需要的全部信息–目录项目录文件中的一项,内容为FCB用户在使用文件时出欲访问文件的名字,文件系统应当能够根据文件名字找到指定的文件,为此需要为系统中的文件建立目录。这种目录是用于查找文件的,称为文件目录。15FCB(FileControlBlock)文件名文件号文件主文件类型文件属性共享说明文件长度文件地址建立日期最后修改日期最后访问日期口令其它FCB创建:建立文件时FCB撤消:删除文件时167.4文件目录文件目录与目录文件(等同)–文件目录(用途角度看)用于检索文件的目录–目录文件(实现角度看)内容为目录项的文件目录项1=FCB1目录项2=FCB2……目录项n=FCBn文件目录17单级目录(Single-LevelDirectory)Asingledirectoryforallusers.缺点:1.重名的问题;2.文件分类的问题;目录文件普通文件18两级目录(Two-LevelDirectory)Separatedirectoryforeachuser.系统目录用户目录普通文件19passwdrootbinusrlibdevetcunixlpccviusersLiWangd1d2f1consolebinyaccsf2多级目录(Multi-LevelDirectory)根目录20文件目录的改进FCB–次部:(文件名,文件号)(UNIX16bytes)保存在目录文件中–主部:(文件名外的其它信息,标识主部与多少次部相应的链接计数)(UNIX32bytes)保存在外存固定区域改进的好处–可以提高查找速度(顺序查找)–可以实现文件链接(link)21文件目录的查找查找路径–由根目录开始查找–由当前目录开始查找查找算法–顺序查找(UNIX)–hash查找–对分查找(要求文件名排序)什么是根目录?什么是当前目录?227.5文件的共享共享目的–节省存储空间–进程相互通讯文件共享模式–不同时使用多个进程共用同一文件,但对一个共享文件来说,任意时刻只能有一个进程正在使用。–同时使用即同一时刻有多个进程要求使用同一个文件。–1)所有进程都不修改文件–2)某些里程要求修改被共享文件23注意:如果不加控制,读者所读出的数据可能既有修改之前的,也有修改之后的。解决方法:1、不允许读者与写者,或写者与写者同时找开同一文件,即读者与写者之间的互斥。降低系统的并发性,也会增加死锁的可能性2、允许读者与写者,或写者与写者同时打开同一文件,但操作系统要为用户提供相应的互斥手段,保证不发生冲突。24文件的共享文件共享的实现–公共目录–共享说明–连接d1userswanglif1f2i_number=15f215f115link(“/usr/users/wang/d1/f1”,“/usr/users/li/f2”)unlink(“/usr/users/wang/d1/f1”)257.6文件的保护、保密与安全保护–防止用户对文件进行非授权的访问保密–防止文件内容泄露安全–防止文件被破坏自然因素人为因素267.6.1文件的保护(Protection)文件主或文件创建者可以控制:–可以对文件做什么操作?–有谁来做?操作类型–Read(R)–Write(W)–Execute(E)–Append(A)–Delete(D)–Modify(M)271.存取控制矩阵f1……fj……fnu1a11….…a1j…….a1n…………………...uiai1……aij….…ain…………………...umam1…..amj….…amnRWEAMDaij:特点:权限规定细,过于繁琐值为1时,允许;值为0时,不允许282.访问权限说明:将用户分类RWERWERWE文件主同组用户其他用户i_mode在创建文件时给出,creat(filename,mode)其后文件主可以修改:chmod(filename,new_mode)293.分级目录规定不同用户对同一子目录的访问权限;若一个用户对目录无权限,则文件也不可以操作;307.6.2文件保密口令创建文件时用户规定一个口令,系统将其记在FCB中访问文件要求给出口令,并与FCB中口令比较密码保存时加密(key)读取时解密(key)317.6.3文件系统的安全Backup–定期将磁盘上文件复制到磁带上–发生故障时由磁带恢复(limitedrecovery)实现方法–海量转储:定期将磁盘上文件全部复制到磁带上–增量转储:每次只复制修改部分磁盘整理–利用转储和恢复可以对磁盘进行整理(使文件物理块连续,空闲盘块连续)327.7文件系统的实现内存所需表目(UNIX)–用户打开文件表u_ofile(每个进程一个)–系统打开文件表存于操作系统间,用户不能访问,唯一)–用户打开文件表与系统打开文件之间的联系外存空间的管理–空闲块表–空闲块链–位示图(Linux)FCB主部文件号共享计数修改标志打开方式读写指针系统打开文件表入口33文件操作一.常用的文件操作命令create创建一个新文件delete从系统目录中撤销一个文件rename在系统目录中改变文件的名字open打开文件在用户和文件(或设备)之间建立一个逻辑通路close关闭文件在用户和文件(或设备)之间撤销一个逻辑通路write写到一个文件(或设备)上read从一个文件(或设备)读入数据信息