windows n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Windows 文件管理 PowerPoint Presentation
Download Presentation
Windows 文件管理

Loading in 2 Seconds...

play fullscreen
1 / 160

Windows 文件管理 - PowerPoint PPT Presentation


  • 118 Views
  • Uploaded on

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 文件概念. 一个抽象机制: 一组带标识的在逻辑上有完整意义的信息项的序列,这个标识为文件名 两种观点看待文件 用户观点

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Windows 文件管理' - isabelle-ortiz


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
windows

Windows文件管理

Instructor: Hengming Zou, Ph.D.

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

slide2
内容提要
  • 第1讲 文件概念与实现
  • 第2讲 目录与文件系统
slide4
文件
  • 1.1 文件概念
  • 1.2 文件命名
  • 1.3 文件属性
  • 1.4 文件分类
  • 1.5 文件存取
  • 1.6 文件结构
slide5
1.1 文件概念
  • 一个抽象机制:一组带标识的在逻辑上有完整意义的信息项的序列,这个标识为文件名
  • 两种观点看待文件
    • 用户观点
    • 操作系统观点
slide6
1.2 文件命名
  • 给出文件命名规则:
  • 长度,数字和特殊字符,大小写区分,支持文件扩展名(一个或多个)
  • 例子:.bak .c .f77 .gif

.hlp .html .mpg .o

.ps .tex .txt .zip

slide7
1.3 文件属性
  • 包括两部分内容
    • 文件数据
    • 文件属性
  • 常用的数种文件属性
slide8
1.4 文件分类
  • 按文件性质和用途分类
  • 按信息保存期限分类
  • 按文件的保护方式分类
  • 按文件的逻辑结构分类
  • 按文件的物理结构分类
slide9
UNIX系统文件分类
  • 普通文件(regular)
  • 目录文件(directory)
  • 特殊文件(special file)
slide10
1.5 文件存取
  • 顺序存取
  • 随机访问(直接访问)
  • 索引访问(按键访问)
slide11
文件创建
  • create(文件名,访问权限,(,最大长度))
  • ①检查参数的合法性
    • 文件名是否符合命名规则:是→②,否则→错误返回
  • ②检查同一目录下有无重名文件:无→③,有→错误返回
  • ③在目录中有无空闲位置:有→②,否则→不成功返回
    • 有的系统可能要为此文件申请数据块空间
  • ④填写目录项内容:
    • 文件名,用户名等,存取权限,长度置零,(,首址)
  • ⑤返回
slide12
文件打开
  • 使用文件的第一步,任何一个文件使用前都要先打开,即把FCB送到内存
    • fd=open(文件路径名,打开方式)
slide13
文件打开的步骤
  • ①根据文件路径名查目录,找到FCB主部;
  • ②根据打开方式、共享说明和用户身份检查访问合法性
  • ③根据文件号查系统打开文件表,看文件是否已被打开
    • 是→共享计数加1
    • 否则→将外存中的FCB主部等信息填入系统打开文件表空表项,共享计数置为1
  • ④在用户打开文件表中取一空表项,填写打开方式等,并指向系统打开文件表对应表项
    • 返回信息:fd文件描述符,是非负整数,用于以后读写文件
slide14
文件读
  • read(文件名,(文件内位置),要读的长度,内存地址)
    • 隐含参数:进程主
  • ① 检查长度是否为正整数
    • 是→②,否则→⑩
  • ② 根据文件名查找目录,确定该文件在目录中的位置
  • ③根据隐含参数中的进程主和目录中该文件的存储权限数据,检查是否有权读?
    • 是→④,否则→⑩
slide15
文件读
  • ④由文件内位置与要读的长度计算最末位置,将其与目录中的文件长度比较,超过否?
    • 是→⑩,否则→⑤
    • 也可将参数中的长度修正为目录中的文件长度
  • ⑤根据参数中的位置、长度和目录中的映射信息,确定块号、块数、块内位移与长度。(多次读盘)
  • ⑥根据下一块号读块至内存缓冲区
  • ⑦根据块内位移长度取出要读的内容,送至参数中的内存目的地址
slide16
文件读
  • ⑧根据块内长度或起始块号+块数,确定还读下一块吗?同时确定下一块块号
    • 是→⑤,否则→⑨
  • ⑨正常返回
  • ⑩错误返回,返回相应错误号
slide17
文件读写定位
  • ①由fd查用户打开文件表,找到对应的入口;
  • ②将用户打开文件表中文件读写指针位置设为新指针的位置,供后继读写命令存取该指针处文件内容
slide18
其它文件操作
  • 文件关闭
  • 文件写
  • 文件删除
  • 文件截断
slide19
1.7 文件结构
  • 分为逻辑结构和物理结构
  • 逻辑结构是从用户角度看文件,研究文件的组织形式
  • 物理结构是从系统的角度来看文件,从文件在物理介质上的存放方式来研究文件
slide20
2. 文件实现
  • 主要考虑如何在外部存储介质上为创建文件而分配空间,为删除文件而回收空间,以及对空闲空间进行管理

主要考虑:

  • 空间分配策略
  • 空闲空间管理
slide21
2.1 空间分配策略

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

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

优点: 简单

支持顺序存取和随机存取

顺序存取速度快

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

slide22

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

文件名 始址 块数

f

count 0 2

tr 14 3

mail 19 6

list 28 4

f 6 2

tr

mail

list

slide23
缺点:
    • 文件不能动态增长

预留空间:浪费

重新分配和移动

    • 不利于文件插入和删除
    • 外部碎片问题-存储压缩技术
slide24
(2)链接结构
  • 一个文件的信息存放在若干不连续的物理块中,各块之间通过指针连接,前一个物理块指向下一个物理块
  • 优点:提高了磁盘空间利用率,不存在外部碎片问题
    • 有利于文件插入和删除
    • 有利于文件动态扩充
slide25

文件目录

文件名 始址 末址

jeep 9 25

0

1

10

2

3

4

5

6

7

8

9

16

10

25

11

12

13

14

15

16

1

17

18

19

20

21

22

23

24

25

-1

26

27

28

29

30

31

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

可靠性问题,如指针出错

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

链接指针占用一定的空间

  • 链接结构的一个变形:

文件分配表FAT

slide27
(3)索引结构

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

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

slide28

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

9

16

1

10

25

-1

-1

-1

19

slide29
优点:

保持了链接结构的优点,又解决了其缺点:

  • 即能顺序存取,又能随机存取
  • 满足了文件动态增长、插入删除的要求
  • 能充分利用外存空间
slide30
缺点:较多的寻道次数和寻道时间

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

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

slide31
索引表组织
    • 链接模式
    • 多级索引
    • 综合模式
slide32
UNIX文件系统采用的是多级索引结构(综合模式)
  • UNIX中采用了三级索引结构后,文件最大可达16兆个物理块
slide34
2.2 空闲空间管理

(1)空闲块表

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

(2)空闲块链表

把所有空闲块链成一个链

扩展:成组链接法

slide35

第一组各块块号与总块数

文件存储设备

最后组

第三组

第二组

第一组

最后组的块号与总块数

50块

50块

49块

第二组各块块号与总块数

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

文件资源表

slide36
分配和回收的算法

1.分配一个空闲块

查L单元内容(空闲块数):

当空闲块数>1 i : =L+空闲块数;

从i单元得到一空闲块号;

把该块分配给申请者;

空闲块数减1。

当空闲块数=1 取出L+1单元内容(一组的第一块块号或0);

其值=0 无空闲块,申请者等待

不等于零 把该块内容复制到专用块;

该块分配给申请者;

把专用块内容读到主存L开始的区域。

slide37
分配和回收的算法(续)

2.归还一块

查L单元的空闲块数;

当空闲块数<100 空闲块数加1;

j : =L+空闲块数;

归还块号填入j单元。

当空闲块数=100 把主存中登记的信息写入归还块中;

把归还块号填入L+1单元;

将L单元置成1。

slide38
(3)位图法
  • 用一串二进制位反映磁盘空间中分配使用情况, 每个物理块对应一位, 分配物理块为1,否则为0
  • 申请物理块时,可以在位示图中查找为0的位,返回对应物理块号;
  • 归还时;将对应位转置0
  • 描述能力强,适合各种物理结构
slide39
计算公式:

已知字号i,位号j

块号=i×字长+j

已知块号:

字号=[ 块号/字长]

位号=块号 mod 字长

slide40
已知块号,则磁盘地址:

柱面号=[块号/(磁头数×扇区数)]

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

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

  • 已知磁盘地址:

块号=柱面号×(磁头数×扇区数)+磁头号×扇区数+扇区号

slide41
小测验
  • 文件属性包含哪两个部分的内容?

A. 文件数据 B. 文件本身的说明信息

C. 文件类型 D. 文件长度

  • 下列哪一类不属于按文件的物理结构分类?

A. 顺序(连续)文件 B. 链接文件

C. 索引文件 D. 记录文件

  • 磁带所采取的存取方式是

A. 顺序 B. 随机

  • Unix 采用的是

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

slide42
习题
  • 从用户观点和操作系统观点看文件各有什么特点?
  • 按物理结构文件可以如何分类,按文件的逻辑结构如何分类?
  • 请列举常用的空间分配策略及其优缺点。
slide43
第2讲 目录与文件系统
  • 目录的概念与实现
  • 文件系统
slide44
1. 目录概念与实现
  • 目录
    • 目录概念
    • 目录功能
    • 目录结构
    • 目录操作
  • 目录实现
slide45
1.1目录概念
  • 文件控制块FCB
  • 文件控制块是文件存在的标志
  • 文件控制块的主要内容
  • 文件目录
  • 目录项
  • 目录文件
slide46
文件控制块(FCB):文件控制块是操作系统为管理文件而设置的数据结构,存放了为管理文件所需的所有有关信息(文件属性)文件控制块(FCB):文件控制块是操作系统为管理文件而设置的数据结构,存放了为管理文件所需的所有有关信息(文件属性)

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

slide47
文件目录:把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合文件目录:把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合
  • 目录项:构成文件目录的项目(目录项就是FCB)
  • 目录文件:为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存,这个文件就叫目录文件
slide48
文件控制块的内容:

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

slide49
文件目录:把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合文件目录:把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合
  • 目录项:构成文件目录的项目(目录项就是FCB)
  • 目录文件:为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存,这个文件就叫目录文件
slide50
1.2 目录功能
  • 实现“按名操作”
  • 提高检索速度
  • 允许文件同名
  • 允许文件共享
slide51
1.3 目录结构

(1)一级目录结构

为所有文件建立一个目录文件(组成一线性表)

优点:简单,易实现

缺点:

  • 限制了用户对文件的命名
  • 文件平均检索时间长
  • 限制了对文件的共享
slide52
单级目录

根目录

ZImage

bash

more

slide53
(2)二级目录结构
  • 为改变一级目录文件目录命名冲突,并提高对目录文件检索速度而改进
  • 目录分为两级:
    • 一级称为主文件目录
    • 二级称为用户文件目录(又称用户子目录)
slide54
优点:解决了文件重名问题和文件共享问题

用户名|文件名

查找时间降低

缺点:增加了系统开销

slide55

UFD(user1)

普通文件

PCB1

ABC

PCB2

LMN

MFD

用户名

子目录指针

User1

UFD(user2)

User2

XYZ

PCB1

PCB2

ABC

slide56

root

c

db

db

dbb

a

b

dba

dbba

a

b

a

x

y

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

优点:

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

缺点:

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

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

根目录

root

usr

.Zncom

Project1

bash

conf

Luo

readme

L2.cc

Z1.c

Z2.cc

Z3.cc

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

根目录

root

usr

.Zncom

Project1

bash

conf

Luo

readme

L2.cc

Z1.c

Z2.cc

Z3.cc

slide63
1.4 目录操作
  • 目录创建
  • 目录删除
  • 文件检索
  • 目录打开
  • 目录关闭
slide64
1.5 目录实现
  • 线性表算法
  • 哈希表算法
  • 其它算法

如B+树

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

slide65
2. 文件系统

2.1 文件系统模型

2.2 文件系统可恢复性

2.3 文件系统安全性

slide66
2.1 文件系统模型
  • 文件系统的层次模型
  • SUN虚拟文件系统模型
  • Windows文件系统模型
  • 常用文件系统
slide67
文件系统的层次模型

文件系统接口

逻辑文件

文件组织模块层

基本文件系统层

基本I/O控制层

物理磁盘

slide68
SUN虚拟文件系统模型
  • SUN公司提出的虚拟文件系统(VFS),通过VFS可以支持多种文件系统,如EXT2,FAT,NTFS等等
  • VFS有两个接口:一个是与用户的接口,一个是与特定文件系统的接口
linux vfs
Linux的VFS

索引节点

高速缓存

VFS

目录高速缓存

EXT2

FAT

Minix

缓冲区缓存

磁盘驱动

windows1
Windows文件系统模型

I/O API

过滤驱动程序

I/O管理器

NT管理器

文件系统驱动程序

过滤驱动程序

中间驱动程序

过滤驱动程序

设备驱动程序

HAL

物理设备

slide71
2.2 文件系统可恢复性

(1) 谨慎写(careful write)

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

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

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

磁盘修改立即写到磁盘

速度性能差

slide72
(2)延迟写(lazy-write)

利用回写(write back)高速缓存的方法得到高速

可恢复性差

(3)可恢复(transaction log)

采用事务日志来实现文件系统的写入

既考虑安全性,又考虑速度性能

例:NTFS

slide73
2.3 文件系统安全性

(1)安全性

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

slide74
安全性的两个重要方面
    • 数据丢失
      • 灾难
      • 硬件或软件故障
      • 人的失误
    • 入侵者:积极的 或 消极的
      • 非技术人员的偶然窥视
      • 入侵者的窥视
      • 明确的偷窃企图
      • 商业或军事间谍活动
slide75
(2)著名的安全缺陷

UNIX lpr

mkdir abc

TENEX

OS/360

Logic bomb:逻辑炸弹

Morris:蠕虫

slide76
(3)一般性的安全攻击
  • 请求内存页、磁盘空间和磁带并读取其内容
  • 尝试非法的系统调用(非法参数 、不合适的参数)
  • 在登录过程中键入DEL,BREAK
  • 写一段程序欺骗用户……
  • 病毒
slide77
(4)安全性的设计原则
  • 系统设计必须公开
  • 缺省属性应该不可访问
  • 检查当前权限
  • 给每个进程赋予一个最小的可能权限
  • 保护机制应简单一致,嵌入到系统底层
  • 采取的方案必须可接受
5 1 sam security
观察与体验5-1: 查看SAM键和SECURITY键
  • 目的:通过注册表查看SAM键和

SECURITY键

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

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

SECURITY键的值

  • 注意:SAM键和SECURITY键是受安全设置保护的,请通过系统帐号访问
slide81
小测验
  • 目录的功能包括

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

C. 允许文件同名 D. 允许文件共享

  • 下列哪几种文件系统典型的写入方式?

A. 谨慎写 B. 延迟写 C. 中断写

  • 在文件系统的层次模型中,文件组织模块层在基本文件系统层的下面(对/错)
slide82
习题
  • 请列出目录的基本功能。
  • 文件目录有几种实现方式?它们各自的优缺点是什么?
  • 文件系统有几种写入设计方式?它们各自有什么特点?
  • 请描述文件系统的层次模型。
3 windows
第3讲 Windows文件系统概述
  • 概述
  • FSD( File System Driver 文件系统驱动程序)
  • FSD与文件系统操作
  • FAT文件系统
slide84
1. 概述
  • Windows Server 2003目前支持的文件系统
    • CDFS与UDF
    • FAT12,FAT16与FAT32
    • NTFS
windows cdfs
Windows文件系统概述:CDFS
  • CDFS(CDROM File System,只读光盘文件系统)是1988年为只读光盘所制定的文件系统标准。CDFS比较简单,但是有一定的限制:
    • 文件和目录名的长度必须少于32个字符。
    • 目录树的深度不能超过8层。
    • 现已过时,已被UDF标准所代替。
    • FSD: \[WinRoot]\System32\Drivers\Cdfs.sys
windows udf
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
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
Windows文件系统概述:NTFS
  • NTFS是Windows 2000/XP的本机文件系统
    • NTFS的簇标识为64位
    • 文件与目录的安全性
    • 文件与目录的压缩
    • 文件与目录的加密
    • 文件与目录的可恢复性
    • FSD:\[WinRoot]\System32\Drivers\ntfs.sys
2 fsd
2. FSD
  • 分为本地FSD和远程FSD
  • 本地FSD:允许用户访问本地计算机的数据
  • 远程FSD:允许用户通过网络访问远程计算机上的数据
slide90
本地FSD

应用程序接口

用户态

I/O管理器

核心态

文件系统驱动程序

存储设备驱动

物理磁盘

物理设备

slide91
远程FSD

客户端

服务器端

用户态

应用程序

核心态

用户态

物理磁盘

远程FSD(服务器)

核心态

I/O管理器

本地FSD

存储设备驱动

远程FSD(重定向器)

物理设备

slide92

3. FSD与文件系统操作

3.1 FSD的作用

3.2 显式文件I/O

3.3 高速缓存迟后写

3.4 高速缓存超前读

3.5 内存脏页写

3.6 内存缺页处理

3 1 fsd
3.1 FSD的作用
  • Windows文件系统的有关操作都通过FSD来完成
    • 显示文件I/O
    • 高速缓存超前读
    • 内存脏页写
    • 内存缺页处理
slide94

FSD的作用

NtReadFile()

NtWriteFile()

缺页中断

NtCreateSection()

IRP

文件系统

驱动程序

缺页事件处理机

虚拟内存管理器

IoPageReadFile()

IoAsynchronousPageWrite()

脏页写

非缓存页面I/o

MmCreateSection()

MmFlushSection()

CcCopyRead()

CcCopyWrite()

存储设备

驱动程序

延迟写

缓存管理器

提前读

FastIoRead()

FastIoWrite()

3 2 i o
3.2 显式文件I/O

CreateFile(ReadFile,WriteFile)(Win32API)

=> NtCreateFile

=>通过ObOpenObjectByName解析名称字符串

=>通过IopParseDevice创建IRP(I/O request packet,I/O请求包)

=>通过IoCallDriver将IRP交给合适的FSD以创建文件

slide96
显式文件I/O

ReadFile

=>NtReadFile

=>将已打开文件的句柄转换成文件对象指针

=>检查访问权限

=>创建IRP读请求

=>通过IoCallDriver将IRP交给合适的FSD

=>如可在高速缓存,则应检查PrivateCacheMap

=>如有效则表示该文件已有私有高速缓存映射结构;

=>如无效则表示尚没有私有高速缓存映射结构,需要调用CcInitializeCacheMap来初始化

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

slide97
3.3 高速缓存延迟后写
  • 高速缓存管理器的迟后写线程定期地对高速缓存中已被修改的页面进行写操作。这是通过调用内存管理器的MmFlushSection函数来完成的。具体地说,MmFlushSection通过IoAsynchronousPageWrite将数据送交FSD
slide98

3.4 高速缓存超前读

  • 高速缓存管理器的超前读线程负责提前读数据.超前读线程通过分析已作的读操作,来决定提前读多少。提前读线程是通过缺页中断来完成的
slide99
3.5 内存脏页写
  • 内存脏页写线程定期地清洗缓冲区。该线程通过IoAsynchronousPageWrite来创建IRP写请求,这些IRP被标识为不能通过高速缓存,因此它们被FSD直接送交到磁盘存储驱动程序
slide100
3.6 内存缺页处理
  • 以上在进行显式I/O操作与高速缓存提前读时,都会用到内存缺页处理。另外,只要应用程序访问内存映射文件且所需页面不在内存时,也会产生内存缺页处理。内存缺页处理MmAccessFault通过IoPageRead向文件所在文件系统发送IRP请求包来完成
4 fat
4. FAT文件系统

4.1 简介

4.2 卷的结构

4.3 引导扇区

4.4 文件分配表

4.5 FAT根目录

4.6 FAT32

4 1 fat
4.1 FAT文件系统简介
  • File Allocation Table(文件分配表)
  • 以FAT格式化的卷以簇为单位进行分配,默认大小由卷大小决定
  • 每一种FAT文件系统都用一个数字来标识磁盘上簇号的位数:
    • FAT12/FAT16
    • FAT32
slide105
4.3 引导扇区
  • 引导扇区(Boot Sector)包含用于描述卷的各种信息,利用这些信息才能访问文件系统
  • X86上,主引导记录(Master Boot Record)使用系统分区上的引导扇区来装载操作系统的核心文件
slide107
引导扇区(续)
  • 引导扇区的BIOS参数块包含了卷的信息
    • 逻辑扇区号
    • 允许同时访问的文件卷数目上限可以由config.sys文件中的LASTDRIVE= 语句指定
    • 簇(cluster):由若干个扇区组成。在一个文件卷中从0开始对每个簇编号
slide110
4.4 文件分配表
  • FAT表:两个镜像,互为备份。文件卷中的每个簇均对应一个FAT表项,文件分配采用链式分配方法
  • 每个FAT表项所占位数是簇编号的位数
4 5 fat
4.5 FAT根目录
  • 目录:是目录项的顺序文件(即大小相同的记录序列),不对目录项排序
    • 若目录中包含的文件数目较多,则搜索效率低
    • 每个目录项大小为32字节
    • 在目录项中,若第一个字节为 E5h,则表示空目录项;若为 05h,则表示文件名的第一个字符为 E5h。
    • 文件名不区分大小写
slide112
FAT根目录
  • 目录项
slide113
FAT根目录
  • 文件属性字节
4 6 fat32
4.6 FAT32
  • 主要应用于Windows 9x系统
    • FAT32的根目录区(ROOT区)不再是固定区域、固定大小,看作数据区的一部分, 采用与子目录文件相同的管理方式
    • 目录项仍占32字节
    • 支持长文件名格式
    • 支持Unicode
    • 无法支持高级容错特性,不具有内部安全特性
slide118
小测验
  • Windows Server 2003 目前不支持哪种文件系统?

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

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

(对/错)

  • FAT文件分配表位于卷的中间(对/错)
slide119
习题
  • 与FSD相关的文件操作有那些?
  • 请解释本地FSD和远程FSD的基本过程。
  • 简要介绍FAT文件系统的特点。
  • 引导扇区和主引导记录分别有什么用途?
4 ntfs
第4讲 NTFS文件系统
  • 概述
  • NTFS文件系统驱动程序
  • NTFS的磁盘结构
  • NTFS的文件组织
  • NTFS目录组织与索引
  • NTFS数据压缩
  • NTFS可恢复性
  • NTFS安全性
slide121
1. 概述
  • NTFS为改进的多级目录结构,支持文件别名
  • NTFS文件由多个文件属性构成,每个属性由属性名和属性流(stream, 简单字节队列)组成
  • NTFS支持用户权限管理
  • NTFS文件支持数据压缩功能
  • NTFS卷结构支持容错功能
slide122
概述
  • NTFS具有众多优点,这主要是因为它在磁盘上独特的实现方法
    • 如何划分磁盘
    • 如何组织文件与目录
    • 如何存储文件属性与数据
    • 如何压缩文件数据等
2 ntfs
2. NTFS文件驱动程序
  • 对NTFS的访问是通过I/O管理器来完成的
  • 此过程与高速缓存管理器,内存管理器,日志文件服务器,卷管理器,磁盘驱动程序等协同完成I/O操作
slide124

核心态

I/O管理器

日志文件服务器

NTFS FSD

高速缓存管理器

卷管理器

虚拟内存管理器

磁盘驱动

物理磁盘

slide126
3.1 卷
  • 卷是建立在磁盘分区上
  • 一个磁盘可以有多个卷,一个卷也可以有多个磁盘组成
  • (已格式化过的)卷上的数据可分为:元数据和用户数据
slide127
3.2 簇
  • 簇作为磁盘空间分配和回收的基本单位
    • 簇的大小是用户在使用Format命令或其他的格式化程序格式化卷时确定的
    • NTFS使用LCN(Logical Cluster Number,逻辑簇号)和VCN(Virtual Cluster Number,虚拟簇号)来进行簇的定位
4 ntfs1
4. NTFS文件组织

4.1 文件名称

4.2 主控文件表

4.3 文件记录

4.4 常驻属性与非常驻属性

slide129
4.1 文件名称
  • NTFS路径名中的每个文件名/目录名的长度可达255个字节,可以包含Unicode字符、 多个空格及句点
  • NTFS卷上的每个文件都有一个64位的,称为文件引用号的唯一标识
  • 文件引用号的组成
    • 文件号
    • 文件顺序号
ms dos win32 posix
MS-DOS子系统,Win32子系统与POSIX子系统的名字空间MS-DOS子系统,Win32子系统与POSIX子系统的名字空间
slide131
4.2 主控文件表
  • MFT(Master File Table,主控文件表)是NTFS卷结构的核心,是NTFS中最重要的系统文件,包含了卷中所有文件的信息
  • MFT是以文件记录数组来实现的
  • MFT开始的16个元数据文件是保留的
slide132
主控文件表的元数据文件记录
  • 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:其他用户文件和目录
slide134
4.3 文件记录
  • NTFS文件是属性/属性值的集合
  • 每个属性由单个的流(stream)组成
  • NTFS提供对属性流的各种操作
  • 读写操作一般是针对文件的未命名属性的,对于已命名的属性则可以通过已命名的数据流句法来进行操作
slide135
文件记录
  • 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
slide136
文件记录
  • 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
slide137
观察与体验5-2:观察流
  • 目的:查看流的活动
  • Echo和more命令可以和可替换的命名数据流工作,一个简单的查看流的活动的方法是用echo创建一个命名流,然后用more显示。下面的命令创建了一个名为text的文本文件

c:\>echo hello > test.txt

c:\>more test.txt

slide139
4.4 常驻属性与非常驻属性
  • 当属性值能直接存放在MFT中时,该属性就称为常驻属性(resident attribute)。
  • 如果属性值能直接存放在MFT中,那么NTFS对它的访问时间就将大大缩短
slide140
常驻属性与非常驻属性
  • 如果一个属性(如文件数据属性)太大而不能存放在只有1KB的MFT文件记录中,那么NTFS将从MFT之外分配区域。这些区域通常称为一个延展(run)或一个延伸(extent),它们可用来存储属性值,如文件数据。如果以后属性值又增加,那么NTFS将会再分配一个延展,以便用来存储额外的数据。值存储在延展中而不是在MFT文件记录中的属性称为非常驻属性(nonresident attributes)
  • 在标准属性中,只有可以增长的属性才是非常驻的。对文件来说,可增长的属性有数据、属性列表等。标准信息和文件名属性总是常驻的
slide142
NTFS目录组织与索引
  • 索引根属性将相应目录中的文件名和子目录名进行排序
  • 索引分配属性包含了索引缓冲区的VCN到LCN映射
  • 位图属性跟踪在索引缓冲区中哪些VCN是在使用而哪些是空闲的
6 ntfs
6. NTFS数据压缩
  • 压缩稀疏文件:
    • 稀疏文件是指相对于文件大小而言只有少量非零数据的文件
    • NTFS只给那些包含非零数据的延展分配磁盘空间
    • 当程序从压缩文件中读取数据时,NTFS通过检测该位置是否有VCN到LCN的映射来决定该数据是不是零数据
slide144
NTFS数据压缩
  • 压缩非稀疏文件
    • NTFS是以16个簇为压缩单元来进行一般文件的压缩的
    • 当NTFS向压缩文件写数据时,它确保每个延展都以一个虚拟16簇边界开始。因此每个延展中VCN都是以16的倍数开始的,并且延展的长度不大于16
7 ntfs
7. NTFS可恢复性
  • 通过日志记录来实现
  • 子操作在磁盘运行之前,记录在日志文件中
  • 系统恢复阶段,NTFS根据日志文件中的文件操作信息,对部分完成的事务进行重做或者撤销,保证磁盘文件系统的一致性
slide146
NTFS可恢复性
  • 日志文件服务:一组NTFS驱动程序内的核心态程序
  • 日志记录
    • 更新记录
    • 检查点记录
  • 恢复过程
    • 维护两张表:事务表和脏页表
    • 日志文件进行三次扫描
      • 分析扫描
      • 重做扫描
      • 撤销扫描
  • NTFS坏簇恢复支持
8 ntfs
8. NTFS安全性
  • NTFS文件加密系统结构
    • 加密文件系统(EFS)可将加密的NTFS文件存储在磁盘上
    • EFS使用基于RSA的公共密钥算法进行加密
  • 文件加密
  • 解密文件
  • 备份加密文件
slide148
EFS工作流程图

内核态

磁盘设备

用户态

EFS驱动程序

应用

程序

4 NTFS请求EFS驱动

加密文件内容

NTFS文件系统

驱动程序

1 应用程序向一个

加密文件写数据

5 NTFS将已加密

的文件写入磁盘

2 NTFS将数

据存入文

件系统高

速缓存

3 高速缓存管

理器将数据

经NTFS延迟

写入磁盘

缓存管理器

slide150
快速文件系统
  • 编写一个程序测试大文件随机访问时无文件缓冲模式,文件缓冲模式和异步模式这三种访问模式的效率
  • 产生一个50M的大文件dummy,作为测试的数据文件
    • 测试程序基本过程如下
      • 每一个测试循环节非读即写,设读发生的概率为Q1
      • 随机选取文件位置p,读/写n字节的内容(注意遇到文件结尾的处理)
      • 若是读数据,调用函数f1对读入的数据作一系列操作或者调用f2做一些无关的操作,设f1调用的概率为Q2。f1和f2可以用循环来模拟,循环的次数可以是一个随机值,要在一个合理的范围之内
      • 重复以上三步,模拟随即文件读写访问
slide151
快速文件系统(续)
  • 提示:
    • 三种参数下程序略有不同,主要是使用异步模式时对读取的文件内容操作之前要检查数据是否已真的读完
    • 测试程序中各处随机数的大小要具有合理的值
    • 计量:
      • 读取数据的总量和写数据的总量
      • 数据读/写总时间(注意异步模式下的计量方法)
      • f1和f2各自的操作时间
      • ……
      • 当然也可以在内存里面做全部访问的日志,不过要注意的是这个内容可能非常多
slide152
快速文件系统(续)
  • 回答问题:
    • 设定Q1,Q2作如下测试
      • 定时测试:对每种模式,运行你的程序10分钟,分析或取得结果
      • 定次数测试:对每种模式,设定循环的次数为104次,分析取得的结果
    • 适当变换Q1,Q2的值,再测,看看它们对结果有什么影响
    • 查阅文献了解Linux的文件缓冲机制,说明在常规的ext2文件系统以及某种日志文件系统例如ext3/jfs/raiserFS中缓冲机制有什么不同
slide153
快速文件系统(续)
  • 提示

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

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

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

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

slide155
文件系统和目录

要求:

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

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

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

slide156
文件系统和目录(续)

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

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

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

slide157
文件系统和目录(续)

提示:

  • 目录列表函数只需提供基本功能即可,不必支持很多选项
  • 相关背景知识参看《操作系统教程》
  • 相关函数和参数含义参阅《Windows 内核实验教程》p129-p136和MSDN
slide158
小测验
  • NTFS恢复过程需要维护两张表,分别是

A. 事件表 B.事务表 C. 脏页表 D. 恢复表

  • 在NTFS恢复过程中,日志文件需要做几次扫描?

A. 1 B. 2 C. 3 D. 4

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

(对/错)

  • NTFS文件系统中采用了B+树(对/错)
slide159
习题
  • NTFS中的主控文件表有什么作用?
  • 请解释常驻属性和非常驻属性。
  • Windows Server 2003中的EFS的基本流程是什么样的?
  • NTFS中如何实现可恢复性?