سیستم عاملهای کامپیوترهای امروزی اکثرا سیستم عامل های 64 بیتی هستند. اگر شما برنامههای 16 بیتی داشته باشید به هیچ عنوان روی سیستم عامل 64 بیتی اجرا نخواهد شد. دلیل این امر چیست؟
زمانی که کامپیوترها با معماری 64 بیتی راهاندازی شدند، برنامههای 16 بیتی کاربران دیگر روی این سیستمها کار نمیکردند. اما دلیل عدم اجرا برنامههای 16 بیتی روی سیستم عامل های 64 بیتی چیست؟
جواب این مساله برای فردی که آن را میپرسد میتواند کمی گیجکننده باشد. اولا اجرا برنامههای 16 بیتی بسیار سخت و حتی غیر ممکن است. دوما سختی این عمل به معماری پردازنده و سیستم عامل برمیگردد.
در ادامه به طور کامل به بررسی این مساله میپردازیم.
تاریخچه معماری پردازندهها
البته آخرین موردی که هر فرد در بررسی این گونه مسائل علاقه به خواندن آن دارد، تاریخچه مساله است. اما ما به طور بسیار خلاصه این قسمت را توضیح میدهیم تا بتوانید درک کلی از پردازنده و نوع معماری آنها داشته باشید.
در دهههای 80 و 90 میلادی کامپیوترهای 16 بیتی بسیار تکنولوژیهای قدرتمند و شگفتآوری بودند. در سال 1978، سیستمها از پردازنده اینتل 8086 استفاده میکردند. این پردازندهها توانایی آدرسدهی 1 مگابایت فضا را با سیستم 16 بیتی داشتند. در آن زمان حافظههای رم 64 کیلوبایتی روی سیستمها وجود داشت، بنابراین چنین پردازندهای میتوانست بسیار قدرتمند به حساب بیاید.
در این مد که به نام مد زمان واقعی نیز شناخته میشد، بخشی به عنوان رم و بخشی دیگر برای بایاس و سختافزاری همچون کارت گرافیک در نظر گرفته میشد.
کمی بعد پردازندههای 80286 اینتل به بازار آمدند که توانایی آدرسدهی 16 مگابایت فضا را با سیستم 16 بیتی داشتند. معماری 286 دارای مد محافظتشدهای بود که علاوه بر قابلیت آدرسدهی فضای بیشتر، امکان مالتی تسکینگ را نیز به سیستم میداد. اجرا برنامههای 16 بیتی در مد زمان واقعی کار سخت اما امکانپذیری بود.
در سال 1985 اینتل نسل جدیدی از پردازندههای خود را به نام سری 386 معرفی کرد. این اولین پردازندهای از اینتل بود که میتوانست آدرسدهی 32 بیتی را انجام دهد و تا 4گیگابایت حافظه رم را پشتیبانی نماید. در این دوره صنعت بازیسازی آغاز به کار کرد.
دستیابی به معماری 32 بیتی نه تنها اجازه میداد حافظه بیشتری آدرسدهی شود بلکه قابلیتهای جدید نرمافزاری را ایجاد کرد تا بتوان کد 16 بیتی یا 32 بیتی را تشخیص داد. این مساله به مد 86 مجازی (Virtual 86 mode) شناخته میشود.
همانطور که معماری پردازنده پیشرفت میکرد، چه برای سختافزار و چه برای نرمافزار، قابلیت پشتیبانی و سازگاری برای کاربرانی که از نرمافزارهای قدیمی استفاده میکردند ایجاد میشد. برای سیستمهای خانگی این مساله مناسب بود اما برای دیگر سیستمهای موجود مثل شرکتها، کسب و کارها و دیگر سازمانها یک نوع عدم تطابق معماری قدیم و جدید برای استفاده از نرمافزارها وجود داشت.
معماری 64 بیتی همه چیز را در هم شکست
محدودیت آدرسدهی 4 گیگابایت حافظه برای پردازندههای 32 بیتی چند سال متوالی وجود داشت. با اختراع و ساخت پردازندههای 64 بیتی همه چیز تغییر کرد. این سیستمهای مد جدیدی به نام مد لانگ نیز داشتند که میتوانست تا 16 میلیون ترابایت حافظه را آدرسدهی کند. 16 میلیون ترابایت حافظه به قدری زیاد است که حداقل تا چندین سال دیگر نیاز به تغییر معماری پردازندهها نباشد.
بنابراین زمانی که کاربران میخواهند برنامههای 16 بیتی را روی سیستم عامل های 64 بیتی اجرا کنند با پیغام is not a valid win32 application مواجه خواهند شد.
البته کاربران میتوانند با شبیهسازها برنامههای خود را روی سیستم عاملهای جدید اجرا کنند.
معماری 64 بیتی NTVDM را حذف میکند
در تمامی پردازندههای 32 بیتی، تلاش زیادی برای اجرا برنامههای 16 بیتی انجام شد. این تلاشها به سیستمی به نام NTVDM یا ماشین مجازی داس NT ختم شد.
برنامههای 32 بیتی روی سیستم عامل ویندوز اجرا شده و میتوانند معماری 486 را با آدرسدهی 16 بیتی به وسیله 8086 مجازی پیادهسازی کنند. متاسفانه آدرسدهی در مد لانگ 64 بیتی به این آسانی تطبیق داده نمیشود. به جای آن باید از یک شبیهساز پردازنده 8086 استفاده نمایید.
مایکروسافت به وضوح تصمیم گرفت که برای حمایت از سیستم عامل های 64 بیتی خود، پشتیبانی از برنامههای 16 بیتی را کنار بگذارد. در وبسایت مایکروسافت اعلامشده که برنامههای 16 بیتی داس و مایکروسافت ویندوز 3.X دیگر اجرا نخواهند شد.
چگونه برنامههای 16 بیتی را روی سیستم عامل های 64 بیتی اجرا کنیم
شاید به صورت معمول نتوان برنامههای 16 بیتی را روی سیستم عامل 64 بیتی اجرا کرد اما شبیهسازهایی برای این کار وجود دارد.
اگر به بازیهای قدیمی داس علاقه دارید یا احتمالا از برنامههای قدیمی استفاده میکنید با روشهایی که در ادامه معرفی میکنیم میتوانید برنامههای خود را روی سیستم عاملهای 64 بیتی اجرا کنید.
داس باکس
یکی از سادهترین راههایی که بتوان برنامههای داس قدیمی را روی سیستم عامل جدید اجرا کرد استفاده از شبیهساز است. یکی از بهترین شبیهسازها نیز داس باکس خواهد بود.
اجرای برنامه در ویرچوال باکس
از آنجایی که سیستم عاملهایی مثل ویندوز ایکس پی و ویندوز 7 میتوانند برنامههای 16 بیتی را اجرا کنند، بنابراین میتوانید همان برنامهها را با استفاده از ماشینهای مجازی در سیستم عاملهای 64 بیتی اجرا کنید.
یکی از بهترین ماشینهای مجازی موجود، ویرچوال باکس است که میتوانید با استفاده از آن برنامههای 16 بیتی را روی سیستم عامل 64 بیتی اجرا کنید.
استفاده از لینوکس
سیستم عامل لینوکس، یکی از سیستم عاملهایی است که از برنامههای 16 بیتی پشتیبانی میکند. در نسخه لینوکس دسترو محدودیت آدرسدهی 32 بیتی با 4 گیگابایت رم را نخواهید داشت بنابراین استفاده از این سیستم عامل روی کامپیوتر شخصی میتواند گزینه مناسبی باشد.
استفاده از شبیهسازها
داس باکس تنها شبیهساز موجود برای اجرا برنامههای 16 بیتی نیست. شبیهسازهای دیگری نیز وجود دارند که میتوانند این کار را انجام دهند.
برنامههای مثل Commodore Amiga، Raspberry Pi و Classic SNES جزو شبیهسازهایی هستند که میتوانید از آنها استفاده کنید.