ساختار استاتیک

از ویکی‌پدیا، دانشنامهٔ آزاد

ساختار استاتیک، یک نسخه کامپایل شده از یک برنامه است که به طور ایستا (استاتیک) با کتابخانه‌ها پیوند خورده‌است.

عملیات پیوند[ویرایش]

در علوم کامپیوتر، پیوند (لینک شدن) به معنای گرفتن یک یا چند شیء تولید شده توسط کامپایلرها و جمع‌آوری آنها در یک برنامه اجرایی واحد است. این اشیاء، ماژول‌های برنامه ای هستند که شامل کد ماشین و تعاریف نماین هستند که در دو نوع ارائه می‌شوند:

  • نمادهای تعریف شده یا استخراج شده، توابع یا متغیرهایی هستند که در ماژول نشان داده شده توسط شیء وجود دارند و باید برای استفاده در سایر ماژول‌ها در دسترس باشند.
  • نمادهای تعریف نشده یا وارد شده، توابع یا متغیرهایی هستند که توسط این شی فراخوانی یا به آنها ارجاع داده می‌شود، اما تعریف نشده‌اند.

سپس یک برنامه پیوندی ارجاع به نمادهای نامشخص را با یافتن این که کدام شی دیگر نماد مورد نظر را مشخص می‌کند و آدرس نماد را جایگزین مکان‌ها می‌کند، حل می‌کند. پیوندها (لینکرها) می‌توانند اشیاء را از مجموعه ای به نام کتابخانه بگیرند. برنامه نهایی شامل کل کتابخانه نیست، فقط اشیاء موجود در آن مورد نیاز است. کتابخانه‌ها برای اهداف مختلف وجود دارد و معمولاً یک یا چند کتابخانه سیستم به‌طور پیش فرض به برنامه متصل می‌شوند.

پیوند پویا[ویرایش]

محیط‌های سیستم عامل مدرن امکان پیوند پویا یا به تعویق انداختن حل برخی از نمادهای نامشخص را تا زمان اجرای برنامه امکان‌پذیر می‌سازد. این بدان معناست که کد اجرایی هنوز شامل نمادهایی تعریف نشده‌است، به علاوه امکان پیوند پویا لیستی از اشیاء یا کتابخانه‌ها که تعاریفی برای آنها ارائه می‌دهد. بارگذاری برنامه این اشیاء/کتابخانه‌ها را نیز بارگذاری می‌کند و پیوند نهایی را انجام می‌دهد.

پیوند پویا سه مزیت دارد:

  • اغلب کتابخانه‌های مورد استفاده (به عنوان مثال کتابخانه‌های استاندارد سیستم) باید فقط در یک مکان ذخیره شوند، نه اینکه در هر فایل باینری دوباره تکرار شوند.
  • اگر کتابخانه ای مورد ارتقا قرار گیرد یا جایگزین شود، همه برنامه‌هایی که از آن به صورت پویا استفاده می‌کنند بلافاصله از اصلاحات بهره‌مند می‌شوند. ولی ابتدا باید ساختارهای استاتیک دوباره متصل شوند.

ساختار استاتیک[ویرایش]

در یک برنامه شامل ساختار استاتیک، هیچ پیوند پویایی رخ نمی‌دهد: همه پیوندها در زمان کامپایل انجام شده‌است.

ساختارهای ایستا (استاتیک) رفتار بسیار قابل پیش‌بینی دارند (زیرا به نسخه خاصی از کتابخانه‌های موجود در سیستم نهایی وابسته نیستند) و معمولاً در ابزارهای پزشکی قانونی و امنیتی، برای جلوگیری از آلودگی یا نقص احتمالی به دلیل خرابی کتابخانه‌ها در دستگاه مورد بررسی، استفاده می‌شوند. همین انعطاف‌پذیری که به کتابخانهٔ ارتقا یافته اجازه می‌دهد تا از همه برنامه‌های پیوند پویا بهره‌مند شود، همچنین می‌تواند از اجرای برنامه‌هایی که فرض می‌کنند به درستی اجرا نمی‌شود، جلوگیری کند.

یکی دیگر از مزایای برنامه‌های شامل ساختار استاتیک بودن قابلیت انتقال آنها است: پس از کامپایل شدن فایل اجرایی نهایی، دیگر نیازی به نگهداری فایلهای کتابخانه ای که برنامه به آنها اشاره می‌کند نیست، زیرا همه قسمت‌های مربوطه در فایل اجرایی کپی می‌شوند. در نتیجه، هنگام نصب یک برنامه شامل ساختار استاتیک بر روی کامپیوتر، کاربر مجبور نیست کتابخانه‌های اضافی را دانلود و نصب کند: برنامه آماده اجرا است.

جستارهای وابسته[ویرایش]

منابع[ویرایش]

  • Levine, John R. (2000) [October 1999]. Linkers and Loaders. The Morgan Kaufmann Series in Software Engineering and Programming (1 ed.). San Francisco, USA: Morgan Kaufmann. ISBN 1-55860-496-0. شابک ‎۹۷۸−۱−۵۵۸۶۰−۴۹۶−۴.
  • Keren, Guy (2002). Building And Using Static And Shared "C" Libraries. Little Unix Programmers Group (LUPG).