文件目录
文件控制块
索引节点
目录结构
单级目录结构
两级目录结构
树形目录结构
无环图目录结构
总结
文件的基本操作
文件共享
硬链接
软链接
文件保护
口令保护
加密保护
访问控制
总结
习题
UNIX操作系统中,所有设备都被视为特殊的文件,因为UNIX操作系统控制和访问外部设备的方式和访问一个文件的方式是相同的
文件操作是将该文件的FCB存入内存的活跃文件目录表,而不是将文件内容复制到主存,找到指定文件目录是打开文件之前的操作。
一个文件被用户进程首次打开即被执行了 open操作,会把文件的FCB调入内存,而不会把文件内容读到内存中,只有进程希望获取文件内容时才会读入文件内容。
FCB
在创建一个文件时,为它建立一个FCB。一个文件对应一个FCB,而一个文件目录项就是一个FCB。
目录文件是FCB的集合,一个目录中既可能有子目录,又可能有数据文件,因此目录文件中存放的是子目录和数据文件的信息。
文件目录项即FCB,通常由文件基本信息、存取控制信息和使用信息组成。基本信息包括文件物理位置。文件目录项显然不包括FCB的物理位置信息。
文件的逻辑结构
流式文件 顺序文件 索引文件 索引顺序文件
文件结构包括逻辑结构和物理结构。逻辑结构是用户组织数据的结构形式,数据组织形式来自需求,而物理结构是操作系统组织物理存储块的结构形式。 因此说,逻辑文件的组织形式取决于用户,物理结构的选择取决于文件系统设计者针对硬件结构(如磁带介质很难实现链接结构和索引结构)所采取的策略
对索引文件存取时,必须先查找索引表。索引项只包含每条记录的长度和在逻辑文件中的起始位置。为每条记录都要有一个索引项,因此提高了存储代价。
索引表的表项中含有相应记录的关键字和存放该记录的逻辑地址;三级索引需要访问4次磁盘;随机存取时索引文件速度快,顺序存取时顺序文件速度快。
文件的物理结构
直接存取即随机存取,采用连续分配和索引分配的文件都适合于直接存取方式,只有采用链接分配的文件不具有随机存取特性。
不利于文件动态增长的是 顺序结构。
最容易造成存储碎片发生的是顺序结构。
文件的物理组织方式是由操作系统确定的。
索引结构适合随机访问且易于文件扩展。
为了实现快速随机播放,要保证最短的查询时间,即不能选取链表和索引结构,因此连续结构最优。
文件保护
用户访问权限是指用户有没有权限访问该文件,而用户优先级是指在多个用户同时请求该文件时应该先满足谁。比如,图书馆的用户排队借一本书,某用户可能有更高的优先级,即他排在队伍的前面,但 有可能轮到他时被告知他没有借阅那本书的权限。 文件的属性包括保存在FCB中对文件访问的控制信息。
相对于加密保护机制,访问控制机制的安全性较差。因为访问控制的级别和保护力度较小, 因此它的灵活性相对较高。若访问控制不由系统实现,则系统本身的安全性就无法保证。加密机制若由系统实现,则加密方法将无法扩展
可以把用户访问权限抽象为一个矩阵,行代表用户,列代表访问权限。这个矩阵有4行5列,1代表true, 0代表false,所以需要20位
当所读文件的数据不在内存时,产生中断(缺页中断),原进程进入阻塞态,直到所需数据从外存调入内存后,才将该进程唤醒。对于IL read系统调用通过陷入将CPU从用户态切换到核心态,从而获取操作系统提供的服务。对于HL要读一个文件,首先要用open系统调用
打开该文件。open中的参数包含文件的路径名与文件名,而read只需使用open返回的文件描述符,并不使用文件名作为参数。read要求用户提供三个输入参数:①文件描述符fd;②buf缓冲区首址;③传送的字节数no read的功能是试图从fd所指示的文件中读入n个字节的数据,并将它们送至由指针buf所指示的缓冲区中
文件目录
实现用户对文件的按名存取,系统先利用用户提供的文件名形成检索路径,对目录进行检索。 在顺序检索中,路径名的一个分量未找到,说明路径名中的某个目录或文件不存在,不需要继续检索。
目录的查询方式有两种:顺序检索法和Hash法,通常采用顺序检索法。
在树形目录中,为了加快文件检索速度,可设置当前目录,于是文件路径可以从当前目录开始查找。
在顺序检索法查找完成后,得到的是文件的逻辑地址。
文件在磁带上通常采用连续存放方法,在硬盘上通常不采用连续存放方法,在内存上采用随机存放方法
对文件的访问控制,常由用户访问权限和文件属性共同限制。
在 树形目录结构中,对于不同用户的文件,文件名可以不同也可以相同。
防止文件受损常采用备份的方法,而存取控制矩阵方法用于多用户之间的存取权限保护,
磁盘存储器的管理
外存组织方式
连续组织方式
链接组织方式(FAT 技术、NTFS 技术)
题3. 在链接式文件中常用哪种链接方式? 为什么?
在链接式文件中常用常用的是显示链接方式,显示链接方式把用于链接文件各物理块的指针显式存放在一张链接表中。由于查找记录的过程是在内存中进行的,因而不仅显著地提高了检索速度,而且大大减少了访问磁盘的次数。由于分配给文件的所有盘块号都放在该表中,故把该表称为文件分配表FAT(File Allocation Table)
FAT技术
FAT中引入“卷”概念,支持讲一个物理磁盘分成四个逻辑磁盘,每个磁盘一个卷,每个卷都是能够单独被格式化和使用的逻辑单元,供文件系统分配空间使用
早期的FAT12文件系统
FAT12是以盘块为基本分配单位的。由于FAT是文件系统中最重要的数据结构,为了安全起见,在每个分区中都配有两张相同的文件分配表FAT1和FAT2。在FAT的每个表项中存放下一个盘块号,它实际上是用于盘块之间的链接的指针,通过它可以将一个文件的所有的盘块链接起来,而将文件的第一个盘块号放在自己的FCB中。
题4. 在文件分配表中为什么要引入“簇”的概念? 以“簇”为基本的分配单位有什么好处?
- 如果把每个盘块(扇区)的容量增大n倍,则磁盘的最大容量便可增加n倍。但要增加盘块的容量是不方便和不灵活的。为此,引入了簇(cluster)的概念。
- 以“簇”为基本的分配单位的好处是,能适应磁盘容量不断增大的情况,还可以减少FAT表中的项数,使FAT表占用更少的存储空间,并减少访问FAT表的存取开销
题5. 简要说明为什么要从FAT12发展为FAT16? 又进一步要发展为FAT32?
- FAT12对磁盘容量限制的原因在于, FAT12表中的表项有限制,亦即最多只允许4096个。这样,随着磁盘容量的增加,必定会引起簇的大小和簇内碎片也随之增加。
- 由于FAT16表的长度只有65 35项,随着磁盘容量的增加,簇的大小也必然会随之增加,为了减少簇内零,也就应当增加FAT表的长度,为此需要再增加FAT表的宽度,这样也就由FAT16演变为FAT32。
FAT32 是FAT系列文件系统最后产物,FAT32每个簇固定4KB,每簇8个盘块,FAT32可以管理最大磁盘空间大到2TB。
FAT32缺点:随着文件分配表扩大,运行速度比FAT16格式慢,FAT有最小管理空间限制,FAT32卷必须至少有65537个簇,FAT32不支持小于512MB的分区,因此对于小分区,仍然需要使用FAT16或者FAT12。FAT32单文件长度不能大于4GB,最大问题,FAT32不向下兼容
优点:
⑴、FAT占空间小,可以调入内存
⑵、查找速度快,适合随机存取
(3)、同样不存在“碎片”,不需要连续外存空间
(4)、不需要事先知道文件长度
缺点:
⑴、FAT需要占用外存空间
对于1GB的硬盘,若每个盘块为512B,则有2M个盘块,每个盘块需要用21位(约3B)指示,共需要6MB外存空间
为了减少FAT占用外存的空间,分配单位可采用簇(1簇=8KB),此时,1GB硬盘需要0.26MB
⑵、FAT需要占用较大内存空间,对于大的硬盘,每次只调取部分FAT进入内存
⑶、不能高效直接存取
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8F6hVyjk-1664806426065)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20220909082902193.png)]
NTFS技术
NTFS(New Technology File System)是一个专门为Windows NT开发的、全新的文件系统,并适用于Windows 2000/XP及后续的Windows OS。
1.磁盘组织
NTFS是以簇作为磁盘空间分配和回收的基本单位的。一个文件占用若干个簇,一个簇只属于一个文件。这样,在为文件分配磁盘空间时,就无须知道盘块的大小,只要根据不同的磁盘容量,选择相应大小的簇,即使NTFS具有了与磁盘物理块大小无关的独立性。
2.文件的组织
在NTFS中,以卷为单位,将一个卷中的所有文件信息、目录信息以及可用的未分配空间信息,都以文件记录的方式记录在一张主控文件表MFT(Master File Table)中,该表是NTFS卷结构的中心,从逻辑上讲,卷中的每个文件作为一条记录,在MFT表中占有一行,其中还包括MFT自己的这一行。每行大小固定为1 B,每行称为该行所对应文件的元数据(metadata),也称为文件控制字。
索引组织方式
链接组织方式虽然解决了连续组织方式所存在的问题(即不便于随机访问),但又出现了另外两个问题,即:
- 不能支持高效的直接存取,要对一个较大的文件进行存取,须在FAT中顺序地查找许多盘块号;
- FAT需占用较大的内存空间,由于一个文件所占用盘块的盘块号是随机地分布在FAT中的,因而只有将整个FAT调入内存,才能保证在FAT中找到一个文件的所有盘块号。
索引组织方式的优点 支持直接访问。此外该方法也不会产生外部碎片。当文件较大时 索引分配方式无疑更好。
缺点 因为每当建立一个索引文件时,应为该文件分配一个索引块,将分配到该文件的所有盘块号记录其中。每个索引块可以存放数百个索引号。但对于中小型文件,其本身就只有数个到数十几个盘块,但仍需为此分配索引块。这无疑对索引块的利用率是极低的。
-
单级索引组织方式
索引分配图
- 多级索引组织方式
在为一个大文件分配磁盘空间时,如果所分配出去的盘块的盘块号已经装满一个索引块时,OS须再为该文件分配另一个索引块,用于将以后继续为之分配的盘块号记录于其中。依此类推,再通过链指针将各索引块按序链接起来。
大大加快的对大型文件的查找速度。缺点,在访问一个盘块时,所需要启动的磁盘的次数随着索引级数的增加而增多,即使是对于小文件,也是如此。
- 增量式索引组织方式
题13. 试说明增量式索引组织方式。
- 为了能较全面地照顾到小、中、大及特大型作业,可以采取多种组织方式来构成文件的物理结构。
- 如果盘块的大小为1 B或4 B,对于小文件(如1 B~10 B或4 B~40 B)而言,最多只会占用10个盘块,为了能提高对数量众多的小型作业的访问速度,最好能将它们的每一个盘块地址都直接放入文件控制块FCB(或索引结点)中,这样就可以直接从FCB中获得该文件的盘块地址。
- 对于大、中型文件,则可利用索引结点中的地址项i.addr(10)来提供一次间接地址。文件长度达到了4MB
- 而对于文件长度很大时,地址项i.addr(11)提供二次间接地址 文件长度达到了4GB。同理,三级间接地址 可以达到4TB
总结
文件存储空间的管理
空闲表法
空闲链表法
位示图法
成组链接法
超级块
分配
回收
总结
习题
UNIX采用树形目录结构,文件信息存放在索引结点中。超级块是用来描述文件系统的
位示图方法是空闲块管理方法,用于管理磁盘空间.
为了实现虚拟文件系统(VFS), Linux主要抽象了四种对象类型:超级块对象、索引结点对象、目录项对象和文件对象.
可用于文件系统管理空闲磁盘块的数据结构是 I.位图 III.空闲磁盘块链 IV.文件分配表(FAT)
提高磁盘 I/O 速度的方法
题17. 可从哪几方面来提高对文件的访问速度?
改进文件的目录结构以及检索目录的方法减少对目录的查找时间。
选取好的文件存储结构 提高对文件的访问速度。
提高磁盘的io速度 能将文件中的数据块快速地从磁盘传送到内存中。
提高磁盘 I/O 速度的方法
- 磁盘高速缓存(Disk Cache)
- 提前读
- 延迟写
- 优化物理块的分布
- 虚拟盘
- 廉价磁盘冗余阵列(RAID)
磁盘高速缓存
在内存中为磁盘盘块设置的一个缓冲区 其中保存了某些盘块的副本
题18. 在设计磁盘高速缓存时需要考虑哪些问题?
- (1) 如何将磁盘高速缓存中的数据传送给请求进程;
- (2) 采用什么样的置换策略; 置换策略
- (3) 已修改的盘块数据在何时被写回磁盘。周期性地写回磁盘
题19. 可以采取哪几种方式将磁盘高速缓存中的数据传送给请求者进程?
数据交付 直接将高速缓冲区中的数据传送给请求者进程。
指针交付 只将指向高速缓冲区中某区域的指针交付给请求者进程。
其他方法
- 提前读:如果是顺序方式访问,便可预知下一次要读的盘块。在读取当前块时候,把下一块也读入
- 延迟写:缓冲区的数据本该立即写回磁盘,但是考虑到可能被访问,改成不立即写会磁盘,而是挂在空闲缓冲区队列的末尾。直到这个缓冲区被使用,才写入磁盘
- 优化物理块的分布
- 虚拟盘
廉价磁盘冗余阵列(RAID)
- 并行交叉存取
- RAID分级
简而言之,就是空间换时间
题21. 试说明廉价磁盘冗余阵列RAID的主要优点。
- (1) 可靠性高,除了RAID 0级外,其余各级都采用了容错技术。当阵列中某一磁盘损坏时,并不会造成数据的丢失。此时可根据其它未损坏磁盘中的信息来恢复已损坏的盘中的信息。其可靠性比单台磁盘机高出一个数量级。
- (2) 磁盘I/O速度高,由于采取了并行交叉存取方式,可使磁盘I/O速度提高N-1倍。
- (3) 性能/价格比高,RAID的体积与具有相同容量和速度的大型磁盘系统相比,只是后者的1/3,价格也只是后者的1/3,且可靠性高。换言之,它仅以牺牲1/N的容量为代价,换取了高可靠性。
提高磁盘可靠性的技术
磁盘容错技术(系统容错技术SFT):
- 低级磁盘容错技术
- 中级磁盘容错技术
- 系统容错技术
第一级容错技术SFT-Ⅰ
第一级容错技术(SFT-Ⅰ)是最基本的一种磁盘容错技术,主要用于防止因磁盘表面缺陷所造成的数据丢失。它包含双份目录、双份文件分配表及写后读校验等措施。
1. 双份目录和双份文件分配表
在磁盘上存放的文件目录和文件分配表FAT,是文件管理所用的重要数据结构。为了防止这些表格被破坏,可在不同的磁盘上或在磁盘的不同区域中分别建立(双份)目录表和FAT。其中一份为主目录及主FAT,另一份为备份目录及备份FAT。一旦由于磁盘表面缺陷而造成主文件目录或主FAT的损坏时,系统便自动启用备份文件目录及备份FAT,从而可以保证磁盘上的数据仍是可访问的。
2. 热修复重定向和写后读校验
由于磁盘价格昂贵,在磁盘表面有少量缺陷的情况下,则可采取某种补救措施后继续使用。一般主要采取以下两个补救措施:
(1) 热修复重定向。
(2) 写后读校验方式。
第二级容错技术SFT-Ⅱ
1. 磁盘镜像(Disk Mirroring)
为了避免磁盘驱动器发生故障而丢失数据,便增设了磁盘镜像功能。为实现该功能,须在同一磁盘控制器下,再增设一个完全相同的磁盘驱动器,如图8-13所示。
2. 磁盘双工(Disk Duplexing)
如果控制这两台磁盘驱动器的磁盘控制器发生故障,或主机到磁盘控制器之间的通道发生故障,磁盘镜像功能便起不到数据保护的作用。因此,在第二级容错技术中,又增加了磁盘双工功能,即将两台磁盘驱动器分别接到两个磁盘控制器上,同样使这两台磁盘机镜像成对,如图8-14所示。
基于集群技术的容错功能
1、双机热备份模式
2、双机互为备份模式
3、公用磁盘模式
后备系统
-
磁带盘
-
硬盘
-
光盘驱动器
-
- 只读光盘驱动器CD-ROM 和 DVD-ROM
- 可读写光盘驱动器(刻录机):CD-RW、COMBO刻录机、DVD刻录机
数据一致性控制
事务
1. 事务的定义
事务是用于访问和修改各种数据项的一个程序单位。事务也可以被看做是一系列相关读和写操作。
2. 事务记录(Transaction Record)
为了实现上述的原子修改,通常须借助于称为事务记录的数据结构来实现。这些数据结构被放在一个非常可靠的存储器(又称稳定存储器)中,用来记录在事务运行时数据项修改的全部信息,故又称为运行记录(Log)。
3. 恢复算法
由于一组被事务Ti修改的数据以及它们被修改前和修改后的值都能在事务记录表中找到,因此,利用事务记录表系统能处理任何故障而不致使故障造成非易失性存储器中信息的丢失。恢复算法可利用以下两个过程:
- (1) undo〈Ti〉。该过程把所有被事务Ti修改过的数据恢复为修改前的值。
- (2) redo〈Ti〉。该过程能把所有被事务Ti修改过的数据设置为新值。
检查点
1. 检查点(Check Points)的作用
- 如前所述,当系统发生故障时,必须去检查整个Log表,以确定哪些事务需要利用redo〈Ti〉过程去设置新值,而哪些事务又需要利用undo〈Ti〉过程去恢复数据的旧值。
- 由于在系统中可能存在着许多并发执行的事务,因而在事务记录表中就会有许多事务执行操作的记录。随着时间的推移,记录的数据也会愈来愈多。因此,一旦系统发生故障,在事务记录表中的记录清理起来就非常费时。
2. 新的恢复算法
- 在引入检查点后,可以大大减少恢复处理的开销。
- 因为在发生故障后,并不需要对事务记录表中的所有事务记录进行处理,而只需对最后一个检查点之后的事务记录进行处理。
- 因此,恢复例程首先查找事务记录表,确定在最近检查点以前开始执行的最后的事务Ti。
- 在找到这样的事务后,再返回去搜索事务记录表,便可找到第一个检查点记录,恢复例程便从该检查点开始返回搜索各个事务的记录,并利用redo和undo过程对它们进行处理。
并发控制
1. 利用互斥锁实现“顺序性”
- 实现顺序性的一种最简单的方法,是设置一种用于实现互斥的锁,简称为互斥锁(Exclusive Lock)。
- 在利用互斥锁实现顺序性时,应为每一个共享对象设置一把互斥锁。
- 当某一事务Ti要去访问某对象时,应先获得该对象的互斥锁。若成功,便用该锁将该对象锁住,于是事务T便可对该对象执行读或写操作;而其它事务由于未能获得该锁,因而不能访问该对象。
- 如果Ti需要对一批对象进行访问,则为了保证事务操作的原子性,Ti应先获得这一批对象的互斥锁,以将这些对象全部锁住。
2. 利用互斥锁和共享锁实现顺序性
- 利用互斥锁实现顺序性的方法简单易行。目前有不少系统都是采用这种方法来保证事务操作的顺序性,但这却存在着效率不高的问题。
- 因为一个共享文件虽然只允许一个事务去写,但却允许多个事务同时去读;而在利用互斥锁来锁住文件后,则只允许一个事务去读。为了提高运行效率而又引入了另一种形式的锁——共享锁(Shared Lock)。
- 共享锁与互斥锁的区别在于:互斥锁仅允许一个事务对相应对象执行读或写操作,而共享锁则允许多个事务对相应对象执行读操作,但不允许其中任何一个事务对对象执行写操作。
重复数据的数据一致性问题
1. 重复文件的一致性
我们以UNIX类型的文件系统为例来说明如何保证重复文件的一致性问题。对于通常的UNIX文件目录,其每个目录项中含有一个ASCII码的文件名和一个索引结点号,后者指向一个索引结点。
当有重复文件时,一个目录项可由一个文件名和若干个索引结点号组成,每个索引结点号都是指向各自的索引结点。图8-18示出了UNIX类型的目录和具有重复文件的目录。
2. 链接数一致性检查
在UNIX类型的文件目录中,其每个目录项内都含有一个索引结点号,用于指向该文件的索引结点。对于一个共享文件,其索引结点号会在目录中出现多次。