انظر https://github.com/zhengruohuang/toddler-ng لصالح الجيل القادم!
كان الطفل الصغير في الأصل مشروعًا نصف Hobby و Half-Research تم تطويره خلال عطلة الصيف والشتوية عندما كنت في الكلية. تم تصميم الطفل الأصلي لأنظمة IA32 متعددة المعالجات على نطاق صغير. كانت الميزة الأكثر بروزًا هي التقنيات العملية الخالية من القفل المستخدمة في التزامن. ومع ذلك ، تم تصميم الطفل القديم بشكل مفرط لكل من مكونات OS ذات الصلة بالأجهزة والمنتظمة. ثم أصبح من غير العملي أخيرًا مواصلة التطور. تمكن الطفل النهائي من إنشاء وتشغيل عمليات المستخدم ومواضيع مؤشرات الترابط ، وكذلك قبول مدخلات لوحة المفاتيح ، على الرغم من عدم تنفيذ قذيفة أو نقلها.
من ناحية أخرى ، تم تصميم طفليه الجديد بهدف مختلف تمامًا. ALGHOUGH لا يزال مشروع هواية ، فهو يهدف إلى توفير microkernel قابل للاستخدام بالكامل وبيئة OS كاملة للبنية والمنصات المتعددة. تم التخلي عن الفكرة الخالية من القفل لأنها خلقت الكثير من التعقيد غير الضروري.
لدى Toddler نظام البناء الخاص به المكتوب في Python: Tmake . يعتني Tmake بتعميات الملفات ويوفر سلسلة من البدائية مثل التجميع ، والرابط ، والبناء ، وما إلى ذلك.
Python مطلوب لجميع الأهداف. مطلوب GCC و BinuTils لكل من المضيف والبنية المستهدفة ؛ NASM مطلوب لأهداف X86 (IA32 و AMD64). مطلوب المحاكي الافتراضي (QEMU/SIMH/SKI) أيضًا إذا كنت ترغب في اختبار طفل صغير.
بمجرد تثبيت جميع الحزم ، قم بإحضار رمز المصدر.
git clone https://github.com/zhengruohuang/toddler.git
cd toddler اكتب ./tmake build لبناء طفل صغير. بمجرد الانتهاء ، فإنه يولد صور القرص في target/ الدليل. إذا تم تثبيت QEMU للهندسة المعمارية المستهدفة ، فما ./tmake qemu .
يمكن دمج الخطوتين عن طريق الكتابة ./tmake all ، أو ببساطة ./tmake .
Tmake يدعم الإجراءات . لتحديد الإجراءات ، استخدم ./tmake <actions> الإجراءات>. على سبيل المثال ، ./tmake clean build
Tmake يدعم أهداف متعددة. من أجل البناء لهدف معين ، استخدم ./tmake target=<arch-machine>[-suffix] لاحظ أن حقول القوس والآلة مطلوبة بواسطة Tmake ، واللاحقة اختيارية. ومع ذلك ، فإن التنفيذ الفعلي لهدف معين قد يتطلب من المستخدم توفير قيمة للاحتياجات .
على سبيل المثال ، ./tmake target=ia32-pc-bios ./tmake target=armv7-rpi2
لاحظ أيضًا أنه لا يجوز لك خلط حقول القوس والآلات بشكل تعسفي. على سبيل المثال ، target=ia32-rpi2 غير صالح. قد تفشل مجموعات غير صالحة من الحقول في تجميع أو حتى إتلاف جهازك.
توفر طبقة تجريد الأجهزة (HAL) تجريدًا لكل نموذج معالج وأجهزة IO الأساسية. يصدر سلسلة من الوظائف والثوابت إلى النواة. يتم تعيين HAL إلى أعلى 4 ميجابايت من جميع العمليات بما في ذلك عملية kernel.
على عكس أنظمة التشغيل التقليدية ، فإن نواة Toddler هي عملية حقيقية . لا يتم تعيين kernel إلى مساحة عنوان عمليات المستخدم. ومع ذلك ، فإن تخطيط مساحة العنوان الظاهري للنواة يختلف قليلاً عن العمليات الأخرى. يحتوي kernel على رسم خرائط فردي بفضل حجم HAL الصغير. نتيجة لذلك ، تكون إدارة الذاكرة المادية أسهل بكثير وأنظف.
على الرغم من أن Toddler هو نظام التشغيل Micro-kernel ، إلا أن العديد من الخادم قد لا يكون فكرة جيدة. بدلاً من ذلك ، يتم توفير العديد من وظائف مستوى النظام في نظام واحد - نظام. تقوم عملية النظام بتنفيذ Universal Resource Manager (URS) ، ومدير حساب المستخدم (UAM) ، والعديد من أنظمة الملفات.
توفر عملية السائق العديد من برامج تشغيل الأجهزة الأساسية ، بما في ذلك لوحات المفاتيح وأجهزة المفاتيح والأقراص.
| بنيان | عرض | آلة الهدف | حالة |
|---|---|---|---|
| IA32 | 32 | كمبيوتر مستندة إلى Netburst | حاضِر |
| ARMV7 | 32 | Raspberry Pi 2 ، Qemu Raspi2 | حاضِر |
| MIPS32 | 32 | Creator 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 | المخطط |
| فاكس | 32 | سيم فاكس | المخطط |
| OR1K | 32 | qemu or1k-sim | المخطط |
| AMD64 | 64 | كمبيوتر قائم على Skylake | المخطط |
| ARMV8 | 64 | Raspberry Pi 3 ، Qemu Virt | نشيط |
| PPC64 | 64 | PowerMac G5 ، Qemu Mac99 | المخطط |
| MIPS64 | 64 | LONONGSON 3 سطح المكتب ، QEMU MALTA | حاضِر |
| sparcv9 | 64 | Qemu Sun4u | أولي |
| ألفا | 64 | Qemu Clipper | أولي |
| RISCV64 | 64 | يرتقع | المخطط |
| S390 | 64 | QEMU S390X | المخطط |
| IA64 | 64 | تزلج | المخطط |
| HPPA | 64 | HP 9000 PA-RISC محطة عمل ، QEMU HPPA-GENERIC | المخطط |