Virtual Memory

الفصل الثامن: الذاكرة الافتراضية وإدارة الصفحات

الهدف: فهم كيفية توسيع الذاكرة باستخدام القرص (Paging)، وجداول الصفحات (Page Tables)، والـ TLB.
1

What is Virtual Memory?

هي تقنية تستخدم جزءاً من القرص الصلب (Hard Disk) ليعمل كامتداد للذاكرة الرئيسية (RAM).

الفائدة الرئيسية

زيادة سعة الذاكرة الظاهرية (Capacity) دون شراء RAM إضافية، مما يسمح بتشغيل برامج أكبر من حجم الذاكرة الفيزيائية.

المصطلحات الأساسية

  • Virtual Address: العنوان الذي ينشئه البرنامج (وهمي).
  • Physical Address: العنوان الحقيقي في الـ RAM.
  • Page Fault: عندما تكون البيانات المطلوبة ليست في RAM بل في القرص.
2

Paging & Address Translation

Virtual Address

Page #
Offset

Page Table

Mapping Center

Page 0 -> Frame 5
Page 1 -> Disk (X)
Page 2 -> Frame 1

Physical Address

Frame #
Offset
ملاحظة هامة: الـ Offset (الإزاحة) لا يتغير. نحن فقط نترجم رقم الصفحة (Page) إلى رقم إطار (Frame).
3

TLB: Speeding Things Up

لماذا نحتاج الـ TLB؟

جدول الصفحات (Page Table) مخزن في الذاكرة (RAM). هذا يعني أن كل عملية وصول للبيانات تتطلب عمليتين قراءة من الذاكرة (واحدة للجدول، وواحدة للبيانات). هذا بطيء جداً!

الحل (TLB):

هو "كاش خاص" وسريع جداً داخل المعالج، يخزن آخر التحويلات (Page -> Frame).
إذا وجدنا العنوان في TLB (Hit) ← لا داعي للذهاب للذاكرة لقراءة الجدول.

4

Fragmentation (التجزئة)

الطريقة الوصف نوع التجزئة (المشكلة)
Paging (التقسيم لصفحات) تقسيم الذاكرة والبرامج لقطع متساوية الحجم (Pages/Frames). Internal Fragmentation:
آخر صفحة في البرنامج قد لا تكون ممتلئة، مما يضيع مساحة داخل الصفحة.
Segmentation (التقسيم لقطاعات) تقسيم الذاكرة لقطع متغيرة الحجم حسب الحاجة (Logical segments). External Fragmentation:
ظهور فراغات صغيرة متناثرة بين القطاعات يصعب استغلالها.
EXAM VAULT (خزنة الاختبار)
CALCULATION / مسألة الـ Page Fault

Effective Access Time (EAT)

معطيات: Memory Access = 200ns, Page Fault rate = 1%, Disk access = 10ms.
(انتبه: 10ms = 10,000,000ns).

EAT = (0.99 * 2 Memory Accesses) + (0.01 * Disk Access)
EAT = 0.99(400ns) + 0.01(10,000,000ns)
EAT = 396 + 100,000 = 100,396 ns

لاحظ كيف دمر الـ Page Fault الأداء!

TRAP / فخ

The "Valid" Bit

في جدول الصفحات (Page Table):
إذا كان الـ Valid Bit = 1: الصفحة موجودة في RAM (كمل شغلك).
إذا كان الـ Valid Bit = 0: الصفحة غير موجودة (Page Fault)، يجب جلبها من القرص.

→ السابق (Ch 7) الفصل التالي (Ch 9) ←