From Wikipedia, the free encyclopedia
پیوندده[۱] (به انگلیسی: linker) برنامهای کاربردی است که قطعهبرنامهها (ترجمه شده) و پروندههای دادهای را برای ایجاد یک برنامهٔ اجرایی با یکدیگر پیوند میدهد. این برنامه میتواند کارهای دیگری هم انجام دهد مثلاً ایجاد کتابخانهها.
به این قطعات کوچک که ممکن است به تنهایی قابل اجرا نباشند، آبجکتفایل گفته میشود.
در سکوهای یونیکس پیوندده را اکثراً Loader مینامند.[۲] این نامگذاری برای قائل شدن تفاوتی بین زمان اجرا یا زمان کامپایل پروسهاست. البته در بعضی سیستمعاملها این دو کار توسط یک برنامه انجام میشود. (لینک پویا)
برنامههای کامپیوتری معمولاً از چندین قطعه یا آبجکتفایل تشکیل میشوند؛ و معمولاً فایل واحدی به قطعات دیگر ارجاع میدهد.
لینکر همچنین میتواند از آبجکتفایلهای موجود در مجموعهای واحد موسوم به کتابخانه استفاده کند.
در محاسبات، یک پیوند دهنده یا ویرایشگر پیوند یک برنامه سودمند رایانه ای است که یک یا چند فایل شیء تولید شده توسط یک گردآورنده را دریافت کرده و آنها را به یک فایل اجرایی تکی، فایل کتابخانه یا یک فایل «شی» دیگر تبدیل میکند.
یک نسخهٔ سادهتر که خروجی خود را مستقیماً در حافظه ثبت میکند بارگذار نامیده میشود، هر چند بارگذاری بهطور معمول به عنوان یک فرایند جداگانه در نظر گرفته میشود.[۳]
برنامههای کامپیوتری معمولاً شامل چند بخش یا پیمانه هستند؛ این قطعات / پیمانهها نباید شامل یک پرونده شیء تکی باشند و در اینچنین مواردی با استفاده از نمادها به عنوان نشانی به سایر پیمانهها، که در هنگام پیوند برای اجرا به آدرسهای حافظه میرسند، به یکدیگر مراجعه میکنند. بهطور معمول، یک فایل شیء میتواند شامل سه نوع نماد باشد:
برای اکثر گردآورندهها، هر فایل شیء، نتیجهٔ گردآوری یک فایل کد منبع ورودی است. هنگامی که یک برنامه از فایلهای چند شیء تشکیل شدهاست، پیونددهنده این فایلها را به یک برنامهٔ قابل اجرای یکپارچه تبدیل میکند و نمادها را با هم ادغام میکند.
لینکرها میتوانند اشیاء را از مجموعهای که کتابخانه یا کتابخانهٔ زمان اجرا نامیده میشود بگیرند. اکثر پیونددهندهها کل کتابخانه در خروجی را شامل نمیشوند. آنها فقط شامل پروندههایی هستند که توسط سایر پروندهها یا کتابخانهها اشاره شدهاست. اگرچه ممکن است پیوند کتابخانه یک فرایند تکراری باشد، با پیمانههایی شامل نیاز به اتصال به پیمانههای اضافی و غیره. کتابخانهها برای مقاصد مختلف وجود دارند و یک یا چند کتابخانه سیستم معمولاً به صورت پیش فرض پیوند داده شدهاند.
پیونددهنده همچنین وظیفه مرتب کردن اشیا در فضای نشانی برنامه را بر عهده دارد. این ممکن است شامل نقل مکان کردن کدی باشد که یک آدرس پایهٔ خاص را به پایگاه دیگری متصل میکند. از آنجا که یک گردآورنده به ندرت میداند که یک شیء در کجا قرار دارد، اغلب یک مکان پایهٔ ثابت (به عنوان مثال صفر) را در نظر میگیرد. نقل مکان کردن کد ماشین ممکن است شامل دوباره هدفگیری جهشهای مطلق، بارها و پایگاهها باشد.
خروجی اجرایی توسط پیونددهنده ممکن است نیاز به جواز نقل مکان دیگری را داشته باشد، وقتی که در نهایت روی حافظه (درست قبل از اجرا) بارگیری شدهاست. این گذر معمولاً در سختافزار ارائهٔ حافظهٔ مجازی حذف میشود: هر برنامه در فضای آدرس خود قرار گرفته میشود، بنابراین حتی اگر همهٔ برنامهها در یک آدرس پایهٔ یکسان بارگذاری شوند، هیچ تداخلی وجود ندارد. این پرونده همچنین ممکن است حذف شود در صورتی که اجرایی یک موقعیت مستقل باشد.
در برخی از متغیرهای یونیکس، مانند SINTRAN III، فرایند ارائه شده توسط یک پیوند دهنده (سرهمبندی فایلهای شیء در یک برنامه) بارگذاری گفته میشد (مانند بارگذاری کد اجرایی بر روی یک فایل).[۴] علاوه بر این، در برخی از سیستم عاملها، همان برنامه، هر دو عمل ارتباط و بارگذاری یک برنامه را مدیریت میکند (پیوند پویا).
بسیاری از محیطهای سیستم عامل اجازه پیوند پویا[۵] را میدهند، تا زمانی که یک برنامه اجرا شود، قطعنامههای برخی از نمادهای نامشخص را به تعویق انداختهاست. این به آن معناست که کد اجرایی هنوز حاوی نمادهای نامشخص است، به علاوه یک لیست از اشیاء یا کتابخانههایی که تعاریفی برای آنها ارائه خواهد داد. بارگذاری برنامه این اشیاء / کتابخانهها را نیز بارگذاری میکند و پیوند نهایی را انجام میدهد.
این رویکرد دو مزیت دارد:
معایبی نیز وجود دارد:
پیوند ایستا نتیجهٔ این عمل پیونددهنده است که همهٔ برنامههای کتابخانهٔ مورد استفاده در برنامه را به تصویر اجرایی کپی میکند. این ممکن است نیاز به فضای دیسک و حافظهٔ بیشتری نسبت به پیوند پویا داشته باشد، اما قابل حملتر است، چرا که نیازی به حضور کتابخانه روی سیستم مورد نیازش و در جایی که اجرا میشود نیست. پیوند ایستا همچنین «جهنم دیالال» را از بین میبرد، زیرا هر برنامه دقیقاً نسخههایی از کتابخانههای مورد نیاز را فراهم میکند که تداخلی با برنامههای دیگر ندارند. یک برنامه که فقط چند روال از یک کتابخانه را استفاده میکند نیازی به نصب کل کتابخانه ندارد.[۷]
همانطور که گردآورنده هیچ اطلاعاتی در مورد طرح اشیاء در خروجی نهایی ندارد، نمیتواند از دستورالعملهای کوتاهتر یا کارآمدتری بهره ببرد که نیازمندی خاصی را جایگزین نشانی یک شی دیگر میکند. به عنوان مثال، دستورالعمل پرش میتواند یک آدرس مطلق یا یک جرقه از موقعیت فعلی را ارزیابی کند، و جبران ممکن است با طولهای متفاوت با توجه به فاصله تا هدف بیان شود. با ایجاد محافظانهکارانهترین دستورالعملها (معمولاً بزرگترین نوع نسبی یا مطلق بسته به بستر) و اضافه کردن نکات سستسازی، ممکن است دستورالعملهای کوتاهتر یا کارآمدتری در طول لینک نهایی جایگزین شود. این مرحله تنها بعد از اینکه تمام اشیاء ورودی خوانده شد و آدرس موقت اختصاص داده شده انجام میشود؛ پیونددهندهٔ سستساز[۸] پس از آن آدرس مجدد را اعلان میکند، که ممکن است به نوبهٔ خود باعث سستی بیشتر شود. بهطور کلی، توالیهای جایگزین کوتاهتر هستند، که این اجازه میدهد این فرایند همواره بهترین راه حل با توجه به نظم ثابت اجسام همگام باشد. اگر این مورد نباشد، سستی میتواند تداخل ایجاد کند و پیونددهنده باید مزایای هر دو گزینه را محاسبه کند.
در حالی که دستورالعمل سستسازی معمولاً در زمان پیوند اتفاق میافتد، سستسازی پیمانهٔ درونی میتواند به عنوان بخشی از روند بهینهسازی در زمان گردآوری صورت گیرد. در برخی موارد، سستسازی نیز میتواند در زمان بارگذاری به عنوان بخشی از روند جابهجایی یا همراه با تکنیکهای حذف پویای کدهای مرده باشد.
در IBM System / 360 محیط های اصلی مانند OS / 360،[۹] از جملهz / OS[۱۰]برای رایانههای z / Architecture,[۱۱] این نوع برنامه به عنوان یک ویرایشگر پیوند شناخته میشود. همانطور که از نام نشان میدهد یک ویرایشگر پیوند دارای قابلیت اضافی اجازهدهی است. علاوه بر این، جایگزینی و / یا حذف بخشهای برنامههای فردی نیز از دیگر قابلیتهای آن است. سیستمهای عامل مانند OS / 360 دارای فرمتی برای load-modulesهای اجرایی هستند که حاوی اطلاعات تکمیلی در مورد جزء جزء یک برنامه هستند، به طوری که میتوان یک بخش خاص و جداگانه برنامه را جایگزین کرد و سایر قسمتهای برنامه به روز میشود تا آدرسها و سایر مراجع قابل انتقال با استفاده از ویرایشگر پیوند به عنوان بخشی از روند، اصلاح میشود.
یک مزیت این امر آن است که اجازه میدهد یک برنامه بدون نیاز به نگه داشتن تمامی پروندههای شیء میانجی یا بدون نیاز به گردآوری دوبارهٔ بخشهایی از برنامه که تغییر نکرده باشند نگهداری شود. همچنین اجازه میدهد بهروزرسانی برنامهها در قالب فایلهای کوچک توزیع شود (در اصل عرشه کارتها)، که تنها شامل پیمانهٔ شیء که باید جایگزین شود است. در چنین سیستمی، کد شیء در شکل و فرمت ۸۰ بایت تصاویر کارت پانچ قرار دارد، به طوری که بهروزرسانیها میتوانند در یک سیستم با استفاده از آن رسانه معرفی شوند. در نسخههای بعدی OS / 360 و در سیستمهای بعدی، بار-پیمانهها شامل اطلاعات اضافی در مورد نسخههای پیمانههای اجزای سازنده، برای ایجاد یک مدرک قابل پیگیری از بهروزرسانی است.
اصطلاح «ویرایشگر پیوند» نباید به معنای این باشد که برنامه در یک حالت تعاملی کاربر مانند یک ویرایشگر متن عمل میکند. این برنامه برای اجرای بیتی در نظر گرفته شدهاست؛ دستورهای ویرایش توسط کاربر در فایلهای متوالی سازماندهی شده مانند کارتهای پانچ، DASD یا نوار مغناطیسی عرضه میشود و نوارها اغلب در هنگام نصب اولیهٔ سیستم عامل استفاده میشوند.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.