TGViewer
CleverDevs CleverDevs @cleverdevs · 10.9K subscribers
Post #2663 3.96K

Forwarded from sohrab::stdout

خب اومدم یک پست شبانه بذارم و برم تا چند روز دیگه که با یک محتوای خوب برگردم :3

براتون سوال نشده که چرا ویندوزهای ۳۲ بیتی نمی‌تونستن بیشتر از ۴ گیگ رم رو ببینن؟

خب من یک ویدئویی رو توی اینستاگرام دیدم و برام جالب بود و رفتم درموردش تحقیق کردم؛ عملاً می‌تونستن ببینن، همونطوری که هسته لینوکس روی ۳۲ بیت می‌تونست بیشتر از ۴ گیگ رو ببینه اما...

اول بذاریم ببینیم این ۴ گیگ از کجا اومد:

در سیستم‌های ۳۲ بیتی، آدرس‌دهی حافظه با ۳۲ بیت انجام می‌شه.
هر بیت فقط دو حالت داره (۰ یا ۱)، پس تعداد آدرس‌های ممکن برابره با:

2^32 = 4/294/967/296


چون حافظه به صورت بایت‌به‌بایت آدرس‌دهی می‌شه، این عدد دقیقاً می‌شه حدود ۴ گیگابایت (دقیق‌ترش ۴ گیبی‌بایت). یعنی پردازنده بدون هیچ کمکی، فقط می‌تونه تا ۴ گیگ حافظه فیزیکی رو مستقیم ببینه.

اما اینجا یه چیز جالب به اسم PAE وارد می‌شه

‌‌‏Physical Address Extension یا همون PAE، یه قابلیت سخت‌افزاریه که اینتل از زمان پنتیوم پرو (۱۹۹۵) اضافه کرد.
با فعال کردن PAE، پردازنده از آدرس فیزیکی ۳۲ بیتی به ۳۶ بیتی ارتقا پیدا می‌کنه.
نتیجه؟ حداکثر حافظه فیزیکی قابل آدرس‌دهی می‌شه:

2^36 = 64 GB

یعنی از نظر سخت‌افزاری، پردازنده‌های ۳۲ بیتی با PAE کاملاً قادر بودن تا ۶۴ گیگ رم رو مدیریت کنن.

لینوکس از سال ۱۹۹۹ (کرنل ۲.۳.۲۳ به بعد) پشتیبانی کامل از PAE رو داشت و نسخه‌های PAE کرنل لینوکس روی ماشین‌های ۳۲ بیتی می‌تونستن بدون مشکل تا ۶۴ گیگ رم رو ببینن و استفاده کنن.

پس چرا ویندوز ۳۲ بیتی محدود به ۴ گیگ موند؟

اینجا دیگه محدودیت فنی نبود، بلکه تصمیم مایکروسافت بود.

مایکروسافت PAE رو در نسخه‌های سرور ویندوز (مثل Windows Server 2003 Enterprise و Datacenter) فعال کرد و اونا می‌تونستن تا ۶۴ یا حتی ۱۲۸ گیگ رم رو ببینن.
ولی در نسخه‌های کلاینت (ویندوز XP، ویستا، ۷ و حتی ۱۰ نسخه ۳۲ بیتی) عمداً این قابلیت رو محدود کردن و سقف رو روی ۴ گیگ نگه داشتن.

دلیل اصلی‌ش؟ درایورها.

خیلی از درایورهای سخت‌افزاری (مخصوصاً پرینتر، کارت صدا، وب‌کم و دستگاه‌های جانبی مصرف‌کننده) فرض می‌کردن که آدرس فیزیکی همیشه داخل ۳۲ بیت جا می‌شه. وقتی PAE فعال می‌شد و حافظه بالای ۴ گیگ استفاده می‌شد، این درایورها بیت‌های بالایی آدرس رو دور می‌ریختن و سیستم کرش می‌کرد (بلواسکرین معروف).

مایکروسافت برای جلوگیری از این مشکلات سازگاری، در نسخه‌های خانگی ویندوز، حتی وقتی PAE برای قابلیت‌هایی مثل DEP (Data Execution Prevention) فعال بود، باز هم اجازه نمی‌داد حافظه بالای ۴ گیگ استفاده بشه.

نکته دیگه: چرا حتی با ۴ گیگ رم هم معمولاً فقط ۳.۲ تا ۳.۵ گیگ دیده می‌شد؟

چون بخشی از فضای آدرس ۴ گیگی توسط سخت‌افزار رزرو می‌شد (Memory-Mapped I/O).
کارت گرافیک، بایوس، دستگاه‌های PCI و... بخشی از این فضای آدرس رو برای خودشون برمی‌داشتن. در نتیجه رم واقعی قابل استفاده کمتر از ۴ گیگ می‌شد. به این می‌گن «۳ گیگ بَریِر» یا ۳GB Barrier.

https://en.wikipedia.org/wiki/Physical_Address_Extension

@SohrabContents
Wikipedia Physical Address Extension memory management feature
  • ❤ 42
  • 👍 8
  • 🔥 3
  • 👎 1
More from @cleverdevs
  1. Sep 24, 2026شرکت کوالکام اعلام کرده قرار هست پشتیبانی رسمی لپتاپهای مجهز به چیپ Snapdragon X2 از لینوک…
  2. Sep 23, 2026توی کدای کرنل برای سیستم‌کال reboot شما باید دوتا magic value به تابع بدید تا کرنل برای ای…
  3. Sep 21, 2026یه نفر اومده و یه موزیک پلیر لینوکس به اسم sung با cpp و qt نوشته که طراحی زیبا و ویژگی ها…
  4. Sep 14, 2026بیرجند لاگی ها توی روز برنامه نویس یه چلنج باحال دیگه داشتن: چلنج فشرده سازی! (: توی این ر…
  5. Sep 13, 2026روزتون مبارک https://en.wikipedia.org/wiki/Programmer%27s_Day @CleverDevs - @CleverDevsGp
  6. Sep 12, 2026این ویدیو قرار بود خیلی زودتر منتشر بشه... 😅 اواخر آذرماه سال گذشته با گویبان نشستیم و یک…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →