سیستم های ۳۲ بیتی ، سیستم های ۶۴ بیتی

آیا این نرم افزار ۳۲ بیتی روی سیستم عامل ۶۴ بیتی من اجرا میشه ؟

آیا این نرم افزار ۶۴ بیتی روی کامپیوتر من اجرا میشه؟

اگه شما هم از اون دسته آدمایی هستید که خیلی این سوال رو از خودتون میپرسید ظاهرا این مقاله به شما کمک خواهد کرد تا درک بهتری از محاسبات ۳۲ بیتی و ۶۴ بیتی داشته باشید. ما به کامپیوتر به عنوان یه سیستم سه بخشی نگاه میکنیم که شامل : ۱- سخت افزار ۲- سیستم عامل و ۳- نرم افزار هستش.

۳۲-bit در مقابل ۶۴-bit

دو دستاورد نتیجه افزایش تعداد بیتهای ما در دل سخت افزار خواهد بود :

  •   – تعداد بیت های بیشتر به این معناست که دیتا در بسته های بزرگتر قابل پردازش خواهد بود . دقت نیز افزایش پیدا خواهد کرد
  •   – تعداد بیت های بیشتر به این معناست که سیستم ما میتونه به خونه های بیشتری از حافظه RAM اشاره بکنه.

بذارید یکم بحث رو باز تر کنیم. همانطور که میدونید برنامه های شما برای اجرا از هارد دیسک به حافظه فیزیکی یا Main Memory و یا RAM آورده میشند. خب RAM هم همونطور که از اسمش بر میاد ساختاری داره که شما میتونید به صورت تصادفی بهش دسترسی داشته باشید. Random Access Memory یعنی این حافظه آدرس دهی شده و شما می تونید به صورت تصادفی بگید که من قصد دارم مثلا خونه شماره ۳۲ رو بخونم.

بعد از اینکه شما دستورات برنامه تون رو به رم اوردید این دستورات به ترتیب ( ساختار استاندارد یک برنامه به این گونه هست که دستورات یکی پس از دیگری اجرا شوند ) و یا نه چندان مرتب ( مثلا زمانیکه شما حلقه دارید ) به CPU میاد و اجرا میشه.

خب ما باید این توانایی رو داشته باشیم که بتونیم به هر خونه RAM یه آدرس بدیم. سیستم های ۳۲ بیتی یک زمانی مورد پسند بودند چون میتوانستند ۴ گیگا بایت حافظه رو آدرس دهی کنند . ( ۲ به توان ۳۲ ) ولی برخی از برنامه های مدرن امروزی به حافظه ای بیشتر از این مقدار نیاز دارند. این دلیلی شد که سیستم ۶۴- بیتی جذاب تر بشوند زیرا پتانسیل این رو دارند که تا ۲ به توان ۶۴ خونه حافظه رو آدرس دهی کنند.

زمانی که در سال ۱۹۹۵ ویندوز ۹۵ با ساپورت برنامه های ۳۲ بیتی ارائه شد، تقریبا تمام برنامه ها و قسمت های سیستم عامل با محاسبات ۳۲ بیتی سازگار بودند.

حال مشکل امروز ما اینه که با اینکه اکثر برنامه های ما ۳۲ بیتی هستند ولی تقریبا تمام CPU هایی که میخریم ۶۴ بیتی هستند.

خب چقدر طول میکشه که از سیستم های ۳۲-بیت به ۶۴ بیت برسیم؟

نکته ای که مهم هست اینه که کامپیوتر ما سخت افزاری است که روی آن سیستم عاملی اجرا میشه و اون سیستم عامل در بالاترین سطح برنامه های کاربردی رو اجرا میکنه. پس اول سخت افزار طراحی میشه. بعد از اون سیستم عامل با اون سخت افزار هماهنگ میشه و در نهایت برنامه های کاربردی هستند که ظاهر میشند.

بذارید برگردیم به زمانی که قصد داشتیم از سیستم های ۱۶ بیتی به سیستم های ۳۲ بیتی مهاجرت کنیم. زمانی در حدود ۱۰ سال این پروسه طول کشید یعنی از سال ۱۹۸۵ تا ۱۹۹۵٫ با این حال و بعد از گذشت نزدیک ۱۷ سال از اون موقع هنوز هم هستند کسانی که ورژن های ۱۶ بیتی ویندوز رو روی سیستم های قدیمی خودشون دارند.

تولید کنندگان سخت افزار و نرم افزار از این پروسه زمان بر درس گرفتند و همان زمانی که پردازنده های جدید ۶۴ بیتی رو طراحی کردند ، سیستم عامل ۶۴ بیتی رو هم عرضه کردند. ولی مشکل امروز ما کمبود برنامه های ۶۴ بیتی است. برای اثبات این قضیه کافیه که بدونید که بعد از گذشت ده سال اولین پردازنده ۶۴ بیتی تازه الان تعداد نصب های ویندوز ۶۴ بیتی از ویندوز ۳۲ بیتی فراتر رفته ، دست آورد دیگری نداریم !

کامپیوتر شما  سه قسمت دارد !

32-bit-64-bit-explained-442-322

خب حالا ما قصد داریم به این سه لایه کامپیوتر نگاهی بندازیم. به زبان ساده پردازنده به عنوان پایین ترین لایه این سه لایه و برنامه های کاربردی به عنوان بالاترین لایه هستند.

برای اینکه شما بتونید یک سیستم عامل ۶۴ بیتی اجرا کنید نیاز دارید که لایه پایین تر اون رو ساپورت کنه : شما یه پردازنده ۶۴ بیتی نیاز دارین.

برای اینکه بتونید برنامه های ۶۴ بیتی اجرا کنید نیا دارید که لایه پایین تر به شما این اجازه رو بده : شما سیستم عامل ۶۴ بیتی و پردازنده ۶۴ بیتی نیاز دارین.

این ساده سازی به ما این امکان رو میده که راحت تر بتونیم مواقعی رو تفسیر کنیم که بخش های ۳۲ بیتی و ۶۴ بیتی با هم ادغام میشن.

کدام ترکیب بخش ۳۲ بیتی و ۶۴ بیتی باهم سازگارند و با هم کار میکنند؟

قانون اصلی اینه :

قسمت ۳۲ بیت روی یک لایه پایین تر ۶۴ بیتی قابل اجراست ولی یک قسمت ۶۴ بیتی قابل اجرا روی لایه زیری ۳۲ بیتی نیست.

  • یک سیستم عامل ۳۲ بیتی به راحتی روی یک پردازنده ۳۲ بیتی و ۶۴ بیتی قابل اجراست
  • یک برنامه ۳۲ بیتی به راحتی روی یک سیستم عامل ۳۲ بیتی یا ۶۴ بیتی قابل اجراست.
  • ولی یک برنامه ۶۴ بیتی فقط روی یک سیستم عامل ۶۴ بیتی و یک سیستم عامل ۶۴ بیتی فقط روی یک پردازنده ۶۴ بیتی قابل اجراست.
اگر شما یک پردازنده ۳۲ بیتی داشته باشید
پردازنده ۳۲-bit ۳۲-bit ۳۲-bit ۳۲-bit
سیستم عامل ۳۲-bit ۳۲-bit ۶۴-bit ۶۴-bit
برنامه ۳۲-bit ۶۴-bit ۳۲-bit ۶۴-bit
امکان پذیر غیر ممکن غیر ممکن غیر ممکن
اگر شما یک پردازنده ۶۴ بیتی داشته باشید
پردازنده ۶۴-bit ۶۴-bit ۶۴-bit ۶۴-bit
سیستم عامل ۶۴-bit ۶۴-bit ۳۲-bit ۳۲-bit
برنامه ۶۴-bit ۳۲-bit ۳۲-bit ۶۴-bit
امکان پذیر امکان پذیر امکان پذیر غیر ممکن

دلیل اینکه بخش ۳۲ بیتی میتونه روی بخش ۶۴ بیتی اجرا بشه اینه که بخش ۶۴ بیتی این گون طراحی شده که این کار رو بکنه ! در واقع بخش ۶۴ بیتی backward-compatible هست با بخش ۳۲ بیتی.

یک نمونه از backward-compatible ویندوز ۶۴ بیتی است. این ویندوز برنامه ای به نام WOW64 داره که سازگاری با سیستم ۳۲ بیتی را با شبیه سازی امکان پذیر میکنه.

نکته مهم ! امکان نصب درایور ۳۲ بیتی روی یک سیستم عامل ۶۴ بیتی نیست ؟! چرا ؟ دلیلش واضحه درایور به صورت موازی با سیستم عامل کار میکنه. یعنی نسبت به برنامه های کاربردی در لایه های پایین تری قرار داره و شبیه سازی ای که مطرح شد در لایه های بالاتر سیستم عامل انجام میشه. پس این شبیه سازی برای درایور ها وجود نداره.

منبع

۳,۸۸۲ total views, 2 views today

Print Friendly, PDF & Email

درباره ی سعید دادخواه

یه برنامه نویس !

13
دیدگاه بگذارید

avatar
5 Comment threads
8 Thread replies
0 دنبال کنندگان
 
Most reacted comment
داغ ترین نخ نظرات
8 کامنت گذاران
reza1hadi2f244mohammadsorenaHadiAbbasi کامنت گذاران اخیر
  مشترک شو!  
جدیدترین قدیمی‌ترین دارای بیشترین امتیاز
میخوام باخبر شم از
علی رضا پژوهش
Member
علی رضا پژوهش

ممنون عالی بود.

اما این مشکلات فقط مربوط به ویندوز میشه

برای مثال زمانی که یک توزیع لینوکس نصب میکنید تمام برنامه های اون توزیع به صورت ۶۴بیتی در اختیار شما قرار میگیرند و میتونید از سیستم کاملاً ۶۴ بیتی تون لذت ببرید. اما در ویندوز نصب ۳۲ بیتی و ۶۴ بیتی تفاوتی با هم ندارند چون عملاً تمام برنامه ها ۳۲ بیتی هستند.

A.IMAN
Member
A.IMAN

ممنون! مدت زیادی بود ک برای منم سوال بود !

HadiAbbasi
عضو

ممنون و اما در مورد ایجاد برنامه تحت اندروید در نسخه های ۳۲ بیتی و ۶۴ بیتی ،آیا تفاوتی بینشون هست؟

mohammad
Member
mohammad

سلام
اگه امکان داره میشه یکمی هم opencv با qt یا پردازش تصویر با qt یاد بدبد یا یه مقاله بزارید ممنون 🙂

hadi2f244
Member
hadi2f244

خیلی خوب بود.