China’s Software Industry August 2006 Instructor: Hengming Zou, Ph.D. Windows文件管理 Instructor: Hengming Zou, Ph.D. In Pursuit of Absolute Simplicity 求于至简,归于永恒
China’s Software Industry August 2006 内容提要 第1讲 文件概念与实现 第2讲 目录与文件系统
China’s Software Industry August 2006 第1讲 文件概念与实现 文件 文件实现
China’s Software Industry August 2006 文件 1.1 文件概念 1.2 文件命名 1.3 文件属性 1.4 文件分类 1.5 文件存取 1.6 文件结构
China’s Software Industry August 2006 1.1 文件概念 一个抽象机制:一组带标识的在逻辑上有完整意义的信息项的序列,这个标识为文件名 两种观点看待文件 用户观点 操作系统观点 文件名包括: 信息项:构成文件内容的基本单位 长度:单个字节,或多个字节 文件内容的意义:由文件的建立者和使用者解释 文件是一个抽象机制,它提供了一种把信息保存在存储介质上,而且便于以后存取的方法,用户不 必关心实现细节
China’s Software Industry August 2006 1.2 文件命名 给出文件命名规则: 长度,数字和特殊字符,大小写区分,支持文件扩展名(一个或多个) 例子:.bak .c .f77 .gif .hlp .html .mpg .o .ps .tex .txt .zip
China’s Software Industry August 2006 1.3 文件属性 包括两部分内容 文件数据 文件属性 常用的数种文件属性 文件包含的数据,称为文件数据 文件本身的说明信息或者属性信息,称为文件属性 常用的数种文件属性:文件名称,文件内部标识,文件物理位置,文件拥有者,文件权限,文件类 型,文件长度,文件时间
1.4 文件分类 按文件性质和用途分类 按信息保存期限分类 按文件的保护方式分类 按文件的逻辑结构分类 按文件的物理结构分类
China’s Software Industry August 2006 UNIX系统文件分类 普通文件(regular) 目录文件(directory) 特殊文件(special file) 普通文件(regular) 包含的是用户的信息,一般为ASCII或二进制文件 目录文件(directory) 管理文件系统的系统文件 特殊文件(special file) 字符设备文件:和输入输出有关,用于模仿串行I/O设备,例如终端,打印机,网络等 块设备文件:模仿磁盘
China’s Software Industry August 2006 1.5 文件存取 顺序存取 随机访问(直接访问) 索引访问(按键访问) 存储介质 磁带 磁盘 物理结构 连续结构 连续 链接 索引 存取方式 顺序存取 顺序 随机 顺序存取:从前到后的顺序对文件进行读写操作 随机访问(直接访问),按照任意的次序对文件进行读写操作 索引访问(按键访问),对文件中的记录按照某个数据项的值来排列,从而可以根据健值来快速存 取
China’s Software Industry August 2006 文件创建 create(文件名,访问权限,(,最大长度)) ① 检查参数的合法性 文件名是否符合命名规则:是→②,否则→错误返回 ② 检查同一目录下有无重名文件:无→③,有→错误返回 ③ 在目录中有无空闲位置:有→②,否则→不成功返回 有的系统可能要为此文件申请数据块空间 ④ 填写目录项内容: 文件名,用户名等,存取权限,长度置零,(,首址) ⑤ 返回
China’s Software Industry August 2006 文件打开 使用文件的第一步,任何一个文件使用前都要先打开,即把FCB送到内存 fd=open(文件路径名,打开方式)
文件打开的步骤 ① 根据文件路径名查目录,找到FCB主部; ② 根据打开方式、共享说明和用户身份检查访问合法性 ③ 根据文件号查系统打开文件表,看文件是否已被打开 是→共享计数加1 否则→将外存中的FCB主部等信息填入系统打开文件表空表项,共享计数置为1 ④ 在用户打开文件表中取一空表项,填写打开方式等,并指向系统打开文件表对应表项 返回信息:fd文件描述符,是非负整数,用于以后读写文件
文件读 read(文件名,(文件内位置),要读的长度,内存地址) ① 检查长度是否为正整数 ② 根据文件名查找目录,确定该文件在目录中的位置 隐含参数:进程主 ① 检查长度是否为正整数 是→②,否则→⑩ ② 根据文件名查找目录,确定该文件在目录中的位置 ③ 根据隐含参数中的进程主和目录中该文件的存储权限数据,检查是否有权读? 是→④,否则→⑩
文件读 ④ 由文件内位置与要读的长度计算最末位置,将其与目录中的文件长度比较,超过否? 是→⑩,否则→⑤ 也可将参数中的长度修正为目录中的文件长度 ⑤ 根据参数中的位置、长度和目录中的映射信息,确定块号、块数、块内位移与长度。(多次读盘) ⑥ 根据下一块号读块至内存缓冲区 ⑦ 根据块内位移长度取出要读的内容,送至参数中的内存目的地址
文件读 ⑧ 根据块内长度或起始块号+块数,确定还读下一块吗?同时确定下一块块号 是→⑤,否则→⑨ ⑨ 正常返回 ⑩ 错误返回,返回相应错误号
China’s Software Industry August 2006 文件读写定位 ① 由fd查用户打开文件表,找到对应的入口; ② 将用户打开文件表中文件读写指针位置设为新指针的位置,供后继读写命令存取该指针处文件内容
China’s Software Industry August 2006 其它文件操作 文件关闭 文件写 文件删除 文件截断
China’s Software Industry August 2006 1.7 文件结构 分为逻辑结构和物理结构 逻辑结构是从用户角度看文件,研究文件的组织形式 物理结构是从系统的角度来看文件,从文件在物理介质上的存放方式来研究文件
China’s Software Industry August 2006 2. 文件实现 主要考虑如何在外部存储介质上为创建文件而分配空间,为删除文件而回收空间,以及对空闲空间进行管理 主要考虑: 空间分配策略 空闲空间管理
China’s Software Industry August 2006 2.1 空间分配策略 (1)连续空间分配(顺序) 文件的信息存放在若干连续的物理块中 优点: 简单 支持顺序存取和随机存取 顺序存取速度快 所需的磁盘寻道次数和寻道时间最少
China’s Software Industry August 2006 文件目录 count 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 文件名 始址 块数 f count 0 2 tr 14 3 mail 19 6 list 28 4 f 6 2 tr mail 连续存取方式的示意图,途中的文件count,tr,mail等都是连续存储的 list
China’s Software Industry August 2006 缺点: 文件不能动态增长 预留空间:浪费 重新分配和移动 不利于文件插入和删除 外部碎片问题-存储压缩技术
China’s Software Industry August 2006 (2)链接结构 一个文件的信息存放在若干不连续的物理块中,各块之间通过指针连接,前一个物理块指向下一个物理块 优点:提高了磁盘空间利用率,不存在外部碎片问题 有利于文件插入和删除 有利于文件动态扩充
China’s Software Industry August 2006 文件目录 文件名 始址 末址 jeep 9 25 1 10 2 3 4 5 6 7 8 9 16 10 25 11 12 13 14 15 16 1 17 18 19 链接结构示意图,jeep文件从9开始,然后连接到16,接着依次是1,10,25,到这里结束。 20 21 22 23 24 25 -1 26 27 28 29 30 31
China’s Software Industry August 2006 缺点:存取速度慢,不适于随机存取 可靠性问题,如指针出错 更多的寻道次数和寻道时间 链接指针占用一定的空间 链接结构的一个变形: 文件分配表FAT
China’s Software Industry August 2006 (3)索引结构 一个文件的信息存放在若干不连续物理块中,系统为每个文件建立一个专用数据结构--索引表,并将这些块的块号存放在一个索引表中 一个索引表就是磁盘块地址数组,其中第i个条目指向文件的第i块
China’s Software Industry August 2006 文件目录 文件名 索引表地址 Jeep 19 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 9 16 1 10 25 -1 索引结构的示意图:文件jeep的存储信息都放在索引表的第19项中。 19
China’s Software Industry August 2006 优点: 保持了链接结构的优点,又解决了其缺点: 即能顺序存取,又能随机存取 满足了文件动态增长、插入删除的要求 能充分利用外存空间
China’s Software Industry August 2006 缺点:较多的寻道次数和寻道时间 索引表本身带来了系统开销 如:内外存空间,存取时间
China’s Software Industry August 2006 索引表组织 链接模式 多级索引 综合模式 链接模式:一个盘块一个索引表,多个索引表链接起来 多级索引:将一个大文件的所有索引表(二级索引)的地址放在另一个索引表(一级索引)中 综合模式:前两者的结合体
China’s Software Industry August 2006 UNIX文件系统采用的是多级索引结构(综合模式) UNIX中采用了三级索引结构后,文件最大可达16兆个物理块
China’s Software Industry August 2006 Unix文件系统多级索引结构的示意图 UNIX文件系统采用的是多级索引结构(综合模式)。每个文件的索引表为13个索引项,每项2个字节。 最前面10项直接登记存放文件信息的物理块号(直接寻址) 如果文件大于10块,则利用第11项指向一个物理块,该块中最多可放256个文件物理块的块号(一次 间接寻址)。对于更大的文件还可利用第12和第13项作为二次和三次间接寻址 UNIX中采用了三级索引结构后,文件最大可达16兆个物理块
China’s Software Industry August 2006 2.2 空闲空间管理 (1)空闲块表 将所有空闲块记录在一个表中,即空闲块表,有两项 (2)空闲块链表 把所有空闲块链成一个链 扩展:成组链接法
China’s Software Industry August 2006 第一组各块块号与总块数 文件存储设备 最后组 第三组 第二组 第一组 最后组的块号与总块数 50块 50块 49块 空闲空间的管理示意图 左边是文件资源表,其中记录了最后组的块号和总块数 右边是实际的存储设备,在每一组后面记录改组的各块块号和总块数 第二组各块块号与总块数 倒数第二组各块块号与总块数 文件资源表
China’s Software Industry August 2006 分配和回收的算法 1.分配一个空闲块 查L单元内容(空闲块数): 当空闲块数>1 i : =L+空闲块数; 从i单元得到一空闲块号; 把该块分配给申请者; 空闲块数减1。 当空闲块数=1 取出L+1单元内容(一组的第一块块号或0); 其值=0 无空闲块,申请者等待 不等于零 把该块内容复制到专用块; 该块分配给申请者; 把专用块内容读到主存L开始的区域。
China’s Software Industry August 2006 分配和回收的算法(续) 2.归还一块 查L单元的空闲块数; 当空闲块数<100 空闲块数加1; j : =L+空闲块数; 归还块号填入j单元。 当空闲块数=100 把主存中登记的信息写入归还块中; 把归还块号填入L+1单元; 将L单元置成1。
China’s Software Industry August 2006 (3)位图法 用一串二进制位反映磁盘空间中分配使用情况, 每个物理块对应一位, 分配物理块为1,否则为0 申请物理块时,可以在位示图中查找为0的位,返回对应物理块号; 归还时;将对应位转置0 描述能力强,适合各种物理结构
China’s Software Industry August 2006 计算公式: 已知字号i,位号j 块号=i×字长+j 已知块号: 字号=[ 块号/字长] 位号=块号 mod 字长
China’s Software Industry August 2006 已知块号,则磁盘地址: 柱面号=[块号/(磁头数×扇区数)] 磁头号=[(块号mod (磁头数×扇区数))/扇 区数] 扇区号=(块号mod (磁头数×扇区数))mod 扇区数 已知磁盘地址: 块号=柱面号×(磁头数×扇区数)+磁头号×扇区数+扇区号
小测验 文件属性包含哪两个部分的内容? A. 文件数据 B. 文件本身的说明信息 C. 文件类型 D. 文件长度 下列哪一类不属于按文件的物理结构分类? A. 顺序(连续)文件 B. 链接文件 C. 索引文件 D. 记录文件 磁带所采取的存取方式是 A. 顺序 B. 随机 Unix 采用的是 A. 一级索引结构 B. 二级索引结构 C.多级索引结构
习题 从用户观点和操作系统观点看文件各有什么特点? 按物理结构文件可以如何分类,按文件的逻辑结构如何分类? 请列举常用的空间分配策略及其优缺点。
China’s Software Industry August 2006 第2讲 目录与文件系统 目录的概念与实现 文件系统
1. 目录概念与实现 目录 目录概念 目录功能 目录结构 目录操作 目录实现
China’s Software Industry August 2006 1.1目录概念 文件控制块FCB 文件控制块是文件存在的标志 文件控制块的主要内容 文件目录 目录项 目录文件 文件控制块是操作系统为管理文件而设置的数据结构,存放了为管理文件所需的所有有关信息(文 件属性) 文件控制块是文件存在的标志 文件控制块的内容: 文件名,文件号,用户名,文件地址,文件长度,文件类型,文件属性,共享计数,文件的建立 日期,保存期限,最后修改日期,最后访问日期,口令,文件逻辑结构,文件物理结构 文件目录:把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合 目录项:构成文件目录的项目(目录项就是FCB) 目录文件:为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存,这个文件就叫 目录文件
文件控制块(FCB):文件控制块是操作系统为管理文件而设置的数据结构,存放了为管理文件所需的所有有关信息(文件属性) 文件控制块是文件存在的标志
文件目录:把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合 目录文件:为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存,这个文件就叫目录文件
文件控制块的内容: 文件名,文件号,用户名,文件地址,文件长度,文件类型,文件属性,共享计数,文件的建立日期,保存期限,最后修改日期,最后访问日期,口令,文件逻辑结构,文件物理结构
文件目录:把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合 目录文件:为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存,这个文件就叫目录文件
China’s Software Industry August 2006 1.2 目录功能 实现“按名操作” 提高检索速度 允许文件同名 允许文件共享
China’s Software Industry August 2006 1.3 目录结构 (1)一级目录结构 为所有文件建立一个目录文件(组成一线性表) 优点:简单,易实现 缺点: 限制了用户对文件的命名 文件平均检索时间长 限制了对文件的共享
单级目录 根目录 ZImage bash more
China’s Software Industry August 2006 (2)二级目录结构 为改变一级目录文件目录命名冲突,并提高对目录文件检索速度而改进 目录分为两级: 一级称为主文件目录 二级称为用户文件目录(又称用户子目录) 目录分为两级:一级称为主文件目录,给出用户名,用户子目录所在的物理位置;二级称为用户文 件目录(又称用户子目录),给出该用户所有文件的FCB
China’s Software Industry August 2006 优点:解决了文件重名问题和文件共享问题 用户名|文件名 查找时间降低 缺点:增加了系统开销
China’s Software Industry August 2006 UFD(user1) 普通文件 PCB1 ABC PCB2 LMN MFD 用户名 子目录指针 User1 UFD(user2) User2 PCB1 XYZ 二级目录结构示意图 如图所示 目录分为两级:一级称为主文件目录,给出用户名,用户子目录所在的物理位置;二级称为用户文 件目录 PCB2 ABC
China’s Software Industry August 2006 root c db db dbb a b dba 二级目录结构示意图 dbba … a b … a x y
China’s Software Industry August 2006 (3)多级目录结构(树型目录) 优点: 层次结构清晰,便于管理和保护;有利于文件分类;解决重名问题;提高文件检索速度;能进行存取权限的控制 缺点: 查找一个文件按路径名逐层检查,由于每个文件都放在外存,多次访盘影响速度
China’s Software Industry August 2006 多级目录结构示意图,即树型结构的示意图
(4)无环结构目录 是多级层次目录的推广 为了允许文件或者目录可以被不同的目录共享 不同的主目录可以共享一个文件或者分目录 优点:比树结构灵活,可以实现共享 缺点:实现复杂
.Zncom 根目录 root usr Project1 bash conf Luo readme L2.cc Z1.c Z2.cc
(5)图状结构目录 在无环结构目录基础上形成的一种目录 无环目录要求目录结构中没有环 图状结构中存在环
根目录 root usr .Zncom Project1 bash conf Luo readme L2.cc Z1.c Z2.cc Z3.cc
China’s Software Industry August 2006 1.4 目录操作 目录创建 目录删除 文件检索 目录打开 目录关闭 这是5种主要的目录操作
China’s Software Industry August 2006 1.5 目录实现 线性表算法 哈希表算法 其它算法 如B+树 NTFS文件系统就采用了B+树 线性表算法 每个表项由文件名和指向数据块的指针组成,当要搜索时,采用线性搜索 实现简单但运行耗时,寻找文件需要做线性搜索 哈希表算法 目录项信息存在一哈希表中 搜索时根据文件名计算哈希值 得到一个指向表中文件的指针
China’s Software Industry August 2006 2. 文件系统 2.1 文件系统模型 2.2 文件系统可恢复性 2.3 文件系统安全性
China’s Software Industry August 2006 2.1 文件系统模型 文件系统的层次模型 SUN虚拟文件系统模型 Windows文件系统模型 常用文件系统
China’s Software Industry August 2006 文件系统的层次模型 文件系统接口 逻辑文件 文件组织模块层 基本文件系统层 基本I/O控制层 这是文件系统中常用的四层模型 包括基本IO控制层,基本文件系统层,文件组织模块层,逻辑文件系统层 下文将对该图进行详细介绍 物理磁盘
China’s Software Industry August 2006 SUN虚拟文件系统模型 SUN公司提出的虚拟文件系统(VFS),通过VFS可以支持多种文件系统,如EXT2,FAT,NTFS等等 VFS有两个接口:一个是与用户的接口,一个是与特定文件系统的接口
China’s Software Industry August 2006 Linux的VFS 索引节点 高速缓存 VFS 目录高速缓存 EXT2 FAT Minix Linux文件系统包括三个部分 1 VFS,这是Linux文件系统对外的接口 2 高速缓存去区, 3 真正的底层文件系统,如Ext2等 缓冲区缓存 磁盘驱动
China’s Software Industry August 2006 Windows文件系统模型 I/O API 过滤驱动程序 I/O管理器 NT管理器 文件系统驱动程序 过滤驱动程序 中间驱动程序 Windows Server 2003zhong ,IO管理器负责处理所有设备的IO操作,IO管理器通过设备驱动程序, 中间驱动程序,过滤驱动程序,文件系统驱动程序等等完成IO操作 过滤驱动程序 设备驱动程序 HAL 物理设备
China’s Software Industry August 2006 2.2 文件系统可恢复性 (1) 谨慎写(careful write) 对写操作进行逐个排序的写方式 更新磁盘的请求→按一定顺序完成几项子操作→更新磁盘 FAT文件系统:通写(write-through) 磁盘修改立即写到磁盘 速度性能差
China’s Software Industry August 2006 (2)延迟写(lazy-write) 利用回写(write back)高速缓存的方法得到高速 可恢复性差 (3)可恢复(transaction log) 采用事务日志来实现文件系统的写入 既考虑安全性,又考虑速度性能 例:NTFS
China’s Software Industry August 2006 2.3 文件系统安全性 (1)安全性 确保未经授权的用户不能存取某些文件。涉及到技术、管理、法律、道德和政治等问题
China’s Software Industry August 2006 安全性的两个重要方面 数据丢失 灾难 硬件或软件故障 人的失误 入侵者:积极的 或 消极的 非技术人员的偶然窥视 入侵者的窥视 明确的偷窃企图 商业或军事间谍活动 可通过备份解决(存放在另一处)数据丢失问题 设计安全时要考虑是面对的哪一类入侵者
China’s Software Industry August 2006 (2)著名的安全缺陷 UNIX lpr mkdir abc TENEX OS/360 Logic bomb:逻辑炸弹 Morris:蠕虫
China’s Software Industry August 2006 (3)一般性的安全攻击 请求内存页、磁盘空间和磁带并读取其内容 尝试非法的系统调用(非法参数 、不合适的参数) 在登录过程中键入DEL,BREAK 写一段程序欺骗用户…… 病毒
China’s Software Industry August 2006 (4)安全性的设计原则 系统设计必须公开 缺省属性应该不可访问 检查当前权限 给每个进程赋予一个最小的可能权限 保护机制应简单一致,嵌入到系统底层 采取的方案必须可接受
观察与体验5-1: 查看SAM键和SECURITY键 China’s Software Industry August 2006 观察与体验5-1: 查看SAM键和SECURITY键 目的:通过注册表查看SAM键和 SECURITY键 操作步骤:运行regedit打开注册表 通过\编辑\查找找到SAM键和 SECURITY键的值 注意:SAM键和SECURITY键是受安全设置保护的,请通过系统帐号访问
China’s Software Industry August 2006 SAM键图示:
China’s Software Industry August 2006 SECURITY键图示:
小测验 目录的功能包括 A. 实现“按名操作” B. 提高检索速度 C. 允许文件同名 D. 允许文件共享 下列哪几种文件系统典型的写入方式? A. 谨慎写 B. 延迟写 C. 中断写 在文件系统的层次模型中,文件组织模块层在基本文件系统层的下面(对/错)
习题 请列出目录的基本功能。 文件目录有几种实现方式?它们各自的优缺点是什么? 文件系统有几种写入设计方式?它们各自有什么特点? 请描述文件系统的层次模型。
China’s Software Industry August 2006 第3讲 Windows文件系统概述 概述 FSD( File System Driver 文件系统驱动程序) FSD与文件系统操作 FAT文件系统
China’s Software Industry August 2006 1. 概述 Windows Server 2003目前支持的文件系统 CDFS与UDF FAT12,FAT16与FAT32 NTFS
Windows文件系统概述:CDFS CDFS(CDROM File System,只读光盘文件系统)是1988年为只读光盘所制定的文件系统标准。CDFS比较简单,但是有一定的限制: 文件和目录名的长度必须少于32个字符。 目录树的深度不能超过8层。 现已过时,已被UDF标准所代替。 FSD: \[WinRoot]\System32\Drivers\Cdfs.sys
Windows文件系统概述:UDF UDF(Universal Disk Format,通用磁盘格式)是于1995年由OSTA(Optical Storage Technology Association,光学存储技术协会)为光磁盘存储媒介如DVD-ROM等所制定的,用来代替CDFS,比CDFS更加灵活。UDF具有如下特点: 文件名区分大小写 文件名可以有255字符长 最长路径为1023个字符 FSD:\[WinRoot]\System32\Drivers\Udfs.sys
Windows文件系统概述:FAT FAT(File Allocation Table,文件分配表)文件系统属遗留文件系统。为了向后兼容,也为了方便用户升级,Windows 2000/XP/2003仍然提供对FAT的支持 每一种FAT文件系统都用一个数字来标识磁盘上簇号的位数。 例如,FAT12的簇标识为12位(二进制数),这限制了它的单个分区最多只能存储2 12(=4096)个簇,而FAT 12在Windows 2000/XP中的簇大小在512B与8KB之间,这意味着FAT12卷的大小至多只有32M。 FSD:\Winnt\System32\Drivers\Fastfat.sys
Windows文件系统概述:NTFS NTFS是Windows 2000/XP的本机文件系统 NTFS的簇标识为64位 文件与目录的安全性 文件与目录的压缩 文件与目录的加密 文件与目录的可恢复性 FSD:\[WinRoot]\System32\Drivers\ntfs.sys
China’s Software Industry August 2006 2. FSD 分为本地FSD和远程FSD 本地FSD:允许用户访问本地计算机的数据 远程FSD:允许用户通过网络访问远程计算机上的数据
China’s Software Industry August 2006 本地FSD 应用程序接口 用户态 I/O管理器 核心态 文件系统驱动程序 当开始访问某个卷时,IO管理器将调用FSD来进行卷识别。识别过程还包含对文件系统一致性的检 查 识别完成后,本地FSD将创建一个设备对象以表示所装载的文件系统。IO管理器通过卷参数块( VPB)为由存储管理器所创建的卷设备对象和由FSD创建的额设备对象之间建立连接。该VPB连接 将IO管理器的有关卷的IO请求交给FSD设备对象。 存储设备驱动 物理磁盘 物理设备
China’s Software Industry August 2006 远程FSD 客户端 服务器端 用户态 应用程序 核心态 用户态 物理磁盘 远程FSD(服务器) 核心态 I/O管理器 本地FSD 由两部分组成:客户端FSD和服务器段FSD。 客户端FSD首先接收来自应用程序的IO请求,然后转换为网络文件系统协议命令,然后再通过网络 发送给服务器端 FSD。服务器端FSD监听网络命令,接收网络文件系统协议命令并转交给本地FSD执行。 存储设备驱动 远程FSD(重定向器) 物理设备
China’s Software Industry August 2006 3. FSD与文件系统操作 3.1 FSD的作用 3.2 显式文件I/O 3.3 高速缓存迟后写 3.4 高速缓存超前读 3.5 内存脏页写 3.6 内存缺页处理
3.1 FSD的作用 Windows文件系统的有关操作都通过FSD来完成 显示文件I/O 高速缓存超前读 内存脏页写 内存缺页处理
China’s Software Industry August 2006 FSD的作用 NtReadFile() NtWriteFile() 缺页中断 NtCreateSection() IRP 文件系统 驱动程序 缺页事件处理机 虚拟内存管理器 IoPageReadFile() IoAsynchronousPageWrite() 脏页写 非缓存页面I/o MmCreateSection() MmFlushSection() 该图显示了FSD可能的作用位置 主要有一下几个地方会用到FSD:显示文件IO,高速缓存迟后写,高速缓存超前读,内存脏页写与 内存缺页处理 CcCopyRead() CcCopyWrite() 存储设备 驱动程序 延迟写 缓存管理器 提前读 FastIoRead() FastIoWrite()
3.2 显式文件I/O CreateFile(ReadFile,WriteFile)(Win32API) => NtCreateFile =>通过ObOpenObjectByName解析名称字符串 =>通过IopParseDevice创建IRP(I/O request packet,I/O请求包) =>通过IoCallDriver将IRP交给合适的FSD以创建文件
China’s Software Industry August 2006 显式文件I/O ReadFile =>NtReadFile =>将已打开文件的句柄转换成文件对象指针 =>检查访问权限 =>创建IRP读请求 =>通过IoCallDriver将IRP交给合适的FSD =>如可在高速缓存,则应检查PrivateCacheMap =>如有效则表示该文件已有私有高速缓存映射结构; =>如无效则表示尚没有私有高速缓存映射结构,需要调用CcInitializeCacheMap来初始化 =>通过CcCopyRead从高速缓存中读取数据。如果数据还不在高速缓存中,CcCopyRead会引起缺页中断,并间接调用MmAccessFault
3.3 高速缓存延迟后写 高速缓存管理器的迟后写线程定期地对高速缓存中已被修改的页面进行写操作。这是通过调用内存管理器的MmFlushSection函数来完成的。具体地说,MmFlushSection通过IoAsynchronousPageWrite将数据送交FSD
China’s Software Industry August 2006 3.4 高速缓存超前读 高速缓存管理器的超前读线程负责提前读数据.超前读线程通过分析已作的读操作,来决定提前读多少。提前读线程是通过缺页中断来完成的
3.5 内存脏页写 内存脏页写线程定期地清洗缓冲区。该线程通过IoAsynchronousPageWrite来创建IRP写请求,这些IRP被标识为不能通过高速缓存,因此它们被FSD直接送交到磁盘存储驱动程序
3.6 内存缺页处理 以上在进行显式I/O操作与高速缓存提前读时,都会用到内存缺页处理。另外,只要应用程序访问内存映射文件且所需页面不在内存时,也会产生内存缺页处理。内存缺页处理MmAccessFault通过IoPageRead向文件所在文件系统发送IRP请求包来完成
China’s Software Industry August 2006 4. FAT文件系统 4.1 简介 4.2 卷的结构 4.3 引导扇区 4.4 文件分配表 4.5 FAT根目录 4.6 FAT32
China’s Software Industry August 2006 4.1 FAT文件系统简介 File Allocation Table(文件分配表) 以FAT格式化的卷以簇为单位进行分配,默认大小由卷大小决定 每一种FAT文件系统都用一个数字来标识磁盘上簇号的位数: FAT12/FAT16 FAT32
China’s Software Industry August 2006 FAT不同版本间的区别 系统 文件分配表中每个簇的字节数 簇界限 FAT12 1.5 小于4087簇 FAT16 2 界于4087和65526簇之间(包括边界) FAT32 4 界于65526和268,435,456簇之间(包括边界)
China’s Software Industry August 2006 4.2 FAT卷的结构 该图说明FAT文件系统是如何组织一个卷的 典型FAT卷是由图中的引导区,文件分配表(多个),根目录,其它目录和文件组成。
China’s Software Industry August 2006 4.3 引导扇区 引导扇区(Boot Sector)包含用于描述卷的各种信息,利用这些信息才能访问文件系统 X86上,主引导记录(Master Boot Record)使用系统分区上的引导扇区来装载操作系统的核心文件
China’s Software Industry August 2006 分区引导扇区中的域 字节偏移量 (16进制) 域长 样值 含义 00 3字节 EB 3C 90 转移指令 03 8字节 MSDOS5.0 文本格式的OEM名 0B 25字节 BIOS参数块 (BIOS Parameter Block, BPB) 24 26字节 扩展BIOS参数块(Extended BIOS Parameter Block, EBPB) 3E 448字节 引导代码 1FE 2字节 55 AA 扇区结束标记
China’s Software Industry August 2006 引导扇区(续) 引导扇区的BIOS参数块包含了卷的信息 逻辑扇区号 允许同时访问的文件卷数目上限可以由config.sys文件中的LASTDRIVE= 语句指定 簇(cluster):由若干个扇区组成。在一个文件卷中从0开始对每个簇编号 引导扇区的BIOS参数块包含了卷的信息,包括:簇大小,根目录项数目,FAT表大小,磁盘参数( 每道扇区数,磁头数),文件卷中的扇区总数,簇编号长度等 逻辑扇区号是一个三元组(柱面号,磁头号,扇区号)->一个文件卷中从0开始对 每个扇区编号,优点:屏蔽了物理磁盘参数的不同
China’s Software Industry August 2006 引导扇区-BIOS参数块 字节偏移量(16进制) 域长 样值(16进制) 含义 0B 2字节 00 02 每扇区字节数 0D 1字节 08 每簇扇区数 0E 01 00 保留扇区数:从分区引导扇区到第一个文件分配表开始的扇区数 10 02 文件分配表数 11 根目录项数 13 00 00 小扇区数:卷上的扇区数,如果该数适合于16位(65535)的话 15 F8 介质类型:F8表明为硬盘,F0表明为软盘 16 C9 00 每个文件分配表的扇区数 18 3F 00 每磁道扇区数 1A 10 00 磁头数 1C 4字节 3F 00 00 00 隐藏扇区数 20 51 42 06 00 大扇区数:如果小扇区数域的取值为0,该域包含的是卷中的扇区总数
引导扇区-扩展BIOS参数块(EBPB) 字节偏移量(16进制) 域长 样值(16进制) 含义 24 1字节 80 物理磁盘号:软盘从0x00开始编号,硬盘从0x80开始编号 25 00 当前磁头:FAT文件系统不使用 26 29 签名:必须是0x28或0x29,以便被Windows NT所识别 27 4字节 CE 13 46 30 卷序列号:当格式化卷时创建的一个唯一的数字 2B 11字节 NO NAME 卷标:该域用于存放卷标,但是卷标目前是在根目录中作为一个特别文件而存放的 36 8 字节 FAT16 系统ID:根据磁盘的格式,该域的取值为FAT12或FAT16
China’s Software Industry August 2006 4.4 文件分配表 FAT表:两个镜像,互为备份。文件卷中的每个簇均对应一个FAT表项,文件分配采用链式分配方法 每个FAT表项所占位数是簇编号的位数 右图是文件分配表示意 簇编号的位数的值是(以FAT12为例): 0:表示该簇空闲 FF7h:物理坏扇区 FF8h~FFFh:表示该簇是文件的最后一个簇 其他值:表示该簇被文件占用,而且表项中的值是文件下一个簇的编号
China’s Software Industry August 2006 4.5 FAT根目录 目录:是目录项的顺序文件(即大小相同的记录序列),不对目录项排序 若目录中包含的文件数目较多,则搜索效率低 每个目录项大小为32字节 在目录项中,若第一个字节为 E5h,则表示空目录项;若为 05h,则表示文件名的第一个字符为 E5h。 文件名不区分大小写 若目录中包含的文件数目较多,则搜索效率低 每个目录项大小为32字节,其内容包括:文件名(8+3个字符),属性(包括文件、子目录和文件卷标识),最后一次修改时间和日期,文件长度,第一个簇的编号 在目录项中,若第一个字节为 E5h,则表示空目录项;若为 05h,则表示文件名的第一个字符为 E5h。 文件名不区分大小写 下图是fat目录示意
China’s Software Industry August 2006 FAT根目录 目录项 偏移 域长 含义 00h 8 文件名 08h 3 文件扩展名 0Bh 1 文件属性字节 0Ch 10 保留 16h 2 最后一次修改的时间 18h 最后一次修改的日期 1Ah 起始簇号 1Ch 4 文件大小
China’s Software Industry August 2006 FAT根目录 文件属性字节 Bit 7-6 5 4 3 2 1 保留 归档 目录 卷标 系统 隐藏 只读
China’s Software Industry August 2006 4.6 FAT32 主要应用于Windows 9x系统 FAT32的根目录区(ROOT区)不再是固定区域、固定大小,看作数据区的一部分, 采用与子目录文件相同的管理方式 目录项仍占32字节 支持长文件名格式 支持Unicode 无法支持高级容错特性,不具有内部安全特性 FAT32的根目录区(ROOT区)不再是固定区域、固定大小,而是可以看作数据区的一部分, 采用与子目录文件相同的管理方式。根目录下的文件数目不再受最多256的限制 目录项仍占32字节,可以是文件目录项、子目录项、卷标项(仅根目录有)、已删除目录项、长文件名目录项等 支持长文件名格式 支持Unicode 无法支持高级容错特性,不具有内部安全特性,因而仍然无法达到高性能文件系统的要求
China’s Software Industry August 2006 FAT32-标准BPB 字节偏移量(16进制) 域长 含义 0B 2字节 每扇区字节数 0D 1字节 每簇扇区数 0E 保留扇区数 10 文件分配表数 11 根目录项数 13 小扇区数/00 00 15 介质类型:F8表明为硬盘,F0表明为软盘 16 每个文件分配表的扇区数/ 00 00 18 每磁道扇区数 1A 磁头数 1C 4字节 隐藏扇区数 20 大扇区数/总扇区数 FAT32文件系统的BIOS参数块
China’s Software Industry August 2006 FAT32-扩展BPB 字节偏移量(16进制) 域长 含义 24 4字节 每个FAT的FAT32扇区数 28 2字节 指定当前激活的FAT 2A 版本号 2C 根目录起始簇号 30 指向文件系统信息扇区 32 指向引导扇区副本扇区 34 12字节 保留 40 1字节 物理磁盘号 41 42 签名:必须是0x28或0x29 43 卷序列号 47 11字节 卷标 52 8字节 文件系统ID:FAT32 FAT32文件系统的扩展BIOS参数块
China’s Software Industry August 2006 FAT32-长文件名目录项格式 偏移 长度 含义 00h 1 Bits 0-5 give the LFN part number, bit 6 is set if this is the last entry for the file 01h 10 1st 5 letters of LFN entry 0Bh 0Fh 0Ch Reserved set to 0 0Dh Checksum 0Eh 12 Next 6 letters of LFN entry 1Ah 2 1Ch 4 Last 2 letters of LFN entry
小测验 Windows Server 2003 目前不支持哪种文件系统? A. CDFS B. UDF C. Ext2 D. FAT12 (对/错) FAT文件分配表位于卷的中间(对/错)
习题 与FSD相关的文件操作有那些? 请解释本地FSD和远程FSD的基本过程。 简要介绍FAT文件系统的特点。 引导扇区和主引导记录分别有什么用途?
China’s Software Industry August 2006 第4讲 NTFS文件系统 概述 NTFS文件系统驱动程序 NTFS的磁盘结构 NTFS的文件组织 NTFS目录组织与索引 NTFS数据压缩 NTFS可恢复性 NTFS安全性
China’s Software Industry August 2006 1. 概述 NTFS为改进的多级目录结构,支持文件别名 NTFS文件由多个文件属性构成,每个属性由属性名和属性流(stream, 简单字节队列)组成 NTFS支持用户权限管理 NTFS文件支持数据压缩功能 NTFS卷结构支持容错功能 用户可自定义属性 NTFS支持用户权限管理 有5种权限划分:读、写、运行、删除和修改权限 支持按用户、用户组分配权限
China’s Software Industry August 2006 概述 NTFS具有众多优点,这主要是因为它在磁盘上独特的实现方法 如何划分磁盘 如何组织文件与目录 如何存储文件属性与数据 如何压缩文件数据等
2. NTFS文件驱动程序 对NTFS的访问是通过I/O管理器来完成的
China’s Software Industry August 2006 核心态 I/O管理器 日志文件服务器 NTFS FSD 高速缓存管理器 卷管理器 对NTFS的访问通过IO管理器来完成,IO管理器将IO请求送到NTFS FSD去执行。这一过程与高速缓 存管理器,内存管理器,日志文件服务器,卷管理器,磁盘驱动程序等一起协同完成IO操作 虚拟内存管理器 磁盘驱动 物理磁盘
China’s Software Industry August 2006 3. NTFS的磁盘结构 3.1 卷 3.2 簇
China’s Software Industry August 2006 3.1 卷 卷是建立在磁盘分区上 一个磁盘可以有多个卷,一个卷也可以有多个磁盘组成 (已格式化过的)卷上的数据可分为:元数据和用户数据
China’s Software Industry August 2006 3.2 簇 簇作为磁盘空间分配和回收的基本单位 簇的大小是用户在使用Format命令或其他的格式化程序格式化卷时确定的 NTFS使用LCN(Logical Cluster Number,逻辑簇号)和VCN(Virtual Cluster Number,虚拟簇号)来进行簇的定位 簇的大小是用户在使用Format命令或其他的格式化程序格式化卷时确定的。簇因子随卷的大小而不 同,但都是物理扇区的整数倍,通常是2的幂 NTFS使用LCN(Logical Cluster Number,逻辑簇号)和VCN(Virtual Cluster Number,虚拟簇号 )来进行簇的定位 LCN是对整个卷中所有的簇从头到尾所进行的简单编号 VCN是对属于特定文件的簇从头到尾进行编号,以便于引用文件中的数据
China’s Software Industry August 2006 4. NTFS文件组织 4.1 文件名称 4.2 主控文件表 4.3 文件记录 4.4 常驻属性与非常驻属性
China’s Software Industry August 2006 4.1 文件名称 NTFS路径名中的每个文件名/目录名的长度可达255个字节,可以包含Unicode字符、 多个空格及句点 NTFS卷上的每个文件都有一个64位的,称为文件引用号的唯一标识 文件引用号的组成 文件号 文件顺序号
MS-DOS子系统,Win32子系统与POSIX子系统的名字空间
China’s Software Industry August 2006 4.2 主控文件表 MFT(Master File Table,主控文件表)是NTFS卷结构的核心,是NTFS中最重要的系统文件,包含了卷中所有文件的信息 MFT是以文件记录数组来实现的 MFT开始的16个元数据文件是保留的 MFT(Master File Table,主控文件表)是NTFS卷结构的核心,是NTFS中最重要的系统文件,包 含了卷中所有文件的信息 MFT是以文件记录数组来实现的,每个文件记录的大小都固定为1KB。卷上的每个文件(包括MFT 本身)都有一行MFT记录 MFT开始的16个元数据文件是保留的。在NTFS中只有这16个元数据文件占有固定的位置。每个这 样的元数据文件都有一个以"$"开头的文件名称,不过该符号是隐藏的。16个元数据文件之后则是普 通的用户文件和目录
China’s Software Industry August 2006 主控文件表的元数据文件记录 0:$Mft:MFT本身 1:$MftMirr:MFT镜像 2:$LogFile:日志文件 3:$Volume:卷文件 4:$AttrDef:属性定义表 5:$\:根目录 6:$Bitmap:位图文件 7:$Boot:引导文件 8:$BadClus:坏簇文件 9:$Secure:安全文件 10:$UpCase:大写文件 11:$Extended metadata directory:扩展元数据目录 12,13,14,15:预留 >15:其他用户文件和目录
China’s Software Industry August 2006 主控文件表空间分配 MFT的前十六个元数据文件非常重要,为防止丢失,NTFS系统在该卷文件存储部分的正中央对它们 进行备份,如图所示。
China’s Software Industry August 2006 4.3 文件记录 NTFS文件是属性/属性值的集合 每个属性由单个的流(stream)组成 NTFS提供对属性流的各种操作 读写操作一般是针对文件的未命名属性的,对于已命名的属性则可以通过已命名的数据流句法来进行操作 NTFS文件是属性/属性值的集合。文件数据就是未命名属性的值,其他文件属性包括文件名、文件 拥有者、文件时间标记等 每个属性由单个的流(stream)组成,即简单的字符序列 NTFS提供对属性流的各种操作:创建、删除、读取(字节范围)以及写入(字节范围) 读写操作一般是针对文件的未命名属性的,对于已命名的属性则可以通过已命名的数据流句法来进 行操作
China’s Software Industry August 2006 文件记录 NTFS文件是属性的集合,通常所说的文件内容是指未命名数据属性流 例:我们定义两个数据属性:ntfile(数据)和ntfile:data(自定义数据)。在向FAT复制时,自定义属性会丢失 echo test....data >ntfile echo test....user defined data >ntfile:data more <ntfile more <ntfile:data copy ntfile e:ntfile (E:为NTFS文件系统) copy ntfile c:ntfile (C:为FAT文件系统) more <e:ntfile more <e:ntfile:data more <c:ntfile more <c:ntfile:data
China’s Software Industry August 2006 文件记录 NTFS卷上文件的常用属性(并不是所有文件都有所有这些属性) $VOLUME_INFORMATION $VOLUME_NAME $STANDARD_INFORMATION $FILE_NAME $SECURITY_DESCRIPTOR $DATA $INDEX_ROOT $INDEX_ALLOCATION $BITMAP $ATTRIBUTE_LIST $OBJECT_ID $REPARSE_POINT $EA $EA_INFORMATION $LOGGED_UTILITY_STREAM
China’s Software Industry August 2006 观察与体验5-2:观察流 目的:查看流的活动 Echo和more命令可以和可替换的命名数据流工作,一个简单的查看流的活动的方法是用echo创建一个命名流,然后用more显示。下面的命令创建了一个名为text的文本文件 c:\>echo hello > test.txt c:\>more test.txt
China’s Software Industry August 2006 运行过程及结果如下图所示:
China’s Software Industry August 2006 4.4 常驻属性与非常驻属性 当属性值能直接存放在MFT中时,该属性就称为常驻属性(resident attribute)。 如果属性值能直接存放在MFT中,那么NTFS对它的访问时间就将大大缩短 有些属性总是常驻的,这样NTFS才可以确定其他非常驻属性。例如,标准信息属性和索引根就总是 常驻属性 如果属性值能直接存放在MFT中,那么NTFS对它的访问时间就将大大缩短 小文件或小目录的所有属性,均可以在MFT中常驻。小文件的未命名属性可以包括所有文件数据。小目录的索引根属性可以包括其中所有文件和子目录的索引 大文件或大目录的所有属性,就不可能都常驻在MFT中
China’s Software Industry August 2006 常驻属性与非常驻属性 如果一个属性(如文件数据属性)太大而不能存放在只有1KB的MFT文件记录中,那么NTFS将从MFT之外分配区域。这些区域通常称为一个延展(run)或一个延伸(extent),它们可用来存储属性值,如文件数据。如果以后属性值又增加,那么NTFS将会再分配一个延展,以便用来存储额外的数据。值存储在延展中而不是在MFT文件记录中的属性称为非常驻属性(nonresident attributes) 在标准属性中,只有可以增长的属性才是非常驻的。对文件来说,可增长的属性有数据、属性列表等。标准信息和文件名属性总是常驻的
China’s Software Industry August 2006 常驻属性与非常驻属性 上图是存储在两个运行中的非常驻属性。当一个属性为非常驻时,如大文件的数据,它的投包含了 NTFS需要在磁盘上定位该属性值的所有信息 下图是大目录的MFT记录。一个大目录也可能包含非常驻属性。该例子中,MFT文件记录没有足够 空间来存储大记录的文件索引。
China’s Software Industry August 2006 NTFS目录组织与索引 索引根属性将相应目录中的文件名和子目录名进行排序 索引分配属性包含了索引缓冲区的VCN到LCN映射 位图属性跟踪在索引缓冲区中哪些VCN是在使用而哪些是空闲的 索引根属性将相应目录中的文件名和子目录名进行排序 对于一个大目录,文件名实际存储在组织文件名的固定4KB大小的索引缓冲区中 索引缓冲区是通过B+树数据结构实现的 该图是非常驻属性的运行所使用的VCN与LCN编号
China’s Software Industry August 2006 6. NTFS数据压缩 压缩稀疏文件: 稀疏文件是指相对于文件大小而言只有少量非零数据的文件 NTFS只给那些包含非零数据的延展分配磁盘空间 当程序从压缩文件中读取数据时,NTFS通过检测该位置是否有VCN到LCN的映射来决定该数据是不是零数据 图是稀疏文件压缩的MFT记录 压缩稀疏文件: 稀疏文件是指相对于文件大小而言只有少量非零数据的文件 NTFS只给那些包含非零数据的延展分配磁盘空间 当程序从压缩文件中读取数据时,NTFS通过检测该位置是否有VCN到LCN的映射来决定该数据是不是零数据 若有映射,则为非零数据,需要从磁盘上读取 若没有映射即存在尚未分配的“空洞”(unallocated hole),则为零数据,就直接返回零数据
China’s Software Industry August 2006 NTFS数据压缩 压缩非稀疏文件 NTFS是以16个簇为压缩单元来进行一般文件的压缩的 当NTFS向压缩文件写数据时,它确保每个延展都以一个虚拟16簇边界开始。因此每个延展中VCN都是以16的倍数开始的,并且延展的长度不大于16 右图是非稀疏文件压缩的MFT记录
China’s Software Industry August 2006 7. NTFS可恢复性 通过日志记录来实现 子操作在磁盘运行之前,记录在日志文件中 系统恢复阶段,NTFS根据日志文件中的文件操作信息,对部分完成的事务进行重做或者撤销,保证磁盘文件系统的一致性
China’s Software Industry August 2006 NTFS可恢复性 日志文件服务:一组NTFS驱动程序内的核心态程序 日志记录 更新记录 检查点记录 恢复过程 维护两张表:事务表和脏页表 日志文件进行三次扫描 分析扫描 重做扫描 撤销扫描 NTFS坏簇恢复支持
China’s Software Industry August 2006 8. NTFS安全性 NTFS文件加密系统结构 加密文件系统(EFS)可将加密的NTFS文件存储在磁盘上 EFS使用基于RSA的公共密钥算法进行加密 文件加密 解密文件 备份加密文件
China’s Software Industry August 2006 EFS工作流程图 内核态 磁盘设备 用户态 EFS驱动程序 应用 程序 4 NTFS请求EFS驱动 加密文件内容 卷 NTFS文件系统 驱动程序 1 应用程序向一个 加密文件写数据 5 NTFS将已加密 的文件写入磁盘 该图反映了EFS的基本工作流程。 1 应用程序向一个加密文件写数据。 2 NTFS将数据存入文件系统高速缓存 3高速缓存管理器将数据经NTFS延迟写入磁盘 4 NTFS请求EFS驱动加密文件内容 5 NTFS将已加密的文件写入磁盘 2 NTFS将数 据存入文 件系统高 速缓存 3 高速缓存管 理器将数据 经NTFS延迟 写入磁盘 缓存管理器
China’s Software Industry August 2006 实验5-1-快速文件系统
China’s Software Industry August 2006 快速文件系统 编写一个程序测试大文件随机访问时无文件缓冲模式,文件缓冲模式和异步模式这三种访问模式的效率 产生一个50M的大文件dummy,作为测试的数据文件 测试程序基本过程如下 每一个测试循环节非读即写,设读发生的概率为Q1 随机选取文件位置p,读/写n字节的内容(注意遇到文件结尾的处理) 若是读数据,调用函数f1对读入的数据作一系列操作或者调用f2做一些无关的操作,设f1调用的概率为Q2。f1和f2可以用循环来模拟,循环的次数可以是一个随机值,要在一个合理的范围之内 重复以上三步,模拟随即文件读写访问
China’s Software Industry August 2006 快速文件系统(续) 提示: 三种参数下程序略有不同,主要是使用异步模式时对读取的文件内容操作之前要检查数据是否已真的读完 测试程序中各处随机数的大小要具有合理的值 计量: 读取数据的总量和写数据的总量 数据读/写总时间(注意异步模式下的计量方法) f1和f2各自的操作时间 …… 当然也可以在内存里面做全部访问的日志,不过要注意的是这个内容可能非常多
China’s Software Industry August 2006 快速文件系统(续) 回答问题: 设定Q1,Q2作如下测试 定时测试:对每种模式,运行你的程序10分钟,分析或取得结果 定次数测试:对每种模式,设定循环的次数为104次,分析取得的结果 适当变换Q1,Q2的值,再测,看看它们对结果有什么影响 查阅文献了解Linux的文件缓冲机制,说明在常规的ext2文件系统以及某种日志文件系统例如ext3/jfs/raiserFS中缓冲机制有什么不同
China’s Software Industry August 2006 快速文件系统(续) 提示 三种模式的框架可以参考《Windows内核实验教程》p109-p129,在产生文件对象的时候使用不同的模式 相关知识可以查阅《 Windows操作系统原理》
China’s Software Industry August 2006 实验5-2-文件系统目录 目标:了解基本的目录操作
China’s Software Industry August 2006 文件系统和目录 要求: 设计函数,使其实现基本的目录操作,并编程实现之。具体要求如下: 1· 设计一个可以提供目录列表的函数,函数原型为:int fdListDir(); 2· 设计一个函数,使得该函数在当前目录下可以更改到上层目录,或者更改到下层子目录。函数原型为:int fdChangeDir(char *directory);
China’s Software Industry August 2006 文件系统和目录(续) 3· 设计一个函数,它的功能是删除一个文件,函数原型为:Int fdEraseFile(char *name); 4· 设计一个函数,使得该函数可以复制一个已存在的文件到一个新的文件中。函数原型为:int fdCopyFile(char *source,char *destination); 5· 设计并实现一个驱动程序来检测各个函数
China’s Software Industry August 2006 文件系统和目录(续) 提示: 目录列表函数只需提供基本功能即可,不必支持很多选项 相关背景知识参看《操作系统教程》 相关函数和参数含义参阅《Windows 内核实验教程》p129-p136和MSDN
小测验 NTFS恢复过程需要维护两张表,分别是 A. 事件表 B.事务表 C. 脏页表 D. 恢复表 EFS使用基于RSA的公共密钥算法进行加密 (对/错) NTFS文件系统中采用了B+树(对/错)
习题 NTFS中的主控文件表有什么作用? 请解释常驻属性和非常驻属性。 Windows Server 2003中的EFS的基本流程是什么样的? NTFS中如何实现可恢复性?
Thoughts Change Life 意念改变生活