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

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

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

في بعض أنظمة التشغيل ، مثل Burroughs/Unisys MCP ، [ 2 ] و OS/360 والأنظمة اللاحقة ، [ 3 ] تتم إدارة الذاكرة بواسطة نظام التشغيل. [ ملاحظة 1 ] أما في أنظمة تشغيل أخرى، مثل أنظمة التشغيل الشبيهة بنظام Unix ، فتتم إدارة الذاكرة على مستوى التطبيق.

تصنف إدارة الذاكرة داخل مساحة العنوان بشكل عام إما على أنها إدارة ذاكرة يدوية أو إدارة ذاكرة تلقائية.

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

مثال على التجزئة الخارجية

تتمثل مهمة تلبية طلب تخصيص الذاكرة في تحديد موقع كتلة من الذاكرة غير المستخدمة ذات حجم كافٍ. تُلبى طلبات الذاكرة بتخصيص أجزاء من مجمع كبير [ ملاحظة 2 ] من الذاكرة يُسمى الكومة [ ملاحظة 3 ] أو المخزن الحر . في أي وقت، تكون بعض أجزاء الكومة قيد الاستخدام، بينما تكون أجزاء أخرى "حرة" (غير مستخدمة) وبالتالي متاحة للتخصيصات المستقبلية. في لغة C، تُسمى الدالة التي تُخصص الذاكرة من الكومة ، mallocوتُسمى الدالة التي تأخذ الذاكرة المُخصصة مسبقًا وتُعلمها بأنها "حرة" (ليتم استخدامها في التخصيصات المستقبلية) free. [ ملاحظة 4 ]

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

كفاءة

يمكن أن تؤثر خوارزمية تخصيص الذاكرة الديناميكية المُطبقة بشكل كبير على الأداء. تُوضح دراسة أجرتها شركة ديجيتال إكويبمنت عام 1994 التكاليف الإضافية المترتبة على استخدام مُخصصات ذاكرة متنوعة. وقد بلغ متوسط ​​طول مسار التعليمات اللازم لتخصيص خانة ذاكرة واحدة 52 (كما تم قياسه باستخدام مُحلل أداء على مستوى التعليمات في مجموعة متنوعة من البرامج). [ 1 ]

التطبيقات

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

تخصيص الكتل ذات الحجم الثابت

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

مكعبات الصداقة

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

تخصيص الشرائح

تُخصّص آلية تخصيص الذاكرة هذه مسبقًا أجزاءً من الذاكرة مناسبة لاستيعاب كائنات من نوع أو حجم معين. [ 5 ] تُسمى هذه الأجزاء "ذاكرة التخزين المؤقت"، ولا يحتاج مُخصِّص الذاكرة إلا إلى تتبع قائمة بمساحات ذاكرة التخزين المؤقت الفارغة. عند إنشاء كائن، يتم استخدام أيٍّ من مساحات ذاكرة التخزين المؤقت الفارغة، وعند تدمير كائن، تُضاف مساحة إلى قائمة مساحات ذاكرة التخزين المؤقت الفارغة. تُخفف هذه التقنية من تجزئة الذاكرة، وهي فعّالة لعدم الحاجة إلى البحث عن جزء مناسب من الذاكرة، إذ تكفي أي مساحة مفتوحة.

تخصيص المكدس

تُطبّق العديد من الأنظمة الشبيهة بنظام يونكس، بالإضافة إلى نظام مايكروسوفت ويندوز، دالةً تُسمى ` allocaalloca` لتخصيص ذاكرة المكدس ديناميكيًا بطريقة مشابهة للتخصيص القائم على الكومة malloc. يقوم المُصرّف عادةً بترجمتها إلى تعليمات مُضمّنة تُعالج مؤشر المكدس. [ 6 ] على الرغم من عدم الحاجة إلى تحرير الذاكرة المُخصصة يدويًا بهذه الطريقة، حيث يتم تحريرها تلقائيًا عند انتهاء الدالة المُستدعاة alloca، إلا أن هناك خطرًا لحدوث تجاوز سعة المكدس. ولأن `alloca` عبارة عن توسيع مُخصّص يُستخدم في العديد من الأنظمة ولكنه غير موجود في معيار POSIX أو معيار لغة C، فإن سلوكه في حالة تجاوز سعة المكدس غير مُحدد.

يوجد إصدار أكثر أمانًا من دالة alloca يُسمى _malloca، والذي يُبلغ عن الأخطاء، على نظام التشغيل مايكروسوفت ويندوز. ويتطلب هذا الإصدار استخدام مكتبة gnulib _freea. [ 7 ] توفر مكتبة gnulib واجهة مكافئة، ولكن بدلًا من طرح استثناء SEH عند تجاوز سعة الذاكرة، فإنها تُحيل الأمر إلى دالة malloc عند اكتشاف حجم كبير جدًا. [ 8 ] يمكن محاكاة ميزة مماثلة باستخدام المحاسبة اليدوية وفحص الحجم، كما هو الحال في استخدامات دالة alloca alloca_accountفي مكتبة glibc. [ 9 ]

إدارة الذاكرة الآلية

تُعد الإدارة السليمة للذاكرة في التطبيق مشكلة صعبة، وقد تم ابتكار العديد من الاستراتيجيات المختلفة للتعامل مع إدارة الذاكرة.

الإدارة التلقائية لمتغيرات مكدس الاستدعاءات

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

جمع القمامة

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

عدّ المراجع

عدّ المراجع هو استراتيجية لاكتشاف أن الذاكرة لم تعد قابلة للاستخدام من قِبل البرنامج، وذلك من خلال الاحتفاظ بعداد لعدد المؤشرات المستقلة التي تشير إلى الذاكرة. عندما يشير مؤشر جديد إلى جزء من الذاكرة، يُفترض أن يزيد المبرمج قيمة العداد. وعندما يتغير موقع المؤشر، أو عندما يتوقف عن الإشارة إلى أي منطقة، أو عندما يتم تحريره، يجب أن ينخفض ​​العداد. وعندما يصل العداد إلى الصفر، تُعتبر الذاكرة غير مستخدمة ويتم تحريرها. تتطلب بعض أنظمة عدّ المراجع تدخل المبرمج، بينما يتم تنفيذ بعضها الآخر تلقائيًا بواسطة المُصرّف. من عيوب عدّ المراجع إمكانية تكوّن مراجع دائرية ، مما يؤدي إلى تسرب الذاكرة. يمكن التخفيف من هذه المشكلة إما بإضافة مفهوم " المرجع الضعيف " (وهو مرجع لا يشارك في عدّ المراجع، ولكنه يُخطر عندما تصبح المنطقة التي يشير إليها غير صالحة)، أو بدمج عدّ المراجع مع جمع البيانات المهملة.

مجموعات الذاكرة

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

أنظمة ذات ذاكرة افتراضية

الذاكرة الافتراضية هي طريقة لفصل تنظيم الذاكرة عن المكونات المادية. تعمل التطبيقات على الذاكرة عبر عناوين افتراضية . كل محاولة من التطبيق للوصول إلى عنوان ذاكرة افتراضية معين تؤدي إلى ترجمة هذا العنوان إلى عنوان فعلي . [ 10 ] وبهذه الطريقة، تتيح إضافة الذاكرة الافتراضية تحكمًا دقيقًا في أنظمة الذاكرة وطرق الوصول إليها.

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

على الرغم من أن الذاكرة المخصصة لعمليات محددة تكون عادةً معزولة، إلا أن العمليات قد تحتاج أحيانًا إلى تبادل المعلومات. وتُعد الذاكرة المشتركة إحدى أسرع تقنيات التواصل بين العمليات .

تُصنف الذاكرة عادةً حسب معدل الوصول إلى الذاكرة الأساسية والذاكرة الثانوية . وتتولى أنظمة إدارة الذاكرة، من بين عمليات أخرى، نقل المعلومات بين هذين المستويين من الذاكرة.

إدارة الذاكرة في أنظمة Burroughs/Unisys MCP [ 2 ]

يدير نظام التشغيل موارد متنوعة في نظام الحوسبة. ويُعدّ نظام الذاكرة الفرعي عنصر النظام المسؤول عن إدارة الذاكرة، حيث يجمع بين موارد الذاكرة المادية وبرنامج نظام التشغيل الذي يدير هذه الموارد.

يدير نظام الذاكرة الذاكرة الفعلية والذاكرة الافتراضية للنظام (وكلاهما جزء من موارد الأجهزة). تعمل الذاكرة الافتراضية على توسيع الذاكرة الفعلية باستخدام مساحة إضافية على جهاز طرفي، عادةً ما يكون قرصًا. يتولى نظام الذاكرة مسؤولية نقل التعليمات والبيانات بين الذاكرة الرئيسية والذاكرة الافتراضية في عملية تُعرف بالتراكب. كان بوروز أول من طبّق الذاكرة الافتراضية تجاريًا (على الرغم من تطويرها في جامعة مانشستر لحاسوب فيرانتي أطلس)، وقد دمج الذاكرة الافتراضية مع تصميم نظام B5000 منذ البداية (عام 1961) دون الحاجة إلى وحدة إدارة ذاكرة خارجية (MMU). [ 11 ] : 48

يتولى نظام الذاكرة الفرعي مسؤولية ربط الطلبات المنطقية لكتل ​​الذاكرة بأجزاء الذاكرة الفيزيائية (القطاعات) الموجودة في قائمة القطاعات الحرة. تُدار كل كتلة مُخصصة بواسطة مُعرِّف القطاع، [ 12 ] وهو كلمة تحكم خاصة تحتوي على بيانات وصفية ذات صلة بالقطاع، بما في ذلك العنوان والطول ونوع الجهاز، بالإضافة إلى بتة "الوجود" التي تُشير إلى ما إذا كانت الكتلة موجودة في الذاكرة الرئيسية أم يجب تحميلها من العنوان المُحدد في المُعرِّف.

تُعدّ المُعرّفات أساسيةً لضمان سلامة وأمان الذاكرة، بحيث لا يمكن للعمليات تجاوز أو نقص سعة الكتلة المُشار إليها (المعروفة باسم تجاوز سعة المخزن المؤقت). وتُعتبر المُعرّفات كلمات تحكم محمية لا يمكن التلاعب بها إلا لعناصر مُحددة من نظام التشغيل MCP (يتم تفعيلها بواسطة توجيه الكتلة UNSAFE في NEWP ).

يصف دونالد كنوث نظامًا مشابهًا في القسم 2.5 "تخصيص التخزين الديناميكي" من كتاب "الخوارزميات الأساسية" .

إدارة الذاكرة في نظام التشغيل OS/360 والأنظمة اللاحقة

لا يدعم نظام IBM System/360 الذاكرة الافتراضية. [ ملاحظة 5 ] يُمكن عزل الذاكرة الخاصة بالمهام باستخدام مفاتيح الحماية ، حيث يتم تخصيص مفتاح مختلف لكل مهمة، 0 للمشرف أو من 1 إلى 15. إدارة الذاكرة في نظام التشغيل OS/360 هي وظيفة للمشرف . يتم طلب التخزين باستخدام GETMAINالماكرو وتحريره باستخدام FREEMAINالماكرو، مما يستدعي استدعاء المشرف ( SVC ) لتنفيذ العملية.

في نظام التشغيل OS/360، تختلف التفاصيل حسب كيفية إنشاء النظام ، على سبيل المثال، بالنسبة لـ PCP و MFT و MVT .

في نظام التشغيل OS/360 MVT، يعتمد تخصيص الذاكرة الفرعية داخل منطقة المهمة أو منطقة قائمة انتظار النظام المشتركة (SQA) على مجموعات فرعية ، وهي مناطق بحجم مضاعفات 2  كيلوبايت - وهو حجم المنطقة المحمية بمفتاح حماية. تُرقّم المجموعات الفرعية من 0 إلى 255. [ 13 ] داخل المنطقة، تُخصص للمجموعات الفرعية إما حماية تخزين المهمة أو مفتاح المشرف، وهو المفتاح 0. تتلقى المجموعات الفرعية من 0 إلى 127 مفتاح المهمة. في البداية، تُنشأ المجموعة الفرعية صفر فقط، وتُلبى جميع طلبات تخزين المستخدم من المجموعة الفرعية صفر، ما لم يُحدد مفتاح آخر في طلب الذاكرة. تُنشأ المجموعات الفرعية من 250 إلى 255 بناءً على طلبات الذاكرة التي يُقدمها المشرف نيابةً عن المهمة. يُخصص المفتاح 0 لمعظم هذه المجموعات، بينما يحصل عدد قليل منها على مفتاح المهمة. أرقام المجموعات الفرعية مهمة أيضًا في MFT، على الرغم من أن التفاصيل أبسط بكثير. [ 14 ] يستخدم MFT أقسامًا ثابتة قابلة لإعادة التعريف بواسطة المشغل بدلاً من المناطق الديناميكية، ويحتوي PCP على قسم واحد فقط.

يتم ربط كل مجموعة فرعية بقائمة من كتل التحكم التي تحدد كتل الذاكرة المخصصة وغير المخصصة داخل المجموعة الفرعية. يتم تخصيص الذاكرة إما بإيجاد مساحة خالية ذات حجم كافٍ، أو بتخصيص كتل إضافية في المجموعة الفرعية، حتى يصل حجم منطقة المهمة. من الممكن تحرير كل أو جزء من مساحة الذاكرة المخصصة. [ 15 ]

تتشابه تفاصيل نظام التشغيل OS/VS1 [ 16 ] مع تفاصيل MFT وMVT؛ أما تفاصيل نظام التشغيل OS/VS2 فتتشابه مع تفاصيل MVT، باستثناء أن حجم الصفحة يبلغ 4 كيلوبايت. وبالنسبة لكل من نظامي التشغيل OS/VS1 وOS/VS2، فإن منطقة قائمة انتظار النظام المشتركة (SQA) غير قابلة للترحيل.

في نظام MVS، تتضمن مساحة العناوين [ 17 ] منطقة مشتركة إضافية قابلة للتقسيم، وهي منطقة التخزين المشتركة (CSA)، ومنطقتين خاصتين إضافيتين، هما منطقة قائمة انتظار النظام المحلي غير القابلة للتقسيم (LSQA) ومنطقة عمل النظام القابلة للتقسيم (SWA). كما أن مفاتيح التخزين من 0 إلى 7 محجوزة جميعها لاستخدام التعليمات البرمجية ذات الامتيازات.

انظر أيضاً

ملحوظات

  1. ومع ذلك، قد تقوم بيئة التشغيل لمعالج اللغة بتقسيم الذاكرة التي يتم الحصول عليها ديناميكيًا من نظام التشغيل، على سبيل المثال، لتنفيذ مكدس.
  2. في بعض أنظمة التشغيل، على سبيل المثال، OS/360 ، يمكن تقسيم مساحة التخزين الحرة بطرق مختلفة، على سبيل المثال، المجموعات الفرعية في OS/360 ، أسفل الخط، وأعلى الخط، وأعلى الشريط في z/OS .
  3. لا ينبغي الخلط بينها وبين بنية بيانات الكومة غير ذات الصلة .
  4. يمكن إيجاد تطبيق مبسط لهاتين الوظيفتين في مقال "داخل إدارة الذاكرة". [ 4 ]
  5. باستثناء الطراز 67

مراجع

  1. 1 2 ديتليفز، د.؛ دوسر، أ.؛ زورن، ب. (يونيو 1994). "تكاليف تخصيص الذاكرة في برامج C وC++ الكبيرة" (ملف PDF) . البرمجيات: الممارسة والخبرة . 24 (6): 527-542 . CiteSeerX 10.1.1.30.3073 . doi : 10.1002/spe.4380240602 . S2CID 14214110 .  
  2. 1 2 "إدارة الذاكرة باستخدام Unisys MCP" . دليل عمليات النظام . Unisys .
  3. "تخصيص مساحة التخزين الرئيسية" (ملف PDF) . مفاهيم ومرافق نظام التشغيل IBM/360 (ملف PDF) . مكتبة مراجع أنظمة IBM ( الطبعة الأولى). شركة IBM. 1965. صفحة 74. تم الاطلاع عليه في 3 أبريل 2019 .  
  4. جوناثان بارتليت. "داخل إدارة الذاكرة" . IBM DeveloperWorks .
  5. سيلبرشاتز، أبراهام ؛ جالفين، بيتر ب. (2004). مفاهيم أنظمة التشغيل . وايلي. ISBN 0-471-69466-5.
  6. دليل مبرمج لينكس – وظائف المكتبةalloca(3)  
  7. "_malloca" . وثائق مايكروسوفت CRT . 26 أكتوبر 2022.
  8. "gnulib/malloca.h" . GitHub . تم الاطلاع عليه بتاريخ 24 نوفمبر 2019 .
  9. "glibc/include/alloca.h" . مرايا بيرين مينور. 23 نوفمبر 2019.
  10. تانينباوم، أندرو س. (1992). أنظمة التشغيل الحديثة . إنجلوود كليفس، نيوجيرسي: برنتيس هول. ص 90. ISBN  0-13-588187-0.
  11. وايشوف، ريتشارد. "قصص عن جهاز B5000 والأشخاص الذين كانوا هناك" (ملف PDF) . متحف تاريخ الحاسوب .
  12. الوصف (ملف PDF) . شركة بوروز . فبراير 1961.
  13. OS360Sup ، الصفحات 82-85 . 
  14. OS360Sup ، ص 82 . 
  15. منطق البرنامج: مشرف MVT لنظام التشغيل IBM System/360 (ملف PDF) . شركة IBM. مايو 1973. الصفحات 107-137 . تم الاطلاع عليه في 3 أبريل 2019 . 
  16. OSVS1Dig ، ص 2.37-2.39 .
  17. "تخطيط التخزين الافتراضي" (ملف PDF) . مقدمة إلى نظام التشغيل/VS2 الإصدار 2 (ملف PDF) . الأنظمة ( الطبعة الأولى). IBM . مارس 1973. ص 37. GC28-0661-1 . تم الاطلاع عليه في 15 يوليو 2024 .  

فهرس

OS360Sup
إصدار نظام التشغيل 21، خدمات مشرف نظام التشغيل IBM System/360 وتعليمات الماكرو (ملف PDF) . مكتبة مراجع أنظمة IBM ( الطبعة الثامنة). IBM . سبتمبر 1974. GC28-6646-7.
OSVS1Dig
دليل مرجعي للمبرمجين لنظام التشغيل OS/VS1، الإصدار 6 (ملف PDF) . الأنظمة (الطبعة السادسة ). شركة IBM . 15 سبتمبر 1976. GC24-5091-5 مع TNLs.