1.进程
包括可执行代码和数据、主Token、私有句柄表、私有虚拟地址空间、线程。
2.虚拟内存
页:虚拟内存单元,通常4kb,大页2MB(\x64\x86\ARM64)、4MB(ARM),大页面一般用TLB.(状态:free、committed、reserved)
系统空间:是内核本身、硬件抽象层(HAL)和内核驱动程序加载后驻留的地方。因此,内核驱动程序会自动受到保护,不受直接用户模式的访问,这也意味着它们可能会对整个系统产生影响。例如,如果内核驱动程序泄漏内存,即使在驱动程序卸载之后,内存也不会被释放。用户模式的进程则不会。
3.线程
一个线程包括:
•当前访问模式,用户或内核。
•执行上下文,包括处理器寄存器和执行状态。
•一个或两个堆栈,用于局部变量分配和调用管理。
•线程本地存储(TLS)阵列,它提供了一种使用统一访问语义存储线程私有数据的方法。
•基本优先级和当前(动态)优先级。
•处理器关联,指示允许线程在哪个处理器上运行。
一个线程至少有一个堆栈驻留在系统(内核)空间(12kb(x86)、24kb(x64)),一个用户模式进程在进程用户空间地址范围有第二个堆栈(默认可以到1MB)。用户模式堆栈从提交的一小部分内存开始,身下的堆栈地址空间作为保留,不会以任何方式分配(以防线程的到吗需要更多的堆栈空间,从而能扩展堆栈)。实现这一点是通过保护页,提交部分的后面下一页(or more),线程如果需要更多的堆栈空间他将写入保护页,将保护页抛出由内存管理器处理的异常