از نظر فنی یک کد اجرایی میتونه در هر زمانی که اراده کنه هر کتابخانه و API ای که دلش بخواد رو به سیستم عامل درخواست بده و فراخوانی کنه، به همین جهت اینکه همه توابع و کتابخانه های مورد استفاده در فایل اجرایی مشخص بشن ضروری نیست، اما وجودشون کمک می کنه چون سیستم عامل میفهمه که موقع فراخوانی برنامه کدوم کتابخانه ها مورد نیاز هستند و باید فراخوانی بشوند و نباید فلان کتابخانه های مورد نیاز رو بدون استفاده فرض کنه و Unload کنه.
هر کدوم از اون کتابخانه ها حالا چه جزو API ویندوز باشند و چه نباشند، یک حافظه مستقل برای خودشون دارند، و معمولا هم یک کتابخانه فراخوانی شده مورد استفاده چندین برنامه اجرایی قرار میگیره. سیستم عامل خودش دخالتی در جامپ هایی که میگید نداره، هر زمان که یک کتابخانه فراخوانی میشه مثل برنامه های عادی روتین اولیه ای مثل DllMain داره که مستقلا اجرا میشه و در حافظه برای اجرا شدن توابعش آماده میشه. هر زمان که برنامه شما بخواد تابع فلان از کتابخانه بهمان رو اجرا کنه، اولا بررسی میشه که اون کتابخانه قبلا فراخوانی شده یا نه، اگر نشده باشه با کمی تاخیر اینکار انجام میگیره. بعد آدرس اون تابع در کتابخانه بر اساس اطلاعات داخل خود کتابخانه پیدا میشه. حالا که آدرس بدست اومد اطلاعات پارامتر ها در پشته قرار میگیره، رجیستر ها تنظیم میشوند و پرش به اون آدرس صورت میگیره و ...
صد البته. کلا یک سیستم عامل مدرن و پیچیده به یک فایل اجرایی پیچیده نیاز داره. مستندات Executable and Linkable Format (ELF) رو ببینید.
ساده ترین فرمت اجرایی که میشناسم فایل های COM ئه که برای برنامه های کوچک در سیستم عامل 16 بیتی MS-DOS و ویندوز 95/98 مناسب بود و داده و کد اجرایی اش یکجا و قاطی هم ذخیره میشه و البته مدل حافظه خیلی ساده و کوچکی داره.