Skip to content

🛡️ الدرع التجريدي: تشريح hal/mod.rs ​

في عالم أنظمة التشغيل، أكبر خطأ يمكن أن ترتكبه هو أن تجعل "النواة" تعتمد على قطعة عتاد محددة. ماذا لو أردنا نقل نظام "QOS" من معالجات الحواسيب (x86_64) إلى معالجات الهواتف الذكية (ARM)؟ لو كانت النواة تكتب في شاشة الـ VGA مباشرة، فسنضطر لإعادة كتابة النواة بالكامل!

هنا يأتي دور طبقة التجريد العتادي (Hardware Abstraction Layer - HAL).

عقد الالتزام (The Trait Contract) ​

بدلاً من أن تقوم النواة بالطباعة المباشرة، هي تعلن عن "شروط" يجب أن يلتزم بها أي عتاد يريد العمل معها. في لغة Rust، نستخدم واجهات (Traits) لكتابة هذه العقود:

rust
pub trait TextOutput {
    fn write_char(&mut self, c: u8);
    fn write_str(&mut self, s: &str) {
        for b in s.bytes() {
            self.write_char(b);
        }
    }
    // ... دوال تغيير الألوان ...
}

كيف تستفيد النواة من هذا الدرع؟ ​

بفضل هذا الكود، النواة في ملف lib.rs لم تعد تهتم بنوع الشاشة، ولا بعنوان الذاكرة، ولا بأي تعقيد فيزيائي. هي تستخدم هذا العقد فقط:

rust
// النواة تطلب من المعمارية أياً كانت إعطاءها كائن يحقق عقد TextOutput
let mut out = arch::x86_64::VgaTextOutput; 

// النواة تستخدم الدالة بأناقة، والـ HAL يقرر كيف تُطبع فعلياً!
out.write_colored(">>> Booting QOS Kernel Microkernel... <<<
", Color::LightGreen, Color::Black);

🎯 الخلاصة ​

ملف hal/mod.rs هو العقل الدبلوماسي للنظام. هو يحمي كود النواة (العبقري والمستقل) من التلوث بتفاصيل العتاد (المزعجة والمتغيرة).

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