操作系统(第四版)第14章课件ppt.ppt
《操作系统(第四版)第14章课件ppt.ppt》由会员分享,可在线阅读,更多相关《操作系统(第四版)第14章课件ppt.ppt(47页珍藏版)》请在冰豆网上搜索。
1第三篇第三篇Windows操作系统研究操作系统研究2第第14章章Windows操作系统模型操作系统模型Windows不仅可在单机上运行,也支持不仅可在单机上运行,也支持多机网络和对称多处理。
多机网络和对称多处理。
界面友好、功能强、界面友好、功能强、可扩充性、可靠性和兼容性好。
可扩充性、可靠性和兼容性好。
314.1Windows体系结构体系结构系统和服系统和服务进程务进程应用程序应用程序用户态用户态核心态核心态执行体执行体内核内核硬件抽象层硬件抽象层Windows子系统内子系统内核模块核模块win32k.sys设备驱设备驱动程序动程序子系统子系统DLLWindows子系统进程子系统进程Ntdll.dll4Windows系统文件系统文件1.Ntoskrnl.exe:
执行体和内核:
执行体和内核2.Hal.dll:
硬件抽象层:
硬件抽象层3.Ntdll.dll:
对于内核提供的每一个系统服务,对于内核提供的每一个系统服务,该该DLL都提供一个以都提供一个以Nt作为前缀的作为前缀的存根函数存根函数。
另外,还提供系统级支持函数。
另外,还提供系统级支持函数。
4.Win32k.sys:
Windows子系统的内核部分子系统的内核部分5.Kernel32.dll,Advapi32.dll,User32.dll,Gdi32.dll:
Windows子系统子系统DLL6.NTFS.sys:
ntfs驱动程序驱动程序7.设备驱动程序:
可动态加载的模块设备驱动程序:
可动态加载的模块(.sys)5系统进程系统进程nidle进程:
每个进程:
每个CPU一个线程。
一个线程。
nsystem进程:
包含大多数内核系统线程进程:
包含大多数内核系统线程1.smss.exe:
会话管理器。
:
会话管理器。
创建创建环境变量环境变量和启动和启动csrss.exe和和winlogon.exe。
建立会话。
建立会话Session02.csrss.exe:
Windows子系统进程子系统进程3.winlogon.exe:
用户登录进程:
用户登录进程4.services.exe:
系统服务管理器。
系统服务是一些特系统服务管理器。
系统服务是一些特殊的进程。
系统有很多功能组件是以服务的方式实现的,殊的进程。
系统有很多功能组件是以服务的方式实现的,如事件日志、任务调度器和各种网络组件等。
如事件日志、任务调度器和各种网络组件等。
5.svchost.exe:
系统提供的通用服务宿主进程:
系统提供的通用服务宿主进程6.lsass.exe:
本地安全认证子系统进程:
本地安全认证子系统进程7.Explorer.exe:
shell进程进程6环境子系统环境子系统n有三个环境子系统:
有三个环境子系统:
Windows、POSIX、OS/2。
即在同一个内核基础上配以不同的外围软件,形即在同一个内核基础上配以不同的外围软件,形成不同的应用软件运行环境。
成不同的应用软件运行环境。
nWindows子系统是主子系统子系统是主子系统,为用户提供一个,为用户提供一个图图形用户界面形用户界面。
nwin32k.sys原先是和原先是和Csrss.exe合在一起的,作为合在一起的,作为服服务进程务进程满足应用进程发出的图形操作请求。
后因满足应用进程发出的图形操作请求。
后因频繁的进程间通信和调度成了频繁的进程间通信和调度成了瓶颈瓶颈,就把,就把win32k.sys移到内核里。
移到内核里。
7Windows子系统子系统1.Windows子子系系统统引引入入了了窗窗口口类类的的概概念念,为为窗窗口口定定义义了了类类型型。
窗窗口口类类为为一一类类窗窗口口定定义义了了窗窗口口属属性和窗口过程。
性和窗口过程。
2.Windows子子系系统统内内置置了了7种种窗窗口口类类:
按按钮钮、组组合合框框、编编辑辑框框、列列表表框框、多多文文档档界界面面中中的的子子窗窗口口、滚滚动动条条、静静态态文文本本。
类类里里的的窗窗口口过过程程用用于于处处理理所有该类窗口的所有该类窗口的消息消息。
8窗口、消息窗口、消息l对于每一个对于每一个线程线程,一旦调用了,一旦调用了win32k.sys里的里的系统服务,就变成一个系统服务,就变成一个GUI线程线程,被纳入到,被纳入到Windows子系统的线程和进程管理范畴。
子系统的线程和进程管理范畴。
lcsrss.exe会创建一个会创建一个RIT(rawinputthread)线程线程负责从设备驱动程序获得原始的输入,然后将负责从设备驱动程序获得原始的输入,然后将消息寄送到系统消息寄送到系统消息队列消息队列。
lGUI线程线程通过通过NtUserGetMessage获取消息并交获取消息并交给消息的目标窗口的给消息的目标窗口的窗口过程窗口过程来处理。
来处理。
9GUI线程线程RIT线程线程桌面桌面线程线程消息消息队列队列鼠标鼠标事件事件键盘键盘其他其他设备设备鼠标鼠标其他其他线程线程消息消息队列队列10Windows内核结构内核结构nntoskrnl.exe:
执行体、内核:
执行体、内核n内核层实现操作系统的基本内核层实现操作系统的基本机制机制,而所,而所有的有的策略策略决定则留给执行体。
惟一例外决定则留给执行体。
惟一例外的策略决定是线程调度和分发。
的策略决定是线程调度和分发。
n执行体中的执行体中的对象对象绝大多数封装了一个或绝大多数封装了一个或者多个内核对象,并且通过某种方式者多个内核对象,并且通过某种方式(如对象句柄)暴露给应用程序。
(如对象句柄)暴露给应用程序。
11内核内核进程对象进程对象进程对象进程对象内核内核线程对线程对象象线程对象线程对象内核内核线程对线程对象象内核对象内核对象是由内核实现的是由内核实现的一个初级对象集,对用一个初级对象集,对用户态代码不可见,仅供户态代码不可见,仅供执行体使用。
执行体使用。
12NT执行体执行体n内部组件内部组件:
进程和线程管理器、内存管:
进程和线程管理器、内存管理器、理器、I/O管理器、缓存管理器、对象管管理器、缓存管理器、对象管理器、配置管理器、即插即用管理器、理器、配置管理器、即插即用管理器、电源管理器、安全监视器、本地过程调电源管理器、安全监视器、本地过程调用、一组运行时库函数、支持例程用、一组运行时库函数、支持例程n每个组件都是一些过程的集合,组件之每个组件都是一些过程的集合,组件之间没有固定的界限。
间没有固定的界限。
n同层的各个组件之间可以同层的各个组件之间可以互相调用。
互相调用。
13内核内核n内核对象包括:
控制对象、调度程序对象内核对象包括:
控制对象、调度程序对象(dispatcherobject)。
)。
n控制对象控制对象被用于控制内核的操作,但是不被用于控制内核的操作,但是不影响线程的调度。
包括:
影响线程的调度。
包括:
APC、DPC、中、中断对象等。
断对象等。
n调度程序对象调度程序对象:
事件、互斥体、信号量、:
事件、互斥体、信号量、进程、线程、队列、门、定时器。
进程、线程、队列、门、定时器。
实现同实现同步,对象的状态会影响线程的调度。
步,对象的状态会影响线程的调度。
14硬件抽象层硬件抽象层(HAL)n直接操纵硬件。
直接操纵硬件。
nHAL.dll是一个可加载的核心态模块。
是一个可加载的核心态模块。
nHAL隐藏各种与硬件有关的细节。
使内核、隐藏各种与硬件有关的细节。
使内核、设备驱动程序和执行体免受特殊硬件平台设备驱动程序和执行体免受特殊硬件平台差异的影响。
差异的影响。
系统可移植性好。
系统可移植性好。
151.核心态组件使用了面向对象的设计原则,核心态组件使用了面向对象的设计原则,但不是一个面向对象的操作系统。
但不是一个面向对象的操作系统。
2.代码完全可重入,并可以被抢先。
代码完全可重入,并可以被抢先。
3.融合了融合了分层分层模型和模型和客户客户/服务器服务器模型。
客模型。
客户进程和服务器进程通过执行体中提供户进程和服务器进程通过执行体中提供的的消息传递消息传递工具进行通信。
工具进行通信。
14.2Windows特点特点16陷陷阱阱调调度度。
属属于于内内核核的的功功能能。
包包括括中中断断、DPC、APC、异常调度、系统服务调度。
、异常调度、系统服务调度。
执行体对象管理器执行体对象管理器。
同步同步。
自旋锁、内核调度程序对象。
自旋锁、内核调度程序对象。
本地过程调用本地过程调用LPC。
服务器进程创建一个服务器进程创建一个LPC连接端口对象,然后在该端口上监听客户连接端口对象,然后在该端口上监听客户连接请求。
类似连接请求。
类似sochet编程。
消息传递。
编程。
消息传递。
14.3Windows的系统机制的系统机制17陷阱处理程序陷阱处理程序n是操作系统处理意外事件的硬件机制。
是操作系统处理意外事件的硬件机制。
n当当硬件或软件硬件或软件检测到异常或中断发生时,检测到异常或中断发生时,将暂停正在处理的事情,把控制转交给将暂停正在处理的事情,把控制转交给内核的陷阱处理程序。
陷阱处理程序检内核的陷阱处理程序。
陷阱处理程序检测异常和中断的类型,并将控制转交给测异常和中断的类型,并将控制转交给相应的处理程序。
相应的处理程序。
n中断中断是异步事件;是异步事件;异常异常是同步事件,系是同步事件,系统服务调用被视为统服务调用被视为异常异常。
18异常处理程序异常处理程序陷阱处理程序陷阱处理程序虚地址虚地址异常异常硬件异常硬件异常软件异常软件异常系统服系统服务调用务调用中断服务例程中断服务例程系统服务系统服务异常调度程序异常调度程序虚拟存储器页虚拟存储器页面调度程序面调度程序中断中断中断调度器中断调度器系统服务系统服务调度器调度器异异常常帧帧19中断调度中断调度uWindows没有使用中断控制器的优先级,没有使用中断控制器的优先级,而是规定了一套软件中断优先级,称为中而是规定了一套软件中断优先级,称为中断请求级别断请求级别IRQL。
uIRQL与线程的调度优先级不同。
调度优与线程的调度优先级不同。
调度优先级是线程的属性,而先级是线程的属性,而IRQL是中断源的是中断源的属性。
属性。
u处于处于核心态的线程核心态的线程可以提高或降低当前处可以提高或降低当前处理机的理机的IRQL,以屏蔽低级中断。
,以屏蔽低级中断。
20中断优先级中断优先级电源故障电源故障处理机内部故障处理机内部故障时钟中断时钟中断配置文件配置文件设备设备n设备设备1Dispatcher/DPCAPC用户线程用户线程硬件中断硬件中断软件中断软件中断高级高级31低级低级021是内核和设备驱是内核和设备驱动程序产生的软动程序产生的软件中断件中断21uWindows使用使用中断分派表中断分派表(IDT,InterruptDispatchTable)查找处理特定查找处理特定中断的例程,以中断源的中断的例程,以中断源的IRQL作为表的作为表的索引,找到中断处理例程的入口地址。
索引,找到中断处理例程的入口地址。
u在在多处理机多处理机系统中,每个处理机都有一系统中,每个处理机都有一个独立的个独立的IDT,以便不同的处理机运行不,以便不同的处理机运行不同的中断服务例程同的中断服务例程ISR。
22延迟过程调用延迟过程调用DPCnDPC被用来执行一些相对于当前高优先级被用来执行一些相对于当前高优先级的任务来说不那么紧急的任务。
的任务来说不那么紧急的任务。
n有时内核在进行系统嵌套调用时,检测到有时内核在进行系统嵌套调用时,检测到应该进行重调度。
为了保证调度的正确性,应该进行重调度。
为了保证调度的正确性,内核用内核用DPC来延迟请求调度的产生。
来延迟请求调度的产生。
n硬件中断服务例程可以把一些相对不紧急硬件中断服务例程可以把一些相对不紧急的事情放到一个的事情放到一个DPC对象中处理,从而缩对象中处理,从而缩短处理机停留在高短处理机停留在高IRQL的时间。
的时间。
23nDPC队列队列是一种机制,它能记住有哪些是一种机制,它能记住有哪些工作尚未处理。
工作尚未处理。
n当当IRQL降低到降低到DPC/Dispatcher级别以下级别以下时,时,DPC中断就产生。
调度程序依次执中断就产生。
调度程序依次执行行DPC队列中的每个例程,直