/into the Low Level: Memory Adressing (0x01)

into the Low Level: Memory Adressing (0x01)

المقاله الاولي:

عنونه الذاكره هى من اهم واصعب العمليات. وعنونه الذاكره تضم تحت اسمها عدد من الطرق المختلفه للقيام بتلك العمليه. كل طريقه ولها صفاتها الخاصه واستخداماتها.لكن فى الحقيقه كل طريقه هى اضافه للطريقه التى تسبقها.

فى المعالجات x86 هناك ثلاث طرق لعنونه الذاكره(Real Mode Flat Model – Real Mode Segmented Model – Protected Mode Flat Model) فقد ظهرت اولا طريقه العنونه Real Mode Flat Model ثم Real Mode Segmented Model ثم الثالثه وكما ذكرت فإن الطريقه التاليه هى تطور فى الطريقه التى تسبقها الطريقه الاقدم

Real Mode Flat Model :-

فى الطريقه الاولي لعنونه الذاكره يجب ان توجد كل عملياتك والداتا فى 64 كيلو بايت. فى الوهله الاولي ستنظر متعجبا من قله المساحه التي يستطيع المعالج استخدامها من الذاكره عند استخدام الطريقه الاولي لعنونه الذاكره. ولكن قديما كانت تلك مساحه كافيه بل اكثر. فلم تكن الذاكره رخيصه كما هى فى تلك الايام. فى الطريقه التى نتحدث عنها لايوجد استخدام ل ريجسترات الاقسام (segment registers) فعند تشغيل نظامك والعمل عليه. تشير تلك الريجسترات الى بدايه الذاكره (العنوان 0). ولا يتغير ذلك المكان..وهو ما قد يثير تعجبك! ولكن لان الريجسترات كانت تسع 16 بيت فكانت تملك القدره ان تحوي اي عنوان من ال 64 كيلو بايت لان 2 اس 16 = 65536 = 64 كيلوبايت. ولهذا لم يحتاج نظام التشغيل ان يستخدم اي من ريجسترات الاقسام.

الطريقه الثانيه Real Mode Segmented Model :-

فى تلك الطريقه تستطيع برنامجك ان يستخدم 1 ميجابايت من الذاكره. ولكن كيف؟؟ – ما يفرق تلك الطريقه عن التى تسبقها انها تستغل ريجسترات الاقسام فتستطيع ان تشير الى عنوان اقل من ميجابايت باستخدام كل من عنوان للقسم وعنوان للازاحه. وكن كيف؟ القسم يشير/يحتوي على 65535 مكان من الذاكره ويحمل ريجستر القسم عنوان اول مكان منهم. فيشير القسم 0x0000 الى اول قسم فى الذاكره ويشير القسم 0x0001 الى ثان قسم بالذاكره. ولتحويل عنوان القسم الى عنوان فى الذاكره كل ماعليك فعله هو ان تضربه فى 16 = 0x10. فعنوان القسم 0x0000 يساوي عنوان الذاكره 0x0000 وعنوان القسم 0x0001 يساوي عنوان الذاكره 0x0010 وهنا تتضح طريقه الاشاره الى عنوان فى الذاكره اقل من 1 ميجابايت. يكتب العنوان فى طريقتنا التى نتحدث عنها بذلك الشكل 0002:0005 حيث ان 0002 هو عنوان القسم و 0011 هى الازاحه. ولتستنتج العنوان ماعليك فعله هو ضرب عنوان القسم فى 16 =0x10 واضافته الى الازاحه اي ان العنوان الذي ذكرناه مسبقاَ = 0002×10 + 0005 = 0025. ولنشير الى العنوان الاخير. 0999:0009 قد تلاحظ ان هناك عده طرق لكتابه عنوان معين. فالعنوان 421A قد يكتب هكذا 0400:021A او هكذا 0420:001A

الطريقه الاخيره Protected Mode Flat Model:-

لايمكن للبرامج ان تستخدم تلك الطريقه فى عنونه الذاكره الا اذا استخدمها وتحكم بها نظام التشغيل.لم يكن سواء ال MS-DOS, Windows يستخدم تلك الطريقه حتي ظهر Windows NT عام 1994ولكن لينوكس استخدم تلك الطريقه منذ بدايته فى عام 1992 يستطيع نظام التشغيل عند استخدام تلك الطريقه ان يعنون 4 جيجابايت من الذاكره مايجعل تلك الطريقه افضل. ان البرنامج لايستطيع ان يري سوي قطعه من الذاكره يمنحه اياها نظام التشغيل وما تبقي فمازال يمتلكه نظام التشغيل اما عن استخدام ريجسترات الاقسام. فانها تعتبر جزء من نظام التشغيل. فهو يستخدمها للتحكم فى الذاكره الفيرتشوال. حيث يستطيع نظام التشغيل ان يعنون ذاكره اكبر من 4 جيجا ولكن ان لم تكن البرامج تستخدم ريجسترات الاقسام لعنونه الذاكره. بماذا يعنونها؟

اولا. فى ال Protected mode  حجم الريجستر بيكون 32 بيت. اي ان الريجستر الواحد يستطيع ان يحتوي على اي عنوان من ال 4 جيجا ولتقسيم الذاكره Segmentation  تستخدم نظم التشغيل مايسمي بال Global Descriptor table/Local Descriptor table وهو مايمنع البرامج الاخري من دخول اي عنوان فى الذاكره لا يخصهم.

سنستأنف الحديث ان شاء الله العدد القادم

------------------------------

انا لست ممن اعتادوا ان يكتبوا مقالات تقنيه باللغه العربيه،
ولعدم وعيي (للاسف) بالمصطلحات المعربه من المصطلحات التى اريد استخدامها سوف نعربها نحن فى تلك المقاله.
عنونه الذاكره = Memory Addressing
وحدات المعالجه =CPU
تصميم = Architecture
الداتا = Data
قسم =Segment
ريجستر = Register
الازاحه = offset