Skip to content

🥇 الإنجاز الأول: الإقلاع وتجريد العتاد ​

تاريخ الإنجاز: المرحلة الحالية الحالة: ✅ مكتمل

ملخص الإنجاز ​

نجحنا في وضع حجر الأساس لنواة QOS Kernel وجعلها تقلع بنجاح على محاكي QEMU. هذه المرحلة أثبتت قوة معماريتنا واستخدامنا للغة Rust في بيئة Bare Metal.

التفاصيل التقنية ​

  1. دعم Multiboot2: تمت كتابة ترويسة متوافقة مع معيار Multiboot2 بالـ Assembly لكي يتمكن محمل الإقلاع GRUB من التعرف على نواتنا.
  2. الانتقال إلى 64-bit (Long Mode):
    • تم إعداد جداول الذاكرة الافتراضية (Page Tables) باستخدام تقنية Huge Pages (2MB).
    • تم تفعيل Paging والانتقال من وضع 32-bit إلى 64-bit نقي.
  3. طبقة تجريد العتاد (HAL):
    • تم بناء هندسة صارمة تفصل قلب النواة core عن العتاد drivers.
    • تم تعريف واجهة TextOutput التي تعتمد عليها النواة للطباعة.
  4. سائق شاشة VGA:
    • تم برمجة سائق VGA Text Buffer للكتابة المباشرة على عنوان الذاكرة 0xb8000.
    • تم استخدام أقفال spin::Mutex لضمان حماية الذاكرة (Thread Safety).
  5. معالجة الانهيارات (Panic Handler):
    • تم كتابة معالج مخصص لأخطاء Rust يطبع سطر ومكان الخطأ بدون استخدام الـ Heap أو مكتبة std.

التحديات التي تغلبنا عليها ​

  • مشكلة تصفير المكدس (Stack Zeroing Bug): واجهنا خطأ معقداً (Triple Fault) ناتجاً عن تصفير منطقة الـ BSS بينما كان المكدس يقع بداخلها، مما أدى لمسح بيانات الـ Multiboot المحفوظة. تم حله بعبقرية عبر نقل البيانات لمسجلات esi و edx قبل التصفير.
  • تأمين توافقية Rust: أجبرنا المترجم على التخلي عن ميزات الـ Red Zone و SSE مؤقتاً لتجنب انهيارات المعالج غير المتوقعة (GPF) قبل تهيئة النظام بالكامل.

الخطوة القادمة (المرحلة 2): بناء مدير الذاكرة (Memory Manager).

تم تطويره بحب بواسطة مجتمع Qtoom.