تفاوت بین پوشه (Program Files (x86 با Programs Files در ویندوز
سیستمعامل ویندوز هنگام نصب برنامهها از دو پوشهی مختلف به نامهای Programs Files و (Programs Files (x86 استفاده میکند. اما تفاوت این دو نوع در چیست؟
سیستمعامل ویندوز در ابتدا تنها در نسخهی ۳۲ بیتی موجود بود. در نسخههای ۳۲ بیتی از ویندوز (حتی نسخههای ۳۲ بیتی ویندوز ۱۰) که اکنون نیز قابل دسترسی هستند، تنها یک پوشه در درایو ویندوز با نام Program Files وجود دارد.
این پوشه، مکان پیشفرض و توصیهشدهای است که هنگام نصب برنامهها، فایل اجرایی و فایلهای مربوط به آنها در آن ذخیره میشوند. به عبارت دیگر، برنامهها در پوشهی برنامهها (Programs Files) نصب میشوند.
اما در نسخههای ۶۴ بیتی ویندوز، اپلیکیشنها یا برنامههای ۶۴ بیتی در پوشهی Programs Files ذخیره میشوند. هرچند ویندوزهای ۶۴ بیتی از برنامههای ۳۲ نیز پشتیبانی میکنند؛ اما مایکروسافت تمایل ندارد برنامههای ۳۲ و ۶۴ بیتی در یک مکان با یکدیگر ترکیب شوند. در نتیجه، برنامههای ۳۲ بیتی در پوشهی دیگری به نام (Progames Files (x86 نصب میشوند.
ویندوز در نسخههای ۶۴ بیتی خود، اپلیکیشنهای ۳۲ بیتی را با استفاده از زیرسیستمی به نام WOW64 که مخفف ویندوز ۳۲ بیتی در ویندوز ۶۴ بیتی (Windows 32-bit on Windows 64-bit) است اجرا میکند.
زمانی که شما اقدام به اجرای یک برنامهی ۳۲ بیتی در نسخههای ۶۴ بیتی ویندوز میکنید، WOW64 که یک لایهی شبیهساز است، دسترسی فایل آن برنامه را بهصورت یکپارچه از مسیر «C:\Program Files» به «(x86)اC:\Program Files» تغییر میدهد. برنامهی ۳۲ بیتی تلاش میکند به پوشهی Programs Files دسترسی پیدا کند؛ اما مسیر دسترسی آن به سمت پوشهی (Program Files (x86 تغییر کرده است. با این حال، برنامههای ۶۴ بیتی همچنان از پوشهی معمولی Programs Files استفاده میکنند.
محتوای ذخیرهشده در هر پوشه چیست
بهصورت خلاصه، در یک نسخهی ۳۲ بیتی از ویندوز، تنها یک پوشهی Programs Files وجود دارد. این پوشه، محل ذخیرهسازی تمام برنامههای نصبشده است. قاعدتا تمام این برنامهها از نوع ۳۲ بیتی هستند؛ زیرا همانطور که میدانیم، برنامههای ۶۴ بیتی قابل نصب در یک ویندوز ۳۲ بیتی نیستند.
اما در یک نسخهی ۶۴ بیتی از ویندوز، برنامههای ۶۴ بیتی در پوشهی Programs Files ذخیره شدهاند و محل ذخیرهسازی برنامههای ۳۲ بیتی نیز در پوشهی (Programs Files (x86 است.
چرا آنها جدا هستند
این در واقع یک ویژگی سازشپذیری و طراحیشده برای برنامههای ۳۲ بیتی است. برنامههای ۳۲ بیتی احتمالا اصلا خبر ندارند که یک نسخهی ۶۴ بیتی از ویندوز وجود دارد؛ بنابراین ویندوز آنها را از کدهای ۶۴ بیتی دور نگه میدارد.
برنامههای ۳۲ بیتی قادر به فراخوانی فایل ۶۴ بیتی DLL نیستند و در صورت انجام این کار امکان کرش کردن یا از کار افتادن آنها وجود دارد. همین موضوع در مورد برنامههای ۶۴ بیتی نیز صدق میکند. جدا نگه داشتن فایلهای برنامهها برای ساختار متفاوت پردازندهها، از وقوع چنین خطاهایی جلوگیری میکند.
برای مثال، فرض کنیم ویندوز تنها از یک پوشهی Programs Files برای نصب برنامهها استفاده میکرد. یک اپلیکیشن ۳۲ بیتی ممکن است به جستجوی یک فایل DLL مایکروسافت آفیس در مسیر C:\Program Files\Microsoft Office بپردازد و پس از یافتن، اقدام به فراخوانی آن کند. اگر آفیس نصبشده از نوع ۶۴ بیتی باشد، این برنامه کرش خواهد کرد و عملکرد مناسبی نخواهد داشت. با برخورداری از دو پوشهی مجزا، اپلیکیشن مورد نظر هرگز قادر به یافتن آن فایل DLL نخواهد بود؛ زیرا نسخهی ۶۴ بیتی مایکروسافت آفیس در مسیر C:\Program Files\Microsoft Office نصب شده است؛ درحالیکه اپلیکیشن ۳۲ بیتی در مسیر C:\Program Files (x86)\Microsoft Office به جستجو میپردازد.
این موضوع همچنین زمانی که یک توسعهدهنده اقدام به ساخت هر دو نسخهی ۳۲ و ۶۴ بیتی از برنامهی خود میکند، کمککننده است؛ مخصوصا اگر گاهی نیاز به نصب همزمان هر دوی آنها وجود داشته باشد. نسخهی ۳۲ بیتی بهصورت خودکار در مسیر (C:\Program Files (x86 و نسخهی ۶۴ بیتی بهصورت خودکار در مسیر C:\Program Files نصب میشود. اگر ویندوز از یک پوشهی واحد استفاده میکرد، توسعهدهندهی مورد نظر برای جدا نگه داشتن آنها ناچار به داشتن یک پوشهی ۶۴ بیتی میشد و در آن صورت احتمالا در اختیار داشتن استانداردی واقعی برای تعیین مکان نصب نسخههای مختلف وجود نداشت.
چرا پوشهی ۳۲ بیتی، x86 نامیده میشود
شما هرگز چیزی به نام ۳۲ بیت و ۶۴ بیت مشاهده نمیکنید. در عوض برای اشاره به این دو ساختار مختلف با اسامی x86 و x64 مواجه میشوید. علت این است که کامپیوترهای اولیه از چیپ اینتل ۸۰۸۶ استفاده میکردند. این چیپهای اختصاصی ۱۶ بیتی بودند؛ اما نسخههای جدید به ۳۲ بیتی تبدیل شدند. در حال حاضر x86 به ساختار پیش ۶۴ بیتی اشاره دارد؛ یعنی زمانی که همه چیز ۱۶ بیت یا ۳۲ بیت بود. در عوض ساختار جدیدتر ۶۴ بیتی با عنوان x64 نامیده میشود.
در نتیجه x86 هم ساختار ۳۲ بیتی و هم ۱۶ بیتی را شامل میشود و پوشهی Programs Files برای برنامههایی است که از ساختار پردازندهی قدیمیتر x86 استفاده میکنند. با این حال در نظر داشته باشید که نسخههای ۶۴ بیتی قادر به اجرای کدهای ۱۶ بیتی نیستند.
شناخت نسخهی برنامهها و انتخاب محل ذخیرهسازی آنها بر عهدهی شما نیست. ویندوز بهصورت خودکار برنامهها را در پوشهی مخصوص خود نصب میکند؛ در نتیجه نیازی نیست ذهن خود را درگیر آن کنید. فرقی نمیکند برنامهها در کجا نصب شدهاند، تمام آنها در منوی استارت ظاهر میشوند و عملکرد معمول خود را خواهند داشت. هم برنامههای ۳۲ بیتی و هم ۶۴ بیتی دادههای شما را در پوشههایی نظیر AppData و ProgramData ذخیره میکنند. بنابراین همه چیز بهصورت خودکار و پیشفرض انجام میگیرد و نیازی به دخالت شما وجود ندارد.
البته با این حال، گاهی اوقات باید از محل ذخیرهسازی یک برنامه مطلع باشید. برای مثال، فرض کنیم میخواهید به پوشهی استیم خود بروید و اقدام به پشتیبانگیری از همهی فایلها کنید. از آنجایی که استیم یک برنامهی ۳۲ بیتی است، شما آن را در مسیر (C:\Program Files (x86 پیدا خواهید کرد.
اگر اطمینان ندارید برنامهای که نصب کردهاید از نوع ۶۴ بیتی است یا نه و به دنبال پوشهی نصب آن میگردید، احتمالا ناچارید هر دو پوشهی برنامهها را برای یافتن آن جستجو کنید.
افزون بر این، میتوانید از تسک منیجر ویندوز ۱۰ نیز استفاده کنید. در نسخههای ۶۴ بیتی ویندوز، برنامههای ۳۲ بیتی با برچسبی ۳۲ بیتی علامتگذاری شدهاند. در نتیجه برای یافتن محل نصب آنها باید به مسیر (C:\Program Files (x86 مراجعه کنید.
منبع:zoomit