موضوع مقاله: پیونددهنده | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # پیونددهنده | مقدمه: پیونددهفرهنگ تشریحی کامپیوتر، داریوش فرسایی، ۱۳۷۹ خورشیدی برنامه‌ای کاربردی است که قطعه‌برنامه‌ها (ترجمه شده) و پرونده‌های داده‌ای را برای ایجاد یک برنامهٔ اجرایی با یکدیگر پیوند می‌دهد. | ## بخش 1: پیونددهنده | به این قطعات کوچک که ممکن است به تنهایی قابل اجرا نباشند، آبجکت‌فایل گفته می‌شود. (لینک پویا) برنامه‌های کامپیوتری معمولاً از چندین قطعه یا آبجکت‌فایل تشکیل می‌شوند؛ و معمولاً فایل واحدی به قطعات دیگر ارجاع می‌دهد. لینکر همچنین می‌تواند از آبجکت‌فایل‌های موجود در مجموعه‌ای واحد موسوم به کتابخانه استفاده کند. در محاسبات، یک پیوند دهنده یا ویرایشگر پیوند یک برنامه سودمند رایانه ای است که یک یا چند فایل شیء تولید شده توسط یک گردآورنده را دریافت کرده و آن‌ها را به یک فایل اجرایی تکی، فایل کتابخانه یا یک فایل «شی» دیگر تبدیل می‌کند. یک نسخهٔ ساده‌تر که خروجی خود را مستقیماً در حافظه ثبت می‌کند بارگذار نامیده می‌شود، هر چند بارگذاری به‌طور معمول به عنوان یک فرایند جداگانه در نظر گرفته می‌شود. بررسی اجمالی برنامه‌های کامپیوتری معمولاً شامل چند بخش یا پیمانه هستند؛ این قطعات / پیمانه‌ها نباید شامل یک پرونده شیء تکی باشند و در این‌چنین مواردی با استفاده از نمادها به عنوان نشانی به سایر پیمانه‌ها، که در هنگام پیوند برای اجرا به آدرس‌های حافظه می‌رسند، به یکدیگر مراجعه می‌کنند. به‌طور معمول، یک فایل شیء می‌تواند شامل سه نوع نماد باشد: نمادهای «خارجی» تعریف شده، که گاهی نمادهای «عمومی» یا «ورود» گفته می‌شود و اجازه می‌دهد توسط دیگر پیمانه‌ها فراخوانده شود. نمادهای «خارجی» تعریف نشده، که مرجعی برای دیگر پیمانه‌ها است که این نمادها کجا تعریف شده‌اند. هنگامی که یک برنامه از فایل‌های چند شیء تشکیل شده‌است، پیونددهنده این فایل‌ها را به یک برنامهٔ قابل اجرای یکپارچه تبدیل می‌کند و نمادها را با هم ادغام می‌کند. لینکرها می‌توانند اشیاء را از مجموعه‌ای که کتابخانه یا کتابخانهٔ زمان اجرا نامیده می‌شود بگیرند. آن‌ها فقط شامل پرونده‌هایی هستند که توسط سایر پرونده‌ها یا کتابخانه‌ها اشاره شده‌است. اگرچه ممکن است پیوند کتابخانه یک فرایند تکراری باشد، با پیمانه‌هایی شامل نیاز به اتصال به پیمانه‌های اضافی و غیره. کتابخانه‌ها برای مقاصد مختلف وجود دارند و یک یا چند کتابخانه سیستم معمولاً به صورت پیش فرض پیوند داده شده‌اند. این ممکن است شامل نقل مکان کردن کدی باشد که یک آدرس پایهٔ خاص را به پایگاه دیگری متصل می‌کند. از آنجا که یک گردآورنده به ندرت می‌داند که یک شیء در کجا قرار دارد، اغلب یک مکان پایهٔ ثابت (به عنوان مثال صفر) را در نظر می‌گیرد. نقل مکان کردن کد ماشین ممکن است شامل دوباره هدف‌گیری جهش‌های مطلق، بارها و پایگاه‌ها باشد. | ## بخش 2: پیونددهنده | خروجی اجرایی توسط پیونددهنده ممکن است نیاز به جواز نقل مکان دیگری را داشته باشد، وقتی که در نهایت روی حافظه (درست قبل از اجرا) بارگیری شده‌است. این گذر معمولاً در سخت‌افزار ارائهٔ حافظهٔ مجازی حذف می‌شود: هر برنامه در فضای آدرس خود قرار گرفته می‌شود، بنابراین حتی اگر همهٔ برنامه‌ها در یک آدرس پایهٔ یکسان بارگذاری شوند، هیچ تداخلی وجود ندارد. در برخی از متغیرهای یونیکس، مانند SINTRAN III، فرایند ارائه شده توسط یک پیوند دهنده (سرهم‌بندی فایل‌های شیء در یک برنامه) بارگذاری گفته می‌شد (مانند بارگذاری کد اجرایی بر روی یک فایل). 08/84 علاوه بر این، در برخی از سیستم عامل‌ها، همان برنامه، هر دو عمل ارتباط و بارگذاری یک برنامه را مدیریت می‌کند (پیوند پویا). پیوند پویا بسیاری از محیط‌های سیستم عامل اجازه پیوند پویا را می‌دهند، تا زمانی که یک برنامه اجرا شود، قطعنامه‌های برخی از نمادهای نامشخص را به تعویق انداخته‌است. این به آن معناست که کد اجرایی هنوز حاوی نمادهای نامشخص است، به علاوه یک لیست از اشیاء یا کتابخانه‌هایی که تعاریفی برای آن‌ها ارائه خواهد داد. بارگذاری برنامه این اشیاء / کتابخانه‌ها را نیز بارگذاری می‌کند و پیوند نهایی را انجام می‌دهد. این رویکرد دو مزیت دارد: کتابخانه‌هایی که به‌طور معمول مورد استفاده قرار می‌گیرند (به عنوان مثال کتابخانه‌های استاندارد سیستم) باید فقط در یک مکان ذخیره شوند، نه این‌که در هر فایل اجرایی تکثیر شوند، بنابراین حافظه محدود و فضای دیسک را اشغال می‌کنند. اگر یک نقص در عملکرد یک کتابخانه با جایگزینی کتابخانه اصلاح شود، تمام برنامه‌هایی که آن را استفاده می‌کنند به صورت پویا از اصلاح پس از راه‌اندازی مجدد آن‌ها بهره‌مند خواهند شد. برنامه‌هایی که شامل این تابع با اتصال ثابت بوده‌اند، ابتدا باید دوباره مرتبط شوند. معایبی نیز وجود دارد: پلتفرم شناخته شدهٔ ویندوز با عنوان «جهنم دی‌ال‌ال» یک کتابخانهٔ به‌روزشدهٔ ناسازگار است که اعمالی را که وابسته به نسخهٔ قبلی کتابخانه هستند را مختل می‌کند. یک برنامه همراه با کتابخانه‌ای که از آن استفاده می‌کند ممکن است به عنوان یک بسته (مثلاً به صحت، الزامات اسناد یا عملکرد) گواهی شده باشد، اما نه اگر اجزاء بتوانند جایگزین شوند. (همچنین این مسئله علیه به‌روزرسانی خودکار سیستم عامل در سیستم‌های بحرانی استدلال می‌کند؛ در هر دو مورد سیستم عامل و کتابخانه‌ها بخشی از یک محیط واجد شرایط هستند) پیوند ایستا پیوند ایستا نتیجهٔ این عمل پیونددهنده است که همهٔ برنامه‌های کتابخانهٔ مورد استفاده در برنامه را به تصویر اجرایی کپی می‌کند. این ممکن است نیاز به فضای دیسک و حافظهٔ بیشتری نسبت به پیوند پویا داشته باشد، اما قابل حمل‌تر است، چرا که نیازی به حضور کتابخانه روی سیستم مورد نیازش و در جایی که اجرا می‌شود نیست. پیوند ایستا همچنین «جهنم دی‌ال‌ال» را از بین می‌برد، زیرا هر برنامه دقیقاً نسخه‌هایی از کتابخانه‌های مورد نیاز را فراهم می‌کند که تداخلی با برنامه‌های دیگر ندارند. یک برنامه که فقط چند روال از یک کتابخانه را استفاده می‌کند نیازی به نصب کل کتابخانه ندارد. | ## بخش 3: پیونددهنده | نقل مکان همان‌طور که گردآورنده هیچ اطلاعاتی در مورد طرح اشیاء در خروجی نهایی ندارد، نمی‌تواند از دستورالعمل‌های کوتاه‌تر یا کارآمدتری بهره ببرد که نیازمندی خاصی را جایگزین نشانی یک شی دیگر می‌کند. به عنوان مثال، دستورالعمل پرش می‌تواند یک آدرس مطلق یا یک جرقه از موقعیت فعلی را ارزیابی کند، و جبران ممکن است با طول‌های متفاوت با توجه به فاصله تا هدف بیان شود. با ایجاد محافظانه‌کارانه‌ترین دستورالعمل‌ها (معمولاً بزرگ‌ترین نوع نسبی یا مطلق بسته به بستر) و اضافه کردن نکات سست‌سازی، ممکن است دستورالعمل‌های کوتاه‌تر یا کارآمدتری در طول لینک نهایی جایگزین شود. این مرحله تنها بعد از این‌که تمام اشیاء ورودی خوانده شد و آدرس موقت اختصاص داده شده انجام می‌شود؛ پیونددهندهٔ سست‌ساز پس از آن آدرس مجدد را اعلان می‌کند، که ممکن است به نوبهٔ خود باعث سستی بیشتر شود. به‌طور کلی، توالی‌های جایگزین کوتاه‌تر هستند، که این اجازه می‌دهد این فرایند همواره بهترین راه حل با توجه به نظم ثابت اجسام همگام باشد. اگر این مورد نباشد، سستی می‌تواند تداخل ایجاد کند و پیونددهنده باید مزایای هر دو گزینه را محاسبه کند. در حالی که دستورالعمل سست‌سازی معمولاً در زمان پیوند اتفاق می‌افتد، سست‌سازی پیمانهٔ درونی می‌تواند به عنوان بخشی از روند بهینه‌سازی در زمان گردآوری صورت گیرد. در برخی موارد، سست‌سازی نیز می‌تواند در زمان بارگذاری به عنوان بخشی از روند جابه‌جایی یا همراه با تکنیک‌های حذف پویای کدهای مرده باشد. همان‌طور که از نام نشان می‌دهد یک ویرایشگر پیوند دارای قابلیت اضافی اجازه‌دهی است. علاوه بر این، جایگزینی و / یا حذف بخش‌های برنامه‌های فردی نیز از دیگر قابلیت‌های آن است. سیستم‌های عامل مانند OS / 360 دارای فرمتی برای load-modulesهای اجرایی هستند که حاوی اطلاعات تکمیلی در مورد جزء جزء یک برنامه هستند، به طوری که می‌توان یک بخش خاص و جداگانه برنامه را جایگزین کرد و سایر قسمت‌های برنامه به روز می‌شود تا آدرس‌ها و سایر مراجع قابل انتقال با استفاده از ویرایشگر پیوند به عنوان بخشی از روند، اصلاح می‌شود. یک مزیت این امر آن است که اجازه می‌دهد یک برنامه بدون نیاز به نگه داشتن تمامی پرونده‌های شیء میانجی یا بدون نیاز به گردآوری دوبارهٔ بخش‌هایی از برنامه که تغییر نکرده باشند نگهداری شود. همچنین اجازه می‌دهد به‌روزرسانی برنامه‌ها در قالب فایل‌های کوچک توزیع شود (در اصل عرشه کارت‌ها)، که تنها شامل پیمانهٔ شیء که باید جایگزین شود است. در چنین سیستمی، کد شیء در شکل و فرمت ۸۰ بایت تصاویر کارت پانچ قرار دارد، به طوری که به‌روزرسانی‌ها می‌توانند در یک سیستم با استفاده از آن رسانه معرفی شوند. در نسخه‌های بعدی OS / 360 و در سیستم‌های بعدی، بار-پیمانه‌ها شامل اطلاعات اضافی در مورد نسخه‌های پیمانه‌های اجزای سازنده، برای ایجاد یک مدرک قابل پیگیری از به‌روزرسانی است. اصطلاح «ویرایشگر پیوند» نباید به معنای این باشد که برنامه در یک حالت تعاملی کاربر مانند یک ویرایشگر متن عمل می‌کند. | ## جمع‌بندی | این برنامه برای اجرای بیتی در نظر گرفته شده‌است؛ دستورهای ویرایش توسط کاربر در فایل‌های متوالی سازماندهی شده مانند کارت‌های پانچ، DASD یا نوار مغناطیسی عرضه می‌شود و نوارها اغلب در هنگام نصب اولیهٔ سیستم عامل استفاده می‌شوند.