مقایسه

در یک سیستم‌عامل ۳۲ بیتی مثل نسخه‌های ۳۲ بیتی ویندوز ۲۰۰۳ از یک حافظه مجازی (Virtual memory) برای انجام پردازش‌های مختلف استفاده می‌شود. این حافظه مجازی که حداکثر ۴ گیگابایت می‌تواند ظرفیت داشته باشد به دو قسمت تقسیم می‌شود. یک قسمت ۲ گیگابایتی آن به وسیله برنامه در حال اجرا اشغال شده و ۲ گیگابایت دیگر در اختیار سیستم‌عامل قرار می‌گیرد.
تا اینجا همه ‌چیز بسیار عادی به نظر می‌رسد اما مشکل زمانی پیش می‌آید که ۲ گیگابایت سهم برنامه‌های در حال اجرا به مرز پرشدن نزدیک می‌شود. به عنوان مثال یک بانک اطلاعاتی SQL Server را در نظر بگیرید که برای اتصال هر کاربر به سرور و انجام عملیات موردنظر وی ۲۰ مگابایت حافظه مجازی را در نظر می‌گیرد. با رسیدن تعداد کاربران به مرز یکصد نفر، کل حافظه مجازی ۲ گیگابایتی در اختیار SQL Server قرار می‌گیرد و این به معنای نزدیک شدن سیستم به یک نقطه بحرانی در عملیات سرویس‌دادن به کاربران است.
در نسخه‌های ۳۲ بیتی یکی از راه‌هایی که برای این مساله در نظر گرفته می‌شد، اختصاص ۳ گیگابایت از حافظه مجازی به برنامه‌های درحال‌اجرا بود. این روش که با استفاده از دستکاری در فایل boot.ini انجام می‌گرفت، یک گیگابایت از حافظه مجازی در اختیار سیستم‌عامل را به سهمیه حافظه مجازی برنامه‌های در حال اجرا واگذار می‌کرد و تا حدودی مشکل کمبود حافظه مجازی را رفع می‌کرد. اما خود این عمل هم عوارض جانبی خاص خود را دارد و آن محدود شدن کرنل سیستم‌عامل به یک گیگابایت حافظه مجازی برای انجام عملیات cache است.
این محدود شدن باعث افت سرعت انتقال اطلاعات از سرور به کلاینت‌ها می‌شود. ضمن این‌که باز هم در نهایت با زیادترشدن تعداد کاربران یا پردازش‌های موردنظر آنان، این ۱ گیگابایت الحاق‌شده نیز به مرز اشتغال شدن کامل نزدیک می‌شود و مدیران سیستم را به ناچار مجبور به افزایش تعداد سرورها برای رفع مشکل می‌کند. با آمدن ویندوز ۲۰۰۳ نسخه ۳۲ بیتی، قدرت آدرس‌دهی سیستم‌عامل برای حافظه‌های فیزیکی (RAM) به ۳۲ گیگابایت برای نسخه Enterprise و ۶۴ گیگابایت در نسخه DataCenter افزایش یافت و این به معنای نیاز کمتر سیستم به استفاده از حافظه مجازی و در نتیجه کمتر شدن مشکل مربوط به محدودیت حافظه‌های مجازی بود.
اما به هر حال استفاده از حافظه مجازی برای پردازش اطلاعات امری گریزناپذیر است و به‌همین دلیل توجه سازندگان سیستم‌عامل همواره معطوف به پیدا کردن راه‌حلی برای عبور از این مشکل بود. سرانجام با مطرح شدن و تولد سیستم‌عامل ۶۴ بیتی ویندوز ۲۰۰۳ که با استفاده از قدرت پردازنده‌های ۶۴ بیتی جدید قادر بود از یک سیستم آدرس‌دهی ۴۰ بیتی استفاده کند، میزان حافظه مجازی قابل دسترسی سیستم از ۴ گیگابایت به ۴۰ ۲ یعنی ۱۶ ترابایت (هزار گیگابایت) افزایش یافت.
بدین‌ترتیب ۸ ترابایت از این ظرفیت در اختیار برنامه‌های در حال اجرا و ۸ ترابایت دیگر در اختیار سیستم‌عامل قرار گرفت. مهم‌ترین سوالی که در این‌جا می‌توانست مطرح شود این است که آیا برنامه‌های سابق محیط ۳۲ بیتی که برای استفاده از حداکثر ۳ گیگابایت حافظه مجازی کامپایل شده‌اند قادر به بهره بردن از این ۸ ترابایت فضای جدید هستند یا خیر. پاسخ این سوال هم می‌تواند مثبت باشد و هم منفی. بدین‌صورت که برخی برنامه‌های کامپایل‌شده در محیط‌های ۳۲ بیتی که به صورت صریح قدرت استفاده از حداکثر ۳ گیگابایت حافظه مجازی را دارند، با ورود به محیط ۶۴ بیتی هیچ تغییری را احساس نخواهند کرد.
اما برخی دیگر که با تکنولوژی Large Address ware کامپایل شده‌اند قادر خواهند بود تا ۴ گیگابایت از حافظه مجازی را در محیط جدید مورد استفاده قرار دهند. از لحاظ سرعت انجام عملیات نیز برخی برنامه‌های کامپایل شده در محیط ۳۲ بیتی (مثلاً برنامه‌های نوشته شده با ASP.NET که از تکنولوژی Multithreading برای اجرای موازی چند دستورالعمل در آن واحد استفاده می‌کنند)، به دلیل قدرت بی‌نظیر پردازنده‌های ۶۴ بیتی در انجام این کار می‌توانند از مزایای محیط جدید اجرا استفاده کرده و سرعت اجرای خود را افزایش دهند.
اما اگر برنامه‌ای (مثلاً یک فایل Exe) در محیط توسعه‌ای مثل ویژوال بیسیک نسخه ششم برای دسترسی به یک پایگاه داده و کار با آن بدون استفاده از مکانیسم پردازشی موازی و به صورت ساده نوشته شده باشد، این برنامه حتی اگر برروی یک سرور ۶۴ بیتی هم اجرا شود نمی‌تواند از قابلیت‌های محیط جدید سودی ببرد. بنابراین اگر قرار است این برنامه برروی کلاینت نصب شده و پایگاه داده موردنظر که SQL Server است برروی یک سرور باشد، بهتر آن است که کلاینت در همان وضعیت ۳۲ بیتی باقی بماند و سرور به نسخه ۶۴ بیتی ویندوز ۲۰۰۳ ارتقاء داده‌شود.
در این صورت موتور بانک‌اطلاعاتی SQL Server که در تمام نسخه‌های خود از شیوه Multithreading برای انجام دستورات موردنظر کاربران استفاده می‌کند، می‌تواند در محیط جدید با سرعت بهتری فرامین رسیده از طرف کلاینت‌ها را پردازش کرده و نتیجه را سریع‌تر به آن‌ها برگرداند و کارایی کلی این سیستم بانک اطلاعاتی را به نحو مطلوبی افزایش دهد. اصولاً برنامه‌های نوشته شده برای محیط‌های ۳۲ بیتی با استفاده از رابطی به نام WOW64 قادر خواهند بود در محیط ۶۴ بیتی اجرا شوند و از مزایای ارتقاء سیستم عامل و دسترسی به حافظه بیشتر بهره ببرند