TGViewer
gooyban🦆 gooyban🦆 @gooyban · 10.5K subscribers
Post #722 3.47K

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
  • ❤ 46
  • 👍 13
  • 👏 11
More from @gooyban
  1. Sep 23, 2026Post #726
  2. Sep 23, 2026Post #725
  3. Sep 21, 2026ربات GitHub Lens ساخته شد. 🎉 یه ربات کاربردی برای پیدا کردن، بررسی و استفاده راحت‌تر از پ…
  4. Sep 20, 2026Post #723
  5. Sep 19, 2026به عنوان نکته تکمیلی، به جای کار با مدل در ترمینال، میتونین از رابط تحت وب llama.cpp استفا…
  6. Sep 19, 2026https://youtu.be/lch1DA5gPL0?si=_7h01JM_NCqzvco9 🎬توی این ویدیو یاد می‌گیریم چطور یک هوش…
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 →