Windows操作系统-体系结构PPT学习课件_第1页
Windows操作系统-体系结构PPT学习课件_第2页
Windows操作系统-体系结构PPT学习课件_第3页
Windows操作系统-体系结构PPT学习课件_第4页
Windows操作系统-体系结构PPT学习课件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

第二章Windows操作系统的体系结构(下),陷阱调度中断调度异常调度系统服务调度对象管理器本地过程调用,Windows的系统机制,陷阱调度,当异常或中断发生时,硬件或软件可以检测到,处理器会从用户态切换到核心态,并将控制转交给内核的陷阱处理程序,该模块检测异常和中断的类型,并将控制交给处理相应情况的代码,异常和中断中断是异步事件,可能随时发生,与处理器正在执行的内容无关。中断主要由I/O设备、处理器时钟或定时器产生,可以被启用或禁用异常是同步事件,它是某一特定指令执行的结果。在相同条件下,异常可以重现。例如内存访问错误、调试指令以及被零除。系统服务调用也视作异常。软件和硬件都可以产生异常和中断。,陷阱调度,中断调度,中断请求级别(IRQL=InterruptRequestLevel),Windows操作系统运行的不同机器,其中断处理机制是各不相同的,为了可移植性的需要,Windows将与中断控制器硬件相关的中断级别映射为一个标准的与硬件无关的中断级别,即中断请求级别IRQL。这一映射由HAL实现。,IRQL采用符号名来命名HIGH_LEVELPOWER_LEVELIPI_LEVELCLOCK_LEVELPROFILE_LEVELDEVICE_LEVELDISPATCH_LEVELAPC_LEVELPASSIVE_LEVEL,中断调度,在不同机器上,IRQL的实际取值不尽相同由于IRQL与硬件无关,所以可以将非硬件中断(软件中断)映射到IRQL体系结构中。软件中断主要用于启动调度操作。,中断调度,处理器的IRQL,在多处理器系统中,任一处理器都可以接收中断请求,所以Windows为每一个处理器维护一个独立的IRQL。,中断调度,中断对象,当处理器收到中断请求时,要通知相应设备的驱动程序进行处理。为此,设备驱动程序应该向I/O管理器注册一个ISR,可以通过调用IoConnectInterrupt来实现。IoConnectInterrupt初始化一个中断对象,来存放关于中断及其ISR的信息。同时使处理器的中断服务表(中断向量表/中断描述符表)的相应表项指向该中断对象。,中断调度,硬件中断处理过程,中断调度,延迟过程调用DPC,当处理器处于较高IRQL时,将屏蔽低于或等于处理器当前IQRL的中断,可能使某些设备的中断得不到及时响应。为此,Windows要求处理器在较高IRQL上运行的时间尽可能短,故引入延迟过程调用机制。,中断调度,延迟过程调用,结构化异常处理,Windows在系统底层提供了一种称为结构化异常处理(SEH)的系统机制。利用SEH可以把程序主要的工作同错误处理分离开来,这样的分离,可以使程序员集中精力关注程序要完成的任务,而将可能发生的错误放在后面处理。,异常是在应用程序的正常执行过程中发生的不正常事件。CPU引发的异常称为硬件异常,操作系统和应用程序直接引发的异常,称为软件异常,异常调度,SEH是操作系统的一种系统机制,与特定的程序设计语言无关。应用程序要利用系统提供的SEH机制,则必须借助于特定程序设计语言的相关语法。因此,SEH不但涉及操作系统,而且与编译器有密切的关系。,结构化异常处理,异常调度,_try./guardedsection_except(exceptionfilter)./exceptionhandler,结构化异常处理,异常调度,异常过滤器返回如下三个异常标识符之一ECXEPTION_EXECUTE_HANDLERECXEPTION_CONTINUE_EXECUTIONECXEPTION_CONTINUE_SEARCH,结构化异常处理,异常调度,异常调度,异常调度,每个线程拥有一个称为TEB的数据结构,其中包含指向EXCEPTION_REGISTRATION_RECORD结构的指针EXCEPTION_REGISTRATION_RECORD结构包含两个域:next指向下一个EXCEPTION_REGISTRATION_RECORD结构handler指向_except_handler,异常调度,异常调度,ThreadEnvironmentBlock(FS:0),EXCEPTION_REGISTRATION_RECORD,OtherFields,_except_handler()/exceptcodehere,异常调度,_except_handler()(Doesnthandleit),_except_handler()(Doesnthandleit),_except_handler()(Doeshandleit),1,2,3,4,5,6,7,8,9,10,ExceptionGenerated,系统服务调度,系统服务是操作系统提供的一组函数,系统服务由执行体实现。为方便用户编程,Windows以DLL的形式提供了API,用户可以通过调用API函数来使用系统服务。利用API间接调用系统服务的优点:方便增加应用程序的可移植性,系统服务调度,API调用与系统服务不存在一一对应的关系,系统服务调度,在Alpha处理器上执行syscall指令或在Intelx86处理器上执行int2E指令都会引起系统服务调度。moveax,xxxx;系统服务号movedx,xxxx;参数指针int2eh,系统服务调度,内核使用执行int2E指令时设置的系统服务号在系统服务调度表中查找对应的系统服务。系统服务调度表是一个核心数据结构,其中包含了指向各个系统服务的指针。,系统服务调度程序将依次作下面几件事:校验参数调用者的参数从线程的用户堆栈复制到它的核心堆栈中执行系统服务,系统服务调度,系统服务调度,对象管理器,Windows的核心态组件使用了面向对象设计原则,从而为执行体实现的内部服务提供了一致且安全的访问机制对象管理器(ObjectManager)是执行体组件之一:用于创建、删除、保护和跟踪对象实现对象的集中保护实现了资源的访问控制对象管理器有一套对象命名方案和统一的保留规则,能够容易地操纵现有对象,执行体对象由执行体的各种组件实现进程管理器、内存管理器、I/O子系统等内核对象由内核实现的原始的对象集合这些对象对用户态代码是不可见的,它们仅在执行体内创建和使用内核对象提供了一些基本功能,许多执行体对象内包含着一个或多个内核对象。,对象管理器,对象管理器,对象的结构对象头由对象管理器控制对象名:使对象可以被其它进程所引用安全描述符:包含访问许可打开句柄信息:包含哪些进程使用该对象的信息引用计数:包含未完成的引用该对象的句柄数对象体由各执行体组件控制,执行体对象,内核对象,执行体,内核,应用程序,句柄,对象管理器,用户态核心态,对象管理器,对于某些表示共享资源的对象,如果一个对象已经创建,当第二个进程试图再次创建对象时,执行体只是创建一个新的句柄,本地过程调用,LPC=LocalProcedureCall(本地过程调用)通常在一个服务器进程与该服务器的一个或多个客户进程之间进行通信时使用LPC机制。一个用于消息传输的进程间通信机制使用LPC的例子:用户程序调用某些Win32API将导致给Win32子系统服务进程(CSRSS.EXE)发送消息,LPC的两种交换消息的方法:使用包含信息的缓冲区调用LPC可以发送少于256字节的信息。然后,这个信息又从发送进程的地址空间复制到系统地址空间,再从那里拷贝到接收进程的地址空间。如果用户和服务器想交换大于256字节的数据,那么他们可以选择使用双方都映射了的共享区。发送方将信息数据放到共享区,然后向接收方发送一小段信息表明在共享区的什么地方可以找到数据。,本地过程调用,本地过程调用,LPC导出一个称为端口对象(portobject)的执行体对象,用它来维护通信所需要的状态。端口对象拥有四种类型的端口:服务器连接端口是一个已命名的服务器连接请求指向端口,客户可通过与这个端口连接从而连接到服务器上。服务器通信端口是服务器用来与特殊客户进行通信的一个未命名的端口,服务器与每一个活

温馨提示

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

评论

0/150

提交评论