windows 文件管理

160
Windows Windows 文文文文 文文文文 Instructor: Hengming Zou, Ph.D. In Pursuit of Absolute Simplicity 文文文文 文文文文

Upload: isabelle-ortiz

Post on 30-Dec-2015

86 views

Category:

Documents


8 download

DESCRIPTION

Windows 文件管理. Instructor: Hengming Zou, Ph.D. In Pursuit of Absolute Simplicity 求于至简,归于永恒. 内容提要. 第 1 讲 文件概念与实现 第 2 讲 目录与文件系统. 第 1 讲 文件概念与实现. 文件 文件实现. 文件. 1.1 文件概念 1.2 文件命名 1.3 文件属性 1.4 文件分类 1.5 文件存取 1.6 文件结构. 1.1 文件概念. 一个抽象机制: 一组带标识的在逻辑上有完整意义的信息项的序列,这个标识为文件名 两种观点看待文件 用户观点 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Windows 文件管理

WindowsWindows 文件管理文件管理Instructor: Hengming Zou, Ph.D.

In Pursuit of Absolute Simplicity 求于至简,归于永恒

Page 2: Windows 文件管理

22

内容提要

第 1 讲 文件概念与实现 第 2 讲 目录与文件系统

Page 3: Windows 文件管理

33

第 1 讲 文件概念与实现

文件 文件实现

Page 4: Windows 文件管理

44

文件

1.1 文件概念 1.2 文件命名 1.3 文件属性 1.4 文件分类 1.5 文件存取 1.6 文件结构

Page 5: Windows 文件管理

55

1.1 文件概念

一个抽象机制:一组带标识的在逻辑上有完整意义的信息项的序列,这个标识为文件名

两种观点看待文件– 用户观点– 操作系统观点

Page 6: Windows 文件管理

66

1.2 文件命名

给出文件命名规则: 长度,数字和特殊字符,大小写区分,支持文件扩展名(一

个或多个) 例子: .bak .c .f77 .gif

.hlp .html .mpg .o

.ps .tex .txt .zip

Page 7: Windows 文件管理

77

1.3 文件属性

包括两部分内容– 文件数据– 文件属性

常用的数种文件属性

Page 8: Windows 文件管理

88

1.4 文件分类

按文件性质和用途分类 按信息保存期限分类 按文件的保护方式分类 按文件的逻辑结构分类 按文件的物理结构分类

Page 9: Windows 文件管理

99

UNIX系统文件分类

普通文件 (regular)

目录文件 (directory)

特殊文件 (special file)

Page 10: Windows 文件管理

1010

1.5 文件存取

存储介质 磁带 磁盘物理结构 连续结构 连续 链接 索引

存取方式 顺序存取顺序 顺序 顺序随机 随机

顺序存取 随机访问(直接访问) 索引访问(按键访问)

Page 11: Windows 文件管理

1111

文件创建

create(文件名,访问权限,(,最大长度)) ① 检查参数的合法性

– 文件名是否符合命名规则:是→②,否则→错误返回 ② 检查同一目录下有无重名文件:无→③,有→错误返回 ③ 在目录中有无空闲位置:有→②,否则→不成功返回

– 有的系统可能要为此文件申请数据块空间 ④ 填写目录项内容:

– 文件名,用户名等,存取权限,长度置零,(,首址) ⑤ 返回

Page 12: Windows 文件管理

1212

文件打开

使用文件的第一步,任何一个文件使用前都要先打开,即把FCB送到内存– fd=open(文件路径名,打开方式)

Page 13: Windows 文件管理

1313

文件打开的步骤

① 根据文件路径名查目录,找到 FCB主部; ② 根据打开方式、共享说明和用户身份检查访问合法性 ③ 根据文件号查系统打开文件表,看文件是否已被打开

– 是→共享计数加 1– 否则→将外存中的 FCB主部等信息填入系统打开文件表空表项,

共享计数置为 1 ④ 在用户打开文件表中取一空表项,填写打开方式等,并指

向系统打开文件表对应表项– 返回信息: fd 文件描述符,是非负整数,用于以后读写文件

Page 14: Windows 文件管理

1414

文件读

read(文件名,(文件内位置),要读的长度,内存地址)– 隐含参数:进程主

① 检查长度是否为正整数– 是→②,否则→⑩

② 根据文件名查找目录,确定该文件在目录中的位置 ③ 根据隐含参数中的进程主和目录中该文件的存储权限数据,

检查是否有权读?– 是→④,否则→⑩

Page 15: Windows 文件管理

1515

文件读

④ 由文件内位置与要读的长度计算最末位置,将其与目录中的文件长度比较,超过否?– 是→⑩,否则→⑤– 也可将参数中的长度修正为目录中的文件长度

⑤ 根据参数中的位置、长度和目录中的映射信息,确定块号、块数、块内位移与长度。(多次读盘)

⑥ 根据下一块号读块至内存缓冲区 ⑦ 根据块内位移长度取出要读的内容,送至参数中的内存目

的地址

Page 16: Windows 文件管理

1616

文件读

⑧ 根据块内长度或起始块号 +块数,确定还读下一块吗?同时确定下一块块号– 是→⑤,否则→⑨

⑨ 正常返回 ⑩ 错误返回,返回相应错误号

Page 17: Windows 文件管理

1717

文件读写定位

① 由 fd查用户打开文件表,找到对应的入口; ② 将用户打开文件表中文件读写指针位置设为新指针的位置,供后继读写命令存取该指针处文件内容

Page 18: Windows 文件管理

1818

其它文件操作

文件关闭 文件写 文件删除 文件截断

Page 19: Windows 文件管理

1919

1.7 文件结构 分为逻辑结构和物理结构 逻辑结构是从用户角度看文件,研究文件的组织形式 物理结构是从系统的角度来看文件,从文件在物理介质上的

存放方式来研究文件

Page 20: Windows 文件管理

2020

2. 文件实现 主要考虑如何在外部存储介质上为创建文件而分配空间,为删除文件而回收空间,以及对空闲空间进行管理

主要考虑: 空间分配策略 空闲空间管理

Page 21: Windows 文件管理

2121

2.1 空间分配策略

( 1 )连续空间分配(顺序)

文件的信息存放在若干连续的物理块中

优点 : 简单

支持顺序存取和随机存取

顺序存取速度快

所需的磁盘寻道次数和寻道时间最少

Page 22: Windows 文件管理

2222

0 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

文件名 始址 块数

count 0 2tr 14 3mail 19 6list 28 4f 6 2

文件目录count

f

tr

mail

list

Page 23: Windows 文件管理

2323

缺点 : – 文件不能动态增长 预留空间 : 浪费 重新分配和移动– 不利于文件插入和删除– 外部碎片问题-存储压缩技术

Page 24: Windows 文件管理

2424

( 2 )链接结构– 一个文件的信息存放在若干不连续的物理块中,各块之间通过

指针连接,前一个物理块指向下一个物理块– 优点:提高了磁盘空间利用率 , 不存在外部碎片问题

• 有利于文件插入和删除• 有利于文件动态扩充

Page 25: Windows 文件管理

2525

文件名 始址 末址

jeep 9 25

0 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

1

10

16

-1

25

文件目录

Page 26: Windows 文件管理

2626

缺点:存取速度慢,不适于随机存取

可靠性问题,如指针出错

更多的寻道次数和寻道时间

链接指针占用一定的空间 链接结构的一个变形 :

文件分配表 FAT

Page 27: Windows 文件管理

2727

( 3 )索引结构

一个文件的信息存放在若干不连续物理块中,系统为每个文件建立一个专用数据结构 --索引表,并将这些块的块号存放在一个索引表中

一个索引表就是磁盘块地址数组 , 其中第 i 个条目指向文件的第 i 块

Page 28: Windows 文件管理

2828

0 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

文件名 索引表地址文件目录

Jeep 19

916 11025 -1 -1 -1

19

Page 29: Windows 文件管理

2929

优点:

保持了链接结构的优点,又解决了其缺点: 即能顺序存取,又能随机存取 满足了文件动态增长、插入删除的要求 能充分利用外存空间

Page 30: Windows 文件管理

3030

缺点:较多的寻道次数和寻道时间

索引表本身带来了系统开销

如:内外存空间,存取时间

Page 31: Windows 文件管理

3131

索引表组织– 链接模式– 多级索引– 综合模式

Page 32: Windows 文件管理

3232

UNIX 文件系统采用的是多级索引结构 ( 综合模式 )

UNIX 中采用了三级索引结构后,文件最大可达 16兆个物理块

Page 33: Windows 文件管理

3333

Page 34: Windows 文件管理

3434

2.2 空闲空间管理

( 1 )空闲块表

将所有空闲块记录在一个表中,即空闲块表,有两项

( 2 )空闲块链表

把所有空闲块链成一个链

扩展:成组链接法

Page 35: Windows 文件管理

3535

最后组 第三组 第二组 第一组

最后组的块号与总块数

文件资源表

倒数第二组各块块号与总块数

文件存储设备

第一组各块块号与总块数

第二组各块块号与总块数

50 块 50 块 49 块

Page 36: Windows 文件管理

3636

分配和回收的算法

1 .分配一个空闲块查 L 单元内容(空闲块数):当空闲块数 >1 i : = L +空闲块数;从 i单元得到一空闲块号;把该块分配给申请者;空闲块数减 1 。当空闲块数= 1 取出 L + 1 单元内容(一组的第一块块号或 0 );其值= 0 无空闲块,申请者等待 不等于零 把该块内容复制到专用块;该块分配给申请者;把专用块内容读到主存 L 开始的区域。

Page 37: Windows 文件管理

3737

分配和回收的算法(续)

2 .归还一块 查 L单元的空闲块数; 当空闲块数 <100 空闲块数加 1 ; j : = L+空闲块数; 归还块号填入 j单元。 当空闲块数= 100 把主存中登记的信息写入归还块中; 把归还块号填入 L+ 1 单元; 将 L单元置成 1 。

Page 38: Windows 文件管理

3838

( 3 )位图法 用一串二进制位反映磁盘空间中分配使用情况 , 每个物理块对应一位 , 分配物理块为 1,否则为 0

申请物理块时,可以在位示图中查找为 0的位,返回对应物理块号;

归还时;将对应位转置 0

描述能力强,适合各种物理结构

Page 39: Windows 文件管理

3939

计算公式:已知字号 i ,位号 j

块号= i×字长+ j

已知块号: 字号= [ 块号 / 字长 ]

位号=块号 mod 字长

Page 40: Windows 文件管理

4040

已知块号,则磁盘地址: 柱面号= [ 块号 / (磁头数×扇区数) ]磁头号= [ (块号 mod (磁头数×扇区数)) / 扇 区数 ]

扇区号=(块号 mod (磁头数×扇区数)) mod 扇区数

已知磁盘地址:块号=柱面号×(磁头数×扇区数)+磁头号×扇区数+扇区号

Page 41: Windows 文件管理

4141

小测验

文件属性包含哪两个部分的内容?A. 文件数据 B. 文件本身的说明信息

C. 文件类型 D. 文件长度 下列哪一类不属于按文件的物理结构分类?

A. 顺序(连续)文件 B. 链接文件 C. 索引文件 D. 记录文件 磁带所采取的存取方式是

A. 顺序 B. 随机 Unix 采用的是

A. 一级索引结构 B. 二级索引结构 C.多级索引结构

Page 42: Windows 文件管理

4242

习题 从用户观点和操作系统观点看文件各有什么特点? 按物理结构文件可以如何分类,按文件的逻辑结构如何分

类? 请列举常用的空间分配策略及其优缺点。

Page 43: Windows 文件管理

4343

第 2 讲 目录与文件系统

目录的概念与实现 文件系统

Page 44: Windows 文件管理

4444

1. 目录概念与实现 目录

– 目录概念– 目录功能– 目录结构– 目录操作

目录实现

Page 45: Windows 文件管理

4545

1.1目录概念 文件控制块 FCB

文件控制块是文件存在的标志 文件控制块的主要内容 文件目录 目录项 目录文件

Page 46: Windows 文件管理

4646

文件控制块( FCB):文件控制块是操作系统为管理文件而设置的数据结构,存放了为管理文件所需的所有有关信息(文件属性)

文件控制块是文件存在的标志

Page 47: Windows 文件管理

4747

文件目录:把所有的 FCB组织在一起,就构成了文件目录,即文件控制块的有序集合

目录项:构成文件目录的项目(目录项就是 FCB) 目录文件:为了实现对文件目录的管理,通常将文件目录以

文件的形式保存在外存,这个文件就叫目录文件

Page 48: Windows 文件管理

4848

文件控制块的内容:

文件名,文件号,用户名,文件地址,文件长度,文件类型,文件属性,共享计数,文件的建立日期,保存期限,最后修改日期,最后访问日期,口令,文件逻辑结构,文件物理结构

Page 49: Windows 文件管理

4949

文件目录:把所有的 FCB组织在一起,就构成了文件目录,即文件控制块的有序集合

目录项:构成文件目录的项目(目录项就是 FCB) 目录文件:为了实现对文件目录的管理,通常将文件目录以

文件的形式保存在外存,这个文件就叫目录文件

Page 50: Windows 文件管理

5050

1.2 目录功能 实现“按名操作” 提高检索速度 允许文件同名 允许文件共享

Page 51: Windows 文件管理

5151

1.3 目录结构

( 1 )一级目录结构为所有文件建立一个目录文件(组成一线性表)优点:简单,易实现缺点:– 限制了用户对文件的命名– 文件平均检索时间长– 限制了对文件的共享

Page 52: Windows 文件管理

5252

单级目录

根目录

morebashZImage

Page 53: Windows 文件管理

5353

( 2 )二级目录结构– 为改变一级目录文件目录命名冲突,并提高对目录文件检索速度而改进

– 目录分为两级:1. 一级称为主文件目录2. 二级称为用户文件目录(又称用户子目录)

Page 54: Windows 文件管理

5454

优点:解决了文件重名问题和文件共享问题

用户名 | 文件名

查找时间降低

缺点:增加了系统开销

Page 55: Windows 文件管理

5555

用户名

User1

User2

子目录指针

PCB1

PCB2

PCB1

PCB2

MFD

UFD( user1 )

UFD( user2 )

普通文件

ABC

LMN

XYZ

ABC

Page 56: Windows 文件管理

5656

root

db

dbb

db

dba

dbba

a b

a

yxa

b

c

Page 57: Windows 文件管理

5757

( 3 )多级目录结构(树型目录)

优点:

层次结构清晰,便于管理和保护;有利于文件分类;解决重名问题;提高文件检索速度;能进行存取权限的控制

缺点:

查找一个文件按路径名逐层检查,由于每个文件都放在外存,多次访盘影响速度

Page 58: Windows 文件管理

5858

Page 59: Windows 文件管理

5959

( 4 )无环结构目录 是多级层次目录的推广 为了允许文件或者目录可以被不同的目录共享 不同的主目录可以共享一个文件或者分目录 优点:比树结构灵活,可以实现共享 缺点:实现复杂

Page 60: Windows 文件管理

6060

根目录

root usr .Zncom

bash conf readme

Z3.ccL2.cc Z1.c Z2.cc

Luo Project1

Page 61: Windows 文件管理

6161

( 5 )图状结构目录 在无环结构目录基础上形成的一种目录 无环目录要求目录结构中没有环 图状结构中存在环

Page 62: Windows 文件管理

6262

根目录

root usr .Zncom

bash conf readme

Z3.ccL2.cc Z1.c Z2.cc

Luo Project1

Page 63: Windows 文件管理

6363

1.4 目录操作 目录创建 目录删除 文件检索 目录打开 目录关闭

Page 64: Windows 文件管理

6464

1.5 目录实现 线性表算法 哈希表算法 其它算法

如 B+树NTFS文件系统就采用了 B+树

Page 65: Windows 文件管理

6565

2. 文件系统

2.1 文件系统模型

2.2 文件系统可恢复性

2.3 文件系统安全性

Page 66: Windows 文件管理

6666

2.1 文件系统模型

文件系统的层次模型 SUN虚拟文件系统模型 Windows文件系统模型 常用文件系统

Page 67: Windows 文件管理

6767

文件系统的层次模型

文件系统接口

逻辑文件

文件组织模块层

基本文件系统层

基本 I/O 控制层

物理磁盘

Page 68: Windows 文件管理

6868

SUN虚拟文件系统模型 SUN公司提出的虚拟文件系统( VFS),通过 VFS可以支

持多种文件系统,如 EXT2, FAT, NTFS等等 VFS有两个接口:一个是与用户的接口,一个是与特定文件

系统的接口

Page 69: Windows 文件管理

6969

Linux的 VFS

VFS

EXT2 FAT Minix

缓冲区缓存

磁盘驱动

目录高速缓存

索引节点高速缓存

Page 70: Windows 文件管理

7070

Windows文件系统模型

过滤驱动程序

中间驱动程序

文件系统驱动程序

过滤驱动程序

过滤驱动程序

HAL

设备驱动程序

物理设备

I/O API

NT

管理器

I/O

管理器

Page 71: Windows 文件管理

7171

2.2 文件系统可恢复性

( 1 ) 谨慎写( careful write )

对写操作进行逐个排序的写方式

更新磁盘的请求→按一定顺序完成几项子操作→更新磁盘

FAT 文件系统:通写( write-through )

磁盘修改立即写到磁盘

速度性能差

Page 72: Windows 文件管理

7272

( 2 )延迟写( lazy-write ) 利用回写( write back )高速缓存的方法得到高速 可恢复性差( 3 )可恢复( transaction log ) 采用事务日志来实现文件系统的写入 既考虑安全性,又考虑速度性能 例: NTFS

Page 73: Windows 文件管理

7373

2.3 文件系统安全性

( 1 )安全性

确保未经授权的用户不能存取某些文件。涉及到技术、管理、法律、道德和政治等问题

Page 74: Windows 文件管理

7474

安全性的两个重要方面– 数据丢失

•灾难•硬件或软件故障•人的失误

– 入侵者:积极的 或 消极的•非技术人员的偶然窥视•入侵者的窥视•明确的偷窃企图•商业或军事间谍活动

Page 75: Windows 文件管理

7575

( 2 )著名的安全缺陷

UNIX lpr

mkdir abc

TENEX

OS/360

Logic bomb:逻辑炸弹

Morris:蠕虫

Page 76: Windows 文件管理

7676

( 3 )一般性的安全攻击 请求内存页、磁盘空间和磁带并读取其内容 尝试非法的系统调用(非法参数 、不合适的参数) 在登录过程中键入 DEL, BREAK

写一段程序欺骗用户……

病毒

Page 77: Windows 文件管理

7777

( 4 )安全性的设计原则 系统设计必须公开 缺省属性应该不可访问 检查当前权限 给每个进程赋予一个最小的可能权限 保护机制应简单一致,嵌入到系统底层 采取的方案必须可接受

Page 78: Windows 文件管理

7878

目的:通过注册表查看 SAM键和

SECURITY键 操作步骤:运行 regedit打开注册表

通过 \ 编辑 \ 查找找到 SAM键和

SECURITY键的值 注意: SAM键和 SECURITY键是受安全设置保护的,请通

过系统帐号访问

观察与体验 5-1: 查看 SAM键和 SECURITY键

Page 79: Windows 文件管理

7979

SAM 键图示:

Page 80: Windows 文件管理

8080

SECURITY 键图示:

Page 81: Windows 文件管理

8181

小测验

目录的功能包括

A. 实现“按名操作” B. 提高检索速度

C. 允许文件同名 D. 允许文件共享 下列哪几种文件系统典型的写入方式?

A. 谨慎写 B. 延迟写 C. 中断写 在文件系统的层次模型中,文件组织模块层在基本文件系统层的下面

(对 / 错)

Page 82: Windows 文件管理

8282

习题 请列出目录的基本功能。 文件目录有几种实现方式?它们各自的优缺点是什么? 文件系统有几种写入设计方式?它们各自有什么特点? 请描述文件系统的层次模型。

Page 83: Windows 文件管理

8383

第 3 讲 Windows文件系统概述 概述 FSD( File System Driver 文件系统驱动程序) FSD与文件系统操作 FAT文件系统

Page 84: Windows 文件管理

8484

1. 概述

Windows Server 2003目前支持的文件系统– CDFS与 UDF

– FAT12, FAT16与 FAT32

– NTFS

Page 85: Windows 文件管理

8585

Windows文件系统概述: CDFS

CDFS( CDROM File System ,只读光盘文件系统)是1988年为只读光盘所制定的文件系统标准。 CDFS 比较简单,但是有一定的限制:– 文件和目录名的长度必须少于 32个字符。– 目录树的深度不能超过 8 层。– 现已过时,已被 UDF标准所代替。– FSD: \[WinRoot]\System32\Drivers\Cdfs.sys

Page 86: Windows 文件管理

8686

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

Page 87: Windows 文件管理

8787

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

Page 88: Windows 文件管理

8888

Windows文件系统概述: NTFS

NTFS是 Windows 2000/XP的本机文件系统– NTFS的簇标识为 64位– 文件与目录的安全性– 文件与目录的压缩– 文件与目录的加密– 文件与目录的可恢复性– FSD:\[WinRoot]\System32\Drivers\ntfs.sys

Page 89: Windows 文件管理

8989

2. FSD

分为本地 FSD和远程 FSD

本地FSD:允许用户访问本地计算机的数据

远程FSD:允许用户通过网络访问远程计算机上的数据

Page 90: Windows 文件管理

9090

本地 FSD

应用程序接口

I/O 管理器

文件系统驱动程序

存储设备驱动

物理磁盘

用户态

核心态

物理设备

Page 91: Windows 文件管理

9191

远程 FSD

应用程序

远程 FSD (服务器)

本地 FSD 物理磁盘I/O 管理器

远程 FSD (重定向器) 存储设备驱动

客户端 服务器端

用户态

核心态

用户态核心态

物理设备

Page 92: Windows 文件管理

9292

3.1 FSD的作用

3.2 显式文件 I/O

3.3 高速缓存迟后写

3.4 高速缓存超前读

3.5 内存脏页写

3.6 内存缺页处理

3. FSD与文件系统操作

Page 93: Windows 文件管理

9393

3.1 FSD的作用 Windows文件系统的有关操作都通过 FSD来完成

– 显示文件 I/O

– 高速缓存超前读– 内存脏页写– 内存缺页处理

Page 94: Windows 文件管理

9494

文件系统驱动程序

存储设备驱动程序

虚拟内存管理器

缺页事件处理机

脏页写

延迟写

提前读

缓存管理器

NtCreateSection()

缺页中断

Mm

Cre

ate

Sectio

n()

Mm

Flush

Sectio

n()

IoPageReadFile()

IoAsynchronousPageWrite()

NtReadFile()

NtWriteFile()

IRP

非缓存页面

I/o

CcCopyRead()

CcCopyWrite()

FastIoRead()

FastIoWrite()

FSD 的作用

Page 95: Windows 文件管理

9595

3.2 显式文件 I/O

CreateFile(ReadFile,WriteFile)( Win32API) => NtCreateFile

=> 通过 ObOpenObjectByName 解析名称字符串=> 通过 IopParseDevice 创建 IRP( I/O request packet, I/O 请求包)=> 通过 IoCallDriver将 IRP 交给合适的 FSD 以创建文件

Page 96: Windows 文件管理

9696

显式文件 I/O

ReadFile

=>NtReadFile=>将已打开文件的句柄转换成文件对象指针=>检查访问权限=>创建 IRP读请求=>通过 IoCallDriver将 IRP交给合适的 FSD

=>如可在高速缓存,则应检查 PrivateCacheMap=> 如有效则表示该文件已有私有高速缓存映射结构;=> 如无效则表示尚没有私有高速缓存映射结构,需要调用 CcInitializeCacheMap 来初始化

=>通过 CcCopyRead从高速缓存中读取数据。如果数据还不在高速缓存中, CcCopyRead会引起缺页中断,并间接调用MmAccessFault

Page 97: Windows 文件管理

9797

3.3 高速缓存延迟后写 高速缓存管理器的迟后写线程定期地对高速缓存中已被修改

的页面进行写操作。这是通过调用内存管理器的MmFlushSection函数来完成的。具体地说, MmFlushSection通过IoAsynchronousPageWrite将数据送交 FSD

Page 98: Windows 文件管理

9898

3.4 高速缓存超前读 高速缓存管理器的超前读线程负责提前读数据 . 超前读线

程通过分析已作的读操作,来决定提前读多少。提前读线程是通过缺页中断来完成的

Page 99: Windows 文件管理

9999

3.5 内存脏页写

内存脏页写线程定期地清洗缓冲区。该线程通过IoAsynchronousPageWrite来创建 IRP写请求,这些IRP被标识为不能通过高速缓存,因此它们被 FSD直接送交到磁盘存储驱动程序

Page 100: Windows 文件管理

100100

3.6 内存缺页处理

以上在进行显式 I/O操作与高速缓存提前读时,都会用到内存缺页处理。另外,只要应用程序访问内存映射文件且所需页面不在内存时,也会产生内存缺页处理。内存缺页处理 MmAccessFault通过 IoPageRead向文件所在文件系统发送 IRP请求包来完成

Page 101: Windows 文件管理

101101

4. FAT文件系统

4.1 简介

4.2 卷的结构

4.3 引导扇区

4.4 文件分配表

4.5 FAT根目录

4.6 FAT32

Page 102: Windows 文件管理

102102

4.1 FAT文件系统简介 File Allocation Table(文件分配表) 以 FAT格式化的卷以簇为单位进行分配,默认大小由卷大小决定

每一种 FAT文件系统都用一个数字来标识磁盘上簇号的位数 :– FAT12/FAT16– FAT32

Page 103: Windows 文件管理

103103

FAT不同版本间的区别系统 文件分配表中每个

簇的字节数簇界限

FAT12 1.5 小于 4087簇

FAT16 2 界于 4087和 65526簇之间 ( 包括边界 )

FAT32 4 界于 65526和 268,435,456簇之间 ( 包括边界 )

Page 104: Windows 文件管理

104104

4.2 FAT卷的结构

1文件分配表引导区 2文件分配表 根目录 其 他 目 录 和 文 件

Page 105: Windows 文件管理

105105

4.3 引导扇区 引导扇区( Boot Sector)包含用于描述卷的各种信息,利用这些信息才能访问文件系统

X86上,主引导记录( Master Boot Record)使用系统分区上的引导扇区来装载操作系统的核心文件

Page 106: Windows 文件管理

106106

分区引导扇区中的域

字节偏移量(16进制 )

域长 样值(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 扇区结束标记

Page 107: Windows 文件管理

107107

引导扇区(续) 引导扇区的 BIOS参数块包含了卷的信息

– 逻辑扇区号– 允许同时访问的文件卷数目上限可以由 config.sys文件中的 LASTDRIVE= 语句指定

– 簇 (cluster):由若干个扇区组成。在一个文件卷中从 0 开始对每个簇编号

Page 108: Windows 文件管理

108108

引导扇区- BIOS参数块

字节偏移量 (16进制 )

域长 样值 (16进制 ) 含义

0B 2 字节 00 02 每扇区字节数

0D 1 字节 08 每簇扇区数

0E 2 字节 01 00 保留扇区数:从分区引导扇区到第一个文件分配表开始的扇区数

10 1 字节 02 文件分配表数

11 2 字节 00 02 根目录项数

13 2 字节 00 00 小扇区数:卷上的扇区数,如果该数适合于 16位 (65535)的话

15 1 字节 F8 介质类型: F8表明为硬盘, F0表明为软盘

16 2 字节 C9 00 每个文件分配表的扇区数

18 2 字节 3F 00 每磁道扇区数

1A 2 字节 10 00 磁头数

1C 4 字节 3F 00 00 00 隐藏扇区数

20 4 字节 51 42 06 00 大扇区数:如果小扇区数域的取值为 0 ,该域包含的是卷中的扇区总数

Page 109: Windows 文件管理

109109

引导扇区-扩展 BIOS参数块 (EBPB)

字节偏移量 (16进制 )

域长 样值 (16进制 ) 含义

24 1 字节 80 物理磁盘号:软盘从 0x00开始编号,硬盘从 0x80开始编号

25 1 字节 00 当前磁头: FAT文件系统不使用

26 1 字节 29 签名:必须是 0x28或 0x29,以便被Windows NT所识别

27 4 字节 CE 13 46 30 卷序列号:当格式化卷时创建的一个唯一的数字

2B 11字节 NO NAME 卷标:该域用于存放卷标,但是卷标目前是在根目录中作为一个特别文件而存放的

36 8 字节 FAT16 系统 ID:根据磁盘的格式,该域的取值为 FAT12或 FAT16

Page 110: Windows 文件管理

110110

4.4 文件分配表 FAT表:两个镜像,互为备份。文件卷中的每个簇均对应一个 FAT表项,文件分配采用链式分配方法

每个 FAT表项所占位数是簇编号的位数

A文件 起始地址0000

0000记录 0001

0001记录 0002

B文件 起始地址0004

C文件 起始地址0007

0002记录 0003

0003记录 FFFF

0004记录 0005

0005记录 0006

0006记录 0008

0007记录 FFFF

0008记录 FFFF

0009记录 0000

文件目录

. . . . . .

. . . . . .

Page 111: Windows 文件管理

111111

4.5 FAT根目录 目录:是目录项的顺序文件 ( 即大小相同的记录序列 ) ,不对目录项排

序– 若目录中包含的文件数目较多,则搜索效率低– 每个目录项大小为 32字节– 在目录项中,若第一个字节为 E5h,则表示空目录项;若为 05h,

则表示文件名的第一个字符为 E5h。– 文件名不区分大小写

823h

800h

...

FAT

850h

823h

... 800hFF8h

850h

...

Dir Entry

File1

...

Page 112: Windows 文件管理

112112

FAT根目录

目录项

偏移 域长 含义

00h 8 文件名

08h 3 文件扩展名

0Bh 1 文件属性字节

0Ch 10 保留

16h 2 最后一次修改的时间

18h 2 最后一次修改的日期

1Ah 2 起始簇号

1Ch 4 文件大小

Page 113: Windows 文件管理

113113

FAT根目录

文件属性字节

Bit 7-6 5 4 3 2 1 0

保留 归档 目录 卷标 系统 隐藏 只读

Page 114: Windows 文件管理

114114

4.6 FAT32

主要应用于 Windows 9x系统– FAT32的根目录区( ROOT区)不再是固定区域、固定大小,

看作数据区的一部分 , 采用与子目录文件相同的管理方式– 目录项仍占 32字节– 支持长文件名格式– 支持 Unicode

– 无法支持高级容错特性,不具有内部安全特性

Page 115: Windows 文件管理

115115

FAT32-标准 BPB

字节偏移量(16进制 )

域长 含义

0B 2 字节 每扇区字节数0D 1 字节 每簇扇区数0E 2 字节 保留扇区数10 1 字节 文件分配表数11 2 字节 根目录项数13 2 字节 小扇区数 /00 00

15 1 字节 介质类型: F8表明为硬盘, F0表明为软盘16 2 字节 每个文件分配表的扇区数/ 00 00 18 2 字节 每磁道扇区数1A 2 字节 磁头数1C 4 字节 隐藏扇区数20 4 字节 大扇区数 / 总扇区数

Page 116: Windows 文件管理

116116

FAT32-扩展 BPB字节偏移量 (16进制 )

域长 含义

24 4 字节 每个 FAT的 FAT32扇区数28 2 字节 指定当前激活的 FAT

2A 2 字节 版本号 2C 4 字节 根目录起始簇号 30 2 字节 指向文件系统信息扇区 32 2 字节 指向引导扇区副本扇区34 12字节 保留40 1 字节 物理磁盘号41 1 字节 保留42 1 字节 签名:必须是 0x28或 0x29

43 4 字节 卷序列号 47 11字节 卷标52 8 字节 文件系统 ID: FAT32

Page 117: Windows 文件管理

117117

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 1 0Fh

0Ch 1 Reserved set to 0

0Dh 1 Checksum

0Eh 12 Next 6 letters of LFN entry

1Ah 2 0

1Ch 4 Last 2 letters of LFN entry

Page 118: Windows 文件管理

118118

小测验

Windows Server 2003 目前不支持哪种文件系统?

A. CDFS B. UDF C. Ext2 D. FAT12

以 FAT格式化的卷以簇为单位进行分配

(对 / 错)

FAT文件分配表位于卷的中间(对 / 错)

Page 119: Windows 文件管理

119119

习题

与 FSD相关的文件操作有那些? 请解释本地 FSD和远程 FSD的基本过程。 简要介绍 FAT文件系统的特点。 引导扇区和主引导记录分别有什么用途?

Page 120: Windows 文件管理

120120

第 4 讲 NTFS文件系统

概述 NTFS文件系统驱动程序 NTFS的磁盘结构 NTFS的文件组织 NTFS目录组织与索引 NTFS数据压缩 NTFS可恢复性 NTFS安全性

Page 121: Windows 文件管理

121121

1. 概述 NTFS为改进的多级目录结构,支持文件别名 NTFS文件由多个文件属性构成,每个属性由属性名和属性流( stream, 简单字节队列)组成

NTFS支持用户权限管理 NTFS文件支持数据压缩功能 NTFS卷结构支持容错功能

Page 122: Windows 文件管理

122122

概述 NTFS具有众多优点,这主要是因为它在磁盘上独特的实现

方法– 如何划分磁盘– 如何组织文件与目录– 如何存储文件属性与数据– 如何压缩文件数据等

Page 123: Windows 文件管理

123123

2. NTFS文件驱动程序 对 NTFS的访问是通过 I/O管理器来完成的 此过程与高速缓存管理器,内存管理器,日志文件服务器,卷管理器,磁盘驱动程序等协同完成 I/O操作

Page 124: Windows 文件管理

124124

日志文件服务器

高速缓存管理器

虚拟内存管理器

I/O 管理器

NTFS FSD

卷管理器

磁盘驱动

物理磁盘

核心态

Page 125: Windows 文件管理

125125

3. NTFS的磁盘结构

3.1 卷

3.2 簇

Page 126: Windows 文件管理

126126

3.1 卷 卷是建立在磁盘分区上 一个磁盘可以有多个卷,一个卷也可以有多个磁盘组成 (已格式化过的)卷上的数据可分为:元数据和用户数据

Page 127: Windows 文件管理

127127

3.2 簇簇作为磁盘空间分配和回收的基本单位

– 簇的大小是用户在使用 Format 命令或其他的格式化程序格式化卷时确定的

– NTFS使用 LCN( Logical Cluster Number ,逻辑簇号)和 VCN( Virtual Cluster Number ,虚拟簇号)来进行簇的定位

Page 128: Windows 文件管理

128128

4. NTFS文件组织

4.1 文件名称

4.2 主控文件表

4.3 文件记录

4.4 常驻属性与非常驻属性

Page 129: Windows 文件管理

129129

4.1 文件名称

NTFS路径名中的每个文件名 / 目录名的长度可达 255个字节,可以包含 Unicode字符、 多个空格及句点

NTFS卷上的每个文件都有一个 64位的,称为文件引用号的唯一标识

文件引用号的组成– 文件号– 文件顺序号

Page 130: Windows 文件管理

130130

MS- DOS子系统, Win32子系统与 POSIX子系统的名字空间

texttext

MS—DOS Wi ndows子系统

Wi n32子系统

POSI X子系统

Page 131: Windows 文件管理

131131

4.2 主控文件表 MFT( Master File Table,主控文件表)是 NTFS卷

结构的核心,是 NTFS中最重要的系统文件,包含了卷中所有文件的信息

MFT是以文件记录数组来实现的 MFT开始的 16个元数据文件是保留的

Page 132: Windows 文件管理

132132

主控文件表的元数据文件记录 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:其他用户文件和目录

Page 133: Windows 文件管理

133133

主控文件表空间分配

文件存储区 文件存储区

MFT分配空间

MFT元数据文件 MFT 16前 个元数据文件备份

Page 134: Windows 文件管理

134134

4.3 文件记录 NTFS文件是属性 / 属性值的集合 每个属性由单个的流 (stream)组成 NTFS提供对属性流的各种操作 读写操作一般是针对文件的未命名属性的,对于已命名的属

性则可以通过已命名的数据流句法来进行操作

Page 135: Windows 文件管理

135135

文件记录 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

Page 136: Windows 文件管理

136136

文件记录 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

Page 137: Windows 文件管理

137137

观察与体验 5-2:观察流 目的:查看流的活动 Echo和 more命令可以和可替换的命名数据流工作,一个

简单的查看流的活动的方法是用 echo创建一个命名流,然后用 more显示。下面的命令创建了一个名为 text的文本文件

c:\>echo hello > test.txt c:\>more test.txt

Page 138: Windows 文件管理

138138

运行过程及结果如下图所示:

Page 139: Windows 文件管理

139139

4.4 常驻属性与非常驻属性

当属性值能直接存放在 MFT中时,该属性就称为常驻属性( resident attribute)。

如果属性值能直接存放在 MFT中,那么 NTFS对它的访问时间就将大大缩短

标准信息 文件名文件索引

1文件空

2文件 3文件

Page 140: Windows 文件管理

140140

常驻属性与非常驻属性 如果一个属性(如文件数据属性)太大而不能存放在只有 1KB的 MFT文

件记录中,那么 NTFS将从 MFT之外分配区域。这些区域通常称为一个延展( run)或一个延伸( extent),它们可用来存储属性值,如文件数据。如果以后属性值又增加,那么 NTFS将会再分配一个延展,以便用来存储额外的数据。值存储在延展中而不是在 MFT文件记录中的属性称为非常驻属性( nonresident attributes)

在标准属性中,只有可以增长的属性才是非常驻的。对文件来说,可增长的属性有数据、属性列表等。标准信息和文件名属性总是常驻的

Page 141: Windows 文件管理

141141

常驻属性与非常驻属性标准信息 文件名 数据

VCN 0 321 4

LCN 1278 1279 1300 13011280

5 6 7

1281 1302 1303

数 据 数 据

标准信息 文件名索引根

索引分配 位图3文件

1 2文件 文件

7文件 . . .

4 5 6文件 文件 文件索引缓冲区

Page 142: Windows 文件管理

142142

NTFS目录组织与索引 索引根属性将相应目录中的文件名和子目录名进行排序 索引分配属性包含了索引缓冲区的 VCN到 LCN映射 位图属性跟踪在索引缓冲区中哪些 VCN是在使用而哪些是空闲的

标准信息 文件名“ \ ”

0文件 1文件

VCN 0 321 4 5

LCN 1355 1356 1588 15891049 1590

索引根 索引分配 位图

4文件 9文件 14文件 其他文件 VCN LCN到 转换. . .

6 7 8 9

3文件

1357 1358

5文件 7文件 10文件 11文件 12文件

1050 1051

Page 143: Windows 文件管理

143143

6. NTFS数据压缩 压缩稀疏文件:

– 稀疏文件是指相对于文件大小而言只有少量非零数据的文件– NTFS只给那些包含非零数据的延展分配磁盘空间 – 当程序从压缩文件中读取数据时, NTFS通过检测该位置是否有 VCN到 LCN的映射来决定该数据是不是零数据

标准信息 文件名 开始的VCN

开始的LCN

簇数

0 1200 16

32 1280 16

64 1356 16

80 967 16

Page 144: Windows 文件管理

144144

NTFS数据压缩 压缩非稀疏文件

– NTFS是以 16个簇为压缩单元来进行一般文件的压缩的

– 当 NTFS向压缩文件写数据时,它确保每个延展都以一个虚拟 16簇边界开始。因此每个延展中 VCN都是以 16的倍数开始的,并且延展的长度不大于 16

标准信息 文件名 开始的VCN

开始的LCN

簇数

0 1200 4

16 1280 8

32 1356 9

48 967 16

Page 145: Windows 文件管理

145145

7. NTFS可恢复性 通过日志记录来实现 子操作在磁盘运行之前,记录在日志文件中 系统恢复阶段, NTFS根据日志文件中的文件操作信息,对

部分完成的事务进行重做或者撤销,保证磁盘文件系统的一致性

Page 146: Windows 文件管理

146146

NTFS可恢复性 日志文件服务:一组 NTFS驱动程序内的核心态程序 日志记录

– 更新记录– 检查点记录

恢复过程– 维护两张表:事务表和脏页表– 日志文件进行三次扫描

• 分析扫描• 重做扫描• 撤销扫描

NTFS坏簇恢复支持

Page 147: Windows 文件管理

147147

8. NTFS安全性 NTFS文件加密系统结构

– 加密文件系统( EFS)可将加密的 NTFS文件存储在磁盘上– EFS使用基于 RSA的公共密钥算法进行加密

文件加密 解密文件 备份加密文件

Page 148: Windows 文件管理

148148

EFS工作流程图

EFS 驱动程序

4 NTFS 请求 EFS 驱动加密文件内容

NTFS 文件系统驱动程序

5 NTFS 将已加密的文件写入磁盘

3 高速缓存管理器将数据经NTFS 延迟

写入磁盘

缓存管理器

2 NTFS 将数据存入文件系统高

速缓存

1 应用程序向一个加密文件写数据

应用程序

用户态 内核态 磁盘设备

Page 149: Windows 文件管理

149149

实验 5-1-快速文件系统

Page 150: Windows 文件管理

150150

快速文件系统

– 编写一个程序测试大文件随机访问时无文件缓冲模式,文件缓冲模式和异步模式这三种访问模式的效率

– 产生一个 50M的大文件 dummy,作为测试的数据文件• 测试程序基本过程如下

– 每一个测试循环节非读即写,设读发生的概率为 Q1– 随机选取文件位置 p ,读 /写 n 字节的内容(注意遇到文件结尾的处理)– 若是读数据,调用函数 f1 对读入的数据作一系列操作或者调用 f2 做一些无关的操作,设

f1 调用的概率为 Q2。 f1和 f2 可以用循环来模拟,循环的次数可以是一个随机值,要在一个合理的范围之内

– 重复以上三步,模拟随即文件读写访问

Page 151: Windows 文件管理

151151

快速文件系统(续) 提示:

– 三种参数下程序略有不同,主要是使用异步模式时对读取的文件内容操作之前要检查数据是否已真的读完

– 测试程序中各处随机数的大小要具有合理的值– 计量:

• 读取数据的总量和写数据的总量• 数据读 / 写总时间(注意异步模式下的计量方法)• f1和 f2 各自的操作时间• ……• 当然也可以在内存里面做全部访问的日志,不过要注意的是这个内容可能非常多

Page 152: Windows 文件管理

152152

快速文件系统(续)– 回答问题:

• 设定 Q1, Q2 作如下测试– 定时测试:对每种模式,运行你的程序 10 分钟,分析或取得结果– 定次数测试:对每种模式,设定循环的次数为 104次,分析取得的结果

• 适当变换 Q1, Q2 的值,再测,看看它们对结果有什么影响• 查阅文献了解 Linux 的文件缓冲机制,说明在常规的 ext2 文件系统以及某种日志文件系统例如 ext3/jfs/raiserFS 中缓冲机制有什么不同

Page 153: Windows 文件管理

153153

快速文件系统(续) 提示

三种模式的框架可以参考《 Windows内核实验教程》 p109- p129,在产生文件对象的时候使用不同的模式

相关知识可以查阅 《 Windows操作系统原理》

Page 154: Windows 文件管理

154154

实验 5-2-文件系统目录

目标:了解基本的目录操作

Page 155: Windows 文件管理

155155

文件系统和目录

要求: 设计函数,使其实现基本的目录操作,并编程实现之。具体要求如下:

1· 设计一个可以提供目录列表的函数,函数原型为:int fdListDir();

2· 设计一个函数,使得该函数在当前目录下可以更改到上层目录,或者更改到下层子目录。函数原型为: int fdChangeDir(char *directory);

Page 156: Windows 文件管理

156156

文件系统和目录(续)

3· 设计一个函数,它的功能是删除一个文件,函数原型为:Int fdEraseFile(char *name);

4· 设计一个函数,使得该函数可以复制一个已存在的文件到一个新的文件中。函数原型为: int fdCopyFile(char *source,char *destination);

5· 设计并实现一个驱动程序来检测各个函数

Page 157: Windows 文件管理

157157

文件系统和目录(续)

提示: 目录列表函数只需提供基本功能即可,不必支持很多选项 相关背景知识参看《操作系统教程》 相关函数和参数含义参阅《 Windows 内核实验教程》 p129- p136和 MSDN

Page 158: Windows 文件管理

158158

小测验

NTFS恢复过程需要维护两张表,分别是 A. 事件表 B.事务表 C. 脏页表 D. 恢复表 在 NTFS恢复过程中,日志文件需要做几次扫描? A. 1 B. 2 C. 3 D. 4

NTFS文件系统不支持文件别名(对 / 错) EFS使用基于 RSA的公共密钥算法进行加密

(对 / 错) NTFS文件系统中采用了 B+树(对 / 错)

Page 159: Windows 文件管理

159159

习题 NTFS中的主控文件表有什么作用? 请解释常驻属性和非常驻属性。 Windows Server 2003中的 EFS的基本流程是什么样

的? NTFS中如何实现可恢复性?

Page 160: Windows 文件管理

Thoughts Change Life意念改变生活