linux-kernel - 启动 Linux 的最低处理器能力
问题描述
我正在设计定制处理器。它是一个流水线五级处理器。最终,我们希望在其上启动 Linux。为了启动像 Linux 这样的成熟操作系统,定制处理器必须具备的最低功能是什么?
请注意,此时我并没有询问将 Linux 移植到我的定制处理器所需的步骤。在这个阶段,我只想知道我的处理器必须支持哪些功能才能启动像 Linux 这样的操作系统。
解决方案
虚拟内存(分页)和内核与用户权限级别是玩具 CPU 可能没有的主要级别。我认为有些 Linux 端口没有这些端口,比如 8086 或 286(不是 i386),但这些都不是完全正确的 Linux。
当然还有一个定时器中断,可能还有至少 32 位整数的原子加载/存储。可能还有原子测试和设置,可能还有其他 RMW 原语,或者至少是 LL/SC。可能如果您的 ISA 只有 16 位,那么您可能只使用 16 位原子性,因为这仍然是指针宽度,但是 IDK 如果有任何东西将依赖于 32 位volatile
存储或加载是原子的。我认为 Linux 可以使用 SeqLock 从定时器中断发布 64 位或 128 位时间戳更新,诸如此类。
(就移植而言,您需要一个可以针对您的 ISA 的 GCC 兼容的 C 编译器,以及一些手写的 asm。以及某种可以用作控制台的驱动程序,例如串行端口。)
推荐阅读
- laravel - Carbon DateTime 在 laravel 中的测试和控制器之间是不同的
- java - 元素集合无法按预期工作时的 Querydsl 案例
- buffer - Vulkan 读取存储缓冲区返回零
- android - 在片段中使用 requireActivity() 或 getActivity()
- android - 导航组件对话框片段 NoSuchElementException
- java - 为什么 IDE II 看不到黄瓜的自定义注册参数?
- c++ - 为什么 std::move() 中的 static_cast 会擦除参数的值?
- angular - 通过网络服务格式化电话号码
- python - 将 8 亿条数据插入 postgres 数据库的最快方法
- c - 这是什么意思:指向 void 的指针永远不会等于另一个指针?