تقسيم الذاكرة
تقسيم الذاكرة هو أسلوب لإدارة الذاكرة في نظام التشغيل لتقسيم الذاكرة الأساسية للكمبيوتر إلى أجزاء أو أقسام . في نظام الكمبيوتر الذي يستخدم التجزئة، يتضمن المرجع إلى موقع ذاكرة قيمة تحدد جزءًا وإزاحة ( موقع ذاكرة) داخل ذلك الجزء. تُستخدم الأجزاء أو الأقسام أيضًا في ملفات الكائنات الخاصة بالبرامج المترجمة عندما يتم ربطها معًا في صورة برنامج وعندما يتم تحميل الصورة في الذاكرة.
تتوافق المقاطع عادةً مع الأقسام الطبيعية للبرنامج مثل الروتينات الفردية أو جداول البيانات [1] وبالتالي فإن التجزئة تكون أكثر وضوحًا للمبرمج من التقسيم إلى صفحات فقط. [2] يمكن إنشاء المقاطع لوحدات البرنامج ، أو لفئات استخدام الذاكرة مثل مقاطع التعليمات البرمجية ومقاطع البيانات . [3] يمكن مشاركة مقاطع معينة بين البرامج. [1] [2]
تم اختراع التجزئة في الأصل كطريقة يمكن من خلالها لبرامج النظام عزل العمليات البرمجية ( المهام ) والبيانات التي تستخدمها. وكان الهدف من ذلك زيادة موثوقية الأنظمة التي تقوم بتشغيل عمليات متعددة في وقت واحد. [4]
تنفيذ الأجهزة
في النظام الذي يستخدم التجزئة، تتكون عناوين ذاكرة الكمبيوتر من معرف القطعة وإزاحة داخل القطعة. [3] وحدة إدارة ذاكرة الأجهزة (MMU) مسؤولة عن ترجمة القطعة والإزاحة إلى عنوان فعلي ، وعن إجراء الفحوصات للتأكد من إمكانية إجراء الترجمة والسماح بالإشارة إلى تلك القطعة والإزاحة.
كل مقطع له طول ومجموعة من الأذونات (على سبيل المثال ، القراءة والكتابة والتنفيذ ) المرتبطة به. [ 3 ] لا يُسمح للعملية بإجراء مرجع إلى مقطع إلا إذا كان نوع المرجع مسموحًا به بواسطة الأذونات، وإذا كان الإزاحة داخل المقطع ضمن النطاق المحدد بطول المقطع. وإلا، يتم رفع استثناء الأجهزة مثل خطأ التجزئة .
يمكن أيضًا استخدام المقاطع لتنفيذ الذاكرة الافتراضية . في هذه الحالة، يكون لكل مقطع علامة مرتبطة تشير إلى ما إذا كان موجودًا في الذاكرة الرئيسية أم لا. إذا تم الوصول إلى مقطع غير موجود في الذاكرة الرئيسية، يتم رفع استثناء، وسيقوم نظام التشغيل بقراءة المقطع في الذاكرة من وحدة تخزين ثانوية.
التجزئة هي إحدى طرق تنفيذ حماية الذاكرة . [5] التجزئة هي طريقة أخرى، ويمكن دمجهما. حجم شريحة الذاكرة غير ثابت بشكل عام وقد يكون صغيرًا مثل بايت واحد . [6]
تم تنفيذ التجزئة بعدة طرق على أجهزة مختلفة، مع أو بدون التجزئة. لا تناسب تجزئة ذاكرة Intel x86 أيًا من الطرازين، وسيتم مناقشتها بشكل منفصل أدناه، وأيضًا بمزيد من التفصيل في مقال منفصل.
التجزئة بدون ترقيم
ترتبط بكل مقطع معلومات تشير إلى مكان وجود المقطع في الذاكرة - قاعدة المقطع . عندما يشير برنامج إلى موقع ذاكرة، تتم إضافة الإزاحة إلى قاعدة المقطع لتوليد عنوان ذاكرة فعلي.
يتطلب تنفيذ الذاكرة الافتراضية على نظام يستخدم التجزئة دون الترقيم أن يتم تبديل المقاطع بالكامل ذهابًا وإيابًا بين الذاكرة الرئيسية والتخزين الثانوي. عند تبديل مقطع، يتعين على نظام التشغيل تخصيص ذاكرة خالية متجاورة كافية لاستيعاب المقطع بالكامل. غالبًا ما تحدث تجزئة الذاكرة إذا لم يكن هناك ذاكرة متجاورة كافية حتى لو كان هناك ما يكفي في الإجمال.
التجزئة مع الترقيم
بدلاً من موقع الذاكرة، تتضمن معلومات المقطع عنوان جدول الصفحات للمقطع. عندما يشير برنامج إلى موقع ذاكرة، يتم ترجمة الإزاحة إلى عنوان ذاكرة باستخدام جدول الصفحات. يمكن تمديد المقطع عن طريق تخصيص صفحة ذاكرة أخرى وإضافتها إلى جدول صفحات المقطع.
إن تنفيذ الذاكرة الافتراضية على نظام يستخدم التجزئة مع الترقيم عادةً ما يحرك الصفحات الفردية ذهابًا وإيابًا بين الذاكرة الرئيسية ووحدة التخزين الثانوية، على غرار النظام غير المجزأ الذي يعتمد على التجزئة. ويمكن وضع صفحات الشريحة في أي مكان في الذاكرة الرئيسية ولا يلزم أن تكون متجاورة. ويؤدي هذا عادةً إلى تقليل كمية الإدخال/الإخراج بين وحدة التخزين الأساسية والثانوية وتقليل تجزئة الذاكرة.
تاريخ
كان كمبيوتر شركة بوروز B5000 من أوائل الأجهزة التي طبقت التجزئة، و"ربما كان أول كمبيوتر تجاري يوفر ذاكرة افتراضية" [7] استنادًا إلى التجزئة. تم تجهيز B5000 بجدول معلومات القطاع يسمى جدول مرجع البرنامج (PRT) والذي يستخدم للإشارة إلى ما إذا كان القطاع المقابل موجودًا في الذاكرة الرئيسية، للحفاظ على عنوان القاعدة وحجم القطاع. [8] كما نفذ الكمبيوتر B6500 اللاحق التجزئة؛ لا يزال إصدار من بنيته قيد الاستخدام اليوم على خوادم Unisys ClearPath Libra. [ بحاجة لمصدر ]
تم تصميم الكمبيوتر GE 645 ، وهو تعديل لجهاز GE-635 مع إضافة دعم التجزئة والترقيم، في عام 1964 لدعم Multics .
بدأت Intel iAPX 432 ، [9] في عام 1975، في محاولة تنفيذ بنية مجزأة حقيقية مع حماية الذاكرة على المعالج الدقيق.
تدعم نسخة 960MX من معالجات Intel i960 تعليمات التحميل والتخزين حيث يكون المصدر أو الوجهة "مُوصِف وصول" لكائن، وإزاحة للكائن، حيث يكون مُوصِف الوصول في سجل 32 بت مع الإزاحة المحسوبة من إزاحة أساسية في السجل التالي ومن إزاحة إضافية، وبشكل اختياري، سجل فهرس محدد في التعليمات. يحتوي مُوصِف الوصول على بتات إذن وفهرس كائن مكون من 26 بت؛ فهرس الكائن هو فهرس في جدول من أوصاف الكائنات، يعطي نوع الكائن وطول الكائن والعنوان الفعلي لبيانات الكائن، أو جدول صفحات للكائن، أو جدول صفحات المستوى الأعلى لجدول صفحات من مستويين للكائن، اعتمادًا على نوع الكائن. [10]
تستخدم أجهزة الكمبيوتر Prime و Stratus و Apollo و IBM System/38 و IBM AS/400 (بما في ذلك IBM i ) تقسيم الذاكرة.
أمثلة
ب5000
توجد الوصفات في B5000 وB5500 وB5700 إما في جدول مرجع البرنامج (PRT) أو في المكدس، وتحتوي على بت حضور يشير إلى ما إذا كانت البيانات موجودة في الذاكرة أم لا. هناك وصفان مختلفان للبيانات والبرامج.
ب6500
كان خط B6000، بدءًا من B6500، بنفس بنية B5500، ولكن بأجهزة أكبر وأسرع من نفس العائلة. واستمر الخط حتى B6900، ثم سلسلة A من Unisys واستمر حتى أنظمة Clearpath MCP الحالية (Libra). وبينما كانت هناك بعض التحسينات على مر السنين، وخاصة التطورات في الأجهزة، إلا أن البنية لم تتغير كثيرًا. وظل مخطط التجزئة كما هو، انظر الذاكرة المجزأة .
هندسة المالتيكس
هذا القسم يحتاج إلى التوسعة ، يمكنك المساعدة بإضافة المزيد إليه. ( يناير 2024 ) |
هندسة S/370
في نماذج IBM System/370 [a] مع التخزين الافتراضي [11] [12] (DAT) وعناوين 24 بت، يحدد سجل التحكم 0 حجم مقطع إما 64 كيلوبايت أو 1 ميجا بايت وحجم صفحة إما 2 كيلوبايت أو 4 كيلوبايت؛ يحتوي سجل التحكم 1 على مُصمم جدول المقطع (STD)، والذي يحدد طول وعنوان جدول المقطع الحقيقي. يحتوي كل إدخال في جدول المقطع على موقع جدول الصفحات وطول جدول الصفحات وبت غير صالح. قامت IBM لاحقًا بتوسيع حجم العنوان إلى 31 بت وأضافت بتتين إلى إدخالات جدول المقطع:
- بت حماية القطعة
- المقطع للقراءة فقط
- بت القطعة المشتركة
- تتم مشاركة المقطع بين مساحات العناوين؛ تم تعيين هذا الجزء لتحسين استخدام TLB
تتضمن كل تطبيقات DAT من IBM ذاكرة تخزين مؤقتة للترجمة، والتي أطلقت عليها IBM اسم Translation Lookaside Buffer (TLB). وفي حين تناقش مبادئ التشغيل ذاكرة التخزين المؤقت للترجمة بشكل عام، فإن التفاصيل ليست جزءًا من البنية وتختلف من نموذج إلى آخر.
بدءًا من مجمعات المعالجات 3031 و3032 و3033 ، قدمت IBM ميزة تسمى مساحة العنوان المزدوجة [12] : 5-13–5-17، التحكم في مساحة العنوان المزدوجة : 5-17–5-20، آليات تفويض DAS : 5-21–5-24، ترجمة أرقام الكمبيوتر [13] (DAS)، والتي تسمح للبرنامج بالتبديل بين جداول الترجمة لمساحتي عنوان، يشار إليهما بمساحة العنوان الأساسية (CR1) ومساحة العنوان الثانوية (CR7)، ونقل البيانات بين مساحات العناوين الخاضعة لمفتاح الحماية. يدعم DAS جدول ترجمة لتحويل رقم مساحة عنوان مكون من 16 بت (ASN) إلى STD، مع تعليمات مميزة لتحميل STD إلى CR1 (أساسي) أو CR7 (ثانوي).
هندسة x86
توفر معالجات x86 المبكرة ، بدءًا من Intel 8086 ، تجزئة ذاكرة بدائية ولا توفر حماية للذاكرة . (يكون كل بايت من كل مقطع متاحًا دائمًا لأي برنامج). تسمح سجلات المقطع المكونة من 16 بتًا بـ 65536 مقطعًا؛ يبدأ كل مقطع عند إزاحة ثابتة تساوي 16 مرة رقم المقطع؛ حبيبات عنوان بداية المقطع هي 16 بايت. يمنح كل مقطع حق الوصول للقراءة والكتابة إلى 64 كيلوبايت (65536 بايت) من مساحة العنوان (يتم تعيين هذا الحد بواسطة سجلات PC وSP المكونة من 16 بت؛ لا يقوم المعالج بفحص الحدود). يلتف الإزاحة + العنوان الذي يتجاوز 0xFFFFF حول 0x00000. يتداخل كل مقطع 64 كيلوبايت مع 4095 مقطعًا التالية؛ يمكن الإشارة إلى كل عنوان فعلي بواسطة 4096 زوجًا من المقطع والإزاحة. لا يمكن لهذا المخطط معالجة سوى 1 ميجا بايت (1024 كيلوبايت) من الذاكرة الفعلية (وإدخال/إخراج مخصص للذاكرة). ( يمكن لأجهزة الذاكرة الموسعة الاختيارية إضافة ذاكرة مبدلة تحت سيطرة البرنامج). أطلقت شركة Intel بأثر رجعي على وضع التشغيل الوحيد لهذه النماذج من وحدات المعالجة المركزية x86 اسم " الوضع الحقيقي ".
تضيف معالجات Intel 80286 والإصدارات الأحدث " وضع الحماية 286 "، الذي يحتفظ بالعنونة 16 بت، ويضيف التجزئة (بدون الترقيم) وحماية الذاكرة لكل شريحة. من أجل التوافق مع الإصدارات السابقة، تبدأ جميع وحدات المعالجة المركزية x86 في "الوضع الحقيقي"، بنفس الشرائح المتداخلة الثابتة 64 كيلوبايت، وعدم وجود حماية للذاكرة، ومساحة عنوان فيزيائية 1 ميجا بايت فقط، وبعض الاختلافات الدقيقة ( مساحة ذاكرة عالية ، وضع غير واقعي ). من أجل استخدام مساحة العنوان الفيزيائية الكاملة 24 بت (16 ميجا بايت) وميزات وحدة إدارة الذاكرة المتقدمة ، يجب تحويل معالج 80286 أو الإصدارات الأحدث إلى "الوضع المحمي" بواسطة برنامج، عادةً نظام التشغيل أو موسع DOS . إذا لم يستخدم البرنامج سجلات الشرائح، أو وضع القيم فيها فقط التي يتلقاها من نظام التشغيل، فيمكن تشغيل الكود المتطابق في الوضع الحقيقي أو الوضع المحمي، ولكن معظم برامج الوضع الحقيقي تحسب قيمًا جديدة لسجلات الشرائح، مما يؤدي إلى كسر هذا التوافق.
تضيف معالجات Intel i386 والإصدارات الأحدث " وضع الحماية 386 "، الذي يستخدم عنونة 32 بت، ويحتفظ بالتجزئة، ويضيف ترقيم الذاكرة . في هذه المعالجات، يحتوي جدول المقطع، بدلاً من الإشارة إلى جدول صفحات للمقطع، على عنوان المقطع في الذاكرة الخطية . عند تمكين الترقيم، يتم بعد ذلك تعيين العناوين في الذاكرة الخطية إلى عناوين مادية باستخدام جدول صفحات منفصل. لم تستخدم معظم أنظمة التشغيل إمكانية التجزئة، واختارت الاحتفاظ بالعنوان الأساسي في جميع سجلات المقطع مساويًا لـ 0 في جميع الأوقات وتوفير حماية الذاكرة لكل صفحة والتبديل باستخدام الترقيم فقط. يستخدم البعض سجل CS لتوفير حماية مساحة قابلة للتنفيذ على المعالجات التي تفتقر إلى بت NX أو استخدام سجلات FS أو GS للوصول إلى التخزين المحلي للخيط. [14] [15]
لا تدعم بنية x86-64 التجزئة في " الوضع الطويل " (وضع 64 بت). [16] يتم إجبار أربعة من سجلات القطاعات: CS وSS وDS وES على 0، والحد الأقصى 2 64. لا يزال بإمكان سجلات القطاعات FS وGS أن يكون لها عنوان أساسي غير صفري. يسمح هذا لأنظمة التشغيل باستخدام هذه القطاعات لأغراض خاصة مثل التخزين المحلي للخيط. [14] [15]
انظر أيضا
- قطاع BSS
- شريحة البيانات
- نموذج الذاكرة المسطحة
- إدارة الذاكرة (أنظمة التشغيل)
- خطأ التجزئة
- مساحة العنوان الافتراضية
- الذاكرة الإفتراضية
- تقسيم الذاكرة x86
ملحوظات
- ^ النماذج 115، 125، 135، 138، 145، 148، 155 II، 158، 165 II، و168
مراجع
- ^ ab Holt, Anatol W. (1961). "تنظيم البرنامج وحفظ السجلات لتخصيص التخزين الديناميكي". اتصالات ACM . 4 (10): 422–431. doi : 10.1145/366786.366795 . S2CID 18973700.
- ^ ab Englander, Irv (2003). بنية الأجهزة الحاسوبية وبرامج الأنظمة (الطبعة الثالثة). Wiley. ISBN 0-471-07325-3.
- ^ abc Glaser, Edward L.; Couleur, John F.; Oliver, GA (1965). تصميم نظام حاسوب لتطبيقات تقاسم الوقت. مؤتمر الحاسوب المشترك الخريفي لعام 1965.
- ^ "1.2 إدارة الذاكرة". AMD64 Technology AMD64 Architecture Programmer's Manual Volume 2: System Programming (PDF) . المجلد 2. Advanced Micro Devices. 2018. ص 5.
- ^ Arpaci-Dusseau, Remzi H.; Arpaci-Dusseau, Andrea C. (2014). "Segmentation" (PDF) . أنظمة التشغيل: ثلاث قطع سهلة . كتب Arpaci-Dusseau.
- ^ دليل مطوري برامج معماريات Intel 64 وIA-32، المجلد 3 (3A، 3B و3C): دليل برمجة النظام (PDF) . شركة Intel. 2012. ص 3-13.
- ^ ماير، أليستير جيه دبليو "هندسة بوروز بي 5000 - بعد عشرين عامًا وما زالت متقدمة على العصر؟" . تم الاسترجاع في 2012-03-15 .
- ^ هايز، جون ب. (1978). بنية الحاسوب وتنظيمه . ماكجرو هيل. ص. 371. ISBN 0-07-027363-4.
- ^ مقدمة إلى بنية IAPX 432 (PDF) . شركة إنتل. 1981. ص. 78.
- ^ دليل مرجعي لهندسة وحدة المعالجة المركزية BiiN (PDF) . BiiN. يوليو 1998.
- ^ "ترجمة العناوين الديناميكية" (PDF) . مبادئ تشغيل نظام IBM/370 (PDF) . الأنظمة (الطبعة الرابعة). IBM . سبتمبر 1974. ص 57-68. GA22-7000-4.
- ^ ab "ترجمة العناوين الديناميكية". مبادئ تشغيل نظام IBM/370 (الطبعة الحادية عشرة). IBM. سبتمبر 1987. ص 3-20-3-38. GA22-7000-10.
- ^ "مسافات العناوين" (PDF) . مبادئ تشغيل بنية IBM System/370 الموسعة (PDF) (الطبعة الثانية). IBM. يناير 1987. ص 3-13–3-14. SA22-7085-1.
- ^ من تأليف Matt Pietrek (مايو 2006). "كل ما تحتاج إلى معرفته لبدء برمجة أنظمة Windows 64 بت". Microsoft . تم الاسترجاع في 2023-04-18 .
- ^ ab Drepper, Ulrich (2013-08-22). "معالجة ELF للتخزين المحلي للخيوط" (PDF) .
- ^ AMD64 Technology AMD64 Architecture Programmer's Manual Volume 2: System Programming (PDF) . المجلد 2. Advanced Micro Devices. 2018.
روابط خارجية
- IA-32 دليل مطور برامج هندسة Intel المجلد 3A: دليل برمجة النظام. http://www.intel.com/products/processor/manuals/index.htm.
- أنظمة التشغيل: المبادئ الداخلية والتصميمية، تأليف ويليام ستالينجز. الناشر: برنتيس هول. رقم ISBN 0-13-147954-7 . رقم ISBN 978-0-13-147954-8 .
