计算机操作系统教程_第四版_第11章 Windows的设备管理和文件系统_第1页
计算机操作系统教程_第四版_第11章 Windows的设备管理和文件系统_第2页
计算机操作系统教程_第四版_第11章 Windows的设备管理和文件系统_第3页
计算机操作系统教程_第四版_第11章 Windows的设备管理和文件系统_第4页
计算机操作系统教程_第四版_第11章 Windows的设备管理和文件系统_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第11章 Windows的设备管理和文件系统11.1Windows I/O系统的结构Windows管理的设备主要是完成计算机和外界进行交互的输入/输出设备,因此我们将操作系统的设备管理服务称为I/O(输入/输出)系统。本节介绍Windows I/O系统的设计目标及设备管理服务的系统结构。11.1.1设计目标11.1.2设备管理服务 11.1.1设计目标Windows I/O系统为应用程序和操作系统服务提供了一个操作设备的抽象层,它由若干个运行在核心态的系统服务组成。我们可以从Windows I/O系统的设计目标来了解它的主要特点:为所有的设备提供统一的安全和命名机制,以方便这些资源的共享;提供

2、基于包交换的高效异步I/O请求处理机制,以提高应用与设备交互的效率;为使用高级语言编写设备驱动提供支持,以便在不同体系结构的计算机之间移植驱动程序;支持可扩展的分层驱动程序结构,以方便对设备管理功能的扩充和修改;支持驱动程序的动态加载和卸载,以最大程度地节省系统资源;提供即插即用的功能,使得系统能够自动侦测新的硬件设备,并自动分配必要的系统资源;提供电源管理功能,使得系统和相关的设备在不使用时可以进入低功耗状态;支持多个可安装的文件系统,包括文件分配表文件系统(FAT),CD-ROM文件系统(CDFS),通用磁盘格式文件系统(UDF)和NT文件系统(NTFS)。 11.1.2 设备管理服务由多

3、个运行在核心态的系统服务与设备驱动程序一起完成设备管理,它们在体系结构上可以分为三个层次:最低层是硬件抽象层,它为操作系统服务提供了一个对主板上的设备的逻辑封装,如处理器和中断控制器等;在其上为设备驱动层,它为计算机操作外接硬件设备提供了一个逻辑接口;再往上是设备管理层,它实现对所有计算机外部设备的管理,并为用户态的应用提供操作设备的接口,如图11.1 所示。I/O管理器(I/O Manager):Windows I/O系统的核心,它提供支持Windows设备驱动程序的系统结构。它将应用的I/O请求传递到相应的设备驱动程序,并将处理的结果返回给应用。即插即用管理器(PnP Manager):它

4、和I/O管理器和总线管理驱动一起,侦测硬件设备的加入和移出,并分配相应的硬件资源。电源管理器(Power Manager):它和I/O管理器和相应的设备驱动程序一起,管理该设备的能耗状态;设备驱动程序(Device Driver):它为访问特定的设备提供一个I/O接口,设备驱动从I/O管理器得到处理指令,在处理完后会通知I/O管理器。如果需要其它的设备驱动协助完成指令,设备驱动程序会通过I/O管理器将指令转到相关的设备驱动程序。图11.1Windows设备管理体系结构注册表(Registry)和INF文件:注册表记录了和系统相连的硬件设备描述以及初始化和配置信息,INF文件是用来安装相关设备驱

5、动的文件。硬件抽象层(Hardware Abstraction Layer: HAL):它为设备驱动程序提供一个和计算机主板硬件无关的抽象层,使得设备驱动程序可以通过统一的接口来访问计算机主板上的设备,而不用考虑不同计算机在硬件配置上的差别。11.2设备驱动程序和I/O处理11.2.1设备驱动类型和结构大部分的设备驱动程序运行在核心态,我们可以按照它们不同的性质分为下面的三个大类:文件系统驱动:Windows的文件系统是通过驱动程序来实现的,它构建在外存管理的基础之上。它接受对文件操作的请求,并将这些请求翻译成具体的外存设备的操作命令。即插即用设备驱动:它们和硬件设备直接交互,并和Window

6、s即插即用管理器一起工作,来完成对设备的管理。常见的这类驱动管理的设备有:大容量存储设备、视频适配器、输入设备和网络适配器等。非即插即用设备驱动:这类驱动不直接和硬件设备打交道,而是为用户态的应用访问核心态的服务和驱动提供接口。这类驱动程序又被称作内核扩展,常见的这类设备驱动有:网络接口和协议驱动。Windows设备驱动是一组例程的集合,I/O控制器通过调用它们来完成I/O请求的处理。在操作系统中,设备驱动由一个驱动对象来表示,I/O管理器在调入设备驱动时创建该对象。一个典型的Windows设备驱动常常包括下面的例程:初始化例程:当I/O管理器将设备驱动程序调入操作系统时,会调用该例程。该例程

7、通过填写相应的系统数据结构来注册该设备驱动的其它例程,并作必要的全局初始化。设备加入例程:所有的即插即用设备都需要实现一个设备加入例程,当即插即用管理器侦测到一个新的硬件加入时,会调用该例程。该例程为新的设备分配一个新的设备对象。调度例程:设备驱动程序通过调度例程来实现主要的功能。例如,设备、文件系统和网络设备实现的打开、关闭、读取、写入等功能例程。I/O启始例程:当一个I/O请求处理开始时,I/O管理器通过该例程来初始化与设备交换的数据。中断服务例程:当一个设备发出中断请求时,系统的中断调度器将控制转到该例程。它用来实现需要实时处理的设备请求,并将剩下的操作留给中断服务延迟过程调用例程处理。

8、典型的Windows设备驱动包括的例程(续):中断服务延迟过程调用例程:在中断处理服务例程返回调用程序后,延迟过程调用例程有更多的时间处理完I/O请求的操作,以减少对其它的系统服务的影响。终止例程:在分层设备驱动中需要实现这一例程,当低层的设备驱动完成处理后,会调用该例程来通知上层设备驱动相应的处理结果。调出例程:Windows的设备驱动程序可以动态的调入和调出,当调出设备驱动程序时,I/O管理器通过调用该例程来释放该驱动程序占用的系统资源,并将驱动程序移出内存。11.2.2Windows的I/O处理Windows应用程序通过调用相应的子系统函数来发出I/O请求,I/O请求通过I/O管理器和设

9、备驱动程序到达实际的物理设备。常见的I/O处理的类型:同步I/O和异步I/O:当驱动程序初始化I/O处理后会马上返回I/O管理器,同步I/O操作会等待设备处理完数据,再返回到调用程序继续执行;异步I/O操作则会马上返回到调用程序,等I/O请求处理完后,再进行数据同步。快速I/O:为了提高系统访问文件或高速缓存的速度,Windows还提供了一种直接访问文件系统驱动和缓存管理器的I/O处理器制。这种I/O处理避免了发送I/O请求包而带来的延时,可以提高访问的效率。映射文件I/O:通过映射文件, Windows可以将磁盘上的文件当作进程的虚拟空间的一部分。应用可以将文件当作一个大的数组来直接访问,而

10、内存管理器通过映射文件I/O来完成映射文件到磁盘文件的转换。在核心操作系统服务中,映射文件I/O被用于高速文件缓存和映像激活(调入可执行程序)。集中式的I/O:为了提高文件访问效率,Windows 的I/O系统提供了一种集中访问连续文件块的访问机制。当应用程序对连续的文件块进行读写时,即使它们在进程的地址空间不是连续存放,I/O系统也会将几个I/O请求合成一个来进行处理,以便减少磁盘I/O的次数。11.2.2Windows的I/O处理单层驱动的I/O处理:Windows I/O系统通过I/O请求包来表示一个I/O请求,在应用调用一个I/O服务时,I/O管理器会创建一个I/O请求包,并将它保存在

11、非分页系统内存空间中,以便核心态系统服务对它进行访问。通常一个I/O请求是由一层或多层设备驱动程序配合完成的,一个简单的单层驱动处理同步I/O请求的过程,如图11.2所示:应用调用I/O处理函数,并通过相应的子系统动态连接库发出的I/O请求;子系统的动态连接库调用I/O管理器的请求服务;I/O管理器分配一个I/O请求包来表示该请求,并将它发送到相应的设备驱动程序;设备驱动程序将I/O请求包中的数据发送到相关的设备,进行I/O操作;在完成I/O处理后,设备发出中断通知处理器操作完成;处理器的控制转到驱动程序的结束服务来通知I/O管理器处理完毕,并由I/O管理器将控制返回到调用程序。图11.2单层

12、驱动处理同步I/O请求的过程11.2.2Windows的I/O处理多层驱动的I/O处理示例,如图11.3所示:以文件系统的磁盘操作I/O为例,分析多层驱动处理一个非同步I/O请求的过程。当I/O管理器收到一个磁盘操作I/O请求后,为它分配一个I/O请求包并首先将它发送给文件系统驱动程序。文件系统驱动程序再将该请求包转发给磁盘驱动。与单层驱动不同的是,多层驱动的I/O请求包有一组驱动栈信息,每一层驱动通过维护相应的驱动栈信息来完成自己的操作并进行信息传递。和同步I/O处理不同,异步I/O处理将I/O请求包传递到磁盘驱动后,磁盘驱动在将相关数据发送到磁盘设备立即将控制方回到调用程序。等到磁盘设备完

13、成操作后,再通过中断将执行状态返回到应用程序,并作相关的数据同步。图11.3多层驱动处理非同步I/O请求的过程11.3Windows的文件系统Windows的文件系统是以设备驱动的形式来实现的。操作系统将信息以文件的形式存储在外存(如磁盘)上,文件系统驱动和磁盘驱动一起,共同构建了Windows的文件系统。11.3.1Windows磁盘管理Windows将磁盘分为固定大小的“扇区”,扇区的大小取决于不同的存储设备。大部分硬盘的扇区大小为512个字节,而CD-ROM的扇区大小一般为2048个字节。相邻的扇区集合组成“分区”,Windows通过分区表来存储每个分区的开始扇区、大小和其它相关的特性。

14、Windows通过“卷”来抽象一个或几个分区,它是文件系统操作磁盘的逻辑的单元。图11.4Windows磁盘管理相关的系统服务如图11.4所示,文件系统是构建在磁盘管理之上的。系统通过分区管理器和卷管理器和磁盘设备进行交互,为文件系统提供一个以卷为单位的逻辑视图。文件系统在卷管理器的基础之上构建文件系统的格式,并为I/O管理器提供操作文件的接口。11.3.2Windows文件系统格式Windows支持多种文件系统格式,包括:CDFS, UDF, FAT12, FAT16 ,FAT32和NTFS。CDFS和UDFCDFS(CD-ROM文件系统) 是一个支持CD-ROM文件的只读文件系统,最大支持

15、的文件大小为4GB,最多支持65,535个目录。UDF(通用磁盘格式文件系统)主要提供了对DVD文件的支持。FATFAT(文件分配表文件系统)是一个简单的文件系统,它最初是为DOS操作系统设计的。它适用于小容量的磁盘,文件目录也比较简单。为了向后兼容,Windows NT体系结构的操作系统仍然支持FAT文件系统。FAT文件系统是根据其组织形式(文件分配表)而命名的,文件分配表位于卷的开头。为了防止文件系统遭到破坏,FAT文件系统保存了两个文件分配表,当其中一个遭到破坏时,另外一个可以作为备份。而且,文件分配表和根目录必须放在磁盘的一个固定的位置,这样系统在启动时才可以找到需要的文件。以FAT文

16、件系统格式化的卷以簇为单位进行分配,FAT有三个不同的版本,FAT12,FAT16和FAT32,FAT后面的数字代表用来表示簇号的位数。版本越高,表示在一个分区上可以存储的簇的数目越大。NTFSNTFS (NT文件系统)是基于Windows NT体系结构的Windows操作系统的主流文件系统,NTFS的每个卷可以支持232-1个文件,一个文件最大可达到16TB。NTFS具有许多优秀的性能,如文件和目录的安全机制、磁盘配额、文件压缩以及加密等等,而且当系统不正常中止后,文件系统可以自动恢复目录和文件的结构信息。我们将在后面详细介绍NTFS的结构。11.3.3Windows文件系统驱动Window

17、s通过文件系统驱动来管理不同格式的文件系统,它运行在核心态。作为设备管理的一部分,文件系统驱动程序需要在I/O管理器中注册。为了提高文件操作的效率,文件系统驱动程序和内存管理器交互得非常密切。为了提高吞吐量,它还和高速缓存管理器直接交互。文件系统驱动程序在I/O管理器中注册后,I/O管理器可以通过它来识别卷。每一个Windows文件系统的第一个扇区都被预留为卷的根扇区,通过根扇区,文件系统驱动程序可以找到相应文件系统所需要的数据信息。当文件系统驱动识别了一个卷后,它会创建一个设备对象来表示文件系统。相应的存储设备管理器也创建一个设备对象来表示具体的存储设备。通过这这两个设备对象,I/O管理器将

18、传递到卷设备管理器的I/O请求转发到存储管理器的设备对象。应用可以通过两种方式来访问文件,一种是直接通过文件访问函数进行文件操作,如ReadFile和WriteFile等,它通过磁盘驱动的I/O处理来操作磁盘。另外一种是通过读写映射文件的地址空间来完成文件操作,它通过映射文件来操作磁盘。11.4NTFS文件系统11.4.1NTFS 的特点可恢复性:NTFS利用事务来实现文件系统的可恢复,操作系统将一系列对文件系统结构修改的操作组成事务。事务不间断地执行完后可以保证文件系统的一致性,如果事务在没有执行完之前被中断,已执行的操作必须进行回退,以保证文件系统结构恢复到事务操作之前。安全性:NTFS的

19、安全性通过Windows的对象模型来实现的,每一个打开的文件都由一个文件对象来表示,文件对象的安全描述作为文件的一部分存储在磁盘上。在一个进程打开一个文件对象的句柄时,Windows的安全系统服务会验证该进程是否有访问该对象的授权。冗余与容错:数据的可恢复性可以保证文件系统在磁盘上可以访问,但不能保证恢复所有的用户文件。NTFS通过冗余来保护关键的文件系统信息,当存储该信息的磁盘扇区损坏时,系统可以利用冗余扇区来恢复文件数据。动态坏簇重映像:当系统试图读一个被损坏的扇区时,Windows容错驱动程序会自动搜索到备份扇区。同时,NTFS会重新分配一个扇区,作为该扇区新的备份。11.4.1NTFS

20、 的特点(续)基于统一字符编码(UNICODE)的命名机制:NTFS用统一字符编码来存储文件名、目录名和卷名,16位的字符编码可以让不同国家的用户用自己的语言来命名,使得Windows的国际化版本很容易实现。文件压缩:NTFS支持文件压缩功能,并透明地管理压缩和解压的过程。用户还可以选择将一个文件目录压缩,系统会将该目录下的所有文件压缩。加密:NTFS的安全性并不能保护计算机丢失或文件被泄露后的数据私密性,NTFS通过加密文件系统来实现敏感数据的加密保护。11.4.2NTFS的磁盘结构卷:系统格式化磁盘时,首先将磁盘分割成一个或多个卷。卷代表着磁盘的一个逻辑分区,每一个卷包含一系列的文件和可被

21、利用的磁盘空间。簇簇是在一个卷上的固定大小的磁盘空间,簇的大小在系统格式化时就确定了。簇的大小和卷的大小相关,它一般是物理扇区大小的偶数倍。NTFS基于簇而不是扇区来操作,是为了使文件系统独立于不同大小的物理扇区。NTFS可以通过设置较大的簇空间来支持大容量的磁盘,或者通过簇大小的的调整来支持非标准物理扇区的磁盘。当磁盘分区很大时,还可以通过设置较大的簇空间来减少磁盘碎片和磁盘定位的时间。为了定位相关的簇在磁盘上的物理位置,NTFS引入了逻辑簇号(Logical Cluster Number)。逻辑簇数表示从卷的开始到结束的顺序编号,将相应的逻辑簇数乘以簇大小就得到了该逻辑簇号在物理盘上的位置

22、。NTFS通过虚拟簇号(Virtual Cluster Number)来定位一个文件中数据的位置,虚拟簇号将文件从开始到结尾顺序编号。每个虚拟簇号都映射到一个逻辑簇号,因此连续的虚拟簇号在物理上不一定是连续存放的。11.4.2NTFS的磁盘结构文件NTFS的一个特点就是存储在卷上的所有数据都保存在文件中,包括用于定位和查找文件的文件系统的结构数据。当磁盘的一部分损坏后,NTFS可以重定位这些文件,使得磁盘可以继续使用。NTFS中,包含目录在内的文件名的长度可达255个字节,可以包含Unicode字符、空格和句点。主控文件表是NTFS卷结构的核心,它由一组文件记录构成。不管簇的大小如何,每个文件

23、记录的大小固定为1KB,每一个文件在主控文件表上都有一个文件记录与之对应。除了数据文件之外,NTFS的卷还包含了用来实现文件系统的结构文件,主控文件表本身也以文件的形式存在的。为了区别于用户文件,这些系统结构文件用$标志符作为文件名的首字符,如主控文件表的文件名为:$MFT。每个文件都通过一个文件记录来描述,文件记录用不同的属性来描述文件的文件名、时间信息和其它文件说明信息,文件数据也可以个看作是文件记录的一个属性。图11.5大于1KB的文件存储结构当文件的所有属性(包括数据属性)占用的空间小于1KB的文件记录时,所有的数据可以直接存储在文件记录中。如图11.5所示,当文件的大小会超过1KB时

24、,NTFS会分配额外的盘区来存储文件的数据,并通过文件记录的数据属性指向了额外分配的盘区。11.4.2NTFS的磁盘结构目录在NTFS文件系统中,文件目录的结构为该目录所有文件名的索引记录,它也存放在主控文件表中。在创建一个文件目录时,NTFS会根据该目录下的文件的名称属性建立索引。一个目录的主控文件记录将其目录中的文件名和子目录名进行排序,并保存在索引根属性中。对于一个大的目录,系统用一个固定为4KB大小的索引缓冲区来存储不能放在索引记录中的文件名。NTFS用B+树来实现管理索引,用B+树来存储文件名有很多好处,由于文件名是排序后存放的,所以目录查找起来非常快。而且,B+趋向于横向增长,因此当文件目录不断加深时,NTFS的查找效率不会降低。以一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论