الفصل ٨: الذاكرة الرئيسية

CS330 - أنظمة التشغيل

إدارة الذاكرة، ربط العناوين، المبادلة، التصفح والتقسيم

٨.١ خلفية

إدارة الذاكرة ضرورية لتعدد البرمجة. يجب على نظام التشغيل:

  • تتبع أي أجزاء من الذاكرة تُستخدم حاليًا ومن يستخدمها
  • تحديد العمليات التي يجب تحميلها عندما تصبح مساحة الذاكرة متاحة
  • تخصيص وإلغاء تخصيص مساحة الذاكرة حسب الحاجة

العتاد الأساسي

الذاكرة الرئيسية والمسجلات هما التخزين الوحيد الذي يمكن للمعالج الوصول إليه مباشرة.

أوقات الوصول للذاكرة:

  • الوصول للمسجلات: دورة معالج واحدة أو أقل
  • الذاكرة الرئيسية: دورات عديدة (تسبب توقفًا)
  • الذاكرة المخبئية: تقع بين الذاكرة الرئيسية ومسجلات المعالج

حماية الذاكرة

مسجلات الأساس والحد

المعالج
يولد
عنوانًا منطقيًا
تحقق
العنوان ≥ الأساس
العنوان < الأساس+الحد
الذاكرة
عنوان
فيزيائي

إذا فشل التحقق → انتقال إلى نظام التشغيل (خطأ في العنونة)

٨.٢ ربط العناوين

يجب إحضار البرامج إلى الذاكرة ووضعها ضمن عملية للتنفيذ.

ربط التعليمات والبيانات بالذاكرة

وقت الربط الوصف نوع العنوان المرونة
وقت الترجمة إذا كان موقع الذاكرة معروفًا مسبقًا، يمكن إنشاء كود مطلق عناوين مطلقة يجب إعادة الترجمة إذا تغير موقع البداية
وقت التحميل المترجم يولد كودًا قابلاً لإعادة التموضع عناوين قابلة لإعادة التموضع الربط النهائي يؤجل حتى وقت التحميل
وقت التنفيذ الربط يؤجل حتى وقت التشغيل عناوين ديناميكية يمكن للعملية التحرك أثناء التنفيذ

مساحة العنوان المنطقية مقابل الفيزيائية

عنوان منطقي: يولده المعالج؛ يُسمى أيضًا عنوانًا افتراضيًا

عنوان فيزيائي: عنوان تراه وحدة الذاكرة

العناوين المنطقية والفيزيائية متطابقة في مخططات وقت الترجمة ووقت التحميل؛ مختلفة في مخطط وقت التنفيذ

وحدة إدارة الذاكرة

ترجمة العنوان

العنوان الفيزيائي = العنوان المنطقي + مسجل إعادة التموضع

برنامج المستخدم يتعامل مع عناوين منطقية؛ لا يرى أبدًا عناوين فيزيائية حقيقية

٨.٣ المبادلة

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

الذاكرة الرئيسية

نظام التشغيل
عملية P1
مساحة حرة

مبادلة خارج / مبادلة داخل

التخزين الاحتياطي

تخزين
قرص

قيود المبادلة:

  • يجب أن تكون العملية خاملة تمامًا قبل المبادلة
  • لا تقم أبدًا بمبادلة عملية لديها إدخال/إخراج معلق
  • وقت النقل يتناسب مع مقدار الذاكرة المُبادلة

حساب وقت المبادلة:

حجم العملية: ١٠٠ ميجابايت

معدل نقل التخزين الاحتياطي: ٥٠ ميجابايت/ثانية

وقت النقل = ١٠٠ / ٥٠ = ٢ ثانية

إجمالي وقت المبادلة (خارج + داخل) = ٤ ثوانٍ

٨.٤ تخصيص الذاكرة المتجاورة

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

الذاكرة الرئيسية مقسمة إلى قسمين:

تخصيص متعدد الأقسام

OS
٠-٤٠٠ك
عملية ١
٤٠٠-٦٠٠ك
حرة
٦٠٠-٩٠٠ك
عملية ٢
٩٠٠-١٠٢٤ك

استراتيجيات تخصيص التخزين الديناميكي

الأول المناسب

تخصيص أول فجوة مناسبة

✓ سريع

✗ قد ينشئ أجزاء صغيرة

الأفضل مناسبة

تخصيص أصغر فجوة مناسبة

✓ يترك فجوات أكبر

✗ أبطأ، ينشئ أجزاء صغيرة

الأسوأ مناسبة

تخصيص أكبر فجوة

✓ قد يقلل التجزؤ

✗ استخدام ضعيف

ملاحظة: الأول المناسب والأفضل مناسبة بشكل عام أفضل من الأسوأ مناسبة من حيث السرعة واستخدام التخزين

٨.٥ التجزؤ

تجزؤ خارجي

مساحة الذاكرة الإجمالية موجودة لتلبية الطلب، لكنها غير متجاورة

عملية أ
حرة ٥٠ك
عملية ب
حرة ١٠٠ك
عملية ج

المشكلة: لا يمكن تخصيص ١٥٠ك رغم أن الإجمالي الحر = ١٥٠ك

الحل: الضغط أو التصفح

تجزؤ داخلي

الذاكرة المخصصة قد تكون أكبر من الذاكرة المطلوبة

عملية تحتاج ١٨ك
مهدور ٢ك

مثال: عملية تحتاج ١٨ك، تحصل على كتلة ٢٠ك

يحدث في: مخططات الأقسام الثابتة، التصفح

قاعدة الخمسين بالمئة (تحليل إحصائي):

بوجود N كتلة مخصصة، نصف N أخرى من الكتل ستضيع بسبب التجزؤ الخارجي

ثلث الذاكرة قد يكون غير قابل للاستخدام!

٨.٦ التصفح

التصفح يسمح لمساحة العنوان الفيزيائي للعملية أن تكون غير متجاورة

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

ترجمة العنوان

هيكل العنوان المنطقي

رقم الصفحة (p)
إزاحة الصفحة (d)
يُستخدم كمؤشر لجدول الصفحات
يُدمج مع العنوان الأساسي

مثال جدول صفحات

ذاكرة منطقية

صفحات
٠
صفحة ٠
١
صفحة ١
٢
صفحة ٢
٣
صفحة ٣

جدول الصفحات

صفحة ← إطار
٠
٥
١
٦
٢
١
٣
٢

ذاكرة فيزيائية

أطر
٠
حرة
١
صفحة ٢
٢
صفحة ٣
٣
حرة
٤
حرة
٥
صفحة ٠
٦
صفحة ١
٧
حرة

مخزن الترجمة المؤقت

TLB - ذاكرة مخبئية عتادية لجدول الصفحات

ذاكرة مخبئية عتادية صغيرة سريعة البحث تحتوي إدخالات جدول الصفحات

إصابة TLB
صفحة موجودة في TLB
~١ وصول للذاكرة
خطأ TLB
الوصول لجدول الصفحات
~٢ وصول للذاكرة
نسبة الإصابة
عادة ٩٨-٩٩٪
حاسمة للأداء

حساب وقت الوصول الفعال

EAT مع TLB

EAT = α × (وقت TLB + وقت ذاكرة) + (١-α) × (وقت TLB + ٢×وقت ذاكرة)

حيث α = نسبة إصابة TLB

مثال: وقت الذاكرة = ١٠٠ns، وقت TLB = ٢٠ns، نسبة الإصابة = ٨٠٪

EAT = ٠.٨٠ × ١٢٠ + ٠.٢٠ × ٢٢٠ = ٩٦ + ٤٤ = ١٤٠ns

هيكل جدول الصفحات

نوع الهيكل الوصف الميزة
هرمي مستويان أو أكثر من جداول الصفحات يقلل عبء الذاكرة للمساحات العنوانية المتناثرة
مبني على التجزئة جدول تجزئة بقائمة مرتبطة للتصادمات جيد للمساحات العنوانية المتناثرة > ٣٢ بت
مقلوب إدخال واحد لكل إطار فيزيائي يقلل الذاكرة المطلوبة لجداول الصفحات

حماية الصفحات

بتات الحماية في إدخال جدول الصفحات:

ق - قراءة ك - كتابة ن - تنفيذ

بت صالح/غير صالح: يشير إذا كانت الصفحة في مساحة العنوان المنطقي للعملية

٨.٧ التقسيم

مخطط إدارة الذاكرة يدعم رؤية المستخدم للذاكرة

البرنامج هو مجموعة من الأقسام:

  • البرنامج الرئيسي
  • إجراءات/دوال
  • متغيرات محلية، متغيرات عامة
  • كتلة مشتركة
  • مكدس
  • جدول رموز

عنوان منطقي في التقسيم

رقم القسم (s)
إزاحة (d)

جدول الأقسام

قسم أساس حد وصف
٠ ١٤٠٠ ١٠٠٠ البرنامج الرئيسي
١ ٦٣٠٠ ٤٠٠ دالة فرعية
٢ ٤٣٠٠ ٤٠٠ مكدس
٣ ٣٢٠٠ ١١٠٠ قسم بيانات
٤ ٤٧٠٠ ١٠٠٠ جدول رموز

ترجمة العنوان في التقسيم

مثال: عنوان منطقي (٢، ٥٣)

الخطوة ١: ابحث عن القسم ٢ في جدول الأقسام
الخطوة ٢: الأساس = ٤٣٠٠، الحد = ٤٠٠
الخطوة ٣: تحقق إذا كانت الإزاحة < الحد: ٥٣ < ٤٠٠ ✓
الخطوة ٤: العنوان الفيزيائي = الأساس + الإزاحة = ٤٣٠٠ + ٥٣ = ٤٣٥٣

التقسيم مقابل التصفح

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

٨.٨ التقسيم مع التصفح

يجمع مزايا كلا المخططين:

  • تقسيم رؤية المستخدم
  • تصفح الأقسام لإدارة الذاكرة
  • يزيل التجزؤ الخارجي
  • يوفر مشاركة وحماية على مستوى القسم

خطوات ترجمة العنوان

عنوان منطقي
(s, p, d)
قسم، صفحة، إزاحة
جدول الأقسام
احصل على جدول صفحات
للقسم s
جدول الصفحات
احصل على الإطار
للصفحة p
عنوان فيزيائي
الإطار + الإزاحة d

مثال معمارية Intel x86:

يدعم كلاً من التقسيم والتصفح

عنوان منطقي → عنوان خطي (عبر التقسيم) → عنوان فيزيائي (عبر التصفح)

٨.٩ مسائل تطبيقية وحسابات

مثال ١: حساب رقم الصفحة والإزاحة

المعطيات: حجم الصفحة = ١كيلوبايت (١٠٢٤ بايت)، عنوان منطقي = ٣٠٨٥

رقم الصفحة = ⌊٣٠٨٥ / ١٠٢٤⌋ = ٣
الإزاحة = ٣٠٨٥ mod ١٠٢٤ = ٣٠٨٥ - (٣ × ١٠٢٤) = ١٣
الإجابة: الصفحة = ٣، الإزاحة = ١٣

مثال ٢: حساب مساحة العنوان

المعطيات: ٢٥٦ صفحة بحجم صفحة ٤كيلوبايت، مرسلة إلى ٦٤ إطارًا

مساحة العنوان المنطقي = ٢٥٦ × ٤كيلوبايت = ١ ميجابايت = ٢²⁰ بايت
بتات العنوان المنطقي = log₂(٢²⁰) = ٢٠ بت
الذاكرة الفيزيائية = ٦٤ × ٤كيلوبايت = ٢٥٦ كيلوبايت = ٢¹⁸ بايت
بتات العنوان الفيزيائي = log₂(٢¹⁸) = ١٨ بت

مثال ٣: التجزؤ الداخلي

المعطيات: حجم العملية = ٧٢,٧٦٦ بايت، حجم الصفحة = ٢٠٤٨ بايت

عدد الصفحات = ⌈٧٢,٧٦٦ / ٢٠٤٨⌉ = ⌈٣٥.٥٣⌉ = ٣٦ صفحة
الذاكرة المخصصة = ٣٦ × ٢٠٤٨ = ٧٣,٧٢٨ بايت
التجزؤ الداخلي = ٧٣,٧٢٨ - ٧٢,٧٦٦ = ٩٦٢ بايت

٨.١٠ أسئلة اختبار CS330

أسئلة اختيار من متعدد

س١. أي استراتيجية تخصيص ذاكرة هي الأسرع بشكل عام؟

الإجابة: الأول المناسب (يبحث من البداية ويخصص أول فجوة مناسبة)

س٢. التجزؤ الخارجي يحدث في:

الإجابة: التخصيص المتجاور ذو الحجم المتغير والتقسيم الخالص

س٣. التجزؤ الداخلي يحدث في:

الإجابة: التقسيم الثابت والتصفح الخالص

س٤. TLB تعني:

الإجابة: مخزن الترجمة المؤقت

أسئلة إجابة قصيرة

س٥. قارن بين التصفح والتقسيم من حيث عبء الذاكرة.

الإجابة:

التصفح: يتطلب إدخالًا واحدًا لكل صفحة. للمساحات العنوانية الكبيرة، يمكن أن تكون جداول الصفحات ضخمة.

التقسيم: يتطلب فقط مسجلين لكل قسم (أساس وحد). عبء أقل بكثير.

س٦. لماذا لا تدعم أنظمة تشغيل الجوال مثل iOS و Android المبادلة؟

الإجابة:

  1. ذاكرة الفلاش لها دورات كتابة محدودة
  2. سعة تخزين محدودة
  3. إنتاجية ذاكرة ضعيفة بين الفلاش والذاكرة الرئيسية
  4. مخاوف استهلاك الطاقة

س٧. احسب العنوان الفيزيائي للعنوان المنطقي (١، ٥٠٠) في نظام تصفح:

حجم الصفحة = ١٠٢٤ بايت، الصفحة ١ مرسلة إلى الإطار ٦

العنوان الفيزيائي = الإطار × حجم_الصفحة + الإزاحة
العنوان الفيزيائي = ٦ × ١٠٢٤ + ٥٠٠ = ٦١٤٤ + ٥٠٠ = ٦٦٤٤

٨.١١ المصطلحات الرئيسية والتعريفات

المصطلح التعريف
عنوان منطقي عنوان يولده المعالج؛ عنوان افتراضي
عنوان فيزيائي عنوان تراه وحدة الذاكرة
MMU وحدة إدارة الذاكرة - عتاد لترجمة العناوين
صفحة كتلة ذات حجم ثابت في الذاكرة المنطقية
إطار كتلة ذات حجم ثابت في الذاكرة الفيزيائية
جدول صفحات هيكل بيانات لترجمة الصفحة إلى إطار
TLB مخزن الترجمة المؤقت - ذاكرة مخبئية لجدول الصفحات
قسم وحدة منطقية في رؤية المستخدم (كود، بيانات، مكدس)
تجزؤ خارجي ذاكرة حرة موجودة لكنها غير متجاورة
تجزؤ داخلي ذاكرة مخصصة أكبر من المطلوبة
ضغط خلط الذاكرة لوضع الذاكرة الحرة معًا
مبادلة نقل عملية بين الذاكرة الرئيسية والقرص
مسجل أساس يحمل أصغر عنوان فيزيائي قانوني
مسجل حد يحتوي نطاق العناوين المنطقية

٨.١٢ مخططات من الشرائح

📊 مخطط حماية العنوان بالعتاد

[إدراج مخطط حماية مسجلات الأساس والحد]

📊 عتاد التصفح مع TLB

[إدراج مخطط تفاعل TLB وجدول الصفحات]

📊 أمثلة تخصيص الذاكرة

[إدراج مقارنة مرئية للأول المناسب، الأفضل مناسبة، الأسوأ مناسبة]

📊 مثال التقسيم

[إدراج ترجمة العنوان من منطقي إلى فيزيائي في التقسيم]

ملاحظة: يرجى توفير المخططات الفعلية من مواد المقرر لاستبدال هذه العناصر النائبة.