【发布时间】:2018-03-14 11:30:01
【问题描述】:
我正在尝试用 C++ 创建一个 Linux 软件,它需要在 x86 和 x86-64 处理器上的受保护环境中运行代码。
我的问题是找到一种在受保护环境中运行代码的方法,首先,仅在 x86-64 上(这是处理器工作方式的技术部分),我看到了本地描述符表,但我发现它不再有效在 x86-64 上。我也听说过 Intel VT 技术,但是文档看起来很复杂。
您知道如何在受保护的环境中在 linux 和 x86-64 的进程内运行代码吗?
我的目标是在 linux 进程中创建类似于操作系统的东西。
像 Windows 或 Linux 一样,我希望在受保护的环境中运行的程序不会访问我的部分软件,并在需要时进行系统调用。我相信我已经找到了这样做的方法,我在下面解释它。
【问题讨论】:
-
首先,IA64是Intel Itanium的正式名称。您的意思很可能是 Intel 64,a.k.a AMD64 a.k.a x86_64。您很可能不想为 Itanium 写作,除非您的办公桌下有一个盒子。
-
第二,你真的需要明确你想要达到的目标。任何现代操作系统都为您提供受保护的虚拟内存环境,所有应用程序(包括您现在用来阅读这句话的浏览器)都在其中运行。您可以立即使用它。如果您需要的是准系统保护模式(传统 32 位或长 64 位),那么您基本上需要为此编写一个迷你操作系统。所有这一切都只与虚拟化远程相关(在这个词的现代理解中)
-
感谢您的回答,我确实想为 x86_64 编程。
-
我错误地发送了答案的第一部分。我想做的是一个有点像java的软件,更简单,我希望在进程内运行的程序不要访问不允许的部分我的虚拟机的内存。我说清楚了吗?
-
您想要的已经存在:user-mode-linux.sourceforge.net。不过,我不知道主机是如何从来宾系统上的
root受到“保护”的。
标签: linux x86-64 virtualization processor user-mode-linux