الربط والتحميل في أنظمة التشغيل Linking and Loading in Operating Systems - نسخة قابلة للطباعة +- الفريق العربي للهندسة العكسية (https://www.at4re.net/f) +-- قسم : منتديات البرمجة - Programming Forums (https://www.at4re.net/f/forum-5.html) +--- قسم : قسم البرمجة العام - General Programming Section (https://www.at4re.net/f/forum-15.html) +--- الموضوع : الربط والتحميل في أنظمة التشغيل Linking and Loading in Operating Systems (/thread-4023.html) |
الربط والتحميل في أنظمة التشغيل Linking and Loading in Operating Systems - R333T - 19-05-2024 Linking:
إن تنفيذ البرامج في نواة لينكس يبدأ عند استدعاء النظام exec(). هذا الاستدعاء يأمر النواة بتشغيل برنامج جديد داخل العملية الحالية، مما يؤدي إلى كتابة السياق الحالي بالتنفيذ بسياق البرنامج الجديد. أول مهمة لهذه الخدمة هي التحقق من أن العملية المستدعية تملك حقوق الوصول للملف المراد تنفيذه. بمجرد التحقق من ذلك، تستدعي النواة روتين التحميل لبدء تشغيل البرنامج. لا يقوم روتين التحميل بالضرورة بتحميل محتويات ملف البرنامج في الذاكرة الفعلية، ولكنه يقوم على الأقل بإعداد خريطة البرنامج في الذاكرة الافتراضية. لا يوجد روتين واحد في لينكس لتحميل برنامج جديد. بدلاً من ذلك، يحتفظ لينكس بجدول من وظائف التحميل المحتملة، ويمنح كل وظيفة فرصة لتجربة تحميل الملف المحدد عند استدعاء النظام exec(). السبب الأساسي لهذا الجدول هو أنه بين إصداري 1.0 و 1.2 من نواة لينكس، تغير التنسيق القياسي للملفات الثنائية في لينكس. كانت النواة الأقدم تدعم تنسيق a.out للملفات الثنائية —وهو تنسيق بسيط نسبيًا شائع في أنظمة UNIX القديمة. الأنظمة الحديثة في لينكس تستخدم تنسيق ELF الأكثر حداثة، والمدعوم الآن من معظم تطبيقات UNIX الحالية. يحتوي تنسيق ELF على عدد من المزايا مقارنةً بـ a.out، بما في ذلك المرونة وقابلية التمدد. يمكن إضافة أقسام جديدة إلى الملف الثنائي ELF (مثل إضافة معلومات تصحيح إضافية) دون أن تتسبب في ارتباك روتين التحميل. من خلال السماح بتسجيل وظائف تحميل متعددة، يمكن للينكس دعم تنسيقي ELF و a.out في نظام تشغيل واحد. لمزيد من المعلومات، انظر الموضوع المتضمن في الكتاب : مفهوم أنظمة التشغيل، الإصدار العاشر Operating System C0nc€pts, 10th €dition |