Windows内核(十)——消息机制

[toc] 1.消息队列 消息队列 本质上是一种数据结构,先进先出。 消息队列在哪 Linux:专用进程 使用专用进程捕获所有消息 判断消息所属进程,进行分发,将消息分配到目标进程的消息队列中 Windows:GUI线程 KTHREAD结构体: kd> dt _KTHREAD ntdll!_KTHREAD ... +0x130 Win32Thread //若当

Windows内核(九)——内存管理

[toc] 01.线性地址的管理 每个进程都有自己的用户空间需要管理,当我们使用VirtualAlloc等函数申请一块固定的地址空间时,首先需要确认这块空间是否被占用,如果该空间已被占用则申请失败。 用户空间并非像内核空间一样通过一块链表去管理已占用的线

Windows内核(八)——异常

[toc] 01.CPU异常记录 一个异常产生后,首先是要记录异常信息(异常的类型、异常发生的位置等),然后要寻找异常的处理函数,称为异常的分发,最后找到异常处理函数并调用,称为异常处理。 分类: CPU产生的异常 软件产生的异常 异常处理流程 CPU指令检测到

Windows内核(七)——APC机制

[toc] 01.APC的本质 线程是不能被“杀掉”、“挂起”、“恢复”的,线程在执行的时候自己占据着CPU,别人不能控制它 举个极端的例子:如果不调用API,屏蔽中断,并保证代码不出现异常,线程将永久占用CPU 所以说线程如果想“死”,一定是自己执行代码

Windows内核(六)——事件等待

[toc] 01.临界区 这个部分在驱动那一部分写了,这里就直接复制粘贴过来了 并发是指多个线程在同时执行: 单核(是分时执行,不是真正的同时) 多核(在某一个时刻,会同时有多个线程再执行) 同步则是保证在并发执行的环境中各个线程可以有序的执行 单行指令的同步 DWORD

Windows内核(五)——句柄表

[toc] 01.句柄表 当一个进程创建或者打开一个内核对象时,将获得一个句柄,通过这个句柄可以访问对应的内核对象 句柄表存储在零环,一个进程使用了几个句柄,在该进程的句柄表中就会存储几个句柄 所有的句柄所对应的内核对象,都包含在**_OBJECT_HEA
0%