英特尔IA32备忘单

时间:2013-06-18 10:56:14

标签: c++ operating-system

我正在寻找涵盖IA32架构的技术规范,幻数等的文档或教科书。

英特尔手册一切都很好,但我正在寻找更简洁的东西。

我正在开发的特定项目(一种新型操作系统)需要熟悉硬件地址和基本系统架构。

我无需从头开始使用英特尔手册中的大部分细节 - 只是实现任务切换和虚拟内存所需的技术细节!

有人能指出我一些好资源的方向吗?

感谢。

1 个答案:

答案 0 :(得分:2)

英特尔和AMD手册可能是最好的资源。您显然不需要阅读所有内容,但需要阅读相关部分 - 例如AMD的“AMD64 Architecture Programmers Manual, Volume 2”,其中第5章介绍“页面翻译”,这是虚拟内存的基础。

编辑:声明偏见:我曾为AMD工作,我仍然更喜欢AMD和英特尔 - 无论是在文献还是实际产品方面。

任务切换通常通过简单地保存一个进程的上下文并使用主要是常规指令恢复新进程的上下文来完成,其中一些移动到CR3和CR4以设置新进程的页表(通常不必保存CR3 / CR4值,因为它们是每个进程“固定”的,因此您只需从存储在该进程的数据中的任何位置加载新的值。

在32位模式下,x86架构确实具有“内置”任务切换功能,但它并未被任何现代操作系统使用,并且由于其“保存所有内容,恢复所有内容”方法而相当慢。手动编写任务保存/恢复代码通常不是那么难,您可以清楚地避免保存和恢复大量数据。您仍然需要使用“任务状态段”(AMD的文献中的第12章)来允许在内核和用户模式之间进行堆栈切换。

当然,您还需要查看一些中断和异常处理,如何处理PCI访问的硬件寄存器等等。我担心这是我在书中查找的东西,我没有链接。由于最近的举动,这些目前被堆放在一个盒子里,所以不能给你准确的标题。