7/24/2021 linuxcompiler

原文:Heap Allocation

本文为我们的内核添加堆内存分配的支持。首先,它会介绍动态内存,展示借用检查器如何防止常见的分配错误。然后实现 Rust 的基本分配器接口,创建一个堆内存分配器,并创建一个分配器包。本文结束后,我们的内核就能用上内置的 alloc 包的分配和集合类型了。

8/5/2020 blog_osrust

本文研究 合作式多任务 和 Rust 的 async/await。我们将会仔细了解 Rust 的 async/await 的工作原理,包括 Future trait 的设计,状态机转换和 pinning。然后创建异步的键盘任务和一个基础的执行器,从而为内核添加 async/await 的基本支持。

8/3/2020 blog_osrust

原文:Allocator Designs

本文讲解如何从零开始实现堆内存分配器。具体会展示和讨论三种不同的分配器设计,包括粗块式分配、链表式分配和固定块式分配。我们会为每种设计提供基本实现,并用于内核。

7/31/2020 blog_osrust

原文:CPU Exceptions

CPU 异常会在多种出错情况下出现,例如访问非法内存地址或者除 0。为了处理这些异常,我们需要设置好提供处理函数的 中断描述符表。本文结束之后,我们的内核应该能够捕获 断点异常,并恢复继续执行。

7/27/2020 blog_osrust

原文:Double Faults

本文深入探究 CPU 调用异常处理函数失败时触发的二级异常。处理这种异常能够规避不可恢复的导致系统重置的 三级异常。为了避免所有情况下的三级异常,我们配置一个 中断栈表 用于在独立的内核栈上捕获二级异常。

7/27/2020 blog_osrust

原文:Testing

本文主要讲述在 no_std 环境下执行单元测试和集成测试的方法。我们将借助 Rust 的自定义测试框架来在内核中执行一些测试函数。为了从 QEMU 将结果反馈出来,我们需要使用 QEMU 的其他功能以及 bootimage 工具。

7/27/2020 blog_osrust

原文:Hardware Interrupts

本文将会配置可编程的中断控制器,用于正确地将硬件中断导向 CPU。和之前的异常处理函数类似,为了处理这些中断,我们需要往中断描述符表添加新表项。我们将会学到如何获取周期性的时钟中断和从键盘获取输入。

7/27/2020 blog_osrust
12 Next Jump To Go