السلام عليكم ورحمه الله وبركاته
نأتى اليوم الى الدرس العاشر من دورتنا الخاصة بتصميم انظمة التشغيل
فى الدرس السابق تناولنا اوضاع المعالج المختلفة الوضع المحمى, الوضع المحمى , الوضع الوهمى ......الخ وتناولنا ايضا بعض مقاطعات البيوس
وكذلك تناولنا من بعض من اجزاء معالجة الازاحة فى الوضع الحقيقى وايضا قمنا بالتوسع فى عمل Boot Loader الخاص بنا باستخدام OEM Parameter Block"
لطباعة سلسلة نصية على الشاشة
اما فى هذا الدرس ان شاء الله سوف نستعرض الRings المختلفة والفرق بين برمجة التطبيقات Application Programming وبرمجة النظم Systems Programming.
Rings of Assembly Language
نظرية الRings
ما هو ring ؟
الring لغة لغة الاسمبلى ( التجميع ) تمثل مستوى الحماية والسيطرة للبرنامج على النظام وتوجد 4rings
وهم
Ring 0, Ring 1, Ring 2, Ring 3.
Ring 0
البرامج الخاصة به بالفعل تملك التحكم المطلق بكل شئ فى النظام بينما Ring3 يملك سيطرة اقل
الring هو اكثر من مجرد مفهوم - بل انه يبنى داخل معمارية المعالج
عندما يتم فتح الكمبيوتر وعندما يبدأ فى الاقلاع فان المعالج يكون فى ring 0 ,ومعظم التطبيقات مثل تطبيقات الويندوز ودوس تكون فى ring 3
وهذا يعنى ان نظام التشغيل يكون فى ring 0 ويكون له السيطرة المطلقة عن التطبيقات التى توجد فى ring 3
التحويل بين Rings :
لان الrings هى جزء من معمارية الحاسب فان المعالج يقوم بتغيير حالاتهم متى احتاج الى ذلك ويمكنه التغيير فى حالات اتية
1- تعليمة مباشرة تقوم بتنفيذ برنامج فى ring غير الخاص به مثل far jump, far call, far return, الخ ......
2- تعليمات مثل NT, SYSCALL, SYSENTER
3- عند التعبيرات
وفى دروس اخرى سنذكر تعليمات SYSCALL و SYSENTER
اقلاع المراحل المتعددة
مرحلة الاقلاع المنفرد
تذكر ان boot loader وboot sector حجمها فقط يجب ان يكون 512bytes واذا كان boot loader ذو 512byets يقوم بتحميل النواة مباشرة فانه يسمى ويكون Single Stage Bootloader. (مرحلة الاقلاع المنفردة)
المشكلة فى هذا النظام بغض النظر عن الحجم الصغير والذى لا يمكننا فى عمل الكثير فانه من الصعب جدا تحميل وتنفيذ نواة32bit بدون 16bit boot loader وهذا لا يتمضن اخطاء المعالجة اليدوية بل انه يقوم بتضمين الكود ل (GDT, IDT, A20, PMode) من اجل البحث وتحميل نواة 32bit وتنفيذ النواة وايضا اخطاء المعالجة
عمل كل هذا فى حدود 512bytes هو من المستحيل نظريا وعمليا :) لذا فان عملية الاقلاع المنفردة تكون لنواة 16bit
ولهذا السبب فان معظم انظمة التشغيل تستخدم نظام الاقلاع المتعدد (Multi Stage Loaders)
والتى سنتكلم عنها فى الدرس القادم ان شاء الله تحياتى لكم
والى اللقاء فى الجزء الثانى من الدرس
المراجع
http://www.cs.utah.edu/flux/oskit/