您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > w2k内核中文演示课件
©1994-2000DavidA.SolomonAndJamieE.Hanrahan理解Windows2000®和NT4系统和进程活动演讲必备条件这个演讲假设您理解以下基础知识:操作系统概念的基础知识(虚拟内存、进程和多任务)基本WindowsNT和Windows2000使用和管理这是一个300级的讲座今天您将学到以下知识查看进程细节例如打开文件句柄、I/O活动、DLL使用和安全操作系统帐户和应用程序CPU时间(包括中断)在系统进程树中识别每一个系统进程将WindowsNT服务映射到正在运行该服务的进程上将核心态运行的系统线程活动匹配到驱动程序或者拥有线程的OS组件议事日程工具概述理解进程和线程活动理解CPU时间统计理解系统进程进程崩溃工具可执行文件相关工具包性能监视SysmonWindows2000(PerfmoninNT4)注册表编辑器RegEdt32Windows2000进程查看器pviewerWindows2000支持工具任务列表tlistWindows2000支持工具依赖关系浏览dependsWindows2000支持工具打开句柄ohWindows2000服务器资源工具箱QuickSliceqsliceWindows2000服务器资源工具箱句柄查看器handleex工具列表议事日程工具概述理解进程和线程活动理解CPU时间统计理解系统进程进程和系统崩溃进程地址空间系统地址空间线程线程线程进程和线程什么是进程?代表了运行程序的一个实例每一个进程有一个私有的内存地址空间什么是线程?进程内的一个执行上下文进程内的所有线程共享相同的进程地址空间每一个进程启动时带有一个线程运行程序的“主”函数可以在同一个进程中创建其他的线程可以创建额外的进程.EXE代码全局每个线程的用户模式堆栈进程堆栈.DLL代码000000007FFFFFFFExec,Kernel,HAL,驱动程序,每个线程的核心态模式堆栈,Win32K.Sys文件系统缓存页面池非页面池FFFFFFFF80000000进程页面表超级空间C000000032-位虚拟地址空间2GB的进程空间进程地址空间不可以被其他进程直接访问2GB的系统范围空间在这个空间中加载操作系统,并且存在于每一个进程地址空间“操作系统”没有进程(尽管有一些进程服务于操作系统,但是它们或多或少都是在“后台”运行)每个进程单独的地址空间,可以在用户态或核心态访问系统范围,只可以在核心态下访问每个进程的空间,只能在核心态下访问Windows2000作业对象新的内核对象定义了一组相关进程CreateJobObject/OpenJobObject可以指定作业范围的属性、资源分配额和安全限制资源分配额:总的和目前CPU时间、总的和活动进程、每一个进程和作业的CPU时间、最小和最大的工作集合属性:CPU相似性、优先级、调度级别安全限制:没有管理员令牌,只有受限令牌、指定令牌、过滤令牌,不能访问作业外面的窗口,不能读/写剪贴板查看进程信息许多重叠的工具!他们都显示进程和线程信息的不同部分但是有一些工具可以显示其他工具不能显示的内容运行的映象的名字可能不能说明它是什么发现EXE在磁盘的位置PS.VBS(或者pslist.exe)可以显示绝对路径如果系统速度降低,第一个问题是:系统正在运行什么进程?一个快速的方法:运行任务管理器,按CPU使用率排序任务管理器启动:Ctrl+Shift+Esc;或者Ctrl+Alt+Del;或者在任务栏的空白处右击与其他进程显示实用程序重叠的部分除了Win16进程信息,只有这里可以看(在进程选项卡上单击选项-显示16-位任务)应用程序选项卡:最顶层可见的窗口列表只有线程拥有窗口(在窗口上右击并选择“查看进程”)进程选项卡:进程列表可以使用查看-选项栏数在标题栏上单击按该列排序在进程名字上右击来改变进程的优先级、结束进程树(在Windows2000新增加的功能),或者(在MP上)CPU分配性能选项卡:NT性能计数器的子集进程查看器支持工具中的Pviewer.exe显示线程详细信息每一个线程的起始地址每一个线程的CPU时间可以显示远程进程列表但是不能杀死远程进程使用exec.vbs或者资源工具箱中的rkill使用TLIST/T查看进程层次结构理解进程的父亲可以帮助确认进程的来源和作用tlist/t显示继承关系树如果父进程不是活动的,进程左对齐例如,不能查看创建者例如:explorer.exe的父进程是死的(它实际是由userinit.exe启动的,然后父进程退出)Windows2000可以显示父进程标识号任务管理器有一个“结束进程树”在进程上右击查看打开句柄句柄泄露可以作为系统内存泄露显示!任务管理器可以显示总的进程句柄资源工具箱“Oh”工具(第一次运行可以设置一个NT全局标记并需要重新启动—查看资源工具箱中的gflags.exe)(使用一个设备驱动程序)的handleex(图形用户界面)或nthandle(控制台)查看DLL使用资源工具箱中的Depends.exe显示从EXE到DLL的静态链接也可以“构造”进程并且显示动态DLL加载查看DLL使用要诊断DLL冲突,您需要知道哪一个DLLs被加载以及从哪加载的tlist进程名或者tlist进程标识号列出了DLL,但是不包括路径可以显示全部路径也显示.EXE的全路径–对于跟踪进程的实质是十分重要的!I/O活动如何隔离系统I/O活动?使用系统性能对象中的I/O计数器来得到所有的数据使用Windows2000中的新的进程I/O计数器来发现进程使用Filemon()来发现哪个进程在访问哪个文件不要忘记正常的文件I/O就象页面式I/O(由于缓存管理的设计)注册表活动注册表应该在一个稳定的系统中保持“稳定”例如,它不应该是一个频繁访问的数据库运行RegMon()来确定您的注册表(大多数情况下)是不活动的小测验(进程和线程)NT的调度单元是什么?A:线程线程在运行中,但是却没有占用任何CPU时间,为什么?A:当时间片到来时它们不是当前线程。进程沙箱的尺寸是多大?A:2gigabytes议事日程工具概述理解进程和线程活动理解CPU时间统计理解系统进程进程和系统崩溃核心态对用户态模式一个处理器状态控制内存访问每一个内存页面都标记着需要访问时处理器的状态保护系统不受用户侵害保护用户进程相互侵害系统本身可以访问自己”代码区标记“不可以在任何模式下写”控制执行特权指令的能力一个WindowsNT抽象Intel:Ring0,Ring3相关的线程线程可以从用户态切换到核心态,而且反之亦然保存的上下文的一部分和注册表,等等。不影响调度计数器:“特权时间”和“用户时间”四级粒度:线程、进程、处理器和系统进入核心模式Windows2000在下列三种情况下切换到核心态模式1.用户态下的请求通过系统服务调度机制核心态代码运行在请求线程的上下文中2.外部设备的中断请求WindowsNT支持的中断调度器唤醒中断服务例程ISR运行在被中断的线程的上下文中(所谓的“任意的线程上下文”)ISR经常请求一个“DPC例程”的执行,它运行在核心态模式中中断处理时间不包括在被中断线程的时间片内3.核心态模式系统线程系统中的一些线程始终保持在核心态模式(大部分在“系统”进程中)调度的、优先的等等,象任何其他线程检查进程CPU时间查看进程在核心态下的时间可以告诉您进程现在在做什么100%用户时间:应用程序占用部分用户时间、部分核心态时间:做系统调用使用qslice.exe(资源工具箱)或者PerfMon中断调度中断调度例程关闭中断记录机器状态(陷阱帧)来允许恢复比较屏蔽吗并且降低中断优先级寻找和调用合适的ISR打开中断恢复机器状态(包括模式和中断)告诉设备停止中断审问设备状态、启动设备下一个操作,等等。请求一个DPC返回调用者中断服务例程中断!用户态或核心态代码核心态模式!注意,没有线程或者进程上下文中断优先级IRQL=中断请求优先级关于其他中断的中断优先级不同的中断源有不同的IRQL与IRQ不同在多处理器系统中每一个CPU可以有不同的IRQL低APCDispatch/DPC设备1...设备n时钟内中断电源故障高正常的线程执行硬件中断可延迟软件中断01230292831队列首DPC对象DPC对象DPC对象XydriverDpcRtn(DpcObj,DfrdCtx,SysArg1,SysArg2){//...}DfrdCtxSysArg1SysArg2(DPC)延迟过程调用“工作请求”列表每一个处理器一个队列(但是处理器可以运行其他处理器的DPC)隐式的通过请求时间来排列(FIFO)用来从更高(设备)中断优先级到低优先级(分配)的延迟过程调用主要用于驱动程序“后中断”功能用于时间片结束和计数器到时统计核心态模式时间“处理器时间”=处理器总的工作时间(等于经过的时间-空闲时间)“处理器时间”=“用户时间”+“特权时间”“特权时间”=用于核心态模式的时间“特权时间”包括:中断时间DPC时间注意:中断和DPC不包括在任何进程或线程的时间片内Screensnapshotfrom:Programs|AdministrativeTools|PerformanceMonitorclickon“+”button,orselectEdit|Addtochart...小测验(时间统计)如果系统运行速度降低,并且没有进程在运行,这是怎么回事?A:中断–在PerfMon中查看interrupts/sec议事日程工具概述理解进程和线程活动理解CPU时间统计理解系统进程进程和系统崩溃进程创建层次结构tlist.exe(资源工具箱中)可以显示创建层次结构(“tlist/t”)如果父进程是死的,进程左对齐例如,如果创建者不在了,就不能看见创建者例如,explorer.exe的父进程死了(它实际由userinit.exe启动,然后父进程退出)系统进程树前两个进程不是实时进程不运行用户模式.EXE(没有映像名)因此,每一个实用程序起一个名字(空闲)进程标识为0装入系统映像的一部分空闲线程的原始(不是实时进程或实时线程)(系统)进程标识为8(在Win2000和NT4中,是进程标识为2)装入系统映像的一部分内核定义线程的原始(非实时进程)线程0(例程名为Phase1Initialization)装入第一个“实时”进程,smss.exe(然后变为零页线程)系统线程在操作系统和驱动程序中的子程序,需要作为实时线程来运行例如需要和其他系统活动并行运行,定时等待,执行后台的“housekeeping”工作详细情况,见PsCreateSystemThread的DDK文档系统线程出现在什么进程中?NT4:“系统”进程(PID2)Windows2000:windowing系统线程在“csrss.exe”(Win32子系统进程)中—在“系统”(PID8)中系统线程的例子核心操作系统(NTOSKRNL.EXE)修改页复写器平衡设置管理器交易者(内核堆栈,工作设置)高速缓冲存储器管理器复写器零页线程(线程0,优先级0)一般工作者线程池(ExQue
本文标题:w2k内核中文演示课件
链接地址:https://www.777doc.com/doc-3203603 .html