windows第三大结构体--KPCR

前面我们介绍了windows的两大结构体,一个是进程结构体,一个是线程结构体。那么第三个就是KPCR。KPCR是什么呢,是用于描述CPU的结构体。每一个CPU都有一个这样的结构体来描述CPU干了什么事。

1.在当线程切换的时候,也就是线程从3环进入0环时,FS:[0]->TEB切换成KPCR

2.每个CPU都有一个KPCR结构体

3.KRCR中存储了CPU本身要用到的一些重要的数据结构:GDT.IDT等

windows第三大结构体--KPCR_第1张图片

上图就是KPCR结构体成员。

 第一个成员叫NtTib,这个成员非常重要。它也是个结构体:

windows第三大结构体--KPCR_第2张图片

 在KPCR最后一个成员叫PrcbData,他是一个扩展结构体,也是放了很多有用的信息。不过这个结构体很大,我们截取一部分看看:windows第三大结构体--KPCR_第3张图片

    +0x004 CurrentThread    : Ptr32 _KTHREAD
   +0x008 NextThread       : Ptr32 _KTHREAD
   +0x00c IdleThread       : Ptr32 _KTHREAD

这三个成员和线程切换有关,第一个描述了当前在跑的线程,第二个描述了一会要切换的线程是谁,第三个是当没有线程需要执行的时候,执行的空闲线程是谁。

你可能感兴趣的:(操作系统,开发语言)