windows internals(深入解析windows操作系统)笔记

来源:互联网 发布:如何打开23端口 编辑:程序博客网 时间:2024/04/30 11:57

1.R0运行内核态R3运行用户态,R1.R2闲置

2.侵入式调试和非侵入式调试

  侵入式:可以检查和改变进程的内存,设置断点,执行其他的调试信息

  非侵入式:并不作为一个调试器负载到目标进程。可以检查和改变进程中的内存,不能设置断点。


1.Windows是一个对称多处理器操作系统(SMP)。没有主处理器,操作系统和线程可以被调度到任何处理器上运行,所有处理器共享一个内存处理空间。

Windows支持三种现代的多核处理器系统:多核,超线程和NUMA

超线程(Hyper-Threading):在每个物理核上提供多个逻辑处理器,每个逻辑处理器有自己的CPU状态,但是执行引擎和偏上缓存共享。

调度算法已经改进过,例如:原来是将线程调度到另一个物理空闲的处理器,现在改进为“选择一个逻辑上空闲的处理器(该处理器的其他逻辑处理器可能正忙碌)”

NUMA:处理器被组织成更小的单元,节点。所有处理器可以访问所有内存,不过节点本地内存访问起来比其他节点更快。

整整的多核系统-这些系统有多个真正的物理核(不过在同一个芯片上而已)。Windows原来的SMP代码将这些核看作单独的处理器。

2.windows操作系统客户机和服务器系统共享同一组核心系统文件,通许注册表ProductOptions下的键值判断加载什么系统,同时将指定许可策略文件加载到注册表中。

用户想查看当前windows系统版本,可以调用VerityVersionInfo函数。

操作系统根据不同版本(客户机或服务器)对系统进行不同方向的优化和侧重。

3.用户程序并不直接调用windows系统服务,而是通过一个或多个子系统dll来进行。如kernel32.dll.advapi32.dll user32.dll gdi32.dll实现了系统API调用,子系统DLL将已文档化的WindowsAPI转译成Ntoskrnl.exeWinformation2k.sys中恰当的绝大多数未文档化的内核模式系统服务调用。
4.windows子系统(由会话管理器启动Smss.exe)的角色是,将基本的windows执行体系统服务的某个子集暴露给应用程序。每个子系统都提供了对windows原生服务的一个不同自己的访问能力。这意味着在某个子系统上建立的应用程序能做到的事,可能建立在另一个子系统上的应用程序完全无法做到的。

每个可执行映像(.exe)都被绑定到一个(且唯一一个)子系统上。

5.Windows执行体Ntoskrnl.exe中的上层(内核是其下层)。

6.Ntdll.dll是一个特殊的系统支持库,主要用于子系统dll

Ntdll支持的一些函数的命名规则:映像加载器(Ldr开头)Windows子系统进程通信函数(Csr开头)

Ntdll支持的一般性运行库例程(Rtl开头)用户模式调试和windows事件跟踪支持的函数(分别以DbgUiEtw函数)

clr模块(.Net Framework 4.0的运行时模块)

7.内核使用一个称为处理器控制区(KPRC)的数据结构来存放处理器有关的数据,KPCR也包含一个称为处理器控制块的内嵌数据结构(KPRCB)。Windbg利用!pcrpcrb可以查看相应内容。

8.硬件抽象层(HAL)是一个可加载的内核模式块(Hall.dll)Window内部组件和驱动程序通过访问HAL例程来访问硬件,从而保持了可移植性(可移植到不同硬件)。HALNtoskrnl相互依赖。

9.设备驱动程序是可加载的内核模式模块(通常以.sys结尾)

10.常用的前缀

h

 h


11回话管理器是系统中创建的第一个用户模式进程,这一进程由负责完成知兴替和内核初始化工作最后阶段的内核模式系统线程创建。


陷阱分发

1.中断和异常是导致处理器转向正常控制流之外代码的两种操作系统体制。在windows系统中,中断和异常会触发陷阱(trap),然后将处理器控制权转到操作系统某有一固定地址,交给陷阱处理器(trap handler)处理。中断处理器指某个特点的中断或异常相关的函数。

2.中断是异步事件,可能与处理器中正在处理的任务毫无关系.异常是同步条件,往往是一个特殊指令的执行结果。

3.普通线程运行在IRQL0级,硬件中断的IRQL大于软件中断的IRQL

4.线程调度优先级与IRQL优先级别不同,线程调度优先级是线程的内部熟悉,IRQL是中断源的熟悉(如键盘鼠标)

 每个处理器都有自己的IRQL设置,决定了该处理器可以接受哪些中断

5.被屏蔽的的中断由另外的处理器处理或者保留等待IRQL降低下来。系统的所有组件都尽可能都保持在被动IRQL上,以免设备驱动不能及时的响应硬件中断。

6.HAL决定为一个中断分配哪个IRQL,不同HAL的分配算法不同。

7.KiInterruptDispatchKiChainedDispatch都是中断分发例程,试用情景不同。

8.内核模式代码通常不允许浮点操作,因为这些浮点寄存器在环境切换时不被保存。


常用名词:

Interrupts are frequently calledInterrupt ReQuests and the priority of a specific IRQis its Level.  These letters, all run together, are IRQL

IRQL:中断请求等级

ISR(interruptservice rountine)中断服务例程

IRQ(interruptrequest)中断请求

IDT(interrupt  dispatch table)

 

GDT全局描述符表

LDT局部描述符表

 (DPCs)deferred procedure calls

 IPI处理器间的中断,一个处理器请求另一个处理器处理

I/O request packet, used in Microsoft Windows for interprocess communication

(ISR)中断服务例程

(PIC)中断控制器





阅读全文
0 0
原创粉丝点击