رازهای مکتوم ویندوز ۱۱؛ چرا کدهای مدیریت حافظه ویندوز ۹۵ همچنان در دل این سیستمعامل حضور دارند؟ — Why Windows 11 still ships with Windows 95's memory manager hidden inside it
خلاصه
ویندوز ۱۱ همچنان کدهای مدیریت حافظه ویندوز ۹۵ را تحت عنوان EmulateHeap برای اجرای نرمافزارهای قدیمی در خود دارد. این مقاله ابعاد لایههای سازگاری (Compatibility Shims) مایکروسافت و چالشهای مهندسی حفظ پشتیبانی از نرمافزارهای قدیمی را بررسی میکند.
مقدمهای بر پایداری و سازگاری در ویندوز
برای توسعهدهندگانی که با معماری سیستمعاملها آشنا هستند، این مسئله که نسخههای مدرن ویندوز همچنان کدهای بسیار قدیمی را حمل میکنند تعجبآور نیست. ویندوز ۱۱ در نسخههای جدید خود همچنان دارای بخشهایی از کدهای هسته ویندوز ۹۵ است. یکی از این موارد، مکانیسم رفع ناسازگاری به نام EmulateHeap است که به نرمافزارهای قدیمی اجازه میدهد از مدیر حافظه (Memory Manager) ویندوز ۹۵ استفاده کنند.
ریشههای تاریخی و باگ معروف SimCity
داستان این وسواس مایکروسافت برای حفظ سازگاری به نسخههای بتای ویندوز ۹۵ و بازی معروف SimCity بازمیگردد. در نسخههای اولیه این بازی، یک باگ معروف از نوع use-after-free وجود داشت؛ یعنی برنامه پس از آزادسازی یک بلوک حافظه، همچنان به خواندن مقادیر آن ادامه میداد. این رفتار در سیستمعاملهای قدیمیتر مانند نسخه ۳.x به دلیل ساختار مدیریت حافظه بدون مشکل اجرا میشد، اما روی ساختار جدید ویندوز ۹۵ کرش میکرد.
بهجای انتظار برای اصلاح بازی توسط توسعهدهندگان، مهندسان مایکروسافت کدی را به سیستمعامل اضافه کردند که اجرای بازی را تشخیص داده و مدیر حافظه را در حالت خاصی اجرا میکرد که حافظه بلافاصله آزاد نشود. این رویکرد بعدها به یک رویه تبدیل شد.
مکانیزم فنی EmulateHeap و زیرساخت Compatibility
باگهای مشابه در نرمافزارهای دیگر نیز وجود داشت که از ویژگیهای پشته (Heap) ویندوز ۹۵ استفاده میکردند. راهحل مایکروسافت ایجاد ابزاری به نام EmulateHeap بود که فرایندهای مدیریت حافظه اپلیکیشنها را رهگیری کرده و به نسخهای شبیهسازیشده هدایت میکند. مهندسان مایکروسافت سورسکد بخش مدیریت پشته ویندوز ۹۵ را مجدداً کامپایل کرده و آن را به زیرساخت سازگاری برنامهها اضافه کردند.
- این کدها بهصورت پیشفرض در پسزمینه اجرا نمیشوند.
- این ماژولها تنها زمانی از هارددیسک بارگذاری میشوند که ویژگی سازگاری مذکور برای یک برنامه خاص فعال شده باشد.
- ابزار مدیریت سازگاری ویندوز یا همان
Compatibility Administratorامکان بررسی و مدیریت این شیمها (Shims) را فراهم میکند.
دیدگاه جامعه مهندسی نرمافزار در Hacker News
بحثهای شکلگرفته در هکرنیوز پیرامون این موضوع نکات جالب توجهی را مطرح کرد:
- برخی کاربران اشاره کردند که این مسئله صرفاً به یک بازی محدود نمیشده، بلکه مایکروسافت تلاش گستردهای برای تست و سازگاری طیف وسیعی از نرمافزارهای قدیمی انجام داده است.
- گروهی از توسعهدهندگان از منظر معماری سیستمعامل معتقدند که مدیرهای حافظه باید درون خود اپلیکیشنها لینک شوند و نباید بهعنوان بخشی از مؤلفههای سیستمعامل در نظر گرفته شوند تا از چنین پیچیدگیهایی جلوگیری گردد.
چرا این موضوع برای مهندسان نرمافزار اهمیت دارد؟
این پدیده نشاندهنده چالش بزرگ معکوسپذیری و پشتیبانی بلندمدت در مهندسی نرمافزار است. حفظ سازگاری با گذشته (Backward Compatibility) در سیستمعاملهای مقیاس بزرگی مانند ویندوز، هزینههای معماری سنگینی دارد که گاهی مهندسان را مجبور میکند کدهایی با قدمت چند دهه را در کنار مدرنترین فناوریها نگهداری کنند.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل