第四章 存储管理 (2)
主要内容,
4.1、简介
4.2、内存管理
4.3、虚拟存储技术
4.4,辅存管理
4.5,高速缓存管理
4.3、虚拟存储技术
0、虚拟存储引入的技术支持
1、虚拟存储概念
2、存储管理策略
3,windows 2000虚存管理策略
4,windows 2000内存管理
4,windows 2000内存管理
一、内存管理的主要任务
二、地址空间布局
三、地址转换机制
四、用户内存分配方式
五、系统内存分配方式
六、物理内存管理一、内存管理的主要任务
Windows 2000实现了虚拟内存和管理保留在物理内存中的虚拟内存子集,这些工作包括两项主要任务:
1)、转换或映射进程的虚拟地址空间到物理内存以便当在进程环境中运行线程读取或写入虚拟地址空间时,引用正确的物理地址。
2)、当内存被过量使用时,即当运行的线程或系统代码试图使用比当前的可用内存更多的物理内存时,页面调度一些内存的内容到磁盘中,并且在需要的时候再把它们写回到物理内存中。
工作集:一个驻留进程的虚拟地址空间子集。
二、地址空间布局
Windows 2000pro的内存分配方式:
系统地址空间,2GB(见 P141中表 4-3)
用户地址空间,2GB (见 P141中表 4-4)
Windows 2000server的内存分配方式:
系统地址空间,1GB
用户地址空间,3GB
Windows 2000server中用户地址 3GB的实现方式:
通过 boot.ini中的 /3GB标志设置,这个特性是作为临时解决方案而添加的,用它来满足一些应用程序的需要。
对于一个要访问整个 3GB的地址空间的进程来说,映像头中必需设置 IMAGE-
LARGE-ADDRESS-AWARE标志。否则
windows 2000会保留这 3GB的地址空间,
使应用程序不会查看大于 0X7FFFFFFFF
的虚拟内存。
三、地址转换机制
转换原理:用户程序以 32位虚拟地址方式编址。处理器利用页面存储管理器创建和维护的数据结构将虚拟地址变换为物理地址。
实现方式:虚拟地址不直接映射到物理地址,而是每个虚拟地址都与一个称作页表项的结构有关,而虚拟地址映射的物理地址就包含在这个结构中。
地址映射的实现
1)、虚拟地址变换
Windows 2000在 X86体系结构上利用二级页表结构来实现虚拟地址向物理地址的变换。一个 32位的虚拟地址被解释为三个独立的分量,它们用于找出描述页面映射结构的索引。
页目录索引用于指虚拟地址的页目录在页表的位置。
页表索引则用来确定页表项在页表中的具体位置。即页表项中包含了虚拟地址被映射到的物理地址。
页表索引使程序员能在物理页中寻找某个具体的地址。
2)、虚拟地址变换的基本步骤:
一、内存管理的硬件设备定位当前进程的页目录
二、页目录索引用于在页目录项的位置。
三、面表索引用于在页表中指明面表项的位置。
页表项描述了虚拟页面在物理内存的位置。
四、页表项用于确定页框的位置。
五、当页表项指向了有效的页时,字节索引引用于找到物理页内所需数据的地址。
3)、地址变换中所采用的新技术
每次地址变换都需要经过两次查询:
一次是在页目录中找到正确的页表,
一次是在页表中找到正确的项。
如果每次对虚拟地址的访问都做两次额外的内存查询,这将使系统性能严重下降。因此大多数处理器在地址变换时运用了高速缓存技术。
快表( TLB):关联存储器数据形式的高速缓存。
所谓关联存储器,它的存储单元能被同时读取,
并与目标值比较。在快表中,向量中包含了大多数最近用过虚拟页到物理页的映射,以及每页的页保护类型。
快表中每个项都类似一个高速缓存项,它的标识符保存了虚拟地址的一部分,它的数据部分则保存了一个物理页号、保护域、有效位,通常还有一个修改位,这些用来表明被高速缓存的页表项所对应页的状态。如果一个页表项的全局位被置为,1”,当进程切换时快表项仍然有效。
四、用户内存分配方式
1)、虚拟地址描述符( VAD),(数据结构 )
采用虚拟地址描述符的原因,
内存管理器采用请求式页面调度算法 (间接 )
内存管理器建立页表时不能确定哪些虚拟地址是空闲的。 (直接 )
VAD的功能:
内存管理器维持了另一组数据结构来描述哪些虚拟地址已经在进程的地址空间中被保留,而哪些没有。
懒惰计算方法:请求式页面调度方式
使 VAD的实现方法,
对每一个进程,内存管理器都维持有一组虚拟地址描述信息,用来描述进程地址空间的状态。
虚拟地址描述信息被构造成一棵自平衡二叉树以使查找更有效率。
VAD的使用,
当进程保留地址空间,或映射一个内存区域时,
内存管理器创建一个 VAD来保存分配请示所提供的信息。
当线程首次访问一个地址,内存管理器必须为包含这个地址的页面创建一个页项
2)、以页为单位的虚拟内存分配方式
进程的地址空间中页面状态,
空闲
保留
提交
虚拟内存分配方式,
应用程序可能首先保留地址空间,然后向此地址空间提交物理页面。
保留地址空间:是为线程将来使用所保留的一块虚拟地址。
提交的页面在访问时会转变为物理内存中的有效页面。
提交的页面可以是:私有的,也可以被映射到一个区域视窗中。
可以通过 vitualFree 或 VirtualFreeEX函数回收页面或释放地址空间。
回收内存:仍然被保留
释放的内存不被提交,也不被保留。
在保留的区域中,提交页面必须指出物理存储器提交到何处以及多少?
一些在此基础上改进的方法
分两步保留和提交内存可以直到需要时才提交页面,这样减少内存的使用。
地址空间被保留,然后当需要时再提交,
而不是为全部区域提交页面,这对于需要潜在、大量和连续内存缓冲区的应用程序非常有用。
在操作系统中这项技术被用于线程的用户堆栈。
3)、内存映射文件
内存映射文件定义:
内存映射文件可以用来保留一个地址区域,并将物理存储提交给该区域。与虚拟内存的差别是:物理存储器来自位于磁盘上的文件。
内存映射文件有 3种可能的应用:
加载和执行,exe和,dll文件
访问磁盘上的数据文件
实现多个进程间的数据共享
区域对象:
区域对象定义:在内存管理器中用来映射虚拟地址,无论它是在内存,还是在页文件中,应用程序访问时,就像它在内存中一样。
区域对象的作用:可以连接到已打开的磁盘文件,或是已提交的内存;也可以指向那些进程地址空间更大的文件。(要访问一个非常大的区域对象,进程只能通过调用 MapViewOfFile
函数映射区域对象的一部分,并指定映射范围。
由于在一个时刻只有需要的区域对象视图必须被映射到内存,进程可以只为映射视图保留地址空间。
是实现上述三个功能的关键
Windows 2000下的具体应用:
Win32应用程序可以通过将文件映射到它的地址空间来方便地完成文件的 I/O操作。(不仅用户应用程序使用区域对象,系统也通过区域对象加载可执行映象、动态链接库以及设备驱动程序到内存,高速缓存管理器使用它们的缓存文件中存取数据。)
Windows 2000提供了在进程和操作系统之间共享内存的机制。(共享内存可以定义为对于多个进程都是可见的内存,或者存在于多个进程的虚拟地址空间的内存。)
4)、内存堆方法
定义:
堆是保留的地址空间中一个或多页组成的区域,
这个地址可以由堆管理器按块重新划分和分配。
堆管理器是分配和回收可变内存的函数集,堆管理器的函数位于 Ntddl.dll和 Ntoskrnl.exe中。
内存堆方法的处理方式:
进程启动带有一个缺省进程堆( 1MB)。
为了从缺省堆中分配内存,线程必须调用
getprocessheap函数得到一个指向它的句柄。
堆管理器支持大量的内部认证检查。
句柄:是一个数值用来识别资源便于程序进行访问五、系统内存分配方式
系统内存分配方式的需求:
内存管理器为设备驱动程序以及其他核心态组件提供了大量的服务,如分配和释放物理内存、锁定物理内存页面实现直接内存访问( DMA)。
系统还提供了以 EX为前缀的例程,来分配和释放系统空间(分页和分页缓冲池)
系统分配内存的方式:
非分页缓冲池
分页缓冲池系统初始化时,内存管理器创建了这两种动态大小的内存缓冲池,核心态可以用它来分配系统内存。
两种内存缓冲池均位于系统空间,并被映射到每个进程的虚拟地址空间。
内核提供了
ExAllocatePool等函数从这些缓冲池分配和回收内存。
非分页缓冲池
原因,缺页中断在 DPC/调度级是不能被满足。
方法:由长驻物理内存的系统虚拟地址区域组成,在任何时候,从任何 IRQL级和任何进程上下文都可以访问。
分页缓冲池
在系统空间中可以被分页和换出的虚拟内存区域。那些不会从 DPC/调节器度级
(或更高级别)访问内存的设备驱动可以使用分项缓冲池。从任何进程上下文都可以访问它们。
系统共有两种非分页缓冲:
一种在一般情下使用
另一种小型的( 4页)缓冲池,可以在非分页缓冲池已满并且调用者不能允许分配失败时,
紧急使用。
o 单处理器系统有三个分页缓冲池
o 多处理器系统有五个分页缓冲池
o 分页缓冲池和非分页缓冲池初始化大小依赖于系统物理内存的大小,以后在需要时,可以一直增长到在系统引导时计算出的最大值。(其大小可以用注册表的修改)
o 系统计算出的大小被存储在 4个内核变量中,
其中三个可通过性能计数器查询。
后备链表:一种快速内存分配机制
缓冲池和后备链表之间的基本区别是:
缓冲池分配的大小可以变化,而后备链表仅包含固定长度的块。
缓冲池分配方式比较灵活
使用后备链表时系统不必查找适合分配大小的空闲内存,因而更快。
后备链表的操作:
执行程序组件和设备驱动程序可以使用
ExInitializeNpagedlookasideList和
EsInitializeNpagedlookasideList函数,按照频繁分配的数据结构大小创建后备链表。(可以为每个处理器频繁访问的数据结构创建后备链表)
如果一个后备链表为空,系统必须从分页或非分页缓冲进行分配。( eg:第一次创建时)
六、物理内存管理
0)几个概念的描述:
工作集:描述了进程或系统拥有的驻留页面;
页框号数据库描述了物理内存中的各个页的状态。
页面的工作状态:活动、过度、后备、
修改、修改不写入、空闲、零初始化、

页框号数据库组成:由描述系统中内存的各个物理页面的数据结构组成。
有效的页表指向:页框号数据库中的项,
且页框数据项指向利用它们的页表。
至于原型页型号,它们指回原型页表项
1)、动态页链表的管理方式
页框以如下步骤在页链表间移动,
当页内存管理器需要一个零初始化的页(可以从零页链表中、后备链表或空闲链表中得到)
当内存管理不需要零初始化;
当进程不得不从工作集中放弃一个页面时
当修改链表太大,或者零初始化和后备链表的大小低于一个最小值时,被修改页面写回器
“的系统线程会被唤醒,将页面写回辅存,并把这些页面移入后备链表。
2)、修改页面写回器 的管理方式
作用,在修改页面链表太大时,修改页写回器通过将页面写回辅存来限制链表的规模
组成,MiModifiedPageWriter将修改页写到页文件中;
MiModifiedPageWriter将修改页写映射文件。
目的:避免死锁
修改页面写回器事件被触发的原因有两个:
修改页面的数量超越了系统初始时计算出的最大值 (MmMinimum FreePages)
可利用页数量(M mAvailbale Pagss)小于
MmMinimum Free Pages
上述的值是在系统启动时依据物理内存数量计算出来。
注:另一事件( MiMappedPagesTooOidEvent)也可以触发修改页面写回器,该事件在预定的数秒后产生,表示映射页面将被写入辅存。缺省值为 300s。
3)、页框号数据结构的管理方式
页框号数据库项是定长的,根据页面的状态有几种不同的状态。
修改状态
原型页表项
奇偶校验错误
正在进行读取
正在进入写入
非分页缓冲池开始
非分页缓冲池终止
页面调入错误 0
个别域针对不同的状态有不同的含义
一般页框号中所出现的域:
一、页表项地址:指向此页的页表项的虚拟地址。
二、访问计数:对此页的访问数量;
三、该页框号所表示的页面类型;
四、标识;
五、初始页表项的内容;
六、页表项的页框号;
4.4、辅存管理
1,windows 2000辅存简介
2、磁盘调度方式
3、磁盘冗余阵列
1,windows 2000辅存简介
作用:辅存定义了操作系统和非易失性设备及介质的接口方式
类型:磁带、光媒介、C D机、软盘和硬盘
本节内容:介绍基本磁盘和动态磁盘、解释如何被分区的、系统的内核模式设备驱动程序如何作为文件系统和磁盘介质之间的接口、如何实现多分区磁盘管理特性、系统数据的复制和物理磁盘上分割文件系统数据
1)、一些辅存发展和演变的基本情况
辅存管理发展和起因
Ms-Dos:为了实现对大容量硬盘的支持,
允许在一个物理盘上建立多个分区和逻辑盘并使用不同的文件系统。
Windows:扩展了 ms-dos硬盘分区的基本概念,以支持企业级用户对硬盘管理的特殊要求:如硬盘跨越和容错能力。
Windows分区管理存在的一些缺陷:
绝大多数的硬盘配置变化在生效前要求重新启动机器。
多分区硬盘配置信息存储在注册表中。
必须为每个可能创建的本机卷和远程卷分配一个惟一的驱动符( A~Z)
分区:物理磁盘的一部分,能够作为独立的磁盘工作。只能在基本磁盘上创建分区。
卷:像物理上独立的磁盘那样工作的物理磁盘部分。在
“我的电脑”和,Windows
资源管理器”中,卷作为本地磁盘出现,例如,C,或
D:。
一些有关磁盘结构的术语:
磁盘:物理存储设备
扇区:磁盘划分的一种方法
分区:连续扇区的集合
简单卷:
多分区卷:多个分区的扇区简单卷:构成单一磁盘磁盘空间的卷。它可以由磁盘上的单个区域或同一磁盘上链接在一起的多个区域组成。可以在同一磁盘内扩展简单卷或者扩展到其他磁盘上。如果跨越多个磁盘扩展简单卷,则该卷就成了跨区卷。只能在动态磁盘上创建简单卷。简单卷不能容错,但可以被镜像。
卷和分区
在动态磁盘上,存储区被分成卷而不是分区。您可在任何时候从基本存储器升级到动态存储器。升级至动态存储器时,
现有的分区将转换成卷,如下页所示。
基本存储器:在 MS-DOS,Windows,Windows NT 和
Windows 2000 中用于主磁盘分区、扩展分区和逻辑驱动器的存储方法。
动态存储器:在 Windows 2000 中不要求操作系统重新启动就允许管理磁盘和卷的存储方法。
基本磁盘的组织结构 动态磁盘的组织结构
分区 卷
系统和引导分区 系统和引导卷
活动分区 活动卷
扩展分区 卷和未分配的空间
逻辑驱动器 简单卷
卷集 跨区卷
带区集 带区卷
镜像集 镜像集
2),windows 分区方法
基本磁盘,windows2000将依靠 MS-DOS风格的分区方案的盘,包含主要分区、扩展分区或逻辑驱动器的物理磁盘。基本磁盘也可以包含使用 Windows NT 4.0 或更早版本创建的跨区卷、镜像卷、带区卷或 RAID-5 卷。
基本磁盘可以通过 MS-DOS 访问。
动态磁盘:是 windows2000新的概念,通过动态磁盘可以实现比基本磁盘更灵活的分区机制,“磁盘管理”
管理的物理磁盘。动态磁盘可以只包含动态卷(即
“磁盘管理”创建的卷)。动态磁盘不能包含分区或逻辑驱动器,也不能通过 MS-DOS 来访问。
不同点:
o 在于动态磁盘支持动态地创建新的多分区卷。
o 基本磁盘的多分区卷配置信息存储在注册表中。
o 动态磁盘的多分区卷配置信息存储在磁盘上,
对于基本磁盘和动态磁盘,可以的操作:
检查磁盘属性,如容量、可用空间和当前状态。
查看卷和分区属性,如大小、驱动器号指派、卷标、类型和文件系统。
为磁盘卷或分区以及 CD-ROM 设备指派驱动器号。
为卷或分区建立磁盘共享和安全设置。
将基本磁盘更新为动态磁盘或将动态磁盘转换为基本磁盘 。
只能在动态磁盘上执行以下任务:
创建和删除 简单卷,跨区卷,带区卷,
镜像卷 和 RAID-5 卷 。
扩展简单卷或跨区卷。
从镜像卷中删除镜像或将该卷分成两个卷。
修复镜像卷或 RAID-5 卷。
重新激活丢失的磁盘或脱机的磁盘。
只能在基本磁盘上执行以下任务:
创建和删除 主分区 和 扩展分区 。
创建和删除 扩展分区 中的逻辑驱动器。
格式化分区并将其标记为活动状态。
删除卷集、带区集、镜像集和带有奇偶校验的带区集。
从镜像集中分割镜像。
修复镜像集或带有奇偶校验的带区集。
逻辑驱动器:在基本磁盘的扩展分区中创建的卷。
逻辑驱动器可被格式化和指派驱动器号。只有基本磁盘可以包含逻辑驱动器,而逻辑驱动器不能跨越多个磁盘。
Windows 对磁盘的管理方法,
Windows2000 常将所有的盘当作基本磁盘来管理。并对基本磁盘的使用场合做了限制:
仅可以在动态磁盘上创建一个新的多分区卷。
windows2000仅让用户在动态磁盘上动态的扩展卷的容量。
3)、基本分区
创建一个分区用于引导卷
当安装 windows2000的时,在系统的主物理磁盘上创建一个分区,定义系统卷用于存储引导系统启动过程的代码
系统卷,windows2000用于存放引导文件包括加载 NTldr和 Ntdetect
引导卷,windows2000用于存放系统文件和其他内核代码文件的地方。
注,系统卷和引导卷可以放在同一个卷上,
X86硬件系统采用的 BIOS标准规定:
windows2000分区格式必须遵守一个要求,即主盘的第一个扇区中包含主引导记录 MBR。
当处理器开始引导时,计算机的 BIOS读取主引导记录中的内容,并把它当做可执行代码。
BIOS完成硬件基本设置后,激活主引导记录代码启动操作系统的引导过程。
在早期微软开发的操作系统中,它们的主引导记录中包含了一个分区表。一个分区表有 4个分区。分区表也记录分区的类型。
分区管理,
扩展分区,是一个特别的分区类型,它包含另一个主引导记录,内有其自身的分区表。由于采用了扩展分区,使操作系统克服了一个磁盘只能有 4个分区的限制。
Windows2000引导过程明确地区分主分区和扩展分区。
系统必须将主盘上的一个主分区标记为活动,
4)、动态分区
基本概念:
,磁盘管理”管理的物理磁盘。动态磁盘可以只包含动态卷(即“磁盘管理”创建的卷)。
动态磁盘不能包含分区或逻辑驱动器,也不能通过 MS-DOS 来访问。
动态磁盘是 windows2000上创建多分区卷的基础。
windows的逻辑磁盘管理子系统由用户模式和设备驱动组件组成
逻辑磁盘管理维护了一个单独的数据库用来储存系统动态盘的分区信息
逻辑磁盘管理数据库位于每一个动态磁盘的最后 1MB保留空间。
需要这块空间的原因是 windows2000在将一个 基本磁盘转换为动态磁盘 前,要求在基本磁盘的最后有自由空间。
逻辑磁盘管理的数据库中包含 4个区域:
扇区、内容表区域、数据库记录区、事务处理日志区
逻辑磁盘管理需要三个项来描述一个简单卷:分区项、组件项和卷项
5)、简单卷、多分区卷的管理:
简单卷:通过把卷的偏移量加上卷在磁盘中的起始地址,卷管理可以保证卷的偏移量被换成盘的偏移量。
多分区卷:因为组成卷的分区可以是不邻接的分区,甚至可以在不同的的磁盘中。有一些多分区卷使用数据冗余技术,所以它们需要更多的卷做磁盘的转换工作。所以,FtDisk和
DMIO必须处理所有的多分区卷 I/O请求,并确定这些 I/O最终影响的分区。
在 windows 2000中,有如下几种类型的多分区卷:跨分区卷、镜像卷、条带和磁盘冗余阵列 5
卷 (RAID5)等
2、磁盘调度方式
1)、磁盘性能参数
寻道时间,磁头移动到磁道的时间
旋转延迟,磁头定位到扇区的时间
存取时间,是寻道时间和旋转时间的总和
传送时间,寻道时间 +旋转延迟 +存取时间
等待时间,一次磁盘 I/O操作通常还有许多排队延迟。
2)、时序比较
主要考虑以下二种情况:
一,假设文件尽可能紧致的保存在磁盘上,文件占据了相邻磁道中所有扇区 。
二,在随机访问的情况下,读取相同的数据所需要的时间,就是随机访问每个扇区的时间的总和 。
Eg:有一个典型的磁盘,平均寻道时间为 10ms,转速为
10000r/m,每个磁道有 320个扇区,每个扇区 512B。假设读取一个包含 2560个扇区的文件,文件大小为 1.3MB,
现在估计传送的总时间。
3)、磁盘调度策略
o 先进先出
o 优先级
o 后进先出
o 最短服务时间优先
o 扫描
循环扫描
一次 N个记录扫描
先来先扫描根据请求者选择根据被请求项选择这里会涉及到磁盘的结构举例作业
3,磁盘冗余阵列
产生的原因,辅存的性能的提高速度远远低于处理器和主存性能的提高速度,这种不匹配使得磁盘存储系统可能成为提高整个计算机系统性能的主要问题。
磁盘冗余陈列( RAID)的产生:如果使用一个组件性能只能推进这么多,但可以通过使用多个并行的组件来获得额外的性能提高。即通过多个磁盘,多个独立的 I/O请求可以并行处理,只要它们所需要的数据驻留在不同的磁盘中。
选择 RAID 方法 硬件 RAID的方法
RAID方案一般包括 7层,这些层并不仅仅是一个层次关系,它们还表明了不同的设计结构,这些设计结构有三个共同的特性:
1),RAID是上组物理磁盘驱动器,操作系
统把它看作是一个单个的逻辑驱动器。
2)、数据分布在物理驱动器阵列中。
3)、使用冗余的磁盘容量保存奇偶检验信
息,使数据具有可恢复性。
磁盘冗余陈列:使用多个磁盘时,一种组织数据的一种方法
1),RAID0(没有用冗余数据来提高性能)
所采用的方式:用户数据和系统数据分布陈列在所有的磁盘中。
比单个大磁盘所具有的优势:当两个不同的 I/O请求为两块不同的数据挂起时,
很有可能被请求的块在不同的磁盘上,
因此这个请求可以并行发出,从而减少了 I/O排队等待的时间。
具体方案:所有用户数据和系统数据被看作是存储在一个逻辑磁盘上,这个磁盘被划分成多个 条带,一个条带可以是一个物理块、扇区或是其他单元。这些条带被循环映射到连续的阵列成员中。
这种布局的优点:如果一个 I/O请求由多个逻辑上连续的条带组成,该请可以并行处理,大大减少了 I/O传送时间。逻辑磁盘空间和物理空间之间进行的映射是由阵列管理软件完成的,
它可以在磁盘子系统中执行,也可以在一个主计算机中执行。
2),RAID1
所采用的方法:通过临时复制所有数据来实现冗余的。同 RAID0一样都使用了数据条带化。不同的是每个逻辑条带映射到两个单独的物理磁盘上,使得阵列中的每个磁盘都有一个包含相同数据的镜像磁盘。
RAID1的组织有许多比较好的特征:
一、读请求可以自由包含被请求数据的任何一个磁盘提供服务。
二、写请求需要对两相应的条带都都进行更新,但这可以并行完成。
三、恢复数据方法简单:有第一、第二驱动器。
主要缺点:是成本问题,它需要两倍于所支持的逻辑磁盘空间。
3),RAID2/RAID3
所采用方法:使用了一种并行访问技术。
数据存放:也使用数据条带化,条带非常小,通常只有一个字节或一个字。
4),RAID4
采用一种独立的访问技术,在独立访问阵列中,每个磁盘成员都独立地运转,
因此不的 I/O请求可以并行地满足。独立访问阵列更适合于需要较高 I/O请求速度的应用程序,而不太适合于需要较高数据传送率的应用程序。
对数据的存放:也采用数据条带化。
5),RAID5
组织类似于 RAID4,不同之处在于
RAID5把奇偶校验条带分布在所有磁盘中。奇偶校验条带分布在所有驱动器上,
可以避免 RAID4中一个奇偶校验磁盘可能存在的 I/O瓶颈。
创建 RAID5
使用 RAID-5 卷
4),RAID6
采用了两种不同的奇偶检验计算,并保存在不同磁盘的不同块中。
因此,用户数据需要 N个磁盘的 RAID6
阵列由 N+2个磁盘组成。这就使得即使有两个包含用户数据的磁盘失败了,也可以重新生成数据。
RAID6的优点是它提供了极高的数据可用性。只有在三个或三个以上的磁盘发生故障时,数据才会变成不可用的。
4.5、高速缓存管理
0、简介
1、高速缓存的概念
2、高速缓存结构
3、高速缓存操作
0、简介
Windows2000高速缓存管理器:
Windows2000高速缓存管理器是一组内核模式函数和系统线程,
这组内核模式函数和系统线程与内存管理器合做为所有 window 2000文件系统驱动程序提供数据高速缓存。
1、高速缓存的概念
1),windows2000高速缓存管理器的主要特性
2)、单个、集中的系统高速缓存
3)、高速缓存管理器管理
4)、高速缓存的一致性
5)、虚拟块缓存
6)、基于流的缓存
7)、可恢复文件系统支持
1),windows2000高速缓存管理器的主要特性
一、支持所有文件系统从而不需要为每个文件系统这实现其自身的高速缓存提供管理代码。
二、内存管理器在用户进程和操作系统之间权衡物理内存的分配。
三、在虚拟块上高速缓存数据,允许智能预读和高速访问高速缓存而不涉及文件系统驱动程序。
四、支持应用程序在打开文件时给出一定的提示
五、支持可恢复的文件系统,以便在系统崩溃后恢复数据。
2)、单个、集中的系统高速缓存
Windows2000访问高速缓存的方法取决于被高速缓存的数据类型。
Windows2000提供了一种集中的高速缓存措施来高速缓存所有在外部的存储的数据,而不管这些数据是在本机硬盘、
软盘、网络文件服务器、还是在 CD-
ROM上,所有数据都可以被高速缓存,
无论它是用户数据流或是文件系统的
“元数据”。
3)、高速缓存管理器管理
Windows 2000高速缓存管理器不知道有多数据在物理内存中的原因是它使用了标准的“区域对象”。
区域对象:是内存管理器的基本单元,通过把文件视图映射至系统虚拟地址空间来访问数据。
原理:当这些映射的视图的地址被访问时,内存管理器将不在物理内存中的块页面调入,而当需要内存时,内存管理器将数据页面调出,并写回到高速缓丰中打开的被映射入高速缓存中的文件里。
4)、高速缓存的一致性
高速缓存管理器的一重要功能是确保所有访问高速缓存数据的进程都得到那些数据的更新。
在 windows2000中,因为高速缓存管理器和用户应用程序使用相同的内存管理文件映射到它们的地址空间。
5)、虚拟块缓存
用一种虚拟块缓存方式,管理器对缓存中文件的某些部分进行追踪,通过内存管理器的特殊系统高速缓存例程将 256KB大小的文件视图映射到系统虚拟地址空间,高速缓存管理器能够管理文件的这些部分。
这种方式有两个主要特点:
o 它使智能预读成了可能。
o 它允许 I/O系统绕开文件系统访问已经在高速缓存中的数据。
6)、基于流的缓存
Windows2000 高速缓存管理器与文件缓存相对应也设计了字节流缓存。一个流是指在文件内的字节序列。
NTFS中就允许文件包括多个流对象,高速缓存管理器通过独立地缓存每一个字节流来适应这些文件系统。 NTFS是把主文件表放入字节流中并缓存这些字节流。
7)、可恢复文件系统支持
为了保证能成功的恢复一个卷,在卷修改操作开始之前,记录卷修改操作的日志必须被完全写入磁盘。
2、高速缓存结构
1)、高速缓存的地址结构
2)、高速缓存的大小
3)、高速缓存数据结构
1)、高速缓存的地址结构
视图:因为 windows2000系统高速缓存管理器基于虚拟空间缓存数据,所以它管理一块系统虚拟地址空间区域。高速缓存管理器把每个地址空间区域分成
256KB槽,被称为视图。
地址的映射:
文件第一次 I/O操作时,高速缓存管理器将文件中包含被请求数据的 256KB对齐的区域映射为一个 256kB视图,
放入到系统缓冲空间的一个空闲槽内。高速缓存管理器在文件视图和缓存地址空间的槽之间循环进行映射,
将所请求的第一个视图映射到第一个槽。
高速缓存管理器只映射活跃的视图。
2)、高速缓存的大小
一、高速缓存的虚拟大小
如果系统有多于 4032个 (16MB)物理内存页面,高速缓存的大小被设置为 128MB,
并且每增加 4MB物理内存,高速缓存的大小则增加 64M。
如果系统计算的高速缓存的虚拟大小大于 512 MB,那么将从一个称为高速缓存额外内存( cache)的地址空间中分配虚拟内存给高速缓存。
二、高速缓存的物理大小
Windows2000高速缓存管理器与其他操作系统在设计上的主要差别是物理内存管理器的授权。
因此,处理工作集扩充、修整、管理以及更改,处理备用链表的现有代码,也可以用控制系统缓存的大小,动态平衡进程和操作系统之间对物理内存的需求。
通过观察性能计数器和系统变量,可以对比系统高速缓存的物理大小与整个系统工作集的物理大小,同样,也能看到系统工作集上的缺页信息。
3)、高速缓存数据结构
一、虚拟地址控制块( VACB)
二、每个单独打开的高速缓存文件都有一个专有的高速缓存映射,其中包含了用于控制预读的信息,另外文件对象的所有私有的缓存映射结构都被链接在一起。
三、每个被高速缓存的文件都有一个单独的共享的高速缓存映射结构,该结构指向系统高速缓存中包含映射文件视图的槽
3、高速缓存操作
1)、写回高速缓存和延迟写
2)、智能预读
3)、系统线程
4)、快速 I/O
主分区:使用基本磁盘上未分配空间创建的卷。
Windows 2000 和其他操作系统可以从主要分区启动。在基本磁盘上最多可以创建四个主要分区,或者三个主要分区和一个扩展分区。主要分区只能在基本磁盘上创建,并且不能再分区。
扩展分区:可以包含逻辑驱动器的基本磁盘的一部分。如果要使基本磁盘上的卷多于 4 个,
可以使用扩展磁盘分区。每个物理磁盘只允许四个分区中的一个分区为扩展磁盘分区,并且在创建扩展磁盘分区时不需要有主磁盘分区。
只能在基本磁盘上创建扩展磁盘分区。
简单卷:构成单一磁盘磁盘空间的卷。它可以由磁盘上的单个区域或同一磁盘上链接在一起的多个区域组成。可以在同一磁盘内扩展简单卷或者扩展到其他磁盘上。如果跨越多个磁盘扩展简单卷,则该卷就成了跨区卷。只能在动态磁盘上创建简单卷。简单卷不能容错,但可以被镜像。
跨区卷:由多个物理磁盘上的磁盘空间组成的卷。任何时候都可以通过扩展跨区卷来添加它的空间。只能在动态磁盘上创建跨区卷。跨区卷不能容错也不能被镜像。在 Windows NT 4.0中,跨区卷也被称为卷集。
带区卷:以带区形式在两个或多个物理磁盘上存储数据的卷。带区卷上的数据被交替、均匀(以带区形式)
地分配给这些磁盘。带区卷是所有 Windows 2000 可用的卷中性能最佳的,但它们不提供容错。如果带区卷上的磁盘失败,则整个卷上的数据都将丢失。只能在动态磁盘上创建带区卷。带区卷不能被镜像或扩展。
在 Windows NT 4.0 中,带区卷也被称为带区集。
镜像卷:在两个物理磁盘上复制数据的容错卷。它通过使用卷的副本(镜像)复制该卷中的信息来提供数据冗余。镜像总位于另一个磁盘上。如果其中一个物理磁盘出现故障,则该故障磁盘上的数据将不可用,
但是系统可以使用未受影响的磁盘继续操作。
镜像卷在读取操作时比 RAID-5 卷要慢,但在写入操作时要快。只能在动态磁盘上创建镜像卷。在
Windows NT 4.0 中,镜像卷被称为镜像集。
RAID-5:具有数据和奇偶校验的容错卷,有时分布于三个或更多的物理磁盘。奇偶校验是用于在失败后重建数据的计算值。如果物理磁盘的某一部分失败,您可以用余下的数据和奇偶校验重新创建磁盘上失败的那一部分上的数据。只能在基本磁盘上创建 RAID-5
卷,您不能镜像或扩展 RAID-5 卷。在 Windows NT
4.0 中,RAID-5 卷也被称为带奇偶校验的带区集。
寻道时间
寻道的原因:为了读或写,磁头必须定位于期望的磁道和该磁道中期望的开始处。
磁道选择:包括在活动头系统中移动磁头或者固定头系统中选择一个磁头。
寻道时间:在活动头系统中,磁头位磁道所需要的时间称作寻道时间,而这个时间很难减少。
组成:最初启动时间以及一旦访问臂到达一定速度和横跨度那些它必须跨越的磁道所需要的时间。(即启动时间和稳定时间)
旋转延迟
在任何一种情况下,一旦选择好磁道,
磁盘控制器就开始等待,直到适当的扇区旋转到磁头处。扇区到达磁头的时间就称作旋转延迟。
Eg:一般磁盘的旋转速度为
5400~10000r/m。例如,10000r/m相当于每 6ms转一周,因此平均旋转延迟为 3ms。
软盘的转速度通常在 300~600r/m之间,
因而平均延迟在 50~100ms之间。
传送时间
一旦磁头定位,并且扇区旋转到磁头下,
就开始执行读 /写操作,这是整个操作的数据传送部分。传送时间:
T=b/(rN)
其中,b是要传送的字节数; N是一个磁道中字节数; r是旋转速度,单位为转 /秒。
因此总的平均存取时间可以表示:
Ta=Ts+0.5Xr+b/rN)
其中,Ts为平均寻道时间时序比较 1:
假设文件尽可能紧致的保存在磁盘上,文件占据了 8个相邻磁道中所有扇区。那么,
读第一个磁道的时间如下:
平均寻道,10ms
旋转延迟,6ms(读一个磁道需旋转一周即 6ms)
读 320个扇区( 1磁道),6ms合计 22ms
(上面的 6ms是对一个磁道存取数据所花时间 )
后面的每个磁道读写总时间可以为 6+6=12ms
故读取整个文件的时间为:
22+7X12=82ms=0.106ms
时序比较 2
在随机访问的情况下,读取相同的数据所需要的时间,就是随机访问每个扇区的时间的总和。
对每一个扇区:
平均寻道,10ms
平均旋转延迟,3ms
读一个扇区,6/320=0.01875ms合计:
13.01875ms
(上面的 6/320ms是对一个扇区存取数据所花时间 )
故读取整个文件的时间:
13.01875X2560=33 328ms= 33.328s
RAID 磁盘阵列
实现自主磁盘冗余阵列 (RAID) 的策略可以使用硬件或软件解决方案。硬件解决方案中,控制器接口处理冗余信息的创建和重新生成。在 Windows 中,该活动可以由软件执行。
在任意情况下,数据跨磁盘阵列存储。
磁盘阵列由控制器协调的多个磁盘驱动器组成。将单个数据文件通常写在多个磁盘上在某种意义上可以提高性能或可靠性,这取决于所使用的 RAID 级别。
然而,除非修复错误否则没有容错性。少数 RAID 实现可以经受住两个同时发生的故障。当替换发生故障的磁盘时,可以通过使用冗余信息重新生成数据。重新生成数据发生而不用备份磁带或者手动执行更新操作来覆盖自从上次备份后所发生的事务。当完成重新生成数据时,所有数据都是当前的,
并且再次保护防止磁盘错误。提供合算和数据的高度可用性是磁盘阵列的主要优势。
磁盘的结构:
移动臂:
转轴:
盘面:
磁道
扇区:
磁头:
选择 RAID 方法
镜像卷和 RAID-5 卷的主要差异在于硬件需求、性能和成本。
下表显示两种容错方法的主要特性。
镜像卷 RAID-5 卷
支持 FAT 和 NTFS。 支持 FAT 和 NTFS。
可以镜像系统或启动卷。不能将系统或启动卷划分为带区集。
需要两个硬盘。 至少需要三个硬盘。
每兆字节开销较高 ( 50% 的利用率) 每兆字节开销较低。
有良好的读写性能。 写性能一般,读取性能优良。
使用较少的系统内存。 需要较多的系统内存。
只支持两个硬盘。 最多支持 32 个硬盘。
在镜像和 RAID-5 卷之间进行选择取决于计算机的环境。当大多数活动由读取数据组成时,RAID-5 卷对数据冗余是一种好的解决方案。例如,如果网络上有服务器,在此服务器上维护该站点上的人员所使用的程序所有副本,这是使用
RAID-5 卷的一个好的示例。它允许您保护程序以防止在带区卷中丢失单个磁盘。
另外,因为可以通过组成 RAID-5 卷的所有磁盘并发读取,所以提高了读取性能。
在信息经常更新的环境中,使用镜像卷通常更好。然而,如果需要冗余,并且如果限制镜像的存储管理开销,则可以使用 RAID-5 卷。
将基本磁盘升级为 动态磁盘
将要升级的任何磁盘在磁盘末尾都必须至少包含 1 MB 的可用空间,以使升级成功。在磁盘上创建分区或卷时,“磁盘管理”程序自动保留这一可用空间,但带有其他操作系统创建的分区或卷的磁盘可能没有这样的可用空间。
在升级磁盘之前,请关闭在这些磁盘上运行的任何程序。
当您将基本磁盘升级到动态磁盘之后,基本磁盘上的任何现有分区都将变为(动态)简单卷。不能将动态卷改回分区。
任何现有的镜像卷(镜像集)、带区卷(带区集),RAID-5
卷(带有奇偶校验的带区集)或跨区卷(卷集)分别变成动态镜像卷、带区卷,RAID-5 卷或跨区卷。
升级后,动态磁盘不能包含分区或逻辑驱动器,也不能由
MS-DOS 和除 Windows 2000 以外的其他 Windows 操作系统访问。
硬件 RAID
安装了网络载量平衡的计算机可以使用不同的硬件 RAID 配置。因为许多硬件 RAID 方案在一个机柜里提供冗余的电源、总线和电缆,并且跟踪硬件 RAID 固件中每个组件的状态,所以它们可通过多冗余设备提供数据的可用性,
并防止多点故障。
硬件 RAID 解决方案同时也使用板上处理器和高速缓存,以提供显著性能。
Windows 2000 和网络载量平衡可以把这些设备作为标准的磁盘资源。
尽管硬件 RAID 比软件 RAID( Windows 2000
Advanced Server 附带的功能)价格昂贵得多,
但通常仍把硬件 RAID 作为首选方案。
Eg:假定在某磁盘共有 200个柱面,编号为 0~199,
如果在为访问 143号柱面的请求服务后,当前正在为访问 125号柱面的请求服务,同时有若干请求者在等待服务,它们依次要访问的柱面号为,
8,147,91,177,94,150,102,175,130
请回答下列问题:
1、分别用先来先服务、电梯调度算法来确定实际的服务次序?
2、按实际的服务次序计算在上述算法下移动臂的移动的距离?
Eg:假定在某移动臂磁盘上,刚刚处理了访问 60号柱面的请求,目前正在 73号柱面上读信息,并有下列请求序列等待访问磁盘,请求序列:
试用最短时间寻找算法处理顺序和电梯调度算法,分别排出实际处理的请求次序次序 1 2 3 4 5 6 7 8 9
柱面号 150 50 178 167 87 43 23 160 85
算法 1
算法 2
RAID-5 卷
RAID-5 卷是包含数据和 奇偶校验,间歇跨三个或更多物理磁盘的划分带区的 容错 卷。如果物理磁盘的一部分发生故障,可以从剩余数据和奇偶校验重新创建发生故障部分的数据。对于多数活动由读取数据构成的计算机环境中的数据冗余来说,RAID-5 卷是一种很好的解决方案。 (在 Windows NT 4.0 或更早的版本中,
RAID-5 卷称作带有奇偶校验的带区集。 )
注意
只能在运行 Windows 2000 Server 的计算机上使用
RAID-5 卷。
然而,可以使用运行 Windows 2000 Professional 的计算机在运行 Windows 2000 Server 的远程计算机上创建 RAID-5 卷。
创建 RAID-5 卷
1,打开 磁盘管理。
2,右键单击要创建 RAID-5 卷的动态磁盘上的未分配空间,然后单击“创建卷”。
3,在创建卷向导中,单击“下一步”,单击
,RAID-5 卷”,然后按屏幕上的指令操作。
注,
只能在运行 Windows 2000 Server 的计算机上创建 RAID-5 卷。
至少需要三个动态磁盘才能创建 RAID-5 卷。
RAID-5 卷最多可以跨越 32 个磁盘。
使用 RAID-5 卷
RAID-5 卷,在 Windows NT 4.0 中称为带奇偶校验的带区,共享数据跨越所有磁盘阵列。 RAID-5
的独特之处在于将奇偶信息写入到所有的磁盘中。
通过在阵列中不同磁盘上排列数据块和奇偶校验信息获得数据冗余。
RAID-5 卷有比镜像卷更好的读取性能。然而,当其中某个成员丢失时(例如当某个磁盘损坏时),
由于需要使用奇偶信息恢复数据,因此读取性能会降低。
然而,对需要冗余和主要是读取的应用程序在镜像卷上推荐此策略。奇偶校验计算会降低写性能。而且,在常规操作中,读取操作需要的内存是写操作的三倍。而且,当某个卷发生故障时,读取操作至少需要三倍的内存。这两种情况都是由奇偶校验计算引起的。