windows存储文件设备管理_第1页
windows存储文件设备管理_第2页
windows存储文件设备管理_第3页
windows存储文件设备管理_第4页
windows存储文件设备管理_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

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

文档简介

3.WindowsXP文件组成WindowsXP安装后一般在系统盘(通常为硬盘c:)上生成3个文件夹DocumentsandSettings、ProgramFilesWindows,除少数几个系统文件存储在系统盘根目录中,绝大局部文件存储在这3个文件夹中(1)DocumentsandSettings文件夹 DocumentsandSettings文件夹用于保存用户配置信息等。默认情况下,此文件夹中会有Administrator、Allusers、DefaultUser、LocalService、NetworkService文件夹,以及用不同用户名建立的文件夹(如果系统中创立了多个用户)。其他文件夹都为用户配置文件夹,且文件夹结构也大体相同。以DefaultUser文件夹为例,该文件夹一般包含以下一些主要子文件夹①ApplicationData:通用应用程序数据文件夹,用于存放已经安装的一些应用程序的专用数据,其内容是软件安装时自动生成的。Startup文件夹存在(如果安装过Office,此处存放的是Word启动时要自动翻开的文档)。②"开始"菜单:存放"开始"菜单中的局部程序组和快捷方式。③桌面:存放该登录用户的局部桌面工程。④ApplicationData:用于存储应用程序数据。⑤Templates:其中可能有Word、Excel等的模板文件,即右击鼠标并选择“新建〞命令创立文档时使用的参考模板。⑥MyDocuments(我的文档

):其中含有

MyMusic和

MyPictures两个文件夹。该文件夹一般为默认文件夹

,用于存储用户的文档。(2)ProgramFiles文件夹ProgramFiles文件夹用于存储安装的

Windows应用程序,包括

Windows操作系统内置的一些应用程序

(例如

InternetExplorer、WindowsMediaPlayer、

WindowsUpdate等

)。在Windows环境下安装应用程序时,假设用户未特别指定安装位置,系统通常将其安装在该文件夹中,且大多数子文件夹与所安装的应用程序相对应。其中的CommonFiles子文件夹是一个特别的文件夹,用于存储应用程序公用的库文件。(3)Windows文件夹 Windows文件是系统安装的默认文件夹其中包含了操作系统的绝大多数系统文件(其中包含100多个文件夹、数千个文件)。表4.2中列出了在WindowsXP典型安装时,系统在硬盘上创立的Windows文件夹的主要结构及其作用的简要说明4.2Windows处理器管理处理器是计算机系统的核心资源之一,处理器管理是操作系统的重要组成局部。处理器管理的工作是对处理器资源进行合理的分配使用使各用户(任务)公平地得到处理器,以提高处理器的利用率。对于操作系统来说运行的程序称为进程,进程反映了程序运行的动态特征,因此处理器管理的重要任务就是对进程实施管理包括给进程分配资源、有效地控制进程的执行、允许进程之间共享和交换信息、保护每个进程使其在运行期间免受其他进程的干扰等。多个进程可以被调度在一个处理器上交替执行

,也可以在多个处理器上同时执行。不同的操作系统可能采用不同的处理器调度策略,但无论是交替执行还是同时执行都属于并发执行。为了提高进程并发执行的力度和降低并发的开销,现代操作系统中又引入了线程的概念。4.2.1进程1.进程概述操作系统引入进程的概念,从理论角度上看

,是对正在运行的程序活动规律的抽象

;从实现角度看

,它是一种数据结构,目的在于刻画动态系统的内在规律有效地管理和调度程序的运行。进程作为程序执行过程的描述,与程序既有密切联系

,又有许多区别。进程具有动态性(地址空间的大小和内容都是动态变化的)、独立性(各进程的地址空间相互独立)、并发性(宏观上各进程是同时独立运行的)等特征。进程从创立到终止其状态一直在不断变化。进程的状态分成5种(见图4.2),它在执行过程中不断地在就绪(ready)、运行(running)和阻塞(blocked)3种状态间进行转换。创立状态指进程正在创立过程中,还不能运行;就绪状态指进程已获得除处理器外的所需资源,等待调度程序分配处理器资源,只要分配了处理器,进程就可以运行;运行状态指进程占用了处理器资源正在运行,处于此状态的进程的数目不能多于处理器的数目;当进程由于等待

I/O操作或其他事件而暂停运行时,它就转入阻塞状态,在条件满足之前,即使把处理器分配给该进程

,它也是无法继续执行的;进程结束运行

,系统收回它所使用的资源

,这时进程处于退出状态。2.进程管理在WindowsXP中,进程是系统资源分配的根本单位,每个Windows进程都是由一个执行体进程块(EPROCESS)来表示的。执行体进程块不仅包含了许多与进程相关的属性,还包含指向其他与进程控制相关的数据结构。①线程块(ETHREAD)列表:描述属于该进程的所有线程的相关信息,以便线程调度器进行处理器资源的分配和回收。②虚拟地址空间描述表(virtualaddressspacedescriptor,VAD):描述进程地址空间各局部的属性,用于虚拟存储管理。③对象句柄(handle)列表:句柄是Windows系统中用来标识对象的标识符,当进程创建或翻开一个对象时就会得到一个对象的句柄,用于对象访问口对象句柄列表维护该进程正在访问的所有对象列表。Windows支持的各个环境子系统都提供了相应的系统调用(API函数),用来实现进程控制。例如,调用Windows环境子系统提供的CreateProcess函数可以创立进程.创立一个Windows进程的过程是由操作系统的3个局部(kerne132.dll、Windows执行体和Windows子系统进程)执行一系列步骤完成的,在创立进程的第一个阶段首先是要找到适当的可执行文件(映像文件),并根据其进行不同的处理。如果指定的是一个Win32应用程序,那么可以被直接使用。对于非Win32应用程序,因为Windows不能直接运行,必须通过一系列的步骤找到一个Windows支持映像以便运行①如果指定的是MS-DOS应用程序(扩展名为.Exe.Com)或Win16应用程序,那么运行ntvdm.Exe创立一个MS-DOS支持进程。②如果指定的是DOS命令程序(扩展名为.bat或.cmd),那么运行cmd.exe以创立一个支持进程。当用户通过WindowsXP的"开始"菜单启动"命令提示符"(翻开MS-DOS窗口)时,从"Windows任务管理器"窗口中可以查看相应的进程(进程的映像名称为cmd.exe)

4.2.2线程为提高进程内的并发性进一步提高处理器的利用效率,Windows引入了线程的概念,把线程作为处理器调度的对象,而把进程作为资源分配的单位。线程表示进程中的一个控制点和一条执行途径,任何进程都可以创立多个并发执行的线程。线程(通常将该线程称为初始线程),进程从初始线程开始进而创立一个或多个线程。由于同一进程内各线程都可以访问整个进程的所有资源,因此它们之间的通信比进程间的相互通信要方便,而同一进程内的线程间切换也会由于许多上下文的相同而得到简化。①初始(initialized):当一个线程被创立时,内部使用此状态。②就绪(ready):线程已获得除处理器以外的所需资源,正等待调度执行。③备用(standby):已选择好执行该线程的处理器(每个处理器只能有一个处于备用状态的线程),正等待一次环境切换以执行线程。需要说明的是,一个线程真正被执行前,它可能会从备用状态中被抢占掉。④运行

(running):线程处于执行状态。该线程一直执行

,直到它的时限结束、被一个优先级更高的线程抢占、线程终止或它自愿进入等待状态。⑤终止

(terminated):当一个线程执行完成时

,它进入终止状态。⑥等待(waiting):线程正等待某对象,以同步线程的执行。当等待事件出现时,等待结束并根据优先级进入运行或就绪状态。⑦转换(transition):如果一个线程已准备好执行,但它的内核堆校(该堆钱用于存储线程执行环境)被换出内存(即位于外存中),那么该线程进入转换状态。一旦其内核堆校被换回内存中,该线程将进入就绪状态。4.2.3处理器调度

1.调度概述WindowsXP实现了一个优先级驱动、抢先式调度系统具有最高优先级的可运行线程,总是最先运行,而且该线程可能仅限于在允许它运行的处理器上运行这种现象称为处理器亲和性

(processoraffinity)。处理器亲和性是针对多处理器系统而言的,在默认情况下线程可以在任何一个空闲的处理器上运行,但可以通过调度函数或有关设置来改变处理器亲和性。一个线程被选中运行的时候,它将运行一定时间

,这段时间称为时限

(quantum)。时限是指一个线程在"系统将运行权交给同一优先级别

(或更高优先级别)上的另一个线程

"之前允许运行的时间长度。时限值可以随着系统的不同而不同,也可以随着进程的不同而不同(有关时限问题,后续将进一步介绍

)。此外,一个线程可能未能用完其时限,因为

Windows实现了一个抢先式调度器

,如果另一个具有更高优先级的线程变成就绪状态时,当前正在运行的线程可能在用完其时限前被抢占。实际上还可能发生这样的情况

:一个线程被选中作为下一个将要运行的线程

,但是在它的时限开始前就可能被抢占了。以下情况可能要求线程调度

①一个线程变成就绪状态时,例如一个线程已经被创立好了或刚从等待状态中释放出来。②一个线程离开了运行状态,其原因可能是时限到了,或线程终止了,或线程放弃执行或进入了等待状态。③一个线程的优先级改变了,可能是由于一个系统效劳调用的,也可能是因为Windows系统本身改变了优先级值。④一个线程的处理器亲和性改变了

,因而它不再在当前运行的处理器上运行了

(对于多处理器系统而言

)在以上情况下

,Windows必须确定接下来该哪个线程运行。当

Windows选择一个新线程来运行时

,它执行一次环境切换

,切换到该线程中。环境切换是指这样一个过程

:将当前正在运行的线程的易失性机器状态保存起来并装入另一个线程的易失性状态。2.优先级别 Windows在内部使用32个优先级别(范围为0-31),它们的划分如下:系统级别,其优先级别为0,保存给对系统中空闲物理页面进行清零的零页线程(zeropagethread);可变级别,其优先级别为1-15;实时级别,其优先级别为16-31。线程优先级别的指定可从两个不同的角度进行:通过WindowsAPI来指定线程的优先级,Windows内核也可以控制线程的优先级。每个线程都有一个根本优先级,它是进程优先级和线程相对优先级的一个函数。WindowsAPI可在进程创立时,将进程的优先级类型指定为实时(real-time)、高(high)、高于标准(abovenormal)、标准(normal)、低于标准(belownor-mal)或低(low),然后根据这些进程内部单个线程的相对优先级来组织线程。线程的相对优先级的类型分为时间关键(time-critical)、最高(highest)、高于标准(abovenormal)、标准(normal)、低于标准(belownormal)、最低(lowest)和空闲(idle)。在正常情况下,进程根本优先级(同样也是起始线程的根本优先级)被默认设置为每个进程优先级范围的中间值。虽然一个进程只有一个根本优先级值,但每个线程有两个优先级值,即根本优先级和当前优先级,处理器的调度是根据当前优先级做出的。一个线程的初始根本优先级是从进程的根本优先级继承得来的,正如后面关于优先级提升的介绍,在特定的情况下系统会在很短的周期内提升线程的优先级(动态范围为1-15)当前优先级。需要说明的是,Windows从来不会在实时优先级范围内(16-31)调整线程的优先级,所以它们的根本优先级和当前优先级总是相同的。利用Windows支持工具箱(supporttools)中的进程查看工具(pviewer.exe)可以查看所选进程中线程的当前优先级3.时限 在WindowsXP中

,时限只有两种设置值

:短时限或长时限。时钟间隔的长度随着硬件平台的不同而有所不同

,主要取决于

HAL。大多数

x86单处理器系统的时钟间隔是

10ms左右

,而大多数

x86多处理器系统的时钟间隔是

15ms左右。WindowsXP默认情况下使用短时限,而WindowsServer默认情况下使用长时限。之所以在效劳器系统上使用长时限,是因为要使环境切换的次数尽可能地减少,从而某个效劳器应用程序一旦接收到客户请求而被唤醒时,有可能在时限结束之前完成相应的请求,并回到等待状态中。每个进程在创立时都有一个时限值,当给线程分配一个新的时限时就会用到该值。在系统内部,此时限值被设置为3的倍数,即3作为一个时限单元口这意味着,默认情况下WindowsXP系统中线程的时限值为6(2X3),WindowsServer中线程的默认时限值为36(12x3)。线程运行时,在每一个时钟间隔其时限值都会被减少,如果没有剩余的线程时限那么会触发时限结束处理事件。在WindowsXP中,用户可以通过修改注册表中相关的值来改变时限设置。4.处理器调度 Windows调度代码是在内核中实现的,但内核中不存在单独的"调度器"模块,调度代码散布在内核中但凡会发生与调度相关的事件的各个局部,执行这些任务的例程合起来称为内核的"调度器"(dispatcher)。为了进行线程调度,内核维护了一组数据结构

,它们合称为

"调度器数据库"。该数据库负责记录各线程的状态

,如哪些线程正在等待执行、处理器正在执行哪个线程等,其中最主要的内容是调度器的就绪队列一一包含了那些处于就绪状态、正在等待被调度执行的线程。该就绪队列由

32个

"子队列

"组成

,每个子队列对应一个调度优先级。WindowsXP严格基于线程的优先级来确定哪一个线程将占用处理器

,并进入运行状态。但在实际系统中

,线程调度也根据不同的情况采用相应的调度策略。此外

,对于单处理器系统和多处理器系统来说

,其调度策略也有所不同。以下讨论的处理器调度是针对单处理器系统而言的。(1)自愿切换一个线程可能会通过调用某个Windows等待函数来等待某个对象

(例如一个事件、

I/O操作、进程、线程或窗口消息等

),从而由运行状态进入等待状态

,自愿放弃对处理器的使用。这时

Windows选择一个新的线程来运行。当一个线程放弃处理器后

,被移到该线程正在等待对象的等待队列中。通常进入等待状态的线程的时限值不会被重置

,而是在等待事件出现时时限值被减

1(相当于

1/3个时钟间隔

);如果线程的优先级大于或等于

14,在等待事件出现时其时限值被重置。(2)抢先模式当一个高优先级线程的等待完成了(即一个线程等待的事件出现了),或一个线程的优先级被增加或减少了。当一个线程被抢占时,它被转移到它刚刚运行时所在优先级的就绪队列的头部(开始处),在抢占的线程完成运行后,被转移的线程可以继续使用它的时限。处于实时优先级的线程在被抢占时,时限值被重置为一个完整的时间片,而处于动态优先级的线程在被抢占时,其时限值保持不变。需要说明的是

,用户模式下的线程可以抢占内核模式下运行的线程

,即

"抢占

"与线程当前所处的模式并没有关系线程优先级是决定因素。(3)时限结束当正在运行的线程用完了其时限Windows必须决定该线程的优先级是否应该被降低,然后决定是否应该调度另一个线程到当前处理器上来运行。如果刚用完时限的线程的优先级被降低了,那么Windows寻找一个更加适宜的线程进入运行状态。所谓"更加适宜的线程",是指优先级高于"刚用完时限的线程的新优先级"的就绪队列中的一个线程。如果刚用完时限的线程的优先级没有被降低,并且有其他优先级相同的就绪线程,那么Windows从同一优先级的就绪队列中选择下一个线程来运行,并且将原来运行的线程移到该队列的尾部(赋予其新的时限值,将其状态从运行态变为就绪态)。(4)线程终止当一个线程结束运行时它从运行状态变为终止状态。如果处于终止状态的线程对象上没有未关闭的句柄,那么该线程将被从进程的线程列表中删除,相关联的数据结构等也被释放。5.线程优先级提升在以下5种情况下,WindowsXP会提升线程的当前优先级。需要说明的是,前面已提到优先级提升仅适用于动态优先级范围内的线程,即不管如何提升优先级,优先级永远不会超过15而到达实时优先级范围内。(1)I/O操作完成后在完成I/O操作后,WindowsXP将临时提升等待该操作的线程的优先级,以保证等待I/O操作的线程有更多的时机立即运行,从而尽快地完成正在等待处理的任务。线程优先级的实际提升值是由设备驱动程序决定的2)信号量或事件等待结束后当一个等待执行事件或信号量对象的线程完成等待后

,其线程提升一个优先级

(即优先级提升值为

1)其中

,信号量是由操作系统提供的管理公有资源的有效手段

,代表可用资源实体的数量。这种线程优先级的提升同样是以线程根本优先级为基点,提升后的优先级同样不会超过15。在等待结束时,线程的时限值被减1,并在提升后的优先级上执行完剩余的时限值;随后降低一个优先级,运行一个新时限值直到优先级减退到原来的根本优先级。(3)前台进程中的线程完成一个等待操作后对于前台进程中的线程,一个内核对象上的等待操作完成时,相关的内核函数会提升线程的当前优先级(而不是根本优先级)。这种前台线程优先级的提升,可以增强交互式应用程序的响应性当前台应用程序完成一个等待操作时小幅提升其优先级使它更有可能立刻进入运行状态。(4)由于窗口活动而唤醒CUI线程时拥有窗口的线程在被窗口活动唤醒(例如收到窗口信息)时将得到一个幅度为2的额外优先级提升。这种优先级提升的理由同样是有利于改进交互式应用的响应时间。(5)线程处于就绪状态超过一定时间但没能进入运行状态时线程处于就绪状态超过一定时间但没能进入运行状态

,这种现象被称为处理器饥饿。一个优先级为

7的线程正处于运行状态

,另一个优先级为

4的线程在这种情况下是不会获得处理器使用权的

,然而一个优先级为

11的线程正等待某种被优先级为

4的线程锁定的资源

,这个优先级为

4的线程将永远得不到足够的时间来完成它所要做的工作

,并释放阻塞优先级为

11的线程所需要的资源。对于这种情况,平衡集管理器(balancesetmanager,这是一个用于内存管理的系统线程,在后面有关存储管理的小节中将作进一步的介绍)会每秒钟扫描就绪队列一次,查找已在就绪队列中排队超过300个时钟间隔(将近4s)的线程。如果找到了一个这样的线程,那么将其优先级提升到15,并为其分配一个时限为正常值两倍的时限值。一旦被提升线程用完其时限后,该线程的优先级立即被减退到它原来的根本优先级。如果该线程结束前出现了其他更高优先级的线程,该线程将返回就绪队列中(如果它在该队列中又等待了300个时钟间隔,那么它再次获得优先级提升)。4.3Windows存储管理

虽然PC的存储器容量不断扩大、速度不断提高但它仍然不能满足软件开展的需要。特别是多任务处理的出现,一方面要求CPU能同时运行多个程序,另一方面还要求存储器能被不同的任务所共享,因而如何对存储器进行有效的管理,不仅直接影响到存储器的利用率,而且还对系统的性能有重大影响。所以,存储管理是操作系统的一项非常重要的任务。4.3.1内存管理概述 多任务处理系统中,存储管理的主要任务包括内存的分配和回收、地址变换、内存扩充、内存共享和保护等功能。

1.分区式存储管理内存在程序之间的分配有多种方法。为一个用户程序分配一个连续的内存空间是最简单的做法。为了支持多道程序并发执行,引入了分区式存储管理,它把内存分为一些大小相等或不等的分区,操作系统占用其中一局部分区,其余的分区由应用程序使用,每个应用程序占用一个或几个分区。这种做法虽然可以支持多任务并发,但难以实现内存分区的共享,内存的使用效率不高。与分区式存储管理配合使用的是覆盖(overlay)技术,它的原理很简单:一个程序(进程)的几个代码段或数据段按照时间先后来占用同一内存空间。将程序(进程)常用局部的代码和数据常驻内存,不常用的局部平时存放在外存(覆盖文件)中,需要时才装入内存。覆盖技术的缺点是编程时必须划分程序模块并确定模块之间的覆盖关系,这增加了编程的复杂度。还有一种类似的技术称为交换(swapping)技术,它在多个程序(进程)并发执行时,将暂时不执行的程序(进程)送到外存中,从而获得空闲内存来装入新程序(进程),或读入保存在外存中而处于就绪状态的程序(进程)。它也与分区式存储管理配合使用,其优点是增加了并发运行的程序(进程)数目,但缺乏之处是换入和换出的控制增加了处理器的负担。分区式存储管理会使存储器产生碎片

(被占用分区内未被利用的空间是内碎片,占用分区之间难以利用的空闲区是外碎片

),整理碎片需要内存数据搬移

,会占用

CPU不少时间。2.页式和段式存储管理 在上面介绍的存储管理方法中,为程序(进程)分配的空间是连续的,所使用的地址都是物理地址。如果能将一个程序(进程)分散到许多不连续的空间,就可以防止和减少碎片。为此引入了逻辑地址的概念,使程序(进程)的地址空间与实际使用的存储空间别离,以增加存储管理的灵活性。386处理器的逻辑地址指的是进程中使用的地址,它们需要经过转换后才能生成用于访问存储器的物理地址。所有逻辑地址的集合称为该程序的地址空间,所有物理地址的集合称为存储空间。根据分配时所采用的根本单位不同,可以将分配管理方式分为3种:页式存储管理、段式存储管理和段页式存储管理。所谓页式存储管理

,就是将程序的逻辑地址空间划分为固定大小的页

(page),而物理内存也划分为同样大小的页帧

(pageframe)。程序加载时,可将任意一页放入内存的任意一个页帧中

,且这些页帧不必连续。在段式存储管理中,将程序的地址空间划分为假设干个段(seg-ment),这样每个进程有一个二维(需要给出段名和段内地址)的地址空间,系统为每个段分配一个连续的分区,而进程中的各个段可不连续地存放在内存的不同分区中。段页式存储管理是前两者结合的产物---采用段内分页。3.虚拟存储器 随着计算机硬件的开展,虽然PC的内存配置越来越高但由于在系统中并发运行的程序越来越多且单个程序也越来越大,有限的内存总是不能满足系统的要求。为了解决内存供需矛盾,Windows采用了虚拟存储技术(也称为虚拟内存技术)。其根本思想是:在程序装入时,不必将其全部读入到内存,而只需将当前需要执行的一局部页读入内存,就可以让程序开始执行。在程序执行过程中,如果需执行的指令或访问的数据尚未在内存(称为"缺页"),那么由处理器通知操作系统将相应的页调入到内存然后继续执行程序。另一方面

,操作系统也将内存中暂时不使用的页调出

,保存在外存上

,从而腾出空间存放将要装入的程序以及将要调人的页。页的调人和调出完全是由操作系统自动完成的

,从编程的角度来看

,该系统具有的内存容量将比实际的内存容量大得多

,所以称之为虚拟存储器。虚拟存储器的根底是局部性原理(principleoflocality)。所谓局部性原理,是指程序在执行过程中的一个较短时期内,所执行的指令地址和操作数的地址分别局限于一定区域内。这主要表现在以下两方面一是时间局部性即一条指令的一次执行和下次执行、一个数据的一次访问和下次访问都集中在一个较短时期内;二是空间局部性,即当前指令和邻近的几条指令、当前访问的数据和邻近的数据都集中在一个较小区域内。虚拟存储技术的引入给用户提供了一个远远大于实际物理内存的虚拟存储空间,使得用户能在较小的内存中执行较大的用户程序并且可在内存中容纳更多的程序并发地执行。与覆盖技术比较,虚拟存储技术的一个显著优点是不影响编程时的程序结构,不增加程序员的额外负担,也就是说虚拟存储器对程序员是透明的。4.3.2内存管理器WindowsXP的内存管理主要由内存管理器组件实现,它有两个根本任务:一是将一个进程的虚拟地址空间转换或映射到物理内存中,这样,当一个在该进程环境中运行的线程读写虚拟地址空间时,可以引用正确的地址;二是当内存被过度提交(指运行线程试图使用比当前可用内存更多的物理内存)时,将内存中的某些内容转移到磁盘上(即页面文件中),并且在以后需要这些内容时再将其读回到内存中。内存管理器是Windows执行体的一局部,位于ntoskrnl.exe文件中(在HAL中没有内存管理器的任何局部)。它主要由以下几个局部构成。①一组执行体系统效劳,负责分配、释放和管理虚拟内存。这些效劳中的大多数以Win-dowsAPI或核心模式的设备驱动程序接口形式出现。②一个转换无效和访问错误中断处理程序,用于解决硬件检测到的内存管理异常,并代表进程将虚拟页面装入内存。4.3.3虚拟地址空间布局与地址转换机制1.虚拟地址空间的布局结构对于

x86系统的

32位

Windows操作系统来说

,虚拟地址空间为

4GB。为了有效地使用和管理

,WindowsXP对它们的区域划分作了统一的规定

:在默认情况下

,每个用户进程可以占用

2GB的地址空间

(称为用户地址空间

),系统占用剩下的

2GB地址空间

(称为系统地址空间

)(1)用户地址空间布局 每个进程都有一个私有的地址空间,其他的进程不能访问此地址空间。进程内的线程永远不能访问此私有地址空间以外的虚拟地址

,除非它们映射到共享内存区

,以及

(或者)通过跨进程的内存函数以允许访问另一个进程的地址空间。(2)系统地址空间分布系统空间包含全局操作系统代码和数据结构它们对所有的进程都是可见的。在WindowsXP中,系统地址空间(2GB)布局的详细说明如表4.5所示2.地址转换机制应用程序以32位虚拟地址方式编址CPU利用内存管理器创立和维护的数据结构页表(pagetable),将虚拟地址转换为物理地址。4.3.4内存分配方式

在WindowsXP中

,系统采用了不同的方式进行用户空间内存和系统内存的分配。1.用户空间内存分配WindowsAPI有

3组函数可用来管理应用程序中的内存

:页面粒度的虚拟内存函数、内存映射文件函数和堆函数。(1)以页为单位的虚拟内存分配方式在应用程序的地址空间中,页面有3种状态:空闲(free)、被保存(reserved)或已被提交(committed)a应用程序可以先保存地址空间,然后向此地址空间提交物理页面。(2)内存映射文件内存映射文件的根本思想是:在虚拟地址空间中保存一段地址空间,并把目标文件的全部或局部映射到这个空间中,使用户可以以访问内存的方式直接操作文件中的数据。(3)内存堆方式 堆是保存的地址空间中一个或多个页组成的区域,这个区域可以由"堆管理器"按更小的块划分和分配,用于满足应用程序内存分配的请求O堆管理器是分配和回收可变内存的函数集,位于ntdll.dll和ntoskrnl.dll中。进程初始化时系统在进程的地址空间中创立一个默认堆(位于私有地址空间中),默认堆的大小通常是1MB,如果需要它会自动扩大,Win32的应用程序和一些需要分配临时内存块的Win32函数将使用这个默认堆。需要时,进程也可以创立另外的私有堆,当进程不再需要私有堆时可以释放其地址空间。堆的优点是可以不考虑其分配的区域位置和大小,使程序集中精力处理任务。其缺点是分配和释放内存块的速度比其他机制要慢并且无法直接控制物理内存的提交和回收。文件管理计算机中的程序和数据通常都以文件的形式存放在磁盘或其他外存储器上,用户或程序必须通过文件操作才能使用它们。文件管理是通过目录来完成的,而目录又是建立在分区卷根底上的。操作系统中与文件和目录操作相关的子系统称为文件管理系统。4.4.1根本概念

1.文件文件是一组相关数据的集合,它存储在软盘、硬盘、光盘等外存储器上。为了方便使用,每个文件都有一个自己的名字早期的DOS系统及Windows95以前的版本中,使用"8.3"命名规那么,即规定文件名为8个字符,外加句点和3个字符的扩展名。2.文件目录(文件夹)文件目录最根本的功能就是通过文件名可以快速、方便地获取文件的说明信息,如文件的物理位置、长度等,以便完成对文件的读写操作。此外,它还具有如下几个功能:提高文件的检索速度,允许文件在不同的目录中使用相同的名字,允许多个用户共享一个(组)文件。3.有关存储的术语(2)扇区(sector)是磁盘上固定大小、可寻址的存储块。扇区大小是由硬件决定的,大多数(3)簇(cluster)是许多文件系统使用的可寻址数据块,磁盘空间的分配通常以簇为根本单位。簇的大小总是扇区大小的整数倍,与磁盘的大小及采用的文件系统有关。(4)分区分区

(partition)是硬盘上一组连续扇区的集合。分区表中保存了

温馨提示

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

评论

0/150

提交评论