|
من يريد أن يقرأ ما كتبته هنا فأنصحه أن يحضر كأس عصير مليان عالآخر في مقال اليوم ... لن نكتفي بالجلوس على الشاطئ ومشاهدة النورس وهو يحلق .. أو الإستمتاع بالهواء العليل .. أو أن أستلقي تحت مظلتي .. أو مشاهدة الأمواج وهي تتراقص .. أو ... أو ... بل سنترك الشاطئ ... ونذهب في رحلة إلى الأعماق ... ولا تنسى أن تتأكد من أجهزة الغوص ... فرحلتنا طويلة ... وأرجوا أن تستطيع إكمالها معي إلى النهاية... سنتكلم في رحلتنا عن كيفية إدارة ذاكرة الكمبيوتر. المقدمة: إذا أخذنا أي نوع من الذاكرات سواء للكمبيوتر أو التليفون أو أي جاهز, سنرى أن الذاكرة عبارة عن سلسلة من المربعات (الترانزيستور) منظمة في محموعات ثمانية, كل مربع يحمل القيمة 0 أو 1 (نظام العد الثنائي) يسمي bit. وكل مجموعة من ثمان مربعات تسمى Byte, عناوين الذاكرة تكون بطول bit 32 أو bit 64 بحسب نظام التشغيل وتمثل كقيم ست عشرية. يوجد في عالم الكمبيوتر أربعة أدوات لتخزين البيانات ولكل أداة شأن خاص بها, فكلن حسب وظيفته, والأدوات هم: Disk Drive : وهو الـ Hard Disk حيث أنه يمتاز بمساحات كبيرة للتخزين, ولكن سرعة الوصول إليه من قبل النظام تكون بطيئة. RAM : (Random Access Memory) يوجد عدة أنواع منه مثل DDRAM أو DRAM, يمتاز بسرعة وصول النظام إليه, وهو من أهم أدوات التخزين حيث أن جميع عمليات الـ Booting للنظام و تشغيل وتحميل البرامج تكون في هذه المنطقة . Cache : تتميز بسرعة وصول النظام إليها, يستخدمها الـ Processor ويوجد نوعان منها نوع يكون بداخل الـ Processor والآخر في الخارج. Registers : وهي المسجلات التي يستخدمها الكمبيوتر لتنفيذ عمليات النظام, وأيضاً عملية عنونة الذاكرة. الذاكرة عند بداية التشغيل: نبدأ بتشغيل الكمبيوتر من زر الـ Power تبدأ الكهرباء بالوصول إلى لوحة الأم ومنه إلى الـ Processor 1 - يبدأ الكمبيوتر بالتحقق من عمل الكمبيوتر وتسمى هذه العملية بي Power On Self Test حيث يتأكد من وجود الـ 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 (كرت الشاشة). الخلاصة: جميع مراحل الإقلاع تتم في ذاكرة الـ RAM, من ملفات وتعليمات فهو حجر الأساس في عملية الإقلاع. الذاكرة عند تحميل برنامج واحد: عند تشغيل أي برنامج ولنفرض الـ Microsoft Word فإن نظام التشغيل (OS) يقوم بتحميلة إلى الـ RAM أو الـ DRAM (على حسب النوع المستخدم في الكمبيوتر). لنكمل قصتنا مع ملف الـ (Word) ..... تقوم المسجلات (Register) الموجودة بداخل الـ Processor بإعطاء الـ RAM العنواين اللازمة من أجل تحميل الملف وذلك عن طريق الـ Address Lines والتي بدورها عبارة عن 32 سلك, تستطيع هذه الأسلاك عنونة تبلع 32^2 , تسمي هذه العنواين بي الـ Physical Address, إلى هذه المرحلة فإن الملف قد نزل في الـ RAM وظهر أمامنا. الآن ماذا لو طلبنا من البرنامج (Word) القراءة أو الكتابة على الملف عندئذ تكون العملية كالتالي: أولاً: يقوم الـ Processor بإرسال العناوين المراد قراءتها عبر الـ Address Line ثانياً: يقوم الـ Processor بإرسال إشارة إلى الـ Control Bus للسماح بعميلة القراءة أو الكتابة ثالثاً: يقوم الـ RAM بإرجاع البيانات المطلوبة عبر الـ Data Bus من اجل عملية المعالجة ومن ثم إرجاع النتيجة مرة أخرى إلى الـ RAM الذاكرة عند تحميل عدة برامج: لنفرض هنا بأننا قمنا بفتح أكثر من برنامج يعني قمنا بفتح برنامج Word وأخر Excel الآن كيف تتعامل الذاكرة مع هذه الحالة. قبل الخوض في التفاصيل.. لنلقي نظرة على الشكل بالأسفل: نحن الآن بداخل الـ RAM .. وكما في الشكل فإن ترتيب الذاكرة يكون من Low Memory حيث تعليمات ومعطيات نظام التشغيل إلى High Memory وهي السعه العظمي للـ RAM. لنرجع إلى حالة توضع برنامجين في الذاكرة حيث أن Application A يمثل برنامج Word و Application B يمثل برنامج الـ Excel . نلاحظ بأن كل برنامج إقتطع لنفسه جزء في الذاكرة يسمى هذا الجزء بي الـ Segment والتي بدورها تحوي على مقطعين Data Segment وهي بيانات البرنامج و الـ Code Segment وهي أوامر البرنامج. بهذه الطريقة تضمن الذاكرة عدم حدوث تضارب ما بين البرامج أي أن بيانات الـ Excel لا تدخل مع بيانات الـ Word فكلن له منطقه خاصة به. الخلاصة: كل برنامج يخزن في الـ RAM يكون بشكل Segment خدعة الذاكرة: لنفرض أنك قمت بفتح برنامج الـ Word عشرة مرات متتالية ومن ثم فتحت برنامج الـ Excel ثلاثين مرة متتالية ومن ثم ..... أعتقد هذا يكفي... بمعنى أن الـ RAM الآن إمتلئ, فكيف ستعالج الذاكرة هذه الحاله. لنلقي نظرة على الشكل التالي: تقوم الذاكرة بخدعة في منتهى الدهاء . حيث أنها تقوم بأخذ جزء مؤقت من الـ Hard Disk وتسمى هذه المنطقة بي الـ Virtual Memory حيث أنها تقوم بتقسيم الـ Segment التي تكلمنا عليها بالأعلى إلى Page , ومن ثم تقوم بإستدعائها عند طلب البرنامج ذلك. ربما يأتي سأل ليقول ما دام نستطيع إستغلال مساحة الـ Hard Disk لماذا لا نستخدمها بشكل دائم بدلاً مت إستخدامها في الحالات الطارئة؟ الإجابة على هذا السؤال هو أنه عندما يقوم البرنامج بإستدعاء أي من التعليمات الموجودة في الـ Virtual Memory فإنها تأخذ زمن أكبر بكثير من زمن الإستدعاء إذا كانت في الـ RAM, لهذا نلاحظ بطئ الكمبيوتر أثناء تشغيل أكثر من برامج, حيث أن الذاكرة تصاب بالجنون فهي تقوم بالبحث عن البرنامج في الـ RAM ومن الممكن أن يكون نصفها الآخر في الـ Hard Disk يعني بشكل (روح – تعال) (تعال - روح). الخلاصة: من الممكن القول بأن الـ Virtual Memory هي الطبقة التي تصل الـ RAM بي الـ Hard Disk , من الممكن تنظيف هذه المنطقة عند عمل Restart للكمبيوتر. الآن دعني أكون معك صريحاً ... كل ما ذكرناه بالأعلى لا يعلو كونه مقدمه أو نظره سريعة لما يحدث في الذاكرة.(و يا ريت ما حدا ينعس) دعنا الآن ننزل قليلاً إلى أسفل .. لنبدأ قصتنا ببعض الإستفسارات مثل .. لماذا لا أستطيع فعل ما يحلو لي في ذاكرة الكمبيوتر أي أذهب لنواة النظام وأعيف الفساد بها .. لا بل أغير ما أشاء وأدخل الأبواب بدون إذن .. لماذا عندما أكتب برنامج بأي لغة برمجية يجب علي أن أتبع بعض البروتوكولات وإذا خالفت ذلك سوف أصادف بي Exceptions (مخالفات) مثل إنتهاك الذاكرة, أو Overflow, وأيضاً لماذا لا أستطيع التعامل مع الـ BIOS بشكل مباشر. أو أن أكتب بأي قطاع يحلو لي... وغيرها الكثير. في الحقيقة فإنه يتم حماية نواة النظام بأربع طبقات:(Ring0-kernl,Ring1,Ring2,Ring3-user program) إذن فالموضوع ليس بتلك البساطة, لابد من وجود أنظمه يضعها كل من المعالج (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 هذا النمط يستخدم المسجلات والمقاطع ,والتي بدورها تكون موجودة في المعالج. الآن كيف تتم عملية العنونة, أي عندما أريد تحميل أي برنامج في الذاكرة كيف ستقوم الذاكرة بذلك علماً أننا في الـ Real Mode , قلنا سابقاً بأن للمعالج اليد العليا في الموضوع... ذكرنا من قبل أن لكل برانامج في الـ RAM شقين وهم Code Segment و Data Segment , وقلنا بأن هذه النظرية تفيدنا في حالة وجود اكثر من برنامج في الذاكرة. لنفرض أنني في المدينة وأريد الوصول إلى الدكان لأشتري (إندومي و التي صارت ب 15), الآن المدينة تمثل في حالتنا هذه الـ (RAM),والدكان يمثل الـ (Data Segment) حسناً ... الآن أريد عنوان هذا الدكان, هنا جاء دور المسجل الموجود في المعالج وهو (DS) ليعطيني العنوان, يسمى هذا العنوان بي الـ Base Address وهو عنوان بداية الـ Data Segment أي بداية باب الدكان , الآن باقي لدي لكي أخذ الإندومي هو أن أعرف موضعها بداخل المحل وهنا يأتي دور الـ (AX) أي الإزاحة اللازمة من باب المحل لكي اصل إلى البضاعة. Base Address وهو عنوان بداية الـ Segment, يمكننا حساب أن الـ Base Address يساوي صفر, لأنه يمثل البداية. هكذا يقوم الـ Real Mode بإدارة الذاكرة, وهذا الذي كانت تستخدمة المعالجات القديمة وما زال نظام الـ DOS يستخدمة إلى الآن. Protected Mode وهو موضوع معقد قليلاً حيث أن العناوين لا تكون بشكل مباشر كما في الـ Real Mode, كما انه يقوم باستخدام جميع المسجلات في المعالج, وهو يدعم الـ Virtual Memory والتي تكلمنا عنها بالأعلى وأيضاً يدعم الـ Multiprocessing Program وهي نظرية تقوم على بما أن سرعة مسجلات المعالج أكبر من سرعة الـ RAM إذن فيمكن إستغلال وقت تاخر الـ RAM وإشغال مسجلات المعالج بعمل برنامج آخر. يعتمد الـ Protected Mode في عمله بشكل مباشر على الـ Segment و الـ Paging في عمله. الفرق الرئبسي بين النمطين هو وجود الـ Descriptor Table هناك نوعان من الـ Descriptor Table وهم Global Descriptor Table (GDT) حيث أنه يخزن عناوينه في مسجل خاص في المعالج وهو GDTR حيث يقوم هذا المسجل بتحديد بداية (Base Address) الـ GDT Local Descriptor Table (LDT) حيث أنه يخزن عناوينه في مسجل خاص في المعالج وهو LDTR حيث يقوم هذا المسجل بتحديد بداية (Base Address) الـ LDT الـ GDTR يبلغ حجمه 48 Bit مقسمة إلى قسمين 16 Bit لتخزين حجم الـ GDT و 32 Bit من أجل عنوان (Base Address) للـ GDT يحوي الـ GDT على الـ Segment Descriptor والتي تحمل مواصفات الـ Data Segment من العنوان و النوع والإمتيازات والصلاحيات وسمى بي الـ Protected Mode وذلك بسبب توضع البيتات من 8 إلى 11 لتحديد الصلاحيات ولكن هذه ليست القصة كامله فعند الوصول إلى مرحلة Segment Base Address تأتي مرحلة الـ Paging إن الـ Linear Address وهو نفسه الـ Physical Address أي العنوان الذي يخزن في الـ RAM يبلغ حجم هذا العنوان 32 Bit وينقسم هذا إلى ثلاثة أقسام قسمان بحجم 10 Bit والثالث بحجم 12 Bit. القسم الأول من العنوان وهو من 22 إلى 31 يقوم بتخزين الـ Page Directory بمساعدة الـ CR3 وهو أحد مسجلات المعالج القسم الثاني من 21 على 21 يقوم بتخزين الـ Page Table أما القسم الثالث والأخير 0 إلى 11 حيث تتم بواسطة هذه المنطقة حساب الـ Physical Address وذلك عن طريق جمع الإزاحة مع الـ Base Address لنحصل على النتيجة ولتخزن بعدها في الـ Byte ومنه إلى الـ RAM. نلاحظ مدى صعوبة الـ Protected Mode في عملية العنونة ومدى قوته وهذا بعكس الـ Real Mode تخيل معي بأن هذا كله يحدث عندما نعمل على الكمبيوتر ..... وأين نحن من هذا ؟؟؟
يا حيف عالزمن

|