找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 11026|回复: 1

WINDOWS2000中文内核演示

[复制链接]
发表于 2009-11-25 01:47:02 | 显示全部楼层 |阅读模式 IP:江苏扬州
这个演讲假设您理解以下基础知识:
操作系统概念的基础知识(虚拟内存、进程和多任务)
基本Windows NT和Windows 2000使用和管理
查看进程细节例如打开文件句柄、I/O活动、DLL使用和安全
操作系统帐户和应用程序CPU时间(包括中断)
在系统进程树中识别每一个系统进程
将Windows NT服务映射到正在运行该服务的进程上
将核心态运行的系统线程活动匹配到驱动程序或者拥有线程的OS组件
议事日程
工具概述
理解进程和线程活动
理解CPU时间统计
理解系统进程
进程崩溃
进程和线程

什么是进程?
代表了运行程序的一个实例
每一个进程有一个私有的内存地址空间
什么是线程?
进程内的一个执行上下文
进程内的所有线程共享相同的进程地址空间
每一个进程启动时带有一个线程
运行程序的“主”函数
可以在同一个进程中创建其他的线程
可以创建额外的进程

新的内核对象定义了一组相关进程
CreateJobObject/OpenJobObject
可以指定作业范围的属性、资源分配额和安全限制
资源分配额:总的和目前CPU时间、总的和活动进程、每一个进程和作业的CPU时间、最小和最大的工作集合
属性:CPU相似性、优先级、调度级别
安全限制:没有管理员令牌,只有受限令牌、指定令牌、过滤令牌,不能访问作业外面的窗口,不能读/写剪贴板

32-位虚拟地址空间

2 GB的进程空间
进程地址空间不可以被其他进程直接访问
2 GB的系统范围空间
在这个空间中加载操作系统,并且存在于每一个进程地址空间
“操作系统”没有进程(尽管有一些进程服务于操作系统,但是它们或多或少都是在“后台”运行)

每个进程单独的地址空间,可以在用户态或核心态访问
每个进程的空间,只能在核心态下访问
系统范围,只可以在核心态下访问

任务管理器
启动: Ctrl+Shift+Esc;或者Ctrl+Alt+Del;或者在任务栏的空白处右击
与其他进程显示实用程序重叠的部分
除了Win 16进程信息,只有这里可以看(在进程选项卡上单击选项->显示16-位任务)
应用程序选项卡:最顶层可见的窗口列表
只有线程拥有窗口(在窗口上右击并选择“查看进程” )

进程选项卡:进程列表
可以使用查看->选项栏数
在标题栏上单击按该列排序
在进程名字上右击来改变进程的优先级、结束进程树(在Windows 2000新增加的功能),或者(在MP上)CPU分配
性能选项卡:NT性能计数器的子集
支持工具中的Pviewer.exe
显示线程详细信息
每一个线程的起始地址
每一个线程的CPU时间
可以显示远程进程列表
但是不能杀死远程进程
使用exec.vbs或者资源工具箱中的rkill
使用TLIST /T查看进程层次结构
理解进程的父亲可以帮助确认进程的来源和作用
tlist /t 显示继承关系树
如果父进程不是活动的,进程左对齐
例如,不能查看创建者
例如: explorer.exe的父进程是死 的 (它实际是由 userinit.exe启动的,然后父进程退出)
Windows 2000
可以显示父进程标识号
任务管理器有一个“结束进程树”
在进程上右击
查看打开句柄

句柄泄露可以作为系统内存泄露显示!
任务管理器可以显示总的进程句柄
资源工具箱“Oh”工具(第一次运行可以设置一个NT全局标记并需要重新启动—查看资源工具箱中的gflags.exe )
www.sysinternals.com (使用一个设备驱动程序)的handleex (图形用户界面)或 nthandle (控制台)

查看DLL使用

资源工具箱中的Depends.exe
显示从EXE到DLL的静态链接
也可以“构造”进程并且显示动态DLL加载

要诊断 DLL 冲突,您需要知道哪一个 DLLs被加载以及从哪加载的
tlist <进程名>或者 tlist <进程标识号> 列出了 DLL,但是不包括路径
www.sysinternals.com 的listdlls 可以显示全部路径
也显示 .EXE的全路径 –对于跟踪进程的实质是十分重要的!
I/O活动
如何隔离系统I/O活动?
使用系统性能对象中的I/O计数器来得到所有的数据
使用Windows 2000中的新的进程I/O计数器来发现进程
使用 Filemon (www.sysinternals.com) 来发现哪个进程在访问哪个文件
不要忘记正常的文件I/O就象页面式I/O(由于缓存管理的设计)
注册表活动
注册表应该在一个稳定的系统中保持“稳定”
例如,它不应该是一个频繁访问的数据库
运行 RegMon (www.sysinternals.com) 来确定您的注册表(大多数情况下)是不活动的

小测验(进程和线程)

NT的调度单元是什么?
A: 线程

线程在运行中,但是却没有占用任何CPU时间,为什么?
A: 当时间片到来时它们不是当前线程。

进程沙箱的尺寸是多大?

2 gigabytes
议事日程
工具概述
理解进程和线程活动
理解CPU时间统计
理解系统进程
进程和系统崩溃
核心态对用户态模式
一个处理器状态
控制内存访问
每一个内存页面都标记着需要访问时处理器的状态
保护系统不受用户侵害
保护用户进程相互侵害
系统本身可以访问自己
”代码区标记“不可以在任何模式下写”
控制执行特权指令的能力
一个Windows NT抽象
Intel: Ring 0, Ring 3
相关的线程
线程可以从用户态切换到核心态,而且反之亦然
保存的上下文的一部分和注册表,等等。
不影响调度
计数器:
“特权时间”和“用户时间”
四级粒度:线程、进程、处理器和系统
进入核心模式
Windows 2000在下列三种情况下切换到核心态模式
1. 用户态下的请求
通过系统服务调度机制
核心态代码运行在请求线程的上下文中
2. 外部设备的中断请求
Windows NT支持的中断调度器唤醒中断服务例程
ISR运行在被中断的线程的上下文中 (所谓的 “任意的线程上下文”)
ISR 经常请求一个 “DPC例程”的执行,它运行在核心态模式中
中断处理时间不包括在被中断线程的时间片内
3. 核心态模式系统线程
系统中的一些线程始终保持在核心态模式(大部分在“系统”进程中)
调度的、优先的等等,象任何其他线程
检查进程CPU时间
查看进程在核心态下的时间可以告诉您进程现在在做什么
100%用户时间:应用程序占用
部分用户时间、部分核心态时间:做系统调用
使用 qslice.exe (资源工具箱) 或者 PerfMon
中断调度               
关闭中断
记录机器状态 (陷阱帧)来允许恢复  
                                 
比较屏蔽吗并且降低中断优先级
寻找和调用合适的ISR
打开中断
恢复机器状态(包括模式和中断)

告诉设备停止中断
审问设备状态、启动设备下一个操作,等等。
请求一个 DPC
返回调用者

中断优先级
IRQL =中断请求优先级
关于其他中断的中断优先级
不同的中断源有不同的IRQL
与IRQ不同
在多处理器系统中每一个CPU可以有不同的IRQL
(DPC)延迟过程调用
统计核心态模式时间
“处理器时间” = 处理器总的工作时间 (等于经过的时间-空闲时间)
“处理器时间” = “用户时间” + “特权时间”
“特权时间” = 用于核心态模式的时间
“特权时间”包括 :
中断时间
DPC 时间
注意:中断和DPC不包括在任何进程或线程的时间片内
小测验(时间统计)

如果系统运行速度降低,并且没有进程在运行,这是怎么回事?

A:中断 – 在PerfMon 中查看interrupts/sec
进程创建层次结构

tlist.exe (资源工具箱中)可以显示创建层次结构 (“tlist /t”)
如果父进程是死的,进程左对齐
例如,如果创建者不在了,就不能看见创建者
例如,explorer.exe的父进程死了 (它实际由userinit.exe启动,然后父进程退出)
前两个进程不是实时进程
不运行用户模式 .EXE (没有映像名)
因此,每一个实用程序起一个名字

(空闲)     进程标识为 0
    装入系统映像的一部分
                    空闲线程的原始(不是实时进程或实时线程)

(系统)     进程标识为8(在Win2000 和 NT4中,是进程标识为2)
    装入系统映像的一部分
                    内核定义线程的原始(非实时进程)
                    线程 0(例程名为Phase1Initialization)
    装入第一个“实时”进程, smss.exe(然后变为零页线程

核心操作系统(NTOSKRNL.EXE)
修改页复写器
平衡设置管理器
交易者(内核堆栈,工作设置)
高速缓冲存储器管理器复写器
零页线程(线程0,优先级0)
一般工作者线程池(ExQueueWorkItem)
文件服务器 (SRV.SYS)
软盘驱动程序 (FLOPPY.SYS)
识别系统线程
要实际地了解正在进行什么,必须找到该线程“属于”哪个驱动程序
1. 使用PerfMon来监测个别线程活动
2. 在Pviewer中获得相关线程和查询“开始地址”(线程函数地址)
3. 运行\ntreskit\pstat来找到线程属于哪个驱动程序(查找哪个驱动程序在线程的开始地址附近开始—可能必须计算驱动程序的结束地址
系统进程树(cont.)
smss.exe 对话管理器
                       第一个创建的进程 引入参数 HKLM\System\CurrentControlSet\Control\Session Manager 装入所需的子系统(csrss) ,然后winlogon
csrss.exe Win32 子系统
winlogon.exe 登录进程:装入services.exe 和 lsass.exe 显示登录对话框(“键入CTRL+ALT+DEL ,登录)                        当有人登入,运行在                       HKLM\Software\Microsoft\Windows NT\WinLogon\Userinit
                       中的进程(通常只是userinit.exe)
services.exe 服务控制器:也是几项服务的出发点
                       服务的开始进程不是services.exe的一部分
                       (由 HKLM\System\CurrentControlSet\Services驱动)
lsass.exe 本地安全验证服务器(打开SAM)
userinit.exe 登陆之后启动。启动外壳(通常是Explorer.exe —见    HKLM\Software\Microsoft\ Windows NT\CurrentVersion\WinLogon\Shell) 装入配置文件,恢复驱动器标识符映象,然后退出(因此,浏览器单独显示)
explorer.exe 和它的孩子是所有交互式应用的创建者

服务进程
安装时间
Setup程序通知服务控制器有关服务事项

在系统启动时,服务控制器读注册表,按照所要求的启动服务
管理/维护
控制面板可以启动和终止服务,及改变启动参数

进程崩溃

注册表定义的未处理例外行为
HKLM\Software\Microsoft \Windows NT\CurrentVersion \AeDebug
Debugger=应用程序崩溃时运行调试器的文件名
Auto 1=立即运行调试器 0=首先询问用户
零售NT系统缺省的是       Auto=1; Debugger=DRWTSN32.EXE
使用VC++缺省的是:Auto=0, Debugger=MSDEV.EXE

Dr. Watson
缺省地自动运行该程序
可以运行DRWTSN32.EXE来进行用户设置
日志文件(“drwtsn32.log”) 在\Documents和Settings\All Users\Documents\DrWatson 目录下
高级用户转储
Windows 2000调试工具的一部分
包括在Windows 2000 用户诊断CD中, Windows 2000 DDK, Windows Platform SDK
允许对运行过程进行映像
在命令行使用
通过按下预定义的“热键”(在图形用户界面(GUI)不响应的情况下有用)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 19:18 , Processed in 0.420248 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表