有关下一代幼儿,请参见https://github.com/zhengruohuang/toddler-ng!
蹒跚学步的时候是一个半人,在我上大学时夏季和冬季假期开发的半研究项目。原始的小孩是为小规模多处理器IA32系统设计的。最出色的功能是用于征服的实用无锁技术。但是,旧的小孩是针对与硬件有关的和常规的OS组件设计的。然后,继续发展变得不切实际。最终的幼儿能够创建和运行用户流程和线程,以及接受键盘输入,尽管没有实现或移植。
另一方面,新的小孩的目标是完全不同的目标。 Alghough它仍然是一个爱好项目,它旨在为多个架构和平台提供一个完全可用的微孔和完整的操作系统环境。无锁的想法被放弃了,因为它产生了太多不必要的复杂性。
幼儿有自己的建筑系统用Python: Tmake编写。 Tmake负责文件依赖关系,并提供了一系列原始词,例如编译,链接,构建以及。Tmake脚本(也在Python中),然后使用原始词来构建建筑过程。
所有目标都需要Python;主机和目标体系结构都需要海湾合作委员会和二元。 X86(IA32和AMD64)目标需要NASM。如果要测试幼儿,也需要默认模拟器(QEMU/SIMH/SKI)。
安装所有软件包后,获取源代码。
git clone https://github.com/zhengruohuang/toddler.git
cd toddler类型./tmake build以构建幼儿。完成后,它将在target/目录中生成磁盘图像。如果为目标体系结构安装了QEMU,只需键入./tmake qemu即可启动使用默认参数的QEMU。
可以通过键入./tmake all ,或简单地./tmake将这两个步骤组合在一起。
Tmake支持行动。要指定操作,请使用./tmake <actions> 。例如, ./tmake clean build将清理现有对象和二进制文件,然后启动新构建。
Tmake支持多个目标。为了为特定目标构建,请使用./tmake target=<arch-machine>[-suffix] 。请注意,Tmake需要拱门和机器场,后缀是可选的。但是,特定目标的实际实施可能需要用户为后缀提供值。
例如, ./tmake target=ia32-pc-bios将为基于BIOS的IA32 PC系统建造蹒跚学步的幼儿; ./tmake target=armv7-rpi2将为Raspberry Pi 2建造幼儿。
另请注意,您可能不会任意混合拱门和机器场。例如, target=ia32-rpi2无效。场地的组合无效,可能无法编译甚至损坏您的设备。
硬件抽象层(HAL)提供了每个处理器模型和基本IO设备的抽象。它将一系列功能和常数导出到内核。 HAL映射到包括内核过程在内的所有过程的最高4MB。
与传统的操作系统不同,幼儿的内核是一个真实的过程。内核未映射到用户进程的地址空间。但是,内核的虚拟地址空间布局与其他过程有些不同。由于HAL的尺寸很小,内核具有一对一的映射。结果,物理内存管理更容易和清洁。
尽管幼儿是微型内核操作系统,但成为多个服务器可能不是一个好主意。相反,单个服务器系统中提供了许多系统级功能。系统流程实现了通用资源管理器(URS),用户帐户管理器(UAM)和几个文件系统。
驱动程序过程提供了几个必需的设备驱动程序,包括键盘,控制台和磁盘。
| 建筑学 | 宽度 | 目标机器 | 地位 |
|---|---|---|---|
| IA32 | 32 | 基于Netburst的PC | 当前的 |
| ARMV7 | 32 | Raspberry Pi 2,Qemu Raspi2 | 当前的 |
| MIPS32 | 32 | CRETOR CI20,QEMU MALTA | 当前的 |
| PPC32 | 32 | Mac Mini G4,Powermac G4,Qemu G3Beige,Qemu Mac99 | 当前的 |
| SPARCV8 | 32 | QEMU SUM4M SPARCSTATION 10,QEMU LEON-3 | 积极的 |
| RISCV32 | 32 | 长钉 | 计划 |
| M68K | 32 | QEMU MCF5208EVB | 计划 |
| SH4 | 32 | Qemu shix | 计划 |
| vax | 32 | Simh Vax | 计划 |
| OR1K | 32 | qemu or1k-sim | 计划 |
| AMD64 | 64 | 基于Skylake的PC | 计划 |
| ARMV8 | 64 | Raspberry Pi 3,Qemu Virt | 积极的 |
| PPC64 | 64 | PowerMac G5,QEMU MAC99 | 计划 |
| MIPS64 | 64 | Loongson 3桌面,马耳他Qemu | 当前的 |
| SPARCV9 | 64 | Qemu Sun4u | 最初的 |
| 阿尔法 | 64 | QEMU快船 | 最初的 |
| Riscv64 | 64 | 长钉 | 计划 |
| S390 | 64 | QEMU S390X | 计划 |
| IA64 | 64 | 滑雪 | 计划 |
| hppa | 64 | HP 9000 PA-RISC工作站,QEMU HPPA-GENERIC | 计划 |