چرا برخی از برنامه ها در سیستم های 32 بیتی در سیستم های 64 بیتی اجرا نمی شوند؟
به نام خدا
چرا برخی از برنامه ها در سیستم های 32 بیتی در سیستم های 64 بیتی اجرا نمی شوند؟
برای پاسخ به این پرسش ابتدا باید سیستم های 32 بیتی و 64 بیتی مورد بررسی قرار بگیرند:
مفهوم 32 بیت چیست؟
در معماری کامپیوتر32 بیتی آدرسهای حافظه یا دیگر واحدهای داده حداکثر می توانند 32 بیت در خود داشته باشند؛ همچنین ساختار پردازنده (CPU) و واحدهای محاسبه(ALU) 32بیتی نیز حداکثر ظرفیت 32 بیت را دارند. همانطور که می دانید یک واحد 32 بیتی می تواند ارزشی بین 0 تا 4294967296 را در خود ذخیره کند به همین دلیل یک پردازنده 32 بیتی می تواند تنها به 4 گیگابایت آدرس در حافظه (رم) به طور مستقیم دسترسی داشته باشد.
مفهوم 64 بیت چیست؟
در معماری کامپیوتر 64 بیتی آدرس های حافظه و یا دیگر واحدهای داده حداکثر می توانند 64 بیت در خود داشته باشند. همانطور که می دانید یک واحد 64 بیتی می تواند ارزشی بین 0 تا 18446744073709551616را در خود ذخیره کند و این یعنی یک پردازنده 64 بیتی می تواند به 1000 گیگابایت (یک ترابایت) آدرس در حافظه به طور مستقیم دسترسی داشته باشد.
وقتی در مورد سیستمهای 64 بیتی صحبت میشود باید بین دو مفهوم محاسبات 64 بیتی که برای رسیدن به کارآیی بالاتر و آدرسدهی 64 بیتی که برای پشتیبانی از حجم بالاتری از حافظه به کار میروند، تفاوت قائل شد. سیستم 64 بیتی برای پشتیبانی از اطلاعات 64 بیتی از رجیسترهای 64 بیتی استفاده میکند. این سیستمها از آدرسدهی داخلی 64 بیتی استفاده میکنند که حجم حافظه قابل آدرسدهی را به 16 گیگابایت میرسانند در حالی که در سیستمهای 32 بیتی حداکثر حافظه قابل آدرسدهی، 4 گیگا بایت است. برای کار با سیستمعامل 64 بیتی به پردازنده 64 بیتی نیاز است.
در پردازنده های 64 بیتی، کانال ها(Bus)، عریض تر از کانال ها در پردازنده های 32 بیتی هستند و به همین دلیل این پردازنده ها می توانند دو برابر پردازنده های 32 بیتی عملیات پردازش انجام دهند. برای ایجاد تصوری روشن جهت مقایسه این دو نوع پردازنده، می توان دو بزرگراه را در نظر گرفت که یکی 32 لاین دارد و دیگری 64 لاین. قاعدتا تردد در بزرگراه دوم بسیار راحتر و سریعتر است!
اکثر پردازنده های بعد از سال 2007 از 64 بیت پشتیبانی می کنند .
مهمترین تفاوت سیستم عاملهای 32 بیتی و 64 بیتی مربوط است به دسترسی به حافظه، مدیریت حافظه و ویژگی های امنیتی .
مزایای سیستم عامل 64 بیتی:
1- افزایش حجم دسترسی مستقیم به حافظه رم تا یک ترابایت(بسته به نسخه سیستم عامل)
2- افزایش عملکرد نرم افزارهایی که به توان پردازش بیشتری نیاز دارند (مثل نرم افزارهای ویرایش و ساخت تصور و فیلم، بازی های سنگین گرافیکی و ...)
3- افزایش قابلیتهای امنیتی
معایب سیستم عاملهای 64 بیتی:
1- ممکن است درایور64 بیتی، بعضی از سخت افزارهای موجود نباشد( لذا گاهی اوقات، امکان استفاده از این سخت افزارها وجود نخواهد داشت و این امکان برای قطعات قدیمی تر بسیار محتمل است.-برای این که درایور یک سخت افزار قابل اجرا باشد باید ابتدا مورد تایید ماکروسافت قرار گرفته باشد - یعنی دارای مجوز دیجیتال باشد- در غیر این صورت قابل استفاده نخواهند بود)
2- سخت افزارهای 32 بیتی به هیچ وجه قابل استفاده نخواهند بود.
3- ممکن است نرم افزارهای 32 بیتی در سیستم عامل های 64 بیتی قابل اجرا نباشد.(در حال حاضر اکثر نرم افزارهای 32 بیتی هستند)(این نکته رو مورد بررسی قرار می دیم)
خوب تا اینجا سیستم های 32 بیتی و 64 بیتی رو مختصری بررسی کردیم حال می خواهیم ببینیم که چه گونه برنامه های 32 بینی در محیط 64 بیتی اجرا می شوند
در ظاهر شاید این کار جالبی نباشد و بیشتر برنامه های 32 بیتی شما از قابلیتهای پردازنده 64 بیتی تان استفاده نکنند. به نظر می رسد کارایی بالای سیستم شما به هدر می رود. ولی اینطور نیست!
ویندوز شما برنامه های 32 بیتی را به کمک لایه ای از ویندوز به نام
WoW64(Windows 32-bit on Windows 64-bit) اجرا می کند.
ویندوز 64 بیت از بخشی به نام WoW64 جهت سازگاری با برنامه های 32 بیتی بهره می برد. ولی پردازندههای 64 بیتی AMD و Intel از اجرای برنامه های 32 بیت هم پشتیبانی می کنند. برای همین برنامه های در ویندوز 64 بیت نیز تقریبا با سرعت مشابه یک ویندوز 32 بیت اجرا می شوند. حتی اگر تمام برنامه ها 32 بیت باشند، حداقل ویندوز شما در حالت 64 بیتی اجرا می شود و ویندوز 64 بیت امنیت بیشتری دارد.
با این وجود هستند برنامه هایی که در محیط 64 بیتی اجرا نمی شوند که می توان دلیل این اجرا نشدن را عدم سازگاری دانست (compatibility mode) .
compatibility mode
حالتی است در سیستم که در صورت سازگاری اجازه اجرای برنامه را می دهد.برخی از برنامه ها این سازگاری رو ندارند پس در سیستم 64 بیتی اجرا نمی شوند.
Environments of os
یا محیط های سیستم عامل نیز در اجرای نرم افزار های مختلف بی تاثیر نیستند به عنوان مثال اگر بخواهیم ماکروسافت ورد 2010 32 بیتی را روی یک ویندوزXP 32 بیتی نصب کنیم با مشکل مواجعه می شود زیرا این برنامه بر روی این سیستم عامل قابل نصب نیست.
code injection
که ترجمه ی فارسی رو نمی دونم چس میشه و به گفته ی گوگل تزریق کد هست. که طبق گفته ی ویکی پدیای بهره برداری از یک اشکال کامپیوتر است که توسط پردازش داده نامعتبر ایجاد می شود.
معایب تزریق زمانی رخ می دهد که یک برنامه داده غیر قابل اطمینان به یک مترجم می فرستد. معایب تزریق بسیار شایع هستند، به خصوص در کد هایی که ارث بر هستند. آنها اغلب در SQL، LDAP، XPath و یا دستورات سیستم عامل ها و.. رخ می دهد
تزریق می تواند سبب از دست دادن داده ها ، عدم پاسخگویی، یا محرومیت از دسترسی شود. تزریق گاهی اوقات می تواند منجر به عدم اجرای برخی برنامه ها شود.
سیاست های سازنده:
برخی از سازنده های نسخه های مختلف نرم افزاری که برای سیستم های مختلفی برنامه می نویسند گاهی برنامه خود را محدود می کنن و اجازه اجرای آن را در محیط 64 بیتی نمی دهند برای بعضی از برنامه های رایگان 32 بیتی و پرکاربرد وقتی می خواهند روی سیستم های 64 بیتی نصب شوند باید مبلغی پرداخت شود که امکان این کار فراهم آید.
File system API :
رابط کاربردی برای برنامه نویسی هست که از طریق آن یک ابزار یا برنامه کاربر درخواست خدمات از یک فایل سیستم سیستم را می کند.
این مورد نیز یکی از دلایل عدم اجرای برخی از برنامه ها می باشد.
عدم هماهنگی برخی از دستورات پردازنده:
برنامه اگر تحت زبانهای سطح پایین نوشته شده باشد احتمال دارد که ساختار دستور های پردازنده ها فرق کند به عنوان مثال پردازنده های ARM نمی توانند برنامه هایی را که برای ویندوز نوشته شده است ر اجرا کنن چون ساختار دستورهای آن متفاوت است.
و...
لیست منابع:
ویکی پدیای انگلسی
و گروه برنامه نویسان .fb
به کوشش Bndsh.blog.ir