参考资料:

1. 《Windows Internals》

2. Windows Drive Kit

3. Microsoft Windows SDK

4. WDK下载地址

知识点:

1. Windows Drive Kit(WDK)是微软提供的用于Windows平台的设备驱动软件开发工具集。它包括:文档、实例、Build环境和为驱动开发人员提供的开发工具。早期,它以Windows Driver Development Kit(DDK)闻名,支持Windows Driver Model(WDM)开发。目前的名词是诞生于Vista的发布,并增加了以下工具:

● Windows Driver Foundation (WDF)

● Installable File System Kit (IFS Kit)

● Driver Test Manager (DTM)

  2. Microsoft Windows SDK,Platform SDK和.Net Framework SDK是微软提供的软件开发工具集。它包括:头文件、库文件、实例、文档和用于开发应用程序的工具。注意它们三者的区别(见Wiki)。

  3. Windows API是用户态下的编程接口。常听说的有Win32 API和Win64 API。

  

      图1 Win API分类

  4. Microsoft .NET Framework由类库Framework Class Library(FCL)和Common Language Runtime(CLR)组成。CLR是提供了可托管代码的执行环境,是一个经典的COM server,它的代码存在于标准的用户态Windows DLL中。实际上,.NET Framework中的所有组件都是基于非托管Windows API并实现为标准用户态的Windows DLL中的。

  

  图2 .NET Framework各组件之间的关系

  5. Windows进程的组成:

  ● 一个私有的虚拟地址空间。

  ● 一个可执程序。

  ● 一个开放的句柄列表,用于访问各种系统资源。比如,信号量、通信接口和文件等。

  ● A security content called an access token

  ● A unique identifier called a process ID

  ● 至少有一个执行进程(At least one thread of execution)。

  6. 每一个进程会指向其父进程或子进程。如果父进程不存在了,该信息不会被更新。因此,很有可能一个进行会引用一个不存在的父进程。但这不是问题,因为没有谁会依赖这些存于当前进程的信息。

  7. Windows线程的组成:

  ● 一组CPU寄存器的内存,代表了处理器的状态。

  ● 两个栈,一个用于内核模式,一个用于用户模式。

  ● 一个私有存储区TLS(thread-local storage)。

  ● 唯一标识符(thread ID)。

  ● 线程有时候拥有各自的security context或token。

  8. 线程的上下文包括:volatile寄存器,栈和私有存储区。

  9. 作业是进程模型的扩展,一个进程对象的主要功能是把一组进程被当做一个单元来进行管理和操作。在一定意义上,作业对象弥补了Windows缺乏结构化进程树的缺陷。

   10. Windows内部大多数文本字符串都是以Unicode字符存储的。因此,当调用ANSI版本的Windows函数时,会有一定的性能影响。

  11. Symbol文件包含了函数和变量的名字,以及数据结构的布局和格式。它们由linker程序产生,被debugger程序使用。因此,这些信息是不存在二进制文件中的。也因此,二进制文件才更小、更快。

  12. User-Mode debugging分Invasive和Noninvasive两种模式。工具:命令行版Kd.exe和GUI版Windbg.exe。

  13. LiveKd是一个免费工具,它允许你使用标准的Windows内核调试工具去检查运行时系统,且无须在调试模式下重启系统。

  

  

Windows Internals学习笔记(一)概念与工具的更多相关文章

  1. Windows Internals学习笔记(八)IO系统

    参考资料: 1. <Windows Internals> 知识点: ● 当一个进

  2. Windows Internals学习笔记(七)Image Loader

    参考资料: 1. <Windows Internals> 2. Fibers 知识点: ● 当一个进程在系统上启动时,内核将创建一个进程对象来代表它,并执行各种内核相关的初始化任务.然而, ...

  3. Windows Internals学习笔记(六)Windows关键系统组件

    参考资料: 1. <Windows Internals> 2. Dependency Walker 3. Ntoskrnl.exe 4. Livekd的使用 5. WinDbg的使用(一) ...

  4. Windows Internals学习笔记(五)Synchronization

    参考资料: 1. <Windows Internals> 2. 自旋锁spinlock剖析与改进 3. Lock指令前缀 4. Lock指令前缀(二) 5. Kernel Dispatch ...

  5. Windows Internals学习笔记(四)Trap Dispatching

    参考资料: 1. <Windows Internals> 知识点: ● 陷阱trap:它是一种处理器机制,用以在某一异常或中断出现时,捕捉该执行线程,并将其控制权转交到操作系统中某一固定位 ...

  6. Windows Internals学习笔记(二)系统架构

    参考资料: 1. <Windows Internals> 2. http://bestcbooks.com 3. Windows Drive Kit 4. Microsoft Window ...

  7. Windows Internals学习笔记(三)Procdump的使用

    参考资料: 1. 下载地址 2. 使用示例

  8. Oracle RAC学习笔记:基本概念及入门

    Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章]    oracle 10g real applica ...

  9. Java IO学习笔记:概念与原理

    Java IO学习笔记:概念与原理   一.概念   Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存 中,形成了 ...

随机推荐

  1. scala偏函数

    package com.ming.test /** * 在Scala中,偏函数是具有类型PartialFunction[-T,+V]的一种函数.T是其接受的函数类型,V是其返回的结果类型. * 偏函数 ...

  2. php原子操作,文件锁flock,数据库事务

    php原子操作,文件锁flock,数据库事务 php没有继承posix标准支持的unix锁,只封装了一个linux系统调用flock(信号量也能做成锁),按理也是可以使用锁机制的,虽然效率低一点.ph ...

  3. FastDFS配置说明

    前面了解了fastdfs的原理,接下来就熟悉一下安装过程,准备了三台机器,一台模拟client,一台模拟storage,一台模拟tracker.     三台机器均为debian6,系统为最小化安装, ...

  4. Aspose.Words操作word生成PDF文档

    Aspose.Words操作word生成PDF文档 using Aspose.Words; using System; using System.Collections.Generic; using ...

  5. centos环境源码安装postgresql9.4

    源码安装简要步骤 下载PostgreSQL 源码包  下载根目录地址:http://ftp.postgresql.org/  本人选择的是当前最新版本v9.4.1:http://ftp.postgre ...

  6. mysql 段错误 (core dumped)

    一直使用好好的mysql命令,突然今天抽风,无论使用任何mysql选项都报“段错误 (core dumped)”,以为是mysqld程序出问题了,所以我尝试重启,因为我的环境上是多实例,用了mysql ...

  7. java 类型转化

    String 转int s="12345"; int i; 第一种方法:i=Integer.parseInt(s);;//直接使用静态方法,不会产生多余的对象,但会抛出异常 第二种 ...

  8. asp.net 分页-利用后台直接生成html分页

    一直想做一个属于自己的分页, 1:我试过用datapage,虽然是很好用,但是必须要配合datalist才能使用,感觉不太好 2:自己写分页控件,目前正在摸索中,关键是怎么分页的问题,有的是用data ...

  9. JavaScript脚本语言基础(二)

    导读: JavaScript条件语句 JavaScript循环语句 JavaScript网页中错误捕获 JavaScript的Break和Continue命令 JavaScript的转义字符 1.Ja ...

  10. poj2429 GCD & LCM Inverse

    用miller_rabin 和 pollard_rho对大数因式分解,再用dfs寻找答案即可. http://poj.org/problem?id=2429 #include <cstdio&g ...