大师截图
Rust 已经足够受欢迎 它已成为 Linux 以及其他操作系统中选择集成的第二语言之一,例如 Android,它已经拥有 Rust 的部分代码,Windows 也有已给予批准等。
锈 已被证明是一种强大的语言并赢得了如此的信任 一些操作系统甚至是用这种编程语言创建的,仅举几例: 氧化还原, 我们也有从头开始编写的内核,例如 克尔拉 或中使用的内核 中国最近发射的卫星.
之所以提这个,是因为最近看到一则新闻引起了我的注意,那就是 提出了一个项目,其中开发了用 Rust 编写的内核 并且与 Linux 部分兼容。
这个项目的名字是 “老师” 正如所提到的, 是一个用 Rust 编写的类 Unix 内核,实现了 Linux 内核的系统调用的子集 足以创建标准的工作环境。因此,“Maestro”项目并不是什么新鲜事,因为开发人员提到该项目诞生于 2018 年,但当时它是用 C 编写的,并且由于 Rust 的不同优点和特性,该项目是从零。
在项目页面上 变更原因描述如下:
那时我决定切换到 Rust(我用这种语言进行的第一个项目),它具有以下几个优点:
- 利用从以前的错误中吸取的教训,从头开始重新启动项目。
- 比直接用C写一个类似Linux的内核更有创新一点。毕竟当时就用Linux吧。
- 利用 Rust 语言的安全性来利用一些内核编程困难。使用 Rust 编写系统可以让您将内存安全的部分责任从程序员转移到编译器。
在内核开发中,调试非常困难,原因如下:
- 文档通常很难找到,并且 BIOS 实现可能存在错误(比您想象的更频繁)。
- 启动时,内核可以完全访问内存,并且可以写入不应写入的位置(例如,其自己的代码)。
- 解决内存泄漏问题并不容易。无法使用 valgrind 等工具。
- gdb 可以与 QEMU 和 VMWare 一起使用,但在不同的模拟器或虚拟机上运行时,内核的行为可能有所不同。此外,这些模拟器可能不支持 gdb(例如 VirtualBox)。
- QEMU 或 VMWare 中的 gdb 支持缺少某些功能,gdb 有时甚至可能崩溃
和---关联 该项目的特点,突出的是内核是整体的 目前仅在 86 位模式下的 x32 系统上受支持。内核代码库涵盖约 49 行,可在真实硬件和虚拟环境(例如 QEMU 或 VirtualBox)中执行。
在《Maestro》当前的开发中, 31%已实施 (135之437) Linux 系统调用。 这是 足以加载基于 Bash 和 Musl 标准 C 库的控制台环境。 此外,基于 Maestro 的环境可以运行 GNU coreutils 套件中的一些实用程序以及任何 Unix 系统的基本打包。目前,正在完成实施网络堆栈的工作,并正在开发一个
其中 Maestro 的可用功能脱颖而出 下列::
- 用于 PS/2 键盘和终端的控制器,具有文本模式并部分支持 ANSI 序列。
- 支持虚拟内存的内存分配系统。
- 基于循环算法的任务调度程序,支持 POSIX 信号。
- PCI 设备的定义。
- IDE/PATA 控制器。
- Ext2 文件系统。
- 支持 /tmp 和 /proc 虚拟文件系统。
- 能够挂载 FS、MBR 和 GPT 磁盘分区。
- initramfs 支持。
- RTC 控制器用于定时器和精确时间。
- 支持加载内核模块。
- 能够运行 ELF 格式的可执行文件。
为 有兴趣了解更多有关该项目的信息,您可以查看详细信息 在下面的链接中。 对于对项目代码感兴趣的人应该知道它是 在麻省理工学院许可下分发。