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

[toc]

01.线性地址的管理

  1. 每个进程都有自己的用户空间需要管理,当我们使用VirtualAlloc等函数申请一块固定的地址空间时,首先需要确认这块空间是否被占用,如果该空间已被占用则申请失败。
  2. 用户空间并非像内核空间一样通过一块链表去管理已占用的线性地址空间(效率低), 而是通过搜索二叉树

申请内存的两种方式

Windows内核(八)——异常

[toc]

01.CPU异常记录

一个异常产生后,首先是要记录异常信息(异常的类型、异常发生的位置等),然后要寻找异常的处理函数,称为异常的分发,最后找到异常处理函数并调用,称为异常处理

Windows内核(七)——APC机制

[toc]

01.APC的本质

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

思考:那如果想改变一个线程的行为该怎么办 答案:可以给他提供一个函数,让它自己去调用:APC(Asyncroneus Procedure Call,异步过程调用)