进程的页表是否映射到内核地址空间?

2024-03-23

我当时正在做 Windows 系统编程,想知道是否可以在源代码级别访问进程的页表。

这是我所了解的与虚拟内存相关的页表。

假设用户刚刚在 Windows 操作系统(32 位)上运行一个名为“A”进程的进程。

首先,操作系统为A进程创建并维护4GB虚拟地址空间。

(其中 2GB 是内核地址空间,另外 2GB 是用户地址空间。

用户地址空间中的任何代码都不能直接访问内核地址空间。)

然后,操作系统在物理内存中为A进程创建并维护页表,以将虚拟内存地址映射到物理内存地址。

这是我的问题。

操作系统为A进程创建页表后,该页表是否映射到A的内核地址空间,以便用户可以从源代码间接访问该页表?

或者页表没有映射到 A 的任何虚拟地址空间,而只是驻留在物理内存中,因此用户无法访问页表?


为了加速页表的操作,内核通常使页目录中的一个条目指向该页目录。这使得所有页表在地址空间中被映射和访问。然而,正如 Raymond Chen 所指出的,这些不能从用户模式访问。没有充分的理由允许应用程序弄乱页表。有一些 API 可以分配(和映射)地址空间区域,应该使用这些 API。

您的意思是“A”进程的虚拟内存的内核地址空间中有页表条目,并且这些条目被映射到驻留在物理内存中的真实页表。所以,进程只有具有内核模式才可以访问这些页表项,但进程不具有内核模式。因此,该进程最终无法访问其页表。这样对吗?

正确的。页面的可访问性由当前权限级别(用户与内核)、段访问权限和页面访问权限控制。系统中使用的这些的特定组合不允许在用户模式下运行的代码访问内核数据,包括页目录和页表。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

进程的页表是否映射到内核地址空间? 的相关文章

  • 如何使用 Windows 命令行环境查找和替换文件中的文本?

    我正在使用 Windows 命令行环境编写批处理文件脚本 并希望用另一个文件 例如 BAR 更改文件中某些文本 例如 FOO 的每次出现 最简单的方法是什么 有内置函数吗 这里的很多答案都帮助我指明了正确的方向 但是没有一个适合我 所以我发
  • Windows:如果我完成驱动器盘符会怎样? (他们26岁了!)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如果我完成驱动器盘符会怎样 这只是好奇心 但我有很多字母 当我把所有东西都连接起来时 我恰好浮动在 20 左右 该图像不是 mspaint
  • 需要帮助通过批处理文件添加注册表项

    我正在尝试通过cmd添加以下注册表项 我无法让其他用户能够使用以下命令添加此注册表项regedit exe s Location Project reg HKEY CURRENT USER Software Autodesk Fabrica
  • 如何以编程方式检索“Program Files”文件夹的实际路径? [复制]

    这个问题在这里已经有答案了 可能的重复 C 如何在 Windows Vista 64 位上获取程序文件 x86 https stackoverflow com questions 194157 c sharp how to get prog
  • Windows 内存映射文件

    我正在尝试研究 Windows 内核在内存映射文件 虚拟内存方面的行为 具体来说 我感兴趣的是确定内存映射文件的内容 由 Windows 刷新到磁盘的频率以及 Windows 使用什么标准来决定是时候这样做 我在网上做了一些研究 除了 MS
  • 从 Windows 中的 C++ 应用程序进行 Thrift 调用

    正如标题所示 我有一个用 C 编写的 Windows 应用程序 我需要从中调用远程 Thrift 服务 说实话 我对这个主题有点迷失 http wiki apache org thrift ThriftInstallationWin32 h
  • C# 系统 CPU 使用情况并与 Windows 任务管理器同步

    这是一个由两部分组成的问题 我想将我的代码发布到堆栈上以帮助其他人完成相同的任务 问题一 我有一个代码子集 我相信它可以根据测量间隔正确测量 CPU 使用情况 根据检索的时间跨系统中的尽可能多的核心 我在线程调用中使用 1 秒 我必须从网上
  • 在 C++ 和 Windows 中使用 XmlRpc

    我需要在 Windows 平台上使用 C 中的 XmlRpc 尽管我的朋友向我保证 XmlRpc 是一种 广泛可用的标准技术 但可用的库并不多 事实上 我只找到一个库可以在 Windows 上执行此操作 另外一个库声称 您必须做很多工作才能
  • 使用cmd打开包含多个空格的文件时出现问题

    我使用 java 调用下面的命令 这是java初始化 String fileName C temp A a txt String sCmd cmd c start fileName 这是我打印 sCmd 时得到的结果 cmd c start
  • Powershell 设置盖子关闭操作

    我想自动设置 Windows 7 在我的工作笔记本电脑上合上盖子时所执行的操作 因为每次登录时都会通过 GPO 重置该操作 我知道我可以在批处理脚本中使用 powercfg 命令来实现此目的 powercfg setacvalueindex
  • C++ 在后台运行 system(),dir 路径中带有空格,+输出到文本文件

    我正在尝试使用一堆选项运行 tshark exe 并输出到 fil 见下文 然而 我真的坚持要使用的 system 命令的正确语法 我以前在这里得到过帮助 甚至已经让它与 dos for 循环一起工作 但这超出了我的能力范围 我已经尝试了各
  • 如何使用命令终止上次打开的 Internet Explorer 窗口?

    我正在尝试编写一个 Windows 命令文件来在 IE 中打开网页 等待其加载 然后关闭 IE 窗口 以下方法有效 但会杀死所有 IE 窗口 因此运行 cmd 之前已打开的所有 IE 窗口也将被关闭 start iexplore exe p
  • 低级挂钩/SetWindowsHookEx lParam 自动重复?

    在这里阅读 Windows PC 上如何实现键盘自动重复 https stackoverflow com questions 876852 how is keyboard auto repeat implemented on a windo
  • ProcessBuilder 未正确执行 Java 类文件

    在一个java文件中 我调用命令行语句来执行另一个java文件 这就是我正在做的 List
  • Node.js 客户端中的 Windows 集成身份验证

    当使用node js作为客户端时 是否可以使用Windows集成身份验证连接到服务器 例如连接到IIS时 我对此的搜索仅出现使用 node js 作为服务器的结果 2015 年更新 现在有一些模块实现了 Windows 集成身份验证 节点
  • 可以禁用“应用程序错误”对话框吗?

    我使用 Hudson 作为持续集成服务器来测试 C C 代码 不幸的是 我在某个地方有一个错误导致内存损坏 因此在某些 Windows 计算机上我有时会收到一个 应用程序错误 对话框 解释一条指令引用了无法读取的内存 弹出此对话框并基本上挂
  • 将 HttpApi 与 I/O 完成端口结合使用

    我刚刚偶然发现了微软的HTTP 服务器 API http msdn microsoft com en us library aa364510 28v vs 85 29 aspx 简介中写道 HTTP 服务器 API 使应用程序能够通过 HT
  • 尝试读取转储时“无法加载符号”

    我的一个应用程序有时会在 Win XP 计算机上导致 BSOD 为了了解更多信息 我加载了生成的 dmp 文件 来自 C Windows Minidump 但在执行此操作时在大部分读数中收到此消息 Symbols can not be lo
  • win32 API 和 .NET 框架之间的选择

    我必须开发一个适用于 Windows 的应用程序 该应用程序将能够通过网络摄像头识别手势来控制鼠标 我将使用 vc 2008 进行开发 但我很困惑是使用 NET 框架还是核心 win32 API 性能对于我的应用程序非常重要 根据 Ivor
  • Windows:列出并启动与扩展关联的应用程序

    如何确定与特定扩展名 例如 JPG 关联的应用程序 然后确定该应用程序的可执行文件所在的位置 以便可以通过调用 System Diagnostics Process Start 来启动它 我已经知道如何读取和写入注册表 注册表的布局使得以标

随机推荐

  • 尝试调用 getWritableDatabase() 时不断收到 NullPointerExceptions

    我是 Android 框架的新手 我无法通过 SQLite 的基础知识 我正在尝试构建一个非常简单的应用程序 它有一个 EditText 搜索框 当按下某个键时 它会在 SQLite 数据库上执行 Like word 搜索 以查找在 Edi
  • 带有 ref 变量的函数委托

    public object MethodName ref float y elided 我如何定义一个Func该方法的委托 它不能通过Func但你可以定义一个自定义delegate for it public delegate object
  • 我应该如何为 PHP 中的所有页面设置全局变量

    Question 我要实现 associate name and app key全局变量 这样我就可以在任何我想要的页面上访问它们 下面是我的头文件中的代码 获取变量将出现在索引页中 它在索引页面上工作正常 因为 GET 数据可用 但是当用
  • Powerpoint 演示文稿中可编辑 HTML、CSS 和 Javascript?

    我想知道是否可以在 powerpoint 内有一个可编辑的 HTML 演示界面 如 Plunkr 用于进行有关 HTML JavaScript 等的教育演示 有人这样做过吗 是否可以在 powerpoint 中嵌入带有 plunkr 或本地
  • 树图如何使用红黑树算法

    我读过很多关于红黑树的文章 其中操作需要 O log n 时间 我不太清楚它是如何工作的 以及与二叉搜索树相比 树图实际上如何使用红黑树算法来平衡树 参考链接https www topcoder com community data sci
  • PhoneGap Ripple 模拟器总是报告格式错误的 config.xml

    有谁知道什么会导致最新版本的 Chrome 上的 Ripple 模拟器 最新版本 always报告格式错误或丢失的配置文件 在应用程序的根目录中找不到 config xml 文件或者 XML 格式错误 我有我的config xml完全存在于
  • Azure 上的 PushSharp ASP.net MVC4 问题。 - 无法连接APNS反馈服务

    我有一个 ASP Net MVC4 网站 在 Azure 上运行一个简单的 Web 服务 为我们的移动应用程序提供推送通知服务 它在我的计算机上的本地 IIS 实例上运行时可以工作 但一旦部署到 Azure 它会工作一段时间然后停止 看来P
  • x 轴上只有一个变量的 Corrplot

    我有一个包含大约 200 个变量的数据集 我希望了解其中一个变量如何与所有其他变量相关 但是 当我使用corrplot 它给了我完整的相关矩阵200x200细胞的大小 并且大到可以很好地可视化 我将使用iris可重现示例的数据集 说吧 我只
  • 在 C++ 中是否可以获取作为参数传递的变量名称的字符串? [复制]

    这个问题在这里已经有答案了 我希望能够做这样的事情 int myVar 3 void logger int param std cout lt lt nameOf param lt lt lt lt param lt lt std endl
  • 如何删除SSIS中数据流任务中的列?

    I use SQL Server 2016我很忙DataFlow task In my DataFlow task I use Multicast component因为某些原因 在我的中创建一个新的流程后DataFlow 我需要删除新流程
  • 如何使用 ActionScript 3 在 Flash 中创建文本按钮?

    当我尝试使用文本字段作为按钮时 它似乎没有buttonMode财产 如何在 Flash 项目中使用 ActionScript 以编程方式创建文本按钮 它应该是一个简单的文本 可以点击 您可以添加TextField to a Sprite并将
  • 如何在具有提升权限的 WiX 中创建的 MSI 中运行自定义操作?

    我有一个安装程序需要访问注册表并使用自定义操作复制和删除文件 在 Windows XP 中 安装程序运行良好 但在 Vista 和 7 中 安装程序显示错误 因为它无法访问文件夹 但如果我以管理员身份运行安装程序 则一切正常 因此 我需要安
  • firebreath JSAPI 在 firefox 中不会被识别

    首先介绍一下我使用 Firebreath 所做的一些背景知识 我正在使用 firebreath 在浏览器中开发渲染查看器插 件 我在插件中定义了两种 MIME 类型 一种用于主查看器 另一种用于 2D 平面图 在每个页面中 仅允许一个主查看
  • 反应本机视图拍摄捕捉模糊屏幕截图

    我正在使用react native snap shot 库来共享我的屏幕 它对于小内容工作正常 但对于详细视图长滚动视图 其模糊且文本不可读
  • 将 java.sql.date 转换为 java.time.LocalDateTime

    我如何转换java sql Date从 JDBC 数据库返回到java time LocalDateTime 实际上比我想象的要容易 这对我有用 java sql ResultSet result result getTimestamp v
  • 多个action.class.php

    我确实有一个模块 例如帐户 当然 您会在 acount actions action class php 中找到一个名为的文件 PHP 文件action class php 变得越来越大 可以延长吗 举个例子 account action
  • 当我拥有原始文件时恢复 AES 加密文件密码

    如果某人同时拥有加密文件和原始文件 有没有办法知道用于加密文件的秘密是什么 AES 是一种分组密码 不易受已知明文攻击 http en wikipedia org wiki Known plaintext attack 蛮力是你唯一的选择
  • Ext JS:xtype 有什么用?

    我看到 Ext JS 中有很多例子 其中不是实际创建 Ext JS 对象 而是一个带有xtype属性被传入 这有什么用 如果无论如何都要创建对象 性能增益在哪里 如果这是原因 xtype是识别特定组件的简写方法 panel Ext Pane
  • 在这种特定情况下,使用成员初始值设定项列表和在构造函数中赋值之间有区别吗?

    在内部和生成的代码方面 以下之间是否存在真正的区别 MyClass MyClass capacity 15 data NULL len 0 and MyClass MyClass capacity 15 data NULL len 0 谢谢
  • 进程的页表是否映射到内核地址空间?

    我当时正在做 Windows 系统编程 想知道是否可以在源代码级别访问进程的页表 这是我所了解的与虚拟内存相关的页表 假设用户刚刚在 Windows 操作系统 32 位 上运行一个名为 A 进程的进程 首先 操作系统为A进程创建并维护4GB