تخصيص الذاكرة المتجاورة في نظام التشغيل Contiguous Memory Allocation

اقرأ في هذا المقال


يمكن تخصيص الذاكرة إمّا عن طريق نظام تقسيم ثابت الحجم أو نظام تقسيم متغير الحجم، تحتوي قائمة تخصيص الكتل على ثلاث طرق لتحديد ثقب من قائمة الثقوب الخالية المناسبة أولاً والأفضل ملاءمة والأسوأ، يتبع مخطط البت الكتل الخالية في الذاكرة، وتحتوي على بت واحد لكتلة ذاكرة واحدة، وتوضح البتة (0) أنّ الكتلة خالية ويظهر البت (1) أنّ الكتلة مخصصة لبعض الملفات أو العمليات.

ما المقصود بتخصيص الذاكرة المتجاورة Contiguous memory allocation

تخصيص الذاكرة المتجاورة هو طريقة تخصيص الذاكرة التي تخصص مقطعًا واحدًا متجاورًا من الذاكرة لعملية أو ملف، تأخذ هذه الطريقة في الاعتبار حجم الملف أو العملية وتقدير أيضًا الحجم الأقصى، إلى ما يمكن أن يصل إليه الملف أو العملية؟ مع الأخذ في الاعتبار النمو المستقبلي للملف وطلبه للذاكرة، يخصص نظام التشغيل كتل ذاكرة متجاورة كافية لهذا الملف، بالنظر إلى هذا التوسيع المستقبلي وطلب الملف للذاكرة، سيخصص نظام التشغيل تلك الكتل المتجاورة العديدة من الذاكرة لهذا الملف.

تخصيص الذاكرة Memory Allocation

يجب أن تستوعب الذاكرة الرئيسية كلاً من نظام التشغيل ومساحة المستخدمين، الآن، هنا يجب أن تستوعب مساحة المستخدمين عمليات المستخدم المختلفة، نريد أيضًا أن تكون عمليات المستخدم العديدة هذه موجودة في الذاكرة الرئيسية في نفس الوقت، الآن، السؤال الذي يطرح نفسه هو كيفية تخصيص مساحة الذاكرة المتاحة لعمليات المستخدم التي تنتظر في قائمة انتظار جاهزة؟

في تخصيص الذاكرة المتجاورة، عندما تصل العملية من قائمة الانتظار الجاهزة إلى الذاكرة الرئيسية للتنفيذ، يتم تخصيص كتل الذاكرة المجاورة للعملية وفقًا لمتطلباتها، الآن، لتخصيص المساحة المجاورة لعمليات المستخدم، يمكن تقسيم الذاكرة إمّا في قسم ثابت الحجم أو في قسم متغير الحجم:

  • القسم الثابت الحجم (Fixed-Sized Partition): في القسم ذي الحجم الثابت، يتم تقسيم الذاكرة إلى كتل ذات حجم ثابت وتحتوي كل كتلة على عملية واحدة بالضبط، لكن القسم ثابت الحجم سيحد من درجة البرمجة المتعددة حيث أنّ عدد الأقسام سيحدد عدد العمليات.
  • القسم المتغير الحجم (Variable-Size Partition): في طريقة التقسيم ذات الحجم المتغير، يحتفظ نظام التشغيل بجدول يحتوي على معلومات حول جميع أجزاء الذاكرة التي تشغلها العمليات وجميع أجزاء الذاكرة التي لا تزال متاحة للعمليات.

كيف يتم إنشاء الثقوب في الذاكرة

في البداية، تتوفر مساحة الذاكرة بأكملها لعمليات المستخدم ككتلة كبيرة، أي ثقب (hole) واحد، في النهاية، عندما تصل العمليات إلى الذاكرة، وتنفذ وتنتهي وتترك الذاكرة، سترى مجموعة من الثقوب ذات الأحجام المتغيرة، في طريقة التقسيم ذات الحجم المتغير، يقوم نظام التشغيل بتحليل متطلبات الذاكرة للعملية ومعرفة ما إذا كانت تحتوي على كتلة ذاكرة بالحجم المطلوب، إذا وجد التطابق، فإنّه يخصص كتلة الذاكرة هذه للعملية، إذا لم يكن كذلك، فإنّه يبحث في قائمة الانتظار الجاهزة للعملية التي تتطلب ذاكرة أصغر.

يخصص نظام التشغيل الذاكرة للعملية حتى لا تتمكن من تلبية متطلبات الذاكرة للعملية التالية في قائمة الانتظار الجاهزة، يتوقف عن تخصيص ذاكرة للعملية إذا لم يكن بها كتلة ذاكرة “فتحة” كبيرة بما يكفي لاستيعاب هذه العملية، إذا كانت كتلة الذاكرة “الفتحة” كبيرة جدًا بالنسبة للعملية، فإنّها تنقسم إلى جزأين، يتم تخصيص جزء واحد من كتلة الذاكرة للعملية التي تمّ الوصول إليها ويتم إرجاع الجزء الآخر إلى مجموعة الثقوب، عندما تنتهي العملية وتحرر الذاكرة المخصصة لها، يتم إعادة الذاكرة المحررة إلى مجموعة الثقوب، يتم دمج الفتحتين المتجاورتين، في مجموعة الثقوب، لتشكيل ثقب واحد كبير.

الآن، في هذه المرحلة، يتحقق نظام التشغيل ممّا إذا كانت هذه الفتحة الكبيرة الخالية المشكلة حديثًا قادرة على تلبية متطلبات الذاكرة لأي عملية تنتظر في قائمة الانتظار الجاهزة، وتستمر العملية.

إدارة الذاكرة Memory Management

في القسم أعلاه، رأينا كيف يخصص نظام التشغيل الذاكرة المتجاورة للعمليات، هنا، سنرى كيف يختار نظام التشغيل ثقبًا حرًا من مجموعة الثقوب؟ يستخدم نظام التشغيل إمّا قائمة تخصيص الكتلة أو مخطط البت (bit map) لتحديد الفتحة من مجموعة الثقوب.

قائمة تخصيص الكتل Block Allocation List

تحتفظ قائمة تخصيص الكتلة بجدولين، يحتوي الجدول الأول على إدخالات الكتل المخصصة للملفات المختلفة، يحتوي الجدول الآخر على إدخالات الفجوات الخالية والتي يمكن تخصيصها للعملية في قائمة الانتظار، الآن، نظرًا لأنّ لدينا إدخالات للكتل الخالية التي يجب اختيار أحدها، يمكن تحديدها باستخدام أي من هذه الاستراتيجيات: الاستراتيجيات المناسبة أولاً (first-fit) والأكثر ملاءمة (best-fit) والأسوأ (worst-fit):

الاستراتيجيات المناسبة أولاً First-fit

هنا، يبدأ البحث إمّا في بداية الجدول أو من حيث انتهى البحث الأول السابق، أثناء البحث، يتم تحديد أول ثقب وجد أنّه كبير بما يكفي لاستيعاب العملية.

الاستراتيجيات الأكثر ملاءمة Best-fit

تحتاج هذه الطريقة إلى فرز قائمة الثقوب الخالية وفقًا لحجمها، ثمّ يتم تحديد أصغر ثقب كبير بما يكفي لاستيعاب العملية من قائمة الثقوب الخالية، تقلل هذه الإستراتيجية من إهدار الذاكرة لأنّها لا تخصص فجوة ذات حجم أكبر ممّا يترك قدرًا من الذاكرة حتى بعد أن تستوعب العملية المساحة.

الاستراتيجيات الأسوأ Worst-fit

تتطلب هذه الطريقة فرز قائمة كاملة بالثقوب الخالية، هنا، مرة أخرى، يتم تحديد أكبر ثقب بين الثقوب الخالية، تترك هذه الاستراتيجية أكبر حفرة متبقية قد تكون مفيدة للعملية الأخرى.

مخطط البت Bit Map

تقوم طريقة مخطط البت فقط بتتبع الكتلة الخالية أو المخصصة، يتم تمثيل كتلة واحدة ببت واحد، والبت (0) يشبه الكتلة الخالية والبت (1) يشبه أنّ الكتلة مخصصة لملف أو عملية، لا يحتوي على إدخالات للملفات أو العمليات التي يتم تخصيص الكتل المحددة لها، عادةً، سيؤدي تنفيذ الملاءمة الأولى إلى البحث في عدد الأصفار المتتالية / الكتل الخالية المطلوبة من قبل ملف العملية، بعد العثور على الكثير من الأصفار المتتالية، فإنّه يخصص ملفًا أو عملية لتلك الكتل، لكن تنفيذ أفضل ملاءمة أو ملاءمة سيكون مكلفًا، حيث يجب الحفاظ على جدول الكتل الخالية المصنفة وفقًا لحجم الفتحة، لكن طريقة مخطط البت سهلة التنفيذ.

التجزئة Fragmentation

يمكن أن تكون التجزئة إمّا تجزئة خارجية (external fragmentation) أو تجزئة داخلية (internal fragmentation)، تحدث التجزئة الخارجية عندما تكون كتل الذاكرة الخالية المتوفرة في الذاكرة صغيرة جدًا وحتى غير متجاورة، حيث تحدث التجزئة الداخلية عندما لا تستخدم العملية الذاكرة المخصصة لها بشكل كامل، حل مشكلة التجزئة الخارجية هو ضغط الذاكرة، هنا، يتم خلط جميع محتويات الذاكرة في منطقة واحدة من الذاكرة وبالتالي إنشاء كتلة كبيرة من الذاكرة يمكن تخصيصها لعملية جديدة أو أكثر.

المميزات والعيوب Advantages and Disadvantages

العيب الرئيسي في تخصيص الذاكرة المتجاورة هو إهدار الذاكرة وعدم المرونة، حيث يتم تخصيص الذاكرة لملف أو عملية مع الأخذ في الاعتبار أنّها ستنمو أثناء التشغيل، ولكن حتى تكبر عملية أو ملف، تظل العديد من الكتل المخصصة لها غير مستخدمة، وحتى هي لا يمكن تخصيصها للعملية الأخرى التي تؤدي إلى إهدار الذاكرة، في حالة نمو العملية أو الملف إلى ما هو أبعد من التوقعات، أي خارج كتلة الذاكرة المخصصة، فسيتم إلغاءها مع ظهور رسالة “لا توجد مساحة على القرص” ممّا يؤدي إلى عدم المرونة.

تتمثل ميزة تخصيص الذاكرة المتجاورة في زيادة سرعة المعالجة، نظرًا لأنّ نظام التشغيل يستخدم الإدخال / الإخراج المخزن ويقرأ كتل ذاكرة العملية على التوالي، وهذا يزيد من سرعة المعالجة.

المصدر: Contiguous Memory AllocationDifference between Contiguous and Noncontiguous Memory AllocationContiguous Memory Allocation in Operating System


شارك المقالة: