DLL چیست؟ آشنایی با DLL و نحوه عملکرد آن
در این مقاله ابتدا به زبان ساده بیان میکنیم که DLL چیست و چه کاربردی دارد. سپس با نگاه دقیقتری به بررسی این فایلها میپردازیم. مطالبی که در این مقاله پوشش داده میشوند:
کتابخانه یا Library چیست؟
قطعا با مفهوم کتابخانهها آشنایی دارید. کتابخانهها مجموعهای از توابع از پیش کامپایل شده هستند که یک برنامه برای راحتی بیشتر از آنها استفاده میکند. اما راحتی بیشتر به چه معناست؟ به این معنی که درون کتابخانهها تعداد زیادی المان وجود دارد که کد آنها از قبل زده شده و درون یک فایل قرار گرفتهاند. حال بجای اینکه این توابع را هر بار از اول پیادهسازی و استفاده کنیم، کافیست از کتابخانهها استفاده کنیم. البته یک کتابخانه شامل موارد بسیار زیادی است و فقط شامل یک سری تابع نیست. برای مثال یک کتابخانه میتواند شامل: توابع، Subroutineها، مقادیر، نوع داده و … باشد. که این موارد از قبل درون یک فایل قرار گرفتهاند و هرگاه بخواهیم از آنها استفاده کنیم، بجای پیادهسازی دوباره آنها از کتابخانهها استفاده میکنیم.
DLL چیست؟
قبل از هر چیز باید توجه داشته باشید که DLL در سیستمعامل ویندوز تعریف میشود. البته دیگر سیستمعاملهای دیگر مثل Linux نیز عناصری در خود دارند که شاید اسم آنها متفاوت باشد، اما عملکرد و هدفی مشابه با DLL دارند.
DLL مخفف Dynamic Link Library میباشد. یعنی کتابخانهای که بصورت دینامیک به برنامه لینک میشود. پس فایل DLL که با پسوند .dll شناخته میشود، یک کتابخانه است. کتابخانهای متشکل از یک سری المان از پیش تعریف شده که میتواند توسط یک برنامه ویندوزی مورد استفاده قرار بگیرد. به همین خاطر، وقتی یک برنامه اجرا میشود، برنامه به DLLهای مورد نیازش لینک میشود. اگر این لینک بصورت Static تعریف شود فایل .dll تا زمانی که برنامه در حال اجراست، مورد استفاده قرار میگیرد. اما اگر این لینک بصورت Dynamic باشد، فایلهای .dll تنها زمانی مورد استفاده قرار میگیرند که به آنها نیاز باشد.
یک فایل .dll حتی میتواند بطور همزمان توسط چند پراسس (برنامه در حال اجرا) مورد استفاده قرار گیرد. برخی از dllها توسط خود ویندوز تولید شدهاند و وقتی سیستمعامل را نصب و اجرا میکند، Load میشوند. اما برخی دیگر توسط دیگر شرکتها توسعه داده شدهاند. با نصب برنامههایشان این dllها به سیستم شما نیز انتقال پیدا میکنند. برای مثال وقتی firefox را نصب میکنید، تعدادی dll (مثل mozglue.dll) به سیستم شما اضافه میشود که بصورت پیشفرض برروی ویندوز وجود ندارد. همچنین dll چیزی نیست که یک کاربر عادی آن را Load کند، عموما برنامهها وقتی به یک dll نیاز دارند، خودشان آن را بارگذاری میکنند.
نگاه دقیقتر به DLLها
در سیستم عامل ویندوز ، بخش بزرگی از عملکرد سیستم عامل وابسه به DLLها است. علاوه بر این ، هنگامی که برنامه ای را روی یک سیستمعامل ویندوزی اجرا می کنید ، ممکن است بسیاری از قابلیت های برنامه توسط DLL ها فراهم شود. به عنوان مثال ، بعضی از برنامه ها ممکن است حاوی ماژول های مختلفی باشند و هر یک از این ماژولهای برنامه میتواند در یک DLL گنجانده شود. بدین ترتیب DLLهای مورد نیاز برنامه Load میشوند و عملیات مورد نظر انجام میشود.
مزیت استفاده از DLL
صرفهجویی در مصرف منابع سیستم
وقتی قرار است چندین برنامه از یک سری تابع یکسان استفاده کنند، استفاده از DLL میتواند در صرفه جویی منابع به ما کمک کند. به اینصورت که بجای اینکه بصورت جداگانه برای هر پراسس یک کتابخانه در نظر گرفته شود تا توابع مورد نیازشان را از آنها فراخوانی کنند، یک کتابخانه بصورت اشتراکی توسط آنها مورد استفاده قرار میگیرد.
افزایش ماژولاریتی و انعطاف برنامهها
DLL به توسعه برنامه های ماژولار کمک می کند. این کتابخانهها به شما کمک می کنند تا برنامه های بزرگی را که به یک معماری منعطف و تغییرپذیر نیاز دارند ، توسعه دهید. یک نمونه از برنامه های مدولار یک برنامه حسابداری است که دارای ماژول های بسیاری است که می توانند به صورت پویا در زمان اجرا بارگیری شوند.
استفاده و تغییرات آسان
وقتی قسمتی از یک DLL نیاز به بروزرسانی یا اصلاح دارد، نیازی نیست که برنامههایی که از آن استفاده میکنند مجددا با DLL جدید لینک شوند. یعنی اگر چندین برنامه از یک DLL یکسان استفاده بکنند، بعد از اینکه بروزرسانی انجام شد، برنامهها میتوانند براحتی از قابلیتهای جدید استفاده کنند بدون اینکه لازم باشد دوباره با نسخه جدید لینک شوند. این مساله ممکن است بیشتر هنگام استفاده از یک DLL جانبی (Third-Party) که مرتباً به روز می شود، رخ دهد.
همچنین DLL کتابخانه ای است که شامل کد و داده هایی است که می تواند توسط بیش از یک برنامه همزمان استفاده شود. به عنوان مثال ، در سیستم عامل ویندوز، comdlg32.dll توابع مربوط به Dialog Box را انجام می دهد. هر برنامه می تواند از توابع موجود در این DLL برای ایجاد یک Dialog Box استفاده کند. این مساله به استفاده مجدد از کد و استفاده کارآمد از حافظه کمک می کند. چرا که دیگر لازم نیست هر پراسس بصورت جداگانه کد مربوط به Dialog Box را درون خود داشته باشد. همچنین کد آن تنها در صورتی در برنامه بارگذاری میشود، که نیاز به آن وجود داشته باشد.
Export Table در DLL
این جدول شامل نام تمامی توابعی است که درون یک DLL گنجانده شده است. برنامههای دیگر براحتی بوسیله این جدول میتوانند بفهمند که یک DLL شامل چه توابعی است.
باز کردن یک فایل DLL
شاید بد نباشد اگر بتوانیم محتویات یک فایل DLL را مشاهده و بررسی کنیم. این کار بوسیله ابزارهای مختلفی همانند CFF Explorer و DLL Export Viewer امکان پذیر است. توجه کنید که CFF Explorer تنها برای بررسی DLLها نیست و گستره بزرگتری از فایلها را میتوان بوسیله آن بررسی کرد. در اینجا برای نمونه ntdll.dll را درون DLL Export Viewer باز میکنیم:

ntdll.dll یکی از مهمترین dllهایی است که بصورت پیشفرض در ویندوز وجود دارد. در اینجا براحتی میتوانیم Export Table مربوط به آن را مشاهده کنیم.
درباره ما
ترجنس | thregence.ir
آکادمی ترجنس | edu.thregence.ir
اینستاگرام | instagram.com/thregence
تلگرام | t.me/thregence
یوتوب | https://bit.ly/30mGowo
آپارات | aparat.com/thregence