نقل (حوسبة)
المحتويات
تعريفًا بالموضوع، النقل هو عملية تعيين عناوين التحميل للرمز المعتمد على الموضع وبيانات البرنامج وتعديل الكود والبيانات لتعكس العناوين المخصصة. قبل ظهور أنظمة العمليات المتعددة، ولا تزال في الكثير من الأنظمة المضمنة، كانت عناوين الكائنات تبدأ بشكل مطلق من موقع معروف، وغالبًا ما تكون صفرًا. نظرًا لأن أنظمة المعالجة المتعددة تربط وتتحول ديناميكيًا بين البرامج، أصبح من الضروري أن تكون قادرًا على نقل الكائنات باستخدام رمز مستقل عن الموضع. عادةً ما يقوم الرابط بإجراء إعادة التوطين جنبًا إلى جنب مع دقة الرمز، وعملية البحث عن الملفات والمكتبات لاستبدال المراجع الرمزية أو أسماء المكتبات بعناوين فعلية قابلة للاستخدام في الذاكرة قبل تشغيل البرنامج. ونتناول فيما يلي مزيدًا من التفاصيل.
من جانب آخر، ويتم نقل عادة عن طريق رابط في وقت الارتباط، ولكن يمكن كذلك أن يتم ذلك في وقت التحميل من قبل الانتقال محمل، أو في وقت التشغيل من قبل برنامج تشغيل نفسه. تتجنب بعض الأبنية النقل تمامًا عن طريق تأجيل تعيين العنوان لوقت التشغيل؛ يُعرف هذا باسم حساب العنوان الصفري.
جدول النقل
وعلى صعيد آخر، في بعض البنى، يعد الإصلاح الذي يتجاوز حدودًا معينة (مثل حدود المقطع) أو الذي لا يتم محاذاته على حدود الكلمة غير قانوني ويتم تمييزه كخطأ بواسطة الرابط.
ومن ناحية أخرى، جدول النقل هو قائمة بالمؤشرات التي أنشأها المترجم (مترجم أو مُجمّع) وخُزِّنَتْ في الكائن أو الملف القابل للتنفيذ. كل إدخال في الجدول، أو "إصلاح"، هو مؤشر لعنوان مطلق في رمز الكائن الذي يجب تغييره عندما يقوم المُحمل بتغيير موقع البرنامج بحيث يشير إلى الموقع الصحيح. صُمِّمَ Fixups لدعم نقل البرنامج كوحدة كاملة. في بعض الحالات، يكون كل إصلاح في الجدول هو نفسه متعلقًا بالعنوان الأساسي صفر، لذلك يجب تغيير الإصلاحات نفسها أثناء تحرك أداة التحميل عبر الجدول.
دوز وا وندوز 16 بت
وعلى صعيد آخر، المؤشرات البعيدة (مؤشرات 32 بت مع مقطع: الإزاحة، تُستعمل لمعالجة مساحة ذاكرة 20 بت 640 كيلوبايت المتاحة لبرامج DOS)، والتي تشير إلى رمز أو بيانات داخل DOS قابل للتنفيذ (EXE)، لا تحتوي على مقاطع مطلقة، لأن يعتمد العنوان الفعلي للرمز / البيانات على مكان تحميل البرنامج في الذاكرة وهذا غير معروف حتى يتم تحميل البرنامج.
علاوةً على ذلك، بدلاً من ذلك، المقاطع هي القيم النسبية في ملف DOS EXE. يجب تصحيح هذه الأجزاء، عندما يتم تحميل الملف القابل للتنفيذ في الذاكرة. يستعمل محمل EXE جدول نقل للعثور على الأجزاء التي تحتاج إلى تعديل.
ويندوز 32 بت
وفي هذا الصدد، بالنسبة إلى كل من مكتبات DLL و EXE التي تشترك في التوزيع العشوائي لتخطيط مساحة العنوان (ASLR) - وهي تقنية لتخفيف الاستغلال تم تقديمها مع نظام التشغيل وندوز فيستا، تصبح جداول إعادة التوطين مرة أخرى إلزامية نظرًا لاحتمال نقل الملف الثنائي ديناميكيًا قبل تنفيذه، على الرغم من أنها لا يزال أول شيء يتم تحميله في مساحة العنوان الافتراضية.
وعلى صعيد آخر، مع أنظمة تشغيل وندوز 32 بت، ليس من الضروري توفير جداول إعادة تحديد موقع لملفات EXE، نظرًا لأنها أول صورة يتم تحميلها في مساحة العنوان الافتراضية، وبالتالي سيتم تحميلها على العنوان الأساسي المفضل لديهم.
تجزئة
كذلك، تُقسم ملفات الكائنات إلى أنواع مختلفة من مقاطع الذاكرة. تتضمن مقاطع المثال مقطع الكود (نص.)، مقطع بيانات مهيأ (بيانات.)، مقطع بيانات غير مهيأ (.bss)، أو غير ذلك.
مثال
من جانب آخر، (د) عند تحميل البرنامج في الذاكرة لتشغيله، يمكن تحميله في مكان آخر غير الموقع المعين من قبل الرابط. يوضح هذا المثال SUBR الآن في الموقع 300. يحتاج العنوان الموجود في تعليمات الانتقال، الآن في 313، إلى إعادة نقله مرة أخرى بحيث يشير إلى الموقع المحدث لـ ST 305. [4 49 هو تمثيل آلة MIX لـ 305].
إضافةً إلى ذلك، (ج) إذا تم ربط SUBR لاحقًا برمز آخر، فقد يتم تخزينه في مكان آخر غير 1. في هذا المثال، يضعه الرابط في الموقع 120. يجب نقل العنوان في تعليمات القفز، والتي هي الآن في موقع 133، للإشارة إلى الموقع الجديد من رمز للبيان ST، الآن 125. [1 61 هو مبين في التعليمات هي رمز الجهاز تمثيل MIX 125].
من جهة ثانية، يستعمل المثال التالي بنية مكس ولغة التجميع مكسال الخاصة بدونالد كانوت المبادئ هي نفسها لأي بنية، رغم أن التفاصيل ستتغير.
وعلى صعيد آخر، (أ) يتم تجميع برنامج SUBR لإنتاج ملف كائن (B)، يظهر ككود الجهاز والمجمع. قد يبدأ المترجم الشفرة المترجمة في موقع عشوائي، وغالبًا ما يكون الموقع 1 كما هو موضح. يحتوي الموقع 13 على رمز الآلة لتعليمات الانتقال إلى العبارة ST في الموقع 5.
مواضيع ذات صلة
(33 pages)
وعلى صعيد آخر، (This "resize" method, named page boundary relocation, could be applied statically to a CP/M-80 disk image using in order to maximize the TPA for programs to run. It was also utilized dynamically by the CP/M debugger Dynamic Debugging Tool (DDT) to relocate itself into higher memory. The same approach was independently developed by Bruce Van Natta of IMS Associates to produce relocatable PL/M code. As paragraph boundary relocation, another variant of this method was later utilized by dynamically HMA self-relocating TSRs like KEYB، SHARE, and NLSFUNC under DR DOS 6.0 and higher. A much more sophisticated and byte-level granular method based on a somewhat similar approach was independently conceived and implemented by Matthias R. Paul and Axel C. Frinke for their dynamic dead-code elimination to dynamically minimize the runtime footprint of resident drivers and TSRs (like FreeKEYB).)
(2+xiv+270+6 pages)
أنظمة شبيهة بيونكس
في هذا الإطار، يسمح التنسيق القابل للتنفيذ والصيغة القابلة للربط (ELF) وتنسيق المكتبة المشتركة الذي تستعمله أغلب الأنظمة الشبيهة بيونكس بتحديد عدة أنواع من إعادة التوطين.
نظام التشغيل وندوز 64 بت
وفي السياق ذاته، عند تشغيل ثنائيات 64 بت أصلية على نظام التشغيل وندوز فيستا والإصدارات الأحدث، فإن ASLR إلزامي، وبالتالي لا يمكن حذف أقسام النقل من قبل المترجم.
إجراء النقل
في هذا الإطار، يقرأ الرابط معلومات المقطع وجداول النقل في ملفات الكائنات وينفذ عملية النقل عن طريق:
من جانب آخر، بالإشارة إلى جدول النقل للتعديل الرموز بحيث تشير إلى الصحيح عناوين وقت التشغيل.
من جهة ثانية، تعيين عناوين وقت تشغيل فريدة لكل قسم وكل رمز، مع إعطاء جميع التعليمات البرمجية (الوظائف) والبيانات (المتغيرات العامة) عناوين وقت تشغيل فريدة
دمج جميع الأجزاء من النوع الشائع في جزء واحد من هذا النوع
📝 هل في هذه المقالة خطأ؟
إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.
ما رأيك في هذه المقالة؟