【问题标题】:Intel IA32 cheat sheet英特尔 IA32 备忘单
【发布时间】:2013-06-18 10:56:13
【问题描述】:

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

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

我正在从事的特定项目(一种新型操作系统)需要深入了解硬件地址和基本系统架构。

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

谁能指出一些好的资源的方向?

谢谢。

【问题讨论】:

  • 类似this?
  • 我看不出你到底想要什么。如果您想完成一些准系统示例,这就是wiki.osdev.org 的用途。如果你想要一个严肃的操作系统,英特尔的开发人员手册是一个(几乎)详尽的参考,只要你需要。

标签: c++ operating-system


【解决方案1】:

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

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

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

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

当然,你还需要看一些中断和异常处理,如何处理用于PCI访问的硬件寄存器等等。恐怕这是我在没有链接的书中查找的内容。自从最近搬家以来,这些目前都堆放在一个盒子里,所以不能给你确切的标题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-09
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多