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.exe和Winformation2k.sys中恰当的绝大多数未文档化的内核模式系统服务调用。
4.windows子系统(由会话管理器启动Smss.exe)的角色是,将基本的windows执行体系统服务的某个子集暴露给应用程序。每个子系统都提供了对windows原生服务的一个不同自己的访问能力。这意味着在某个子系统上建立的应用程序能做到的事,可能建立在另一个子系统上的应用程序完全无法做到的。

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

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

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

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

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

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

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

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

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

10.常用的前缀

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

陷阱分发

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

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

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

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

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

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

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

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

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

常用名词:

Interrupts are frequently called “Interrupt 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)中断控制器

windows internals(深入解析windows操作系统)笔记相关推荐

  1. windows internals 6th edition 初读笔记

    前两周心血来潮,直接买了一本英文版的windows internals 6th edition,因为第四版虽然有潘爱民译的中文,但上面的WDK版本已经不同,第六版本也刚出不久,人民邮电出版社直接拿到了 ...

  2. python读取windows日志_Python解析windows系统日志文件

    DOM是Document Object Model的简称,XML 文档的高级树型表示.该模型并非只针对 Python,而是一种普通XML 模型.Python 的 DOM 包是基于 SAX 构建的,并且 ...

  3. [笔记]深入解析Windows操作系统《三》系统机制

    文章目录 前言 第三章 系统机制 3.1 陷阱分发 实验:将系统调用号映射到函数和参数 实验:查看系统服务的行为 选择"System"对象,再选择"System Call ...

  4. 《深入解析Windows操作系统》笔记第1章

    在看第一章,做了几个实验,书上的东西我就不copy了 实验1 查看进程树 用tlist工具(在Windows调试工具箱中) 在命令行下打开tlist工具 E:\Program Files\Debugg ...

  5. 深入解析Windows操作系统笔记——CH1概念和术语

    1.概念和工具 本章主要介绍Windows操作系统的关键概念和术语 1.概念和工具... 1 1.1操作系统版本... 1 1.2基础概念和术语... 2 1.2.1Windows API2 1.2. ...

  6. 《深入解析Windows操作系统》之系统机制

    内容总结: 重难点笔记: 陷阱分发: 中断和异常是导致处理器转向正常控制流之外代码的两种操作系统条件.硬件或者软件都可以检测到这两种条件.术语陷阱(trap)指的是这样一种机制,当异常或者中断发生时, ...

  7. 六年前开始的等待——写在潘爱民译《深入解析Windows 操作系统,第4版》出版之际

    按: 这是我给潘爱民老师翻译的<深入解析Windows 操作系统,第4版>一书写的出版人感言.这本书很厚,将近1000页,潘老师用了一年半的时间翻译并反复修订.润色,编辑们用了数月的时间排 ...

  8. 简单易行的用windows系统虚拟苹果mac操作系统 mac下android环境搭建笔记(android studio)

    作者:韩梦飞沙 QQ:313134555 ios模拟器电脑版中文版(iPadian)下载 - 『精品软件区』 - 吾爱破解论坛 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52po ...

  9. 操作系统笔记——Linux系统实例分析、Windows系统实例分析

    文章目录 传送门 Linux进程管理 Linux进程组成 Linux进程链表 Linux进程控制 用户进程创建与撤销 0,1,2号进程 Linux进程切换 Linux进程调度 内核同步 Linux储存 ...

  10. 《深入解析Windows操作系统》安全性

    内容总结: 安全系统组件 以下是实现 Windows安全性的核心组件和数据库. 1. 安全引用监视器(SRM) 2. 本地安全权威子系统(LSASS) 3. LSASS策略数据库 4. 安全账户管理器 ...

最新文章

  1. SparkStreaming读取Socket数据
  2. Cacti性能优化和监控H3C交换机
  3. php暂停函数sleep()和usleep的区别
  4. Java Reflection(九):泛型
  5. C++中c_str的用法
  6. 深度学习工作笔记002---曼哈顿距离_欧氏距离
  7. CCF 2016-4-4游戏
  8. CyclicBarrier底层实现和原理
  9. python作业(12.12)
  10. C#笔记16 多线程和同步
  11. Linux不同发型版本(Debian REHL)与软件包管理器(RPM dpkg)的概念
  12. python连接sql sever_R和python连接SQL sever 数据库操作
  13. http://blog.sina.com.cn/s/blog_6a01140c0100wimi.html
  14. 程序员如何保护好自己的发际线
  15. C#图片处理(裁剪,缩放,清晰度,水印)
  16. 在多个浏览器中添加IDM插件
  17. 数量关系--工程问题
  18. 身为程序员,与程序员有关的电影你看过几部? 一只猫
  19. 神经网络预测鸢尾花的种类
  20. 一个简单的2DRoguelike游戏随机地图生成思路

热门文章

  1. Cadence Orcad Capture原理图导出PDF图文视频教程
  2. c 语言与试验系统,Turbo C/C++软件学习下载
  3. c语言程序由哪三个部分组成部分,C语言程序的组成部分
  4. 基于handsontable的web excel(上)
  5. 电感式传感器工作原理与电感式传感器应用案例-博扬智能
  6. robocopy 备份_使用Robocopy复制、备份文件夹
  7. [DiMP跟踪算法]代码学习笔记
  8. 计算机放样在钢结构应用,计算机放样应用于钢结构工程
  9. 校园网编写linux网络认证,个人心得:校园网linux锐捷认证ruijie(xrgsu)使用及xrgsu下载...
  10. 现代书法脚本字体Tifany Script