تجزئة الذاكرة
تجزئة الذاكرة هي تقنية لإدارة الذاكرة في أنظمة التشغيل ، حيث تُقسّم الذاكرة الرئيسية للحاسوب إلى قطاعات أو أقسام . في نظام حاسوبي يستخدم التجزئة، يتضمن مرجع موقع الذاكرة قيمة تُحدد القطاع وإزاحة ( موقع الذاكرة) داخله. تُستخدم القطاعات أو الأقسام أيضًا في ملفات الكائنات للبرامج المُجمّعة عند ربطها معًا لتكوين صورة البرنامج ، وعند تحميل هذه الصورة في الذاكرة.
تتوافق المقاطع عادةً مع التقسيمات الطبيعية للبرنامج، مثل الإجراءات الفردية أو جداول البيانات [ 1 ]، لذا فإن التجزئة تكون أكثر وضوحًا للمبرمج من الترحيل وحده. [ 2 ] يمكن إنشاء المقاطع لوحدات البرنامج ، أو لأنواع استخدام الذاكرة مثل مقاطع التعليمات البرمجية ومقاطع البيانات . [ 3 ] قد تتشارك بعض المقاطع بين البرامج. [ 1 ] [ 2 ]
تم ابتكار التجزئة في الأصل كطريقة تمكن برامج النظام من عزل عمليات البرامج ( المهام ) والبيانات التي تستخدمها. وكان الهدف منها زيادة موثوقية الأنظمة التي تشغل عمليات متعددة في وقت واحد. [ 4 ]
التنفيذ على الأجهزة
في نظام يستخدم التجزئة، تتكون عناوين ذاكرة الحاسوب من مُعرّف المقطع وإزاحة داخل المقطع. [ 3 ] وحدة إدارة الذاكرة المادية (MMU) مسؤولة عن ترجمة المقطع والإزاحة إلى عنوان فعلي ، وعن إجراء فحوصات للتأكد من إمكانية الترجمة ومن السماح بالرجوع إلى ذلك المقطع والإزاحة.
لكل مقطع طول ومجموعة من الصلاحيات (مثل القراءة والكتابة والتنفيذ ). [ 3 ] لا يُسمح للعملية بالوصول إلى مقطع إلا إذا كان نوع الوصول مسموحًا به وفقًا للصلاحيات، وإذا كان الإزاحة داخل المقطع ضمن النطاق المحدد بطول المقطع. وإلا، فسيتم رفع استثناء متعلق بالأجهزة، مثل خطأ تجزئة الذاكرة .
يمكن أيضًا استخدام القطاعات لتنفيذ الذاكرة الافتراضية . في هذه الحالة، يرتبط كل قطاع بعلامة تشير إلى ما إذا كان موجودًا في الذاكرة الرئيسية أم لا. إذا تم الوصول إلى قطاع غير موجود في الذاكرة الرئيسية، فسيتم طرح استثناء "القطاع غير موجود"، وسيقوم نظام التشغيل بقراءة القطاع إلى الذاكرة من وحدة التخزين الثانوية.
يُعدّ تجزئة الذاكرة إحدى طرق تطبيق حماية الذاكرة . [ 5 ] وتُعدّ التقسيم إلى صفحات طريقة أخرى، ويمكن الجمع بينهما. ولا يكون حجم مقطع الذاكرة ثابتًا في العادة، وقد يصل إلى بايت واحد فقط . [ 6 ]
تم تطبيق تجزئة الذاكرة بعدة طرق على مختلف أنواع الأجهزة، مع أو بدون استخدام الترحيل. لا تتناسب تجزئة ذاكرة Intel x86 مع أي من النموذجين، وسيتم مناقشتها بشكل منفصل أدناه، وكذلك بمزيد من التفصيل في مقال منفصل.
التجزئة بدون ترقيم الصفحات
يرتبط بكل مقطع معلومات تشير إلى موقعه في الذاكرة - قاعدة المقطع . عندما يشير برنامج إلى موقع في الذاكرة، تتم إضافة الإزاحة إلى قاعدة المقطع لتوليد عنوان ذاكرة فعلي.
يتطلب تطبيق الذاكرة الافتراضية على نظام يستخدم التجزئة دون الترحيل تبديل أجزاء كاملة بين الذاكرة الرئيسية ووحدة التخزين الثانوية. عند تبديل جزء، يتعين على نظام التشغيل تخصيص مساحة كافية من الذاكرة المتصلة الحرة لاستيعاب هذا الجزء بالكامل. غالبًا ما ينتج عن عدم كفاية المساحة المتصلة من الذاكرة تجزئة الذاكرة، حتى وإن كانت المساحة الإجمالية كافية.
التجزئة باستخدام الترقيم
بدلاً من موقع الذاكرة، تتضمن معلومات المقطع عنوان جدول الصفحات الخاص به. عندما يشير البرنامج إلى موقع ذاكرة، يُترجم الإزاحة إلى عنوان ذاكرة باستخدام جدول الصفحات. ويمكن توسيع المقطع بتخصيص صفحة ذاكرة إضافية وإضافتها إلى جدول صفحات المقطع.
في نظام يستخدم التجزئة مع الترحيل، يقتصر تطبيق الذاكرة الافتراضية عادةً على نقل الصفحات الفردية ذهابًا وإيابًا بين الذاكرة الرئيسية ووحدة التخزين الثانوية، على غرار نظام غير مجزأ ومُرحّل. يمكن أن تتواجد صفحات المقطع في أي مكان في الذاكرة الرئيسية، ولا يشترط أن تكون متجاورة. ينتج عن ذلك عادةً تقليل حجم عمليات الإدخال/الإخراج بين الذاكرة الرئيسية ووحدة التخزين الثانوية، وبالتالي تقليل تجزئة الذاكرة.
تاريخ
كان حاسوب Burroughs Corporation B5000 من أوائل الحواسيب التي طبقت تجزئة الذاكرة، وربما كان أول حاسوب تجاري يوفر ذاكرة افتراضية [ 7 ] تعتمد على التجزئة. زُوّد B5000 بجدول معلومات القطاعات يُسمى جدول مرجع البرنامج (PRT)، والذي يُستخدم لتحديد ما إذا كان القطاع المقابل موجودًا في الذاكرة الرئيسية، وللحفاظ على عنوانه الأساسي وحجمه. [ 8 ] كما طبق حاسوب B6500 اللاحق التجزئة أيضًا؛ ولا يزال إصدار من بنيته مستخدمًا حتى اليوم في خوادم Unisys ClearPath Libra.
تم تصميم جهاز الكمبيوتر GE 645 ، وهو نسخة معدلة من جهاز GE-635 مع إضافة دعم التجزئة والترقيم، في عام 1964 لدعم Multics .
بدأت شركة Intel iAPX 432 [ 9 ] في عام 1975، وحاولت تنفيذ بنية مجزأة حقيقية مع حماية الذاكرة على المعالج الدقيق.
دعمت معالجات Intel i960 من طراز 960MX تعليمات التحميل والتخزين، حيث كان المصدر أو الوجهة عبارة عن "واصف وصول" لكائن ما، وإزاحة داخل هذا الكائن. وكان واصف الوصول موجودًا في سجل 32 بت، بينما حُسبت الإزاحة من إزاحة أساسية في السجل التالي، ومن إزاحة إضافية، واختياريًا، من سجل فهرس مُحدد في التعليمات. يحتوي واصف الوصول على بتات أذونات وفهرس كائن 26 بت؛ وفهرس الكائن هو فهرس في جدول واصفات الكائنات، يُحدد نوع الكائن، وطوله، وعنوانه الفعلي، وجدول صفحاته، أو جدول الصفحات ذي المستوى الأعلى في حالة جدول صفحات ثنائي المستوى، وذلك حسب نوع الكائن. [ 10 ]
تستخدم أجهزة الكمبيوتر Prime و Stratus و Apollo و IBM System/38 و IBM AS/400 (بما في ذلك IBM i ) تجزئة الذاكرة.
أمثلة
أدخلت شركة Burroughs تقنية التجزئة في جهاز B5000 ، ثم تبعتها أجهزة B5500 وB5700 المتوافقة.
قام جهاز B6500 اللاحق باستبدال جدول مرجع البرنامج (PRT) بمجموعة Saguaro ، وغير تنسيقات كلمات التحكم، وغير تنسيقات الواصفات ، وغير آلية الإشارة إلى كلمة تحكم أو واصف.
B5000 و B5500 و B5700
يبلغ طول الكلمات في B5000 وB5500 وB5700 ثمانية وأربعين بتًا. [ 11 ] تحتوي الواصفات على البت العلوي مُفعّلًا في الكلمة. وتوجد إما في جدول مرجع البرنامج (PRT) أو في المكدس، وتحتوي على بت وجود يُشير إلى ما إذا كانت البيانات موجودة في الذاكرة. وهناك واصفات بيانات وواصفات برنامج مُختلفة. [ 11 ] : 4-2–4-4
B6500 وB7500 وما يليها
تحتوي الكلمات في B6500 وما يليها على 48 بتًا من البيانات و3 بتات للعلامات. [ 12 ] : 2-1 تشير بتات العلامات إلى نوع البيانات الموجودة في الكلمة؛ وهناك عدة أنواع من الواصفات، يُشار إليها بقيم بتات العلامات المختلفة. [ 12 ] : 6-5–6-10 توجد كلمات التحكم والواصفات في مكدس Saguaro. يمكن تقسيم أجزاء المصفوفة إلى صفحات .
يشمل هذا الخط طرازات B6500 وB6700 وB7700 وB6800 وB6900 وB5900، بالإضافة إلى أجهزة Burroughs وUnisys من سلسلة A، وأنظمة Clearpath MCP الحالية (Libra). وعلى الرغم من بعض التحسينات التي طرأت على مر السنين، ولا سيما التطورات في مجال الأجهزة، إلا أن البنية لم تتغير كثيرًا. فقد بقي نظام التجزئة كما هو، انظر الذاكرة المجزأة .
معمارية Multics
بنية S/370
في طرازات IBM System/370 [ أ ] المزودة بوحدة تخزين افتراضية [ 13 ] [ 14 ] (DAT) وعناوين 24 بت، يُحدد سجل التحكم 0 حجم مقطع إما 64 كيلوبايت أو 1 ميجابايت، وحجم صفحة إما 2 كيلوبايت أو 4 كيلوبايت؛ ويحتوي سجل التحكم 1 على مُعرِّف جدول المقاطع (STD)، الذي يُحدد طول جدول المقاطع وعنوانه الحقيقي. يحتوي كل إدخال في جدول المقاطع على موقع جدول الصفحات، وطول جدول الصفحات، وبتة غير صالحة. لاحقًا، وسّعت IBM حجم العنوان إلى 31 بت، وأضافت بتين إلى إدخالات جدول المقاطع.
- بت حماية القطاع
- المقطع للقراءة فقط
- بت القطاع المشترك
- يتم مشاركة هذا الجزء بين مساحات العناوين؛ يتم ضبط هذه البتة لتحسين استخدام ذاكرة الترجمة السريعة (TLB).
تتضمن كلٌّ من تطبيقات DAT من IBM ذاكرة تخزين مؤقتة للترجمة، والتي أطلقت عليها IBM اسم مخزن الترجمة المؤقت (TLB). وبينما تتناول مبادئ التشغيل مخزن الترجمة المؤقت (TLB) بشكل عام، فإن التفاصيل ليست جزءًا من بنية النظام وتختلف من نموذج لآخر.
ابتداءً من معالجات 3031 و3032 و3033 ، قدمت IBM ميزة تُسمى مساحة العناوين المزدوجة [ 14 ] : 5-13–5-17، والتحكم في مساحة العناوين المزدوجة : 5-17–5-20، وآليات ترخيص مساحة العناوين المزدوجة : 5-21–5-24، وترجمة رقم عداد البرنامج [ 15 ] (DAS)، والتي تسمح للبرنامج بالتبديل بين جداول الترجمة لمساحتي عناوين، تُعرفان بمساحة العناوين الأساسية (CR1) ومساحة العناوين الثانوية (CR7)، ونقل البيانات بين هاتين المساحتين باستخدام مفتاح الحماية. تدعم DAS جدول ترجمة لتحويل رقم مساحة العناوين (ASN) ذي 16 بت إلى STD، مع تعليمات مميزة لتحميل STD في CR1 (الأساسية) أو CR7 (الثانوية).
معمارية x86
توفر معالجات x86 المبكرة ، بدءًا من معالج Intel 8086 ، تجزئة بدائية للذاكرة دون أي حماية لها (حيث يكون كل بايت من كل مقطع متاحًا دائمًا لأي برنامج). تسمح سجلات المقاطع ذات 16 بت بإنشاء 65,536 مقطعًا؛ يبدأ كل مقطع عند إزاحة ثابتة تساوي 16 ضعف رقم المقطع؛ وتبلغ دقة عنوان بداية المقطع 16 بايت. يمنح كل مقطع إمكانية الوصول للقراءة والكتابة إلى 64 كيلوبايت (65,536 بايت) من مساحة العناوين (يتم تحديد هذا الحد بواسطة سجلات PC وSP ذات 16 بت؛ ولا يقوم المعالج بفحص الحدود). عند تجاوز قيمة الإزاحة + العنوان 0xFFFFF، يتم الالتفاف إلى 0x00000. يتداخل كل مقطع بحجم 64 كيلوبايت مع المقاطع الـ 4,095 التالية؛ ويمكن تمثيل كل عنوان فعلي بـ 4,096 زوجًا من المقطع والإزاحة. لا يمكن لهذا النظام الوصول إلا إلى 1 ميجابايت (1024 كيلوبايت) من الذاكرة الفعلية (ووحدات الإدخال/الإخراج المُخصصة للذاكرة). (يمكن إضافة ذاكرة موسعة اختيارية عبر وحدات تخزين إضافية، مع إمكانية التحكم البرمجي). وقد أطلقت إنتل لاحقًا على وضع التشغيل الوحيد لهذه المعالجات x86 اسم " الوضع الحقيقي ".
تُضيف معالجات Intel 80286 والإصدارات الأحدث " وضع الحماية 286 "، الذي يحافظ على عنونة 16 بت، ويُضيف تجزئة الذاكرة (بدون ترحيل الصفحات) وحماية الذاكرة لكل مقطع. ولضمان التوافق مع الإصدارات السابقة، تبدأ جميع وحدات المعالجة المركزية x86 في "الوضع الحقيقي"، بنفس المقاطع الثابتة المتداخلة بحجم 64 كيلوبايت، وبدون حماية للذاكرة، ومساحة عناوين فعلية تبلغ 1 ميجابايت فقط، وبعض الاختلافات الطفيفة ( مساحة ذاكرة عالية ، وضع غير حقيقي ). لاستخدام مساحة العناوين الفعلية الكاملة البالغة 24 بت (16 ميجابايت) وميزات وحدة إدارة الذاكرة المتقدمة ، يجب تحويل معالج 80286 أو الإصدارات الأحدث إلى "الوضع المحمي" بواسطة برنامج، عادةً نظام التشغيل أو مُوسِّع DOS . إذا لم يستخدم البرنامج سجلات المقاطع، أو قام فقط بوضع القيم التي يتلقاها من نظام التشغيل فيها، فيمكن تشغيل نفس الكود في الوضع الحقيقي أو الوضع المحمي، ولكن معظم برامج الوضع الحقيقي تُحسب قيمًا جديدة لسجلات المقاطع، مما يُخلّ بهذا التوافق.
تُضيف معالجات Intel i386 والمعالجات اللاحقة " وضع الحماية 386 "، الذي يستخدم عنونة 32 بت، ويحتفظ بتقسيم الذاكرة، ويُضيف خاصية ترحيل الصفحات . في هذه المعالجات، يحتوي جدول القطاعات، بدلاً من الإشارة إلى جدول صفحات القطاع، على عنوان القطاع في الذاكرة الخطية . عند تفعيل ترحيل الصفحات، تُربط العناوين في الذاكرة الخطية بالعناوين الفيزيائية باستخدام جدول صفحات منفصل. لم تستخدم معظم أنظمة التشغيل خاصية تقسيم الذاكرة، واختارت إبقاء العنوان الأساسي في جميع سجلات القطاعات مساويًا للصفر دائمًا، وتوفير حماية الذاكرة لكل صفحة وتبديلها باستخدام ترحيل الصفحات فقط. يستخدم بعضها سجل CS لتوفير حماية لمساحة التنفيذ على المعالجات التي تفتقر إلى بت NX ، أو يستخدم سجلي FS أو GS للوصول إلى التخزين المحلي للخيوط. [ 16 ] [ 17 ]
لا تدعم بنية x86-64 التجزئة في " الوضع الطويل " (وضع 64 بت). [ 18 ] يتم إجبار أربعة من سجلات القطاعات: CS وSS وDS وES على القيمة 0، والحد الأقصى للقيمة هو 2^ 64 . بينما يظل بإمكان سجلي القطاعات FS وGS الاحتفاظ بعنوان أساسي غير صفري. يسمح هذا لأنظمة التشغيل باستخدام هذه القطاعات لأغراض خاصة، مثل التخزين المحلي للخيوط. [ 16 ] [ 17 ]
انظر أيضاً
ملحوظات
- ↑ الموديلات 115، 125، 135، 138، 145، 148، 155 II، 158، 165 II، و168
مراجع
- 1 2 هولت، أناتول و. (1961). "تنظيم البرامج وحفظ السجلات لتخصيص التخزين الديناميكي" . اتصالات رابطة مكائن الحوسبة . 4 (10): 422-431 . doi : 10.1145/366786.366795 . S2CID 18973700 .
- 1 2 إنجلاندر، إيرف (2003). بنية أجهزة الحاسوب وبرمجيات الأنظمة ( الطبعة الثالثة). وايلي. ISBN 0-471-07325-3.
- 1 2 3 جلاسر، إدوارد ل.؛ كولور، جون ف.؛ أوليفر، جي إيه (1965). تصميم نظام حاسوب لتطبيقات المشاركة الزمنية . مؤتمر الحاسوب المشترك لخريف 1965.
- ↑ "1.2 إدارة الذاكرة". تقنية AMD64، بنية AMD64، دليل المبرمج، المجلد 2: برمجة النظام (PDF) . المجلد 2. شركة Advanced Micro Devices. 2018. ص 5.
- ↑ أرباتشي-دوسو، رمزي ح.؛ أرباتشي-دوسو، أندريا س. (2014). "التجزئة" (ملف PDF) . أنظمة التشغيل: ثلاثة أجزاء سهلة . كتب أرباتشي-دوسو.
- ↑ دليل مطوري البرامج لبنيتي Intel 64 و IA-32، المجلد 3 (3A، 3B و 3C): دليل برمجة النظام (PDF) . شركة Intel. 2012. الصفحات 3-13 .
- ↑ ماير، ألاستير جيه دبليو "عمارة بوروز B5000 - بعد 20 عامًا وما زالت متقدمة على عصرها؟" . تم الاسترجاع في 15 مارس 2012 .
- ↑ هايز، جون ب. (1978). هندسة الحاسوب وتنظيمه . ماكجرو هيل. ص 371. ISBN 0-07-027363-4.
- ↑ مقدمة إلى بنية IAPX 432 (ملف PDF) . شركة إنتل. 1981. ص 78.
- ^ الدليل المرجعي لبنية وحدة المعالجة المركزية BiiN (PDF) . بيين. يوليو 1998.
- 1 2 الخصائص التشغيلية للمعالجات الخاصة بجهاز Burroughs B 5000 (ملف PDF) ( الطبعة أ)، ديترويت: Burroughs، 1962، 5000-21005A
- 1 2 دليل مرجعي لأنظمة معالجة المعلومات B6500 (PDF) . بوروز. سبتمبر 1969.
- ↑ "ترجمة العناوين الديناميكية" (ملف PDF) . مبادئ تشغيل نظام IBM System/370 (ملف PDF) . الأنظمة ( الطبعة الرابعة). IBM . سبتمبر 1974. الصفحات 57-68 . GA22-7000-4.
- 1 2 "ترجمة العناوين الديناميكية". مبادئ تشغيل نظام IBM System/370 ( الطبعة الحادية عشرة). IBM. سبتمبر 1987. الصفحات 3-20 – 3-38 . GA22-7000-10.
- ↑ "مساحات العناوين" (ملف PDF) . مبادئ تشغيل بنية IBM System/370 الموسعة (ملف PDF) (الطبعة الثانية ). IBM. يناير 1987. الصفحات 3-13 - 3-14 . SA22-7085-1.
- 1 2 مات بيترك (مايو 2006). "كل ما تحتاج لمعرفته لبدء برمجة أنظمة ويندوز 64 بت" . مايكروسوفت . تم الاسترجاع في 18 أبريل 2023 .
- 1 2 دريبر، أولريش (2013-08-22). "معالجة ELF للتخزين المحلي للخيوط" (PDF) .
- ↑ تقنية AMD64، دليل مبرمج بنية AMD64، المجلد 2: برمجة النظام (ملف PDF) . المجلد 2. شركة Advanced Micro Devices. 2018.
روابط خارجية
- دليل مطوري برامج معمارية إنتل IA-32، المجلد 3A: دليل برمجة النظام . http://www.intel.com/products/processor/manuals/index.htm
- أنظمة التشغيل: المبادئ الداخلية والتصميمية، بقلم ويليام ستالينغز. الناشر: برنتيس هول. رقم ISBN 0-13-147954-7رقم الكتاب المعياري الدولي ( ISBN) 978-0-13-147954-8.
- إدارة الذاكرة
