您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 第20讲windows存储、文件、设备管理
4.2Windows处理器管理处理器是计算机系统核心资源处理器管理是操作系统的重要组成处理器管理的工作是对处理器资源进行合理的分配使用使各用户(任务)公平地得到处理器,提高处理器的利用率。对于操作系统来说运行的程序称为进程处理器管理的任务就是对进程实施管理给进程分配资源、控制进程的执行进程之间共享和交换信息保护每个进程使其在运行期间免受其他进程的干扰等。多个进程可以在一个处理器上交替执行,也可以在多个处理器上同时执行。4.2.1进程1.进程概述操作系统引入进程,理论角度上,是对正在运行的程序活动规律的抽象。从实现角度看,它是一种数据结构,目的在于刻画动态系统的内在规律,有效地管理和调度程序的运行。进程作为程序执行过程的描述,与程序既有密切联系,又有许多区别。进程具有动态性独立性(各进程的地址空间相互独立)并发性(宏观上各进程是同时独立运行的)进程从创建到终止其状态一直在不断变化。状态分成5种,在执行过程中不断地在就绪(ready)、运行(running)和阻塞(blocked)3种状态间进行转换。创建状态指进程正在创建过程中,还不能运行就绪状态指进程已获得除处理器外的所需资源,等待调度程序分配处理器资源,只要分配了处理器,进程就可以运行运行状态指进程占用了处理器资源正在运行,处于此状态的进程的数目不能多于处理器的数目当进程由于等待I/O操作或其他事件而暂停运行时,它就转入阻塞状态,在条件满足之前,即使把处理器分配给该进程,它也是无法继续执行的;进程结束运行,系统收回它所使用的资源,这时进程处于退出状态。2.进程管理进程是系统资源分配的基本单位①如果指定的是MS-DOS应用程序(扩展名为.Exe.Com)或Win16应用程序,则运行ntvdm.Exe创建一个MS-DOS支持进程。②如果指定的是DOS命令程序(扩展名为.bat或.cmd),则运行cmd.exe以创建一个支持进程。当用户打开MS-DOS窗口时,从Windows任务管理器窗口中可以查看相应的进程(映像名称为cmd.exe)4.2.2线程为提高进程内的并发性提高处理器的利用效率,Windows引入线程的概念。把线程作为处理器调度的对象,把进程作为资源分配的单位。线程表示进程中的一个控制点和一条执行途径,任何进程可以创建多个并发执行的线程。①初始(initialized):当一个线程被创建。②就绪(ready):线程已获得除处理器以外的所需资源,正等待调度执行。③备用(standby):已选择好执行该线程的处理器(每个处理器只能有一个处于备用状态的线程),正等待一次环境切换以执行线程。④运行(running):该线程一直执行,直到的时限结束、被一个优先级更高的线程抢占、线程终止或它自愿进入等待状态。⑤终止(terminated):当一个线程执行完成时,它进入终止状态。⑥等待(waiting):线程正等待某对象,以同步线程的执行。当等待事件出现时,等待结束并根据优先级进入运行或就绪状态。⑦转换(transition):如果一个线程已准备好执行,但它的内核堆校(该堆钱用于存储线程执行环境)被换出内存(即位于外存中),则该线程进入转换状态。一旦其内核堆校被换回内存中,该线程将进入就绪状态。4.2.3处理器调度1.调度概述WindowsXP实现优先级驱动、抢先式调度系统,最高优先级线程,最先运行,一个线程被选中,将运行一定时间,这段时间称时限。时限是指一个线程在“系统将运行权交给同一优先级别(或更高优先级别)上的另一个线程”之前允许运行的时间长度。时限值可以随着系统的不同而不同,也可以随着进程的不同而不同2.优先级别Windows在内部使用32个优先级别(范围为0-31),它们的划分如下:系统级别,其优先级别为0,保留给对系统中空闲物理页面进行清零的零页线程;可变级别,其优先级别为1-15;实时级别,其优先级别为16-31。线程优先级别指定:通过WindowsAPIWindows内核也可以控制线程的优先级。每个线程有一个基本优先级,它是进程优先级和线程相对优先级的一个函数。API可在进程创建时,将进程的优先级指定为实时(real-time)、高(high)、高于标准(abovenormal)、标准(normal)、低于标准(belownor-mal)或低(low),根据这些进程内部单个线程的优先级来组织线程。一个进程只有一个基本优先级值每个线程有两个优先级值,即基本优先级和当前优先级,处理器的调度是根据当前优先级做出的。一个线程的初始基本优先级是从进程的基本优先级继承得来的,在特定的情况下系统会在很短的周期内提升线程的优先级(动态范围为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能同时运行多个程序,另一方
本文标题:第20讲windows存储、文件、设备管理
链接地址:https://www.777doc.com/doc-1314198 .html