🥇 الإنجاز الأول: الإقلاع وتجريد العتاد
تاريخ الإنجاز: المرحلة الحالية الحالة: ✅ مكتمل
ملخص الإنجاز
نجحنا في وضع حجر الأساس لنواة QOS Kernel وجعلها تقلع بنجاح على محاكي QEMU. هذه المرحلة أثبتت قوة معماريتنا واستخدامنا للغة Rust في بيئة Bare Metal.
التفاصيل التقنية
- دعم Multiboot2: تمت كتابة ترويسة متوافقة مع معيار Multiboot2 بالـ Assembly لكي يتمكن محمل الإقلاع GRUB من التعرف على نواتنا.
- الانتقال إلى 64-bit (Long Mode):
- تم إعداد جداول الذاكرة الافتراضية (Page Tables) باستخدام تقنية Huge Pages (2MB).
- تم تفعيل Paging والانتقال من وضع 32-bit إلى 64-bit نقي.
- طبقة تجريد العتاد (HAL):
- تم بناء هندسة صارمة تفصل قلب النواة
coreعن العتادdrivers. - تم تعريف واجهة
TextOutputالتي تعتمد عليها النواة للطباعة.
- تم بناء هندسة صارمة تفصل قلب النواة
- سائق شاشة VGA:
- تم برمجة سائق
VGA Text Bufferللكتابة المباشرة على عنوان الذاكرة0xb8000. - تم استخدام أقفال
spin::Mutexلضمان حماية الذاكرة (Thread Safety).
- تم برمجة سائق
- معالجة الانهيارات (Panic Handler):
- تم كتابة معالج مخصص لأخطاء Rust يطبع سطر ومكان الخطأ بدون استخدام الـ Heap أو مكتبة
std.
- تم كتابة معالج مخصص لأخطاء Rust يطبع سطر ومكان الخطأ بدون استخدام الـ Heap أو مكتبة
التحديات التي تغلبنا عليها
- مشكلة تصفير المكدس (Stack Zeroing Bug): واجهنا خطأ معقداً (Triple Fault) ناتجاً عن تصفير منطقة الـ BSS بينما كان المكدس يقع بداخلها، مما أدى لمسح بيانات الـ Multiboot المحفوظة. تم حله بعبقرية عبر نقل البيانات لمسجلات
esiوedxقبل التصفير. - تأمين توافقية Rust: أجبرنا المترجم على التخلي عن ميزات الـ Red Zone و SSE مؤقتاً لتجنب انهيارات المعالج غير المتوقعة (GPF) قبل تهيئة النظام بالكامل.
الخطوة القادمة (المرحلة 2): بناء مدير الذاكرة (Memory Manager).