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法,通常采用顺序检索法。
在树形目录中,为了加快文件检索速度,可设置当前目录,于是文件路径可以从当前目录开始查找。
在顺序检索法查找完成后,得到的是文件的逻辑地址。
文件在磁带上通常采用连续存放方法,在硬盘上通常不采用连续存放方法,在内存上采用随机存放方法
对文件的访问控制,常由用户访问权限和文件属性共同限制。
在 树形目录结构中,对于不同用户的文件,文件名可以不同也可以相同。
防止文件受损常采用备份的方法,而存取控制矩阵方法用于多用户之间的存取权限保护,
网址
题3. 在链接式文件中常用哪种链接方式? 为什么?
在链接式文件中常用常用的是显示链接方式,显示链接方式把用于链接文件各物理块的指针显式存放在一张链接表中。由于查找记录的过程是在内存中进行的,因而不仅显著地提高了检索速度,而且大大减少了访问磁盘的次数。由于分配给文件的所有盘块号都放在该表中,故把该表称为文件分配表FAT(File Allocation Table)
FAT中引入“卷”概念,支持讲一个物理磁盘分成四个逻辑磁盘,每个磁盘一个卷,每个卷都是能够单独被格式化和使用的逻辑单元,供文件系统分配空间使用
早期的FAT12文件系统
FAT12是以盘块为基本分配单位的。由于FAT是文件系统中最重要的数据结构,为了安全起见,在每个分区中都配有两张相同的文件分配表FAT1和FAT2。在FAT的每个表项中存放下一个盘块号,它实际上是用于盘块之间的链接的指针,通过它可以将一个文件的所有的盘块链接起来,而将文件的第一个盘块号放在自己的FCB中。
题4. 在文件分配表中为什么要引入“簇”的概念? 以“簇”为基本的分配单位有什么好处?
题5. 简要说明为什么要从FAT12发展为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(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),也称为文件控制字。
链接组织方式虽然解决了连续组织方式所存在的问题(即不便于随机访问),但又出现了另外两个问题,即:
索引组织方式的优点 支持直接访问。此外该方法也不会产生外部碎片。当文件较大时 索引分配方式无疑更好。
缺点 因为每当建立一个索引文件时,应为该文件分配一个索引块,将分配到该文件的所有盘块号记录其中。每个索引块可以存放数百个索引号。但对于中小型文件,其本身就只有数个到数十几个盘块,但仍需为此分配索引块。这无疑对索引块的利用率是极低的。
单级索引组织方式
索引分配图
在为一个大文件分配磁盘空间时,如果所分配出去的盘块的盘块号已经装满一个索引块时,OS须再为该文件分配另一个索引块,用于将以后继续为之分配的盘块号记录于其中。依此类推,再通过链指针将各索引块按序链接起来。
大大加快的对大型文件的查找速度。缺点,在访问一个盘块时,所需要启动的磁盘的次数随着索引级数的增加而增多,即使是对于小文件,也是如此。
题13. 试说明增量式索引组织方式。
超级块
回收
UNIX采用树形目录结构,文件信息存放在索引结点中。超级块是用来描述文件系统的
位示图方法是空闲块管理方法,用于管理磁盘空间.
为了实现虚拟文件系统(VFS), Linux主要抽象了四种对象类型:超级块对象、索引结点对象、目录项对象和文件对象.
可用于文件系统管理空闲磁盘块的数据结构是 I.位图 III.空闲磁盘块链 IV.文件分配表(FAT)
题17. 可从哪几方面来提高对文件的访问速度?
改进文件的目录结构以及检索目录的方法减少对目录的查找时间。
选取好的文件存储结构 提高对文件的访问速度。
提高磁盘的io速度 能将文件中的数据块快速地从磁盘传送到内存中。
提高磁盘 I/O 速度的方法
在内存中为磁盘盘块设置的一个缓冲区 其中保存了某些盘块的副本
题18. 在设计磁盘高速缓存时需要考虑哪些问题?
题19. 可以采取哪几种方式将磁盘高速缓存中的数据传送给请求者进程?
数据交付 直接将高速缓冲区中的数据传送给请求者进程。
指针交付 只将指向高速缓冲区中某区域的指针交付给请求者进程。
简而言之,就是空间换时间
题21. 试说明廉价磁盘冗余阵列RAID的主要优点。
磁盘容错技术(系统容错技术SFT):
第一级容错技术(SFT-Ⅰ)是最基本的一种磁盘容错技术,主要用于防止因磁盘表面缺陷所造成的数据丢失。它包含双份目录、双份文件分配表及写后读校验等措施。
1. 双份目录和双份文件分配表
在磁盘上存放的文件目录和文件分配表FAT,是文件管理所用的重要数据结构。为了防止这些表格被破坏,可在不同的磁盘上或在磁盘的不同区域中分别建立(双份)目录表和FAT。其中一份为主目录及主FAT,另一份为备份目录及备份FAT。一旦由于磁盘表面缺陷而造成主文件目录或主FAT的损坏时,系统便自动启用备份文件目录及备份FAT,从而可以保证磁盘上的数据仍是可访问的。
2. 热修复重定向和写后读校验
由于磁盘价格昂贵,在磁盘表面有少量缺陷的情况下,则可采取某种补救措施后继续使用。一般主要采取以下两个补救措施:
(1) 热修复重定向。
(2) 写后读校验方式。
1. 磁盘镜像(Disk Mirroring)
为了避免磁盘驱动器发生故障而丢失数据,便增设了磁盘镜像功能。为实现该功能,须在同一磁盘控制器下,再增设一个完全相同的磁盘驱动器,如图8-13所示。
2. 磁盘双工(Disk Duplexing)
如果控制这两台磁盘驱动器的磁盘控制器发生故障,或主机到磁盘控制器之间的通道发生故障,磁盘镜像功能便起不到数据保护的作用。因此,在第二级容错技术中,又增加了磁盘双工功能,即将两台磁盘驱动器分别接到两个磁盘控制器上,同样使这两台磁盘机镜像成对,如图8-14所示。
1、双机热备份模式
2、双机互为备份模式
3、公用磁盘模式
磁带盘
硬盘
光盘驱动器
1. 事务的定义
事务是用于访问和修改各种数据项的一个程序单位。事务也可以被看做是一系列相关读和写操作。
2. 事务记录(Transaction Record)
为了实现上述的原子修改,通常须借助于称为事务记录的数据结构来实现。这些数据结构被放在一个非常可靠的存储器(又称稳定存储器)中,用来记录在事务运行时数据项修改的全部信息,故又称为运行记录(Log)。
3. 恢复算法
由于一组被事务Ti修改的数据以及它们被修改前和修改后的值都能在事务记录表中找到,因此,利用事务记录表系统能处理任何故障而不致使故障造成非易失性存储器中信息的丢失。恢复算法可利用以下两个过程:
1. 检查点(Check Points)的作用
2. 新的恢复算法
1. 利用互斥锁实现“顺序性”
2. 利用互斥锁和共享锁实现顺序性
1. 重复文件的一致性
我们以UNIX类型的文件系统为例来说明如何保证重复文件的一致性问题。对于通常的UNIX文件目录,其每个目录项中含有一个ASCII码的文件名和一个索引结点号,后者指向一个索引结点。
当有重复文件时,一个目录项可由一个文件名和若干个索引结点号组成,每个索引结点号都是指向各自的索引结点。图8-18示出了UNIX类型的目录和具有重复文件的目录。
2. 链接数一致性检查
在UNIX类型的文件目录中,其每个目录项内都含有一个索引结点号,用于指向该文件的索引结点。对于一个共享文件,其索引结点号会在目录中出现多次。