أنماط الذاكرة

From Alrebat

Jump to: navigation, search

فهرست

المقدمة:

إذا أخذنا أي نوع من الذاكرات سواء للحاسوب أو الهاتف أو أي جهاز, سنرى أن الذاكرة عبارة عن سلسلة من المربعات (الترانزيستور) منظمة في محموعات ثمانية, كل مربع يحمل القيمة 0 أو 1 (نظام العد الثنائي) تسمي الذرة. وكل مجموعة من ثمان ذرات تسمي الجزئ. عناوين الذاكرة تكون بطول 32 ذرة أو 64 ذرة بحسب نظام التشغيل وتمثل كقيم ست عشرية.

يوجد في عالم الحاسوب أربعة أدوات لتخزين البيانات ولكل أداة شأن خاص بها, فكلن حسب وظيفته, والأدوات هم:

سواقة الأقراص: وهي القرص الصلب حيث أنه يمتاز بمساحات كبيرة للتخزين, ولكن سرعة الوصول إليه من قبل النظام تكون بطيئة. RAM : (الذاكرة العامة) يوجد عدة أنواع منه مثل DDRAM أو DRAM, يمتاز بسرعة وصل النظام إليه, وهو من أهم أدوات التخزين حيث أن جميع عمليات الإقلاع للنظام و تشغيل وتحميل البرامج تكون في هذه المنطقة . Cache : (الذاكرة المخبأة) تتميز بسرعة وصول النظام إليها, يستخدمها الـمعالج ويوجد نوعان منها نوع يكون بداخل الـمعالج والآخر في الخارج. Registers : وهي المسجلات التي يستخدمها المعالج لتنفيذ عمليات النظام, وأيضاً عملية عنونة الذاكرة. شكل توضيحي لأدوات التخزين:

صورة:Memory.JPG

الذاكرة عند بداية التشغيل :

نبدأ بتشغيل الحاسوب من زر بدء التشغيل تبدأ الكهرباء بالوصول إلى لوحة الأم ومنه إلى الـمعالج 1 - يبدأ الحاسوب بالتحقق من العتاد وتسمى هذه العملية بالإختبار الذاتي عند بدء التشغيل حيث يتأكد من وجود الـ RAM والـ VGA وجميع القطع الضرورية لعمل الحاسوب وإذا نجحت عملية التحقق يبدأ بعملية الإقلاع وتسمى هذه المرحلة بي الـ Cold Boot والتي تتم بها عملية تصفير كافة مواقع الذاكرة ليبدأ صفحة جديدة. 2 - يقوم بتحميل جدول العناوين إلى الـ RAM ويسمى هذا الجدول بي Interrupt Vector Table (IVT) الذي يحوي عناوين الـ BIOS 3 - يقوم بتحميل جميع الـ Device من الطابعات ولوحة المفاتيح ...الخ. 4 - يقوم بتحميل الـ Bootstrap وهي الملفات التالي: IO.sys وهو الملف الذي يحوي جميع المعلومات عن Device MSDOS.sys يعتبر نواة الـ DOS وحلقة الوصل ما بين الـ BIOS والبرامج حيث يقوم بي إدارة الملفات والذاكرة Command.com يحوي هذا الملف تعليمات الـ DOS ويساعد على عمل برامج آخرى غير أنه يعمل على تفسير أوامر الـ Interrupts 5 - تحميل الـ VGA (كرت الشاشة).

الشكل بالأسفل يوضح توضع المراحل الإقلاع في الذاكرة

صورة:Memory0.JPG

شكل أخر يوضح أيضاً عملية الإقلاع مع عنوان كل مرحلة في الذاكرة

صورة:Memory1.JPG

الخلاصة: جميع مراحل الإقلاع تتم في ذاكرة الـ RAM, من ملفات وتعليمات فهو حجر الأساس في عملية الإقلاع.

الذاكرة عند تحميل برانامج واحد :

عند تشغيل أي برنامج ولنفرض الـ Microsoft Word فإن نظام التشغيل (OS) يقوم بتحميلة إلى الـ RAM أو الـ DRAM (على حسب النوع المستخدم في الحاسوب). قبل أن نبحث في تفاصيل هذه العملية لنلقي نظرة على هذا الشكل الجميل:

صورة:Memory2.JPG

لنكمل قصتنا مع ملف الـ (Word) ..... تقوم المسجلات (Register) الموجودة بداخل المعالج بي إعطاء الـ RAM العنواين اللازمة من أجل تحميل الملف وذلك عن طريق الـ Address Lines والتي بدورها عبارة عن 32 سلك, تستطيع هذه الأسلاك عنونة تبلع 32^2 , تسمي هذه العنواين بي الـ Physical Address, إلى هذه المرحلة فإن الملف قد نزل في الـ RAM وظهر أمامنا.

الآن ماذا لو طلبنا من البرنامج (Word) القراءة أو الكتابة على الملف عندئذن يتكون العملية كالتالي: أولاً: يقوم المعالج بإرسال العناوين المراد قراءتها عبر الـ Address Line ثانياً: يقوم المعالج بإرسال إشارة إلى الـ Control Bus للسماح بعميلة القراءة أو الكتابة ثالثاً: يقوم الـ RAM بإرجاع البيانات المطلوبة عبر الـ Data Bus من اجل عملية المعالجة وممن ثم إرجاع النتيجة مرة أخرى إلى الـ RAM

الذاكرة عند تحميل عدة برامج :

لنفرض هنا بأننا قمنا بفتح أكثر من برنامج يعني قمنا بفتح برنامج Word وأخر Excel الآن كيف تتعامل الذاكرة مع هذه الحالة. قبل الخوض في التفاصيل.. لنلقي نظرة على الشكل بالأسفل:

صورة:Memory3.JPG

نحن الآن بداخل الـ RAM .. وكما في الشكل فإن ترتيب الذاكرة يكون من Low Memory حيث تعليمات ومعطيات نظام التشغيل إلى High Memory وهي السعه العظمي للـ RAM. لنرجع إلى حالة توضع برنامجين في الذاكرة حيث أن Application A يمثل برنامج Word و Application B يمثل برنامج الـ Excel . نلاحظ بأن كل برنامج إقتطع لنفسه جزء في الذاكرة يسمى هذا الجزء بي الـ Segment والتي بدورها تحوي على مقطعين Data Segment وهي بيانات البرنامج و الـ Code Segment وهي أوامر البرنامج. بهذه الطريقة تضمن الذاكرة عن حدوث تضارب ما بين البرامج أي أن بيانات الـ Excel لا تدخل مع بيانات الـ Word فكلن له منطقه خاصة به.

الخلاصة: كل برنامج يخزن في الـ RAM يكون بشكل Segment

خدعة الذاكرة :

لنفرض أنك قمت بفتح برنامج الـ Word عشرة مرات متتالية ومن ثم فتحت برنامج الـ Excel ثلاثين مرة متتالية ومن ثم ..... أعتقد هذا يكفي... بمعنى أن الـ RAM الآن إمتلئ, فكيف ستعالج الذاكرة هذه الحاله. لنلقي نظرة على الشكل التالي:

صورة:Memory4.JPG

تقوم الذاكرة بخدعة في منتهى الدهاء . حيث أنها تقوم بأخذ جزء مؤقت من الـ Hard Disk وتسمى هذه المنطقة بي الـ Virtual Memory حيث أنها تقوم بي تقسيم الـ Segment التي تكلمنا عليها بالأعلا إلى Page , ومن ثم تقوم بإستدعائها عند طلب البرنامج ذلك. ربما يأتي سأل ليقول ما دام نستطيع إستغلال مساحة الـ Hard Disk لماذا لا نستخدمها بشكل دائم بدلاً مت إستخدامها في الحالات الطارئة؟ الإجابة على هذا السؤال هو أنه عندما يقوم البرنامج بإستدعاء أي من التعليمات الموجودة في الـ Virtual Memory فإنها تأخذ زمن أكبر بكثير من زمن الإستدعاء إذا كانت في الـ RAM, لهذا نلاحظ بطئ الحاسوب أثناء تشغيل أكثر من برامج, حيث أن الذاكرة تصاب بالجنون فهي تقوم بالبحث عن البرنامج في الـ RAM ومن الممكن أن يكون نصفها الآخر في الـ Hard Disk يعني بشكل (روح – تعال) (تعال - روح).

الخلاصة: من الممكن القول بأن الـ Virtual Memory هي الطبقة التي تصل الـ RAM بي الـ Hard Disk , من الممكن تنظيف هذه المنطقة عند عمل Restart للحاسوب.

الآن دعني أكون معك صريحاً ... كل ما ذكرناه بالأعلا لا يعلو كونه مقدمه أو نظره سريعة لما يحدث في الذاكرة.

دعنا الآن ننزل قليلاً إلى أسفل ..

لنبدأ قصتنا ببعض الإستفسارات مثل .. لماذا لا أستطيع فعل ما يحلو لي في ذاكرة الحاسوب أي أذهب لي نواة النظام وأعيف الفساد بها .. لا بل أغير ما أشاء وأدخل الأبواب بدون إذن .. لماذا عندما أكتب برنامج بأي لغة برمجية يجب علي أن أتبع بعض البروتوكولات وإذا خالفت ذلك سوف أصادف بي Exceptions (مخالفات) مثل إنتهاك الذاكرة, أو Overflow, وأيضاً لماذا لا أستطيع التعامل مه الـ BIOS بشكل مباشر. أو أن أكتب بأي قطاع يحلو لي... وغيرها الكثير.

أنظر إلى الشكل بالأسفل والذي يوضح كيفية حماية نواة النظام بأربع طبقات.

صورة:Memory5.JPG


إذن فالموضوع ليس بتلك البساطة, لأبد من وجود أنظمه يضعها كل من المعالج (Processor) ونظام التشغيل (Operating System) من أجل التحكم في إدارة الذاكرة وإلا فسوف تعم الفوضى.

إذن من هذا الكلام بالأعلا نستطيع القول بأن لكل نوع من المعالجات (Processor) نمط خاص بي إدارة وتنظيم الذاكرة.

يعني أن المعالجات القديمة مثل الـ 80286 و الـ 8086 والـ 8088 تعمل بنمط مختلف عن الـ (Intel Pentium).

وهذا هو حديثنا لهذا اليوم وهي أنماط إدارة الذاكرة, وهي اربعة أنماط كالتالي:-

Real Mode.

Protected Mode.

System Management Mode.

Virtual 8086 Mode.

لن نتكلم عن الـ النمطين ثلاثة وأربعة لأن لهم وضعهم الخاص.

سيكون حديثنا عن Real Mode و الـ Protected Mode

سنبدأ على بركة الله بي النمط الأول هو الـ Real Mode

Real Mode :

أستخدم هذا النمط في عام 1982 على المعالج 8086 و 8088 تحت النظام DOS, يعمل عند بداية الإقلاع, يمتاز هذا النمط بي صغر الحجم حيث يبلغ حجمة أقل من 128 KB وذلك راجع إلى إعتماده على الـ BIOS في تحميل الـ Hardware وأيضاً في عملية الـ Scan, يستطيع هذا النمط عنونة 1 MB من الـ RAM أي بلغة أخرى 20 Line Address (راجع الشكل بالأعلا لمعرفة الـ Line Address) . أنظر إلى الشكل بالأسفل:

صورة:Memory6.JPG

هذه هي المسجلات والمقاطع التي يستخدمها هذا النمط, والتي بدورها تكون موجودة في المعالج.

الآن كيف تتم عملية العنونة, أي عندما أريد تحميل أي برنامج في الذاكرة كيف ستقوم الذاكرة بذلك علماً أننا في الـ Real Mode , قلنا سابقاً بأن للمعالج اليد العليا في الموضوع, أنظر إلى الشكل بالأسفل.

صورة:Memory7.JPG

ذكرنا من قبل أن لكل برانامج في الـ RAM شقين وهم Code Segment و Data Segment , وقلنا بأن هذه النظرية تفيدنا في حالة وجود اكثر من برنامج في الذاكرة.

لنفرض أنني في المدينة وأريد الوصول إلى الدكان لأشتري شوكولاته, الآن المدينة تمثل في حالتنا هذه الـ (RAM) وهو في الشكل التوضيحي المستطيل الذي على اليمين, والدكان يمثل في الشكل الـ (Data Segment) حسناً ... الآن أريد عنوان هذا الدكان, هنا جاء دور المسجل الموجود في المعالج وهو (DS) ليعطيني العنوان, يسمى هذا العنوان بي الـ Base Address وهو عنوان بداية الـ Data Segment أي بداية باب الدكان , الآن باقي لدي لكي أخذ الشوكولاته هو أن أعرف موضعها بداخل المحل وهنا يأتي دور الـ (AX) أي الإزاحة اللازمة من باب المحل لكي اصل إلى الشوكولاته.

Base Address وهو عنوان بداية الـ Segment, يمكننا حساب أن الـ Base Address يساوي صفر, لأنه يمثل البداية.

لذلك يمكننا القول Base Address + Offset = الموقع المطلوب.

هكذا يقوم الـ Real Mode بإدارة الذاكرة, وهذا الذي كانت تستخدمة المعالجات القديمة وما زال نظام الـ DOS يستخدمة إلى الآن.

Protected Mode :

وهو موضوع معقد قليلاً حيث أن العناوين لا تكون بشكل مباشر كما في الـ Real Mode, كما انه يقوم بستخدام جميع المسجلات في المعالج, وهو يدعم الـ Virtual Memory والتي تكلمنا عنها بالأعلا وأيضاً يدعم الـ Multiprocessing Program وهي نظرية تقوم على بما أن سرعة مسجلات المعالج أكبر من سرعة الـ RAM إذن فيمكن إستغلال وقت تاخر الـ RAM وإشغال مسجلات المعالج بعمل برنامج آخر.

يعتمد الـ Protected Mode في عمله بشكل مباشر على الـ Segment و الـ Paging في عملة.

أنظر إلى الشكل بالأسفل:

صورة:Memory8.JPG

نلاحظ أن الفرق الرئبسي بين النمطين هو وجود الـ Descriptor Table

هناك نوعان من الـ Descriptor Table وهم Global Descriptor Table (GDT) حيث أنه يخزن عناوينه في مسجل خاص في المعالج وهو GDTR حيث يقوم هذا المسجل بتحديد بداية (Base Address) الـ GDT Local Descriptor Table (LDT) حيث أنه يخزن عناوينه في مسجل خاص في المعالج وهو LDTR حيث يقوم هذا المسجل بتحديد بداية (Base Address) الـ LDT

الـ GDTR يبلغ حجمه 48 ذرة مقسمة إلى قسمين 16 ذرة من لتخزين حجم الـ GDT و 32 ذرة من أجل عنوان (Base Address) للـ GDT, كما في الشكل بالأسفل:

صورة:Memory9.JPG

يحوي الـ GDT على الـ Segment Descriptor والتي تحمل مواصفات الـ Data Segment من العنوان و النوع والإمتيازات والصلاحيات أنظر إلى الشكل بالأسفل:

صورة:Memory10.JPG

وسمى بي الـ Protected Mode وذلك بسبب توضع الذرات من 8 إلى 11 أي عند الكلمة (Type) لتحديد الصلاحيات أنظر إلى الجدول بالأسفل

صورة:Memory11.JPG


ولأكن هذه ليست القصة كامله ففي الشكل بالأعلا وعند الوصول إلى مرحلة Segment Base Address تأتي مرحلة الـ Paging وهي كما في الشكل بالأسفل:

صورة:Memory12.JPG

نلاحظ في الشكل بالأعلا الـ Linear Address وهو نفسة الـ Physical Address أي العنوان الذي يخزن في الـ RAM يبلغ حجم هذا العنوان 32 ذرة وينقسم هذا إلى ثلاثة أقسام قسمان بحجم 10 ذرات والثالث بحجم 12 ذرة. القسم الأول من العنوان وهو من 22 إلى 31 يقوم بتخزين الـ Page Directory بمساعدة الـ CR3 وهو أحد مسجلات المعالج, حيث أن الـ Page Directory كما في الشكل بالأسفل:


صورة:Memory13.JPG

حيث انها مقسمة إلى 32 ذرة وتحوي الـ Base Address للـ Page Table


القسم الثاني من 21 على 21 يقوم بتخزين الـ Page Table كما بالشكل بالأسفل:

صورة:Memory14.JPG

أما القسم الثالث والأخير 0 إلى 11 حيث تتم بواسطة هذه المنطقة حساب الـ Physical Address وذلك عن طريق جمع الإزاحة مع الـ Base Address لنحصل على النتيجة ولتخزن بعدها في الـجزئ ومنه إلى الـ RAM.

الشكل النهائي لنمط الـ Protected Mode وهو (أي جمع الشكلين السابقين)

صورة:Memory15.JPG

نلاحظ مدى صعوبة الـ Protected Mode في عملية العنونة ومدى قوته وهذا بعكس الـ Real Mode

تخيل معي بأن هذا كله يحدث عندما نعمل على الحاسوب ..... ونحن أين من هذا ؟؟؟

المصدر : الكاتب : رعد ، من منتديات العاصفة http://3asfh.net/vb/showthread.php?t=37922

Personal tools