الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الدرس الثامن >>>توسيع تطوير ( الوضع الحقيقى )bootloader

بدأه MohamedIBrahim في 22 مارس 2011 · 10 رد · 2,038 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمه الله وبركاته

قد سبق وشرحنا كيفية تطوير bootloader فى الدروس السابقة

والان سنقوم بتوسيع تطوير boot loader على مدى عدد من الدروس من 5 ال 6 دروس

وبعدها سننتقل ان شاء الله الى Protected Mode

فى مرحلة التطوير الحالية سنقوم بما يلى

1- BIOS Paramater Block وMBR

2- انماط المعالج

3- المقاطعات >>> طباعة النصوص واكثر

4- Segment

ملاحظة : من هنا فاعلى سوف يقوم boot loader بالتحكم الكامل فى نظامنا لحين تطوير اشياء اخرى سوف يتم ذكرها لاحقا اى يعنى ان هناك الكثير من الاكواد سأكتبها

مما يعنى المزيد من التركيز منكم وكوب قهوة لا يضرنا ابدا بل هيكون ضرورى :lol: :lol:

ومن هنا سوف تكون الاشياء تبدأ فى الاكتمال ولا تخاف سوف اوضح كل شئ ان شاء الله

هل انت جاهز ؟

سنبدأ ب

انماط المعالج (Processor Modes)

حسنا .... هل سمعنا واين ومتى سمعنا هذه الكلمة ؟ :)

سوف نرى وساوضح ما هى انماط المعالج فى درس سابق تكلمنا عن لماذا عائلة معالجات x86

تقلع فى الوضع 16bit رغم اننا نريد وسنقوم بعمل نظام تشغيل على 32bit

لذا سنحتاج الى تغيير من 16 bit الى 32bit

وهناك اكثر من هذين النمطين مثل

Real Mode

كما تعرف فان معالج x86 يقوم بالاقلاع فى وضع 16bit لكن ما هو هذا الوضع ؟

انه الوضع الحقيقى (Real Mode)

ما هو الحقيقى فى هذا الوضع :lol: :lol: :lol: :lol: ؟

1- يستخدم القطاعات الاصلية

2- الوصول للذاكرة محدود ل 1MB

3- محدود بالتعامل مع مسجلات 16bit

4- ليس هناك Virtual Memory او Memory Protection

هيا بنا ناخذ نظرة اكثر تفصيلا كلا على حدا

القطاعات

القطاع هو جزء من الكل وفى اعتبارنا هى قسم من الذاكرة

تخيل تقيم الذاكرة الى اقسام فهذه الاقسام تمثل القطاعات

فعائلة معالجات x86 تستخدم 4 مسجلات تخزن بداية مواقع القطاعات وهو يشبه base address

( عنوان القاعدة ) وهو يوفر بداية القطاع والقطاع يمكن ان يكون حجمه 64 KB ويتحرك بحرية

المسجلات CS, DS, ES, SS تقوم بتخزين عناوين القطاعات وسوف ناخذة نظرة تفصيلية عليهم بعد النظر على العنونة فى هذا الوضع ان شاء الله

Offsets (الازاحات)

الازاحة هو الرقم الذى يضاف الى رقم القاعدة فمثلا اذا كان رقم القاعدة هو 3 اذا

الازاحة= رقم القاعدة (3) + رقم الازاحة

Offset 2 is 3+2 = 5

Offset 4 is 3+4 = 7

اظن الامر مفهوم الان ساقوم بشرح

Segment:Offset Addressing قطاع عنوان الازاحة

فى هذا القطاع الذى سخص عنوان الازاحة ببساطة نقوم باضافة عنوان الازاحة بالرغم من ان القطاع السابق كنت قد ذكرت ان كل عنوان قطاع فى الوضع الحقيقى هو من النوع 16bit

هذا يعنى ايضا اننا يجب علينا ضرب الجزء + الازاحة ب16

اى ان الجزء +الازاحة ضرب العدد 16

انظر الكود

    Absolute (Exact) Memory Address = (Segment Address * 16(decimal)) + Offset

هذا كل شئ فى هذا الجزء

Offset Conventions

الجزء + وعناوين الازاحة عادة تفصل ب (:) على سبيل المثال

    07C0:0000    < 07C0 is the segment, and 0 is the offset

نستطيع تحويل الكود اعلاه الى العنوان المطلق 0x7C00 باستخدام صيغتنا التالية

  base address = base address * segment size (16) + offset
			07C0:0000 = 07C0 * 16 (decimal) + 0
                                  = 07C00 + 0 = 0x7C00

Segment:Offset Problems (مشاكل الازاحات)

جزء الاواحة فريد من نوعه :cool: بتغيير قيم الجزء والازاحة يمكنك الحصول على segment:offset pairs مختلفة

وسوف تقوم باخذ نفس العنوان ,, لماذا ؟

لان كلا منهما يدل على نفس مكان الذاكرة فعلى سبيل المثال كل العناوين التالية تدل على على الbootloader h الخاص بنا فى 0x7C00

 0007:7B90   0008:7B80   0009:7B70   000A:7B60   000B:7B50   000C:7B40   

  0047:7790   0048:7780   0049:7770   004A:7760   004B:7750   004C:7740   

  0077:7490   0078:7480   0079:7470   007A:7460   007B:7450   007C:7440   

  01FF:5C10   0200:5C00   0201:5BF0   0202:5BE0   0203:5BD0   0204:5BC0   

  07BB:0050   07BC:0040   07BD:0030   07BE:0020   07BF:0010   07C0:0000

تقنيا ,,, هذا قليل جدا ,,, بس كفاية كده :P :P :) :) :lol: :lol: :lol: :lol:

فيوجد تقريبا 4,096 تركيبة من تراكيب الsegment:offset التى تدل على نفس الbyte فى الذاكرة :huh: :huh: :huh: :huh:

ماذا سوف يحدث لو كان لدينا 2 عناوين segment حجمهم 64 KB ؟

وتذكر جيدا ان الحجم للsegment هى 16bit

وتذكر ايضا ان عناوين segment تدل على قاعدة الsegment وهذا ما يسمى القطع المتراكبة

,هذه الصورة للتوضيح اكثر

166448678.gif

تخيل ولاحظ الطبقات العليا من هذه الطبقات توضع اكثر من القطع الاخرى وهذا قد يسبب مشاكل :wub: :wub: وقول لا اله الا الله محمد رسول الله

حسبى الله ونعم الوكيل فى اللى اخترع الحاسب :lol: :lol: :lol:

هذا يعنى ان فى الوضع الحقيقى تستطيع الولوج الى كل byte فى الذاكرة بطرق بسيطة يمكن ذكرها فى 13 مجلد بس :lol: :lol: :lol: تقريبا 4,000 طريقة مختلفة

القدرة على الولوج الى القطع المتداخلة والتى يمكنها الوجود فى اى مكان من الذاكرة وانت لا تعرف :P

وهذا ما يعنى بان الوضع الحقيقى لا يوجد به حماية للذاكرة ( Memory Protection )

المسجلات التى يستخدمها معالج x86 لاستخدام segment refrencing هى الاتية

1- CS >>> تخزين قاعدة العنوان للكود

2- DS >> تخزين قاعدة العنوان للبيانات

3- ES >>>> تخزين قاعدة العنوان لكل شئ

4- SS >>>> تخزين قاعدة العنوان للمكدسات

طبعا كما لاحظنا فالوضع الحقيقى يوجد به الكثير من المشاكل وسوف نستعرض فى الدرس القادم ان شاء الله كيفية حل هذه المعضلة

اتمنى يكون الدرس سهل

تحياتى لكم

1

GoodBye

#2

مشكور اخي وبارك الله فيك

في انتظار القادم

291964_260506123967115_206850989332629_1001538_45132_n.jpg

اللهم إني أعوذ بك من علم لا ينفع ، ومن قلب لا يخشع ، ومن نفس لا تشبع ، ومن دعوة لا يستجاب لها

#3
ayash كتب:

مشكور اخي وبارك الله فيك

في انتظار القادم

العفوا اخى الحبيب

هل انت مستعد من اجل Protected Mode ( الوضع المحمى ) ؟

GoodBye

#4
اقتباس
هل انت مستعد من اجل Protected Mode ( الوضع المحمى ) ؟

على جمر من نار :lol: :lol: :lol:

291964_260506123967115_206850989332629_1001538_45132_n.jpg

اللهم إني أعوذ بك من علم لا ينفع ، ومن قلب لا يخشع ، ومن نفس لا تشبع ، ومن دعوة لا يستجاب لها

#5
ayash كتب:

على جمر من نار :lol: :lol: :lol:

ملاحظة اسمها احر من الجمر :lol: :lol: :lol:

سؤال

هل هناك جمر من شئ غير النار ؟؟؟؟

والدرس القادم قريبا ان شاء الله

GoodBye

#6
اقتباس

ملاحظة اسمها احر من الجمر

سؤال

هل هناك جمر من شئ غير النار ؟؟؟؟

والدرس القادم قريبا ان شاء الله

على احر من جمر

تم تعديل هذه المشاركة بواسطة ayash في 24 مارس 2011 في 15:46

291964_260506123967115_206850989332629_1001538_45132_n.jpg

اللهم إني أعوذ بك من علم لا ينفع ، ومن قلب لا يخشع ، ومن نفس لا تشبع ، ومن دعوة لا يستجاب لها

#7

جميل، تابع... وأتمنى أن لا تقف إلا وبين يديك نضام تشغيل ولو كان بسيط. (لا أقصد بالبساطة "عرض جملة على الشاشة" smile.gif).

" إن الله كتب الإحسان على كل شيء"

::

الإرادة ... تحقق السيادة.

#8
A.S Hack كتب:

جميل، تابع... وأتمنى أن لا تقف إلا وبين يديك نضام تشغيل ولو كان بسيط. (لا أقصد بالبساطة "عرض جملة على الشاشة" smile.gif).

ان شاء الله انا بس بتوقف قليلا لحتى ينتهى المتابعين من الاختبارات حتى يستفيد الجميع

وحتى انا عندى امتحانات

GoodBye

#9

احسنت بطرحك ووفقت بحسن الاختيار

#10
الآمل الطائر كتب:

احسنت بطرحك ووفقت بحسن الاختيار

منور الموضوع وان شاء الله سأكمل من بعد الاختبارات سأنهيها يوم الخميس القادم باذن الله 26/5

1

GoodBye

#11

شكراااااااااااااااااااااا

جزاك الله خيرا

مواضيع مشابهة