有關下一代幼兒,請參見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 | 計劃 |