gpt4 book ai didi

operating-system - Windows 内核模式驱动程序如何访问分页内存?

转载 作者:行者123 更新时间:2023-12-01 10:13:33 39 4
gpt4 key购买 nike

1) 用户模式进程有自己的“地址上下文”,它将用户模式虚拟地址映射到物理页框的唯一集合。也就是说,随着 Windows XP 调度程序切换线程,任何特定虚拟地址的含义时时刻刻都在变化。

“切换线程”的部分工作是更改页表,以便它们引用传入线程的进程上下文。

_

2) Windows 内核模式驱动程序在“任意线程上下文”中执行。

驱动程序可以创建系统线程并在其上下文中工作...但我说的是不创建系统线程的情况。

驱动程序可以使用“ExAllocatePoolWithTag”来分配分页( volatile 存储中的内存)。

_

3) 那么驱动程序如何访问分页内存没有任何上下文

如第 1 点所示,分页内存是通过“特定于上下文”的页表访问的。

当驱动程序在其他线程上下文中运行时...即页表条目指向线程相关的 phy。 mem,那么驱动程序如何才能访问他的分页内存?

PS:我是内核编程的菜鸟。不要生气。

最佳答案

使用的概念是“用户/内核地址空间分割”。每个进程地址空间被分成用户模式下进程可访问的较低部分(通常为 2 GB),并且每个进程都不同,以及仅在内核模式下可访问的较高部分(剩余地址空间),并且是每个进程的相同

当驱动程序分配分页内存时,它是在地址空间分割的内核端分配的,因此无论当时加载了哪个进程页表,它对内核代码都是可见的(因为这部分地址空间每个进程都以相同的方式映射)。

关于operating-system - Windows 内核模式驱动程序如何访问分页内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3396888/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com