اهلا بشباب ومتابعى الدورة وما زلنا فى المرحلة الاولى من الدورة واتمنى تكون الدروس السابقة مفهومة من الجميع
الان بعد ما ذكرنا فى الدرس السابق عن الاقلاع والبيوس وما هم سناتى الان الى الجزء العملى من هذا الدرس
وبدرس جديد سوف نتعلم كيفية كتابة Bootloader للحاسوب
Bootloader Theory
سوف نتكلم من هنا على نظام الاقلاع Bootloader
خصائص Bootloaders
1- يتم تخزينها بواسطة MBR
2- تاخذ الالقطاع الاول من الDisk
3- الحجم الاقصى والادنى ومهما فعلت فيجب ان تكون 512 Byte
4- يتم تحميلها بواسطة BIOS INT 0x19 فى العنوان 0x7C00
كما تلاحظ لا يمكننا فعل الكثير ب512 Byte فما هو العمل ؟ >>> ورطتنا يا ابو حميد اوعى تسبنا وتمشى :lol:
لا يا عم مش همشى انا قاعد علشان عندى الحل وهشرح بالتفصيل الممل >>> وانا اعنى الملل بمعنى الكلمة ان شاء الله
فى لغة الاسمبلى يمكننا بسهولة تحديد 512byte لذا فالكود سيكون جيدا فقط
لكن فقط فى جزء منه سيكون فى الذاكرة ولمثال للتوضيح لاحظ الاتى
mov ax, 4ch inc bx ; 512 byte mov [var], bx ; 514 byte
ففى لغة الاسمبلى التنفيذ يبدأ من بداية الملف نزولا الى الاسفل بالرغم من ذلك
تذكر شئ مهم عندما يتم تحميل الملفات فى الذاكرة فاننا نقوم بتحميل القطاعs
وكل القطاع منهم 512 bytes
لذا فنحن سنقوم بنسخ 512 bytes فقط فى الذاكرة :)
حد فاهم حاجة ؟ :P
اذا تم تنفيذ الكود اعلاه وفقط الالقطاع الاول سيتم تنفيذه وتحميله الى الذاكرى اولا :cool: (The inc bx instruction)
لذا فان اخر تعليمة mov ستظل على الdisk وليس على الذاكرة
ماذا سيفعل المعالج بعد inc bx ؟
سوف يقوم بالاستكمال الى 514 byte وهذا طبعا لن يكون فى الذاكرة
هذا سيتم تنفيذه من نهاية ملفنا والنهاية المحتمة هى تحطم النظام والاقلاع
وبالرغم من ذلك ايضا فانه يمكن تحميل القطاع الثانى او اكثر الى عنوان ويتم تنفيذه
والان بقية الملف سوف يكون فى الذاكرة وكل شئ سوف يتم بشكل جيد :wub: (بحبك يا بلدى ) :P
Hardware Exceptions >>(تعبيرات العتاد )
تعبيرات العتاد هى مجرد تعليمات وتعبيرات مثل السوفت وير الا ان المعالج يقوم بتنفيذها اولا قبل تعبيرات وتعليمات السوفت وير
وهناك بعض الاوقات والاحداث التى يحدث فيها تعطيل او توقف اى التعبيرات مثل
interrupt-hardware or software
ويحدث وقتها ان يتحطم النظام
CLI و STI Instructions
يمكننا استخدام تعليمات CLI وSTIيمكنك اتاحة وتعطيل استخدام المقاطعات ومعظم انظمة التشغيل حاليا لا تسمح بتفعيل هذه التعليمات للتطبيقات والبرامج الفرعية فان هذا يؤدى الى مشاكل كبيرة
cli ; clear interrupts ; do something... sti ; enable interrupts--we're in the clear!
Double Fault Hardware Exception
لو ان المعالج وجد مشكلة ما اثناء التنفيذ مثل تعليمة خاطئة او قيمة خاطئة الخ ....فانه يقوم بتنفيذ Second Fault Exception Handler
ويمكن اختصارها الى Double Fault
والتى هى المقاطعة 0x8
وسوف نتطرق لاحقا الى شرح هذا الجزء بالتفصيل ان شاء الله
Triple Fault
لقد تطرقنا الى ذكر هذا الامر من ذى قبل أليس كذلك ؟
معلش يا محمد بلاش نقولك كلمة مش حلوة مسمعناش فى الدورة عن الحاجة دى
خلاص يا عم منك له مش عايزين ضرب
Triple Fault معناها هو اعادة استخدام النظام بصعوبة
فى المراحل المبكرة فى النظام مثل BOOTLOADER كلما كان هناك شوائب فى الكود الخاص به فالنظام وقتها سوف يقوم بعمل اعادة التشغيل وحل هذه المشكلة سيكون فى الكود الذى قمت بكتابته
طبعا كده الامور وضحت
وهذا الدرس هو نهاية الدروس النظرية
والدرس القادم سيكون بعنوان
Developing a simple Bootloader
او تطوير BOOTLOADERبسيط
والى اللقاء فى الدروس العملية مع تحياتى
خادم الاسلام
محمد ابراهيم
