ساختار فایل های آبجکت به غیر از دستورات ماشین چه داده های دیگه ایی رو فراهم میکنه؟ که به بعدا به درد لینکر میخوره؟

بعد یه سوال در مورد حافظه مجازی:
در ویندوز از حافظه مجاز استفاده میشه یعنی task ها بطور غیر مستقیم به خانه های حافظه دسترسی دارن... در واقع به یک رم مجازی دسترسی دارن. حالا سوال من اینجاست که این پروسه ها این حافظه مجازی رو به چه صورت میبینن؟ مثلا از چه آدرسی تا چه آدرسی؟ آیا به چشم پروسس ها یک رم هست که از خانه 0 تا خانه n رو (از حافظه مجازی شبیه سازی شده) میتونن آدرس دهی کنن؟
بعد با این حافظه مجازی در ویندوز یک برنامه به چه صورت برخورد میکنه... منظورم اینه که مثلا آیا از سگمنت سازی استفاده میکنه روی این حافظه مجازی مختص به خودش؟

سوال دیگه در مورد کتابخانه ها هست:
اینکه دو نوع کتابخانه هست به نظرم که یکیش بصورت استاتیکه مثلا اینکه دقیقا اون کتابخانه هه به سورس برنامه انگار از اول اضافه شده و نوع دوم داینامیک هست در ویندوز بصورت DLL که هنگام اجرا استفاده میشن. حالا میخام بدونم برنامه هنگام اجرا چطور به سیستم عامل میگه که قراره از کتابخانه های یه DLL بخصوص استفاده کنه؟ آیا هنگام لود شدن برنامه dll ها هم همزمان با برنامه لود میشن و میچسبن به برنامه یا بعد از اینکه برنامه اجرا میشه به سیستم عامل میگه که از فلان تابع فلان dll میخام استفاده کنم؟

یه مورد در مورد کتابخانه استاتیک این که چرا در اسمبلی پسوند فایلهای کتابخانه ایی lib. هست؟ من نمیدونم چرا فکر میکنم باید obj باشه؟ چون مگه غیر اینه که این کتابخانه های استاتیک مثل یه سری تابع هستن که از قبل کامپایل شدن؟ خوب باید به پسوند obj باشن که بعد با برنامه اصلی لینک بشن دیگه!