سؤال هل يمكن لجهاز يعمل بنظام تشغيل 32 بت استخدام ملف 8GB RAM + 20GB؟


ما أفهمه عن نظام التشغيل 32 بت هو أن العنوان يتم التعبير عنه في 32 بت ، لذلك على الأكثر يمكن لنظام التشغيل استخدام 232 = مساحة ذاكرة 4G - أفترض أن وحدة بايت ، لذلك 4GB.

هل هذا يعني أنه إذا كان أي جهاز مزود بنظام تشغيل 32 بت (سواء كان نظام تشغيل Windows أو Unix) يحتوي على أكثر من 4 جيجا بايت من ملف RAM + صفحة على القرص الصلب ، على سبيل المثال 8GB RAM وملف صفحة 20GB ، لن يتم استخدام الذاكرة الخاصة به "؟

بواسطة "تم اسعماله" أعني أن زيادة ذاكرة الوصول العشوائي أو ملف الصفحة لن يساعد في الأداء ؛ بالطبع ، من الممكن دائمًا أن يستمر التطبيق في طلب الذاكرة من نظام التشغيل ولكنه يفشل.

وبالمثل ، إذا كان جهاز نظام تشغيل 32 بت يحتوي على 2 غيغابايت من ذاكرة الوصول العشوائي وملف صفحة 2GB ، فإن زيادة حجم ملف الصفحة لن يساعد في الأداء. هل هذا صحيح؟


96
2017-12-13 12:59


الأصل


كملاحظة جانبية ، إذا كان لديك أكثر من 4 غيغابايت من ذاكرة الوصول العشوائي ، ونظام تشغيل 32 بت فقط ، يمكنك إنشاء قرص RAM. هذا قرص صلب في ذاكرة الوصول العشوائي ، ويمكنك استخدام ذاكرة الوصول العشوائي غير المستخدمة / غير المعالجة لوضعها فيه. - Simon Verbeke
لا تستطيع لا يزال يتعين إنشاء ramdisk عبر نظام التشغيل ، إذا كان نظام التشغيل لا يمكن استخدام الذاكرة لا يمكنك إنشاء ramdisk هناك إما. (ما لم يكن لديك السير يمكن إنشاء ramdisk ، وهو أمر نادر). - AVee
الإجابة القصيرة هي نعم". على الرغم من أن تعطى عادة عملية مساحة عنوان 32 بت للاستخدام، ونظام التشغيل نفسه يمكن استخدام أكثر من ذلك (إما عن طريق البنك التحول كما فعلنا في 80s أو عنوان المدرسة الحيل التمديد كما PAE إنتل. أيضا، تذكر تشغيل أكثر من برنامج واحد في كل مرة ، والذي قد يتكون من أكثر من عملية واحدة (يضع Chrome علامات تبويب في عمليات مختلفة) ، وسيستخدم نظام التشغيل نفسه الذاكرة لأشياء مثل التخزين المؤقت للبيانات من الأقراص الثابتة المحلية حتى يتسنى لك الوصول بشكل أسرع إلى البيانات بالفعل مستخدم. - rbanffy


الأجوبة:


ما أفهمه عن نظام تشغيل 32 بت ، هو العنوان المعبر عنه في 32 بت ، لذلك على الأكثر يمكن لنظام التشغيل استخدام مساحة ذاكرة 2 ^ 32 = 4 جيجابايت

أكثر من معالجة يستطيع عنوان هو 4GB. من المحتمل أن تكون مربكًا ذاكرة مع مساحة العنوان. يمكن أن تحتوي العملية على ذاكرة أكبر من مساحة العنوان. هذا هو قانوني تماما و شائع جدًا في معالجة الفيديو وتطبيقات ذاكرة مكثفة أخرى.  يمكن تخصيص عملية العشرات من GB من الذاكرة ثم تبديلها إلى خارج مساحة العنوان في الإرادة. فقط 2 جيجابايت يمكن أن تذهب إلى المستعمل مساحة العنوان في وقت واحد.

إذا كان لديك مرآب أربع سيارات في منزلك ، فلا يزال بإمكانك امتلاك خمسين سيارة. أنت فقط لا تستطيع الاحتفاظ بهم جميعا في المرآب الخاص بك. يجب أن يكون لديك مخزن إضافي في مكان آخر لتخزين ما لا يقل عن 46 منهم ؛ أي السيارات التي تحتفظ بها في المرآب الخاص بك وأي السيارات التي تحتفظ بها في موقف السيارات في الشارع متروك لك.

هل يعني هذا أي نظام تشغيل 32 بت ، سواء كان نظام تشغيل Windows أو unix ، إذا كان الجهاز يحتوي على ملف صفحة RAM + على القرص الصلب أكثر من 4 جيجابايت ، على سبيل المثال 8 غيغابايت من ذاكرة الوصول العشوائي وملف صفحة 20GB ، لن يكون هناك "ذاكرة مستخدمة"؟

على الاطلاق لا يعني ذلك. يمكن لعملية واحدة استخدام ذاكرة أكثر من ذلك! مرة أخرى كمية الذاكرة التي تستخدمها العملية غير مرتبطة تقريبًا تمامًا بحجم مساحة العنوان الظاهرية التي تستخدمها العملية. تماما مثل عدد السيارات التي تحتفظ بها في المرآب الخاص بك غير مرتبط تماما بعدد السيارات التي تملكها.

علاوة على ذلك، يمكن لعمليتين مشاركة صفحات الذاكرة غير الخاصة. إذا تم تحميل كافة العمليات نفس DLLs العشرين ، كافة العمليات مشاركة صفحات الذاكرة لهذا الرمز. انهم لا يشاركون مساحة عنوان الذاكرة الظاهرية، يشتركون ذاكرة.

وجهة نظري ، في حالة عدم الوضوح ، هي ذلك يجب عليك التوقف عن التفكير في الذاكرة ومساحة العنوان نفس الشيء ، لأنها ليست الشيء نفسه على الإطلاق.

إذا كان جهاز نظام التشغيل 32 بت يحتوي على ذاكرة عشوائية 2 غيغابايت وملف صفحة 2 غيغابايت ، فإن زيادة حجم ملف الصفحة لن يساعد في الأداء. هل هذا صحيح؟

لديك خمسين سيارة ومرآب أربع سيارات ، و 100 موقف للسيارات في الشارع. يمكنك زيادة حجم موقف السيارات إلى 200 موقع. هل تحصل أيًا من سياراتك على أسرع نتيجة لك الآن في 150 مساحة إضافية لوقوف السيارات بدلاً من 50 مساحة إضافية لوقوف السيارات؟


145
2017-12-13 15:17



أجد هذه الإجابة لعدم تناول السؤال المطروح وكاد خادع في النقاط. - Rig
@ Rig: رائع ، يسعدني سماع نقدك البناء. الآن فرصتك ل اكتب إجابة أفضل وتبيّن لنا نوع الإجابة التي تعتقد أنها أقل خداعًا وأكثر صلة بالموضوع. - Eric Lippert
BlueRaja: أظن أنك مربكة ذاكرة جسدية مع ذاكرة. الذاكرة الفعلية هي مجرد تحسين يسمح بالوصول السريع إلى الذاكرة. كما هو الحال مع ذاكرة التخزين المؤقت للمعالج هي تحسين يسمح بالوصول بشكل أسرع إلى الذاكرة. ذاكرة هو لجميع المقاصد والأغراض المساحة محفوظة في ملف الصفحة. ما إذا كانت صفحة معينة في ملف الصفحة هي (1) تم تعيينها إلى عنوان ذاكرة ظاهري أو (2) نسخ من القرص إلى الذاكرة الفعلية غير ذي صلة بمسألة ما إذا كان تخصيص أم لا. - Eric Lippert
BlueRaja: قد تساعد مقالة ريموند تشين حول هذا الموضوع. يوضح كيفية تخصيص 4 غيغابايت من ملف صفحة؛ هذا هو الذاكرة التي تملكها العملية. لا يمكن لهذه العملية عنوان الشيء كله في وقت واحد بالطبع ، ولكن يمكن أن تعالج أي صفحة عن طريق تعيين صفحة في صفحة VM غير مستخدمة ، واستخدامها لفترة من الوقت ، ثم تجاهلها. blogs.msdn.com/b/oldnewthing/archive/2004/08/10/211890.aspx - Eric Lippert
كان من الممكن أن تكون هذه الإجابة أكثر وضوحاً ، إيريك ، إذا كنت قد ذكرت صراحة أن Windows (وأنظمة تشغيل أخرى) تسمح لك "بحفظ" الذاكرة دون أن يكون لديك بالفعل في مساحة العنوان الظاهرية الخاصة بك ، ثم الإجابة على السؤال الواضح "ثم كيف حدد موقعه؟". أعتقد أن الإجابة على ذلك هي "هناك نوع من معرف الصفحة تستخدمه للإشارة إليه من أجل وضعه في مساحة العنوان الظاهرية ، وبعد ذلك يمكنك معالجته هناك" ، ولكن لا أعرف ، إجابتك لا تقول :) - Timwi


صحيح أن وحدة المعالجة المركزية يمكنها فقط معالجة الحد الأقصى من ذاكرة الوصول العشوائي (4Gb). ومع ذلك ، استخدام وحدة المعالجة المركزية الحالية ل MMU (وحدة إدارة الذاكرةلترجمة عناوين الذاكرة الخاصة بالعملية إلى عناوين الذاكرة الفعلية.

يستخدم هذا MMU لكافة أنواع الحيل المختلفة ، من عزل الذاكرة (لا يمكن معالجة A عملية ذاكرة B) إلى مشاركة الذاكرة (عملية A يمكن الوصول إلى نفس منطقة الذاكرة الفعلية كعملية B ويمكن تبادل البيانات بهذه الطريقة).

على الرغم من أن دعم وحدة المعالجة المركزية 32 بت فقط يدعم 4 جيجابايت من الذاكرة لكل عملية ، إلا أنه يمكن أن يصل إلى 64 جيجا بايت من ذاكرة الوصول العشوائي عند استخدامه ملحق العنوان الفعلي. هذا يسمح عملية أ لاستخدام أول 4Gb من الذاكرة ، في حين أن العملية B تستخدم 4Gb المقبل. في المجموع ، يتم استخدام أكثر من 4 جيجابايت من الذاكرة الفعلية ، ولكن لا يزال يتم تعداد إجمالي مقدار الذاكرة التي تستخدمها عملية واحدة في 4Gb.

يتم دعم PAE على Linux منذ إصدار kernel 2.3.23 وعلى بعض النكهات 32 بت من Windows Server ، ولكن ليس على نظام التشغيل Windows XP أو Vista أو Windows Vista الإصدار 32 بت.

إذا كانت وحدة المعالجة المركزية لا تدعم PAE ، فستقتصر على 4 جيجابايت من الذاكرة الفعلية (أو أقل اعتمادا على عوامل أخرى).

يرجى ملاحظة أنه لا يزال بإمكان نظام التشغيل إخراج أجزاء من الذاكرة الفعلية إلى القرص (ملف الصفحة) بغض النظر عن وحدة المعالجة المركزية التي تدعم PAE. يضمن ذلك إمكانية بدء عمليات متعددة تستخدم أكثر من 4 جيجابايت. التأثير الوحيد لـ PAE هو ما إذا كان بإمكانك الاحتفاظ بـ 4 جيجابايت من العملية B في الذاكرة الفعلية أثناء تشغيل العملية A.


67
2017-12-13 13:02



هل هذا يعني أنه إذا لم يدعم ، فما قلته أعلاه صحيح؟
يدعم Windows XP PAE (بدءاً من SP2 ، على ما أظن) ، ولكنه يتجاهل ذاكرة الوصول العشوائي التي تتجاوز 4 جيجابايت حتى عندما يدعم الجهاز PAE ؛ نرى هنا. يتم استخدامه لـ Data Execution Prevention - لا يتوفر بت NX / XD إلا في إدخال جدول الصفحات PAE ، وليس إدخال جدول صفحات "منتظم". - Wyzard
يمكن أن تكون شرائح الرنين أيضًا عاملاً مقيدًا لمقدار الذاكرة التي يمكن دعمها / استخدامها بغض النظر عن نظام التشغيل أو الاختراق الذي اخترته. - Moab
أود أن أضيف أن السبب في أن الإصدارات المستهلكة من النوافذ 32bit لا تدعم> 4 جيجابايت من ذاكرة الوصول العشوائي هو أن عدد كبير من محركات الأقراص تم العثور على عدم العمل بشكل صحيح مع تلك الذاكرة بكثير ؛ ومنذ ذلك الحين كان> 4GB من ذاكرة الوصول العشوائي نادرة للغاية خارج الخوادم / محطات العمل الراقية للغاية أن معظم الشركات التي حافظت على السائق لم تكن مهتمة بإنفاق المال لتحديث برامج التشغيل التي لن تستخدم إلا بنسبة 0.1 ٪ من قاعدة عملائها. - Dan Neely
DanNeely نظام التشغيل هل لديك دعم للذاكرة ، انها محدودة بسبب مشاكل الترخيص. على الرغم من أنني أوافق على أن هذا هو اختراق خاص بطرف ثالث ، إلا أنه يخص المتغيرات الخاصة بمستهلك Windows فقط. توزيعات Windows المستندة إلى الملقم ، بدءًا من ويندوز 2000، وقد دعم أكثر من 4GB من الذاكرة (المرجع. الرابط الأول). - Breakthrough


متحدثا تحديدا عن المتغيرات ويندوز 32 بت ، لديهم دعم لأكثر من 4 غيغابايت من ذاكرة الوصول العشوائي منذ المتغيرات ويندوز 2003 (ويمكنك أيضا الحصول على اختراق نواة لنظام ويندوز 7 للسماح لك باستخدام كل ذاكرة الوصول العشوائي الخاصة بك في 32 بت). ومع ذلك ، فإن هذا يأتي بتكلفة ، كما هو موضح في الجزء الأول من سؤالك.

في نظام تشغيل 32 بت ، يكون حجم المؤشر (عنوان الذاكرة) هو نفس طول كلمة وحدة المعالجة المركزية (CPU) ، 32-بت ، والذي يسمح (كما ذكر) مساحة ذاكرة 2 ^ 32 = 4 جيجابايت. يأخذ Windows أيضًا نهج "الذاكرة الظاهرية" للتطبيقات ، بحيث يكون لكل تطبيق مساحة ذاكرة خاصة به.

نظرًا لأن كل مؤشر يبلغ عرضه 32 بت فقط ، كل تطبيقيمكن توجيه المؤشرات إلى ذاكرة تصل إلى 4 غيغابايت فقط ، على الرغم من أن النظام يمكنه دعم أكثر من 4 غيغابايت من ذاكرة الوصول العشوائي. بقدر ما أعرف ، هذا هو التحذير الوحيد لاستخدام أكثر من 4 غيغابايت من ذاكرة الوصول العشوائي في نظام تشغيل 32 بت. إجمالاً ، يمكن أن يكون لديك العديد من التطبيقات التي تستخدم أكثر من 4 جيجابايت من ذاكرة الوصول العشوائي المدمجة ، ولكن يمكن لأي عملية خاصة واحدة فقط تخصيص / الوصول إلى 4 جيجابايت.


الرجوع إلى سؤالك ، لنفترض أن لديك برنامجًا يستخدم ذاكرة RAM سعة 2 غيغابايت. إذا كان لديك 10 حالات من هذا البرنامج ، هذا هو 20GB. سيتم استخدام كافة 8GB من ذاكرة الوصول العشوائي الخاصة بك ، فضلا عن 12GB آخر من ملف ترحيل الصفحات. لذلك نعم ، تحت أنظمة التشغيل 32 بت ، فمن الممكن استخدام هذه الذاكرة.

إذا كان هذا الجهاز 32 بت لديه 2GB RAM وملف صفحة 2GB ، زيادة   حجم ملف الصفحة لن يساعد على الأداء. هل هذا صحيح؟

زيادة حجم ملف ترحيل الصفحات سوف عادة لا زيادة الأداء (إلا إذا تم تعيين ذاكرة الوصول العشوائي و ملف ترحيل الصفحات الخاص بك إلى الحد الأدنى المطلق ، أو تعيين منخفض للغاية باستمرار thrashes الكمبيوتر الخاص بك). ومع ذلك ، فإنه يمنع الكمبيوتر من نفاد الذاكرة (الظاهرية). في أي وقت يحتاج أي شيء إلى إزالة ملف ترحيل الصفحات ، فأنت بالفعل تأخذ ضخم ضرب الأداء (منذ محرك الأقراص الصلبة هو أوامر من حجم أبطأ ثم RAM الخاص بك).


15
2017-12-13 13:18



من مساحة العنوان 4 جيجابايت التي تحصل عليها كل عملية ، يتوفر فقط 2 جيجابايت فقط للبرنامج لاستخدام ؛ 2 غيغابايت أخرى محجوزة للاستخدام من قبل النواة. ال / 3GB خيار التمهيد يمكن أن تسمح لبعض البرامج لاستخدام المزيد من ذاكرة الوصول العشوائي. - Wyzard
Breakthrough: "زيادة حجم ملف ترحيل الصفحات لن يؤدي إلى زيادة الأداء" لا أعتقد أن هذا صحيح. على سبيل المثال ، إذا كان هناك المزيد من التبديل ، يمكن لنظام التشغيل تبديد بيانات البرنامج غير المستخدمة بشكل أكثر قوة ، واستخدام ذاكرة الوصول العشوائي المجانية على سبيل المثال. التخزين المؤقت القرص. في بعض التكوينات ، قد يؤدي هذا إلى أداء أفضل. هناك إجابة لطيفة على ServerFault على سبب أهمية ملف ترحيل الصفحات ، والذي يمس هذه المشكلات: serverfault.com/questions/23621/... - sleske
كن حذرا من عبارات مثل "زيادة حجم ملف ترحيل الصفحات لن يؤدي إلى زيادة الأداء"، فمن الممكن تماما لملف صفحة صغير جدا لا يؤدي إلى مزيد من سحق القرص من وجود ملف صفحة أكبر! شاهد الإجابات والتعليقات في هذا السؤال. - Mark Booth
sleske نقطة جيدة ، لقد قمت بتحديثه ليكون أكثر من نوع "عادة لا" من الشيء. في حين أوافق على أنه قد يحدث فرقًا كبيرًا في الخادم ، فبالنسبة لمعظم الناس ، فإن النقطة التي كنت أحاول الوصول إليها هي أنهم سيكونون أفضل حالاً بمجرد الحصول على المزيد من ذاكرة الوصول العشوائي (حيث أن الأداء عند استخدام خدمة الاستدعاء بطيء جدًا كما يمكن أن تحصل). - Breakthrough


عندما يقال أن المعالج هو 32 بت ، فهذا يعني أنه يمكن أن يعمل مع أرقام 32 بت باستخدام تعليمات واحدة. هذا ليس له علاقة تذكر بعرض أتوبيس العنوان الخاص به ، والذي على معمارية إنتل هو 36 بت منذ ذلك الحين بنتيوم برو صدر في عام 1995.

يأتي الحد 4GB الشهير من حقيقة أن معظم استخدامات برامج الكمبيوتر الشخصي نموذج الذاكرة المسطحة حيث يمكن معالجة كل بايت من الذاكرة بواسطة مؤشر. نظرًا لأنه يجب أن يلائم المؤشر في سجل لاستخدامه ، وتكون السجلات مساوية لـ 32 بتًا ، فأنت محدود بـ 4 غيغابايت.


0
2018-06-17 13:33



هذا غير صحيح ، كما أشرنا في إجابات سابقة أخرى أعلاه. - ChrisInEdmonton
هل يمكن أن تشير إلى حقيقة معينة أنني أخطأت؟ - Dmitry Grigoryev
يمكن لعملية واحدة استخدام أكثر من 4 غيغابايت. وعلى وجه التحديد ، تشير الإجابات السابقة إلى "يمكن أن تحتوي العملية على ذاكرة أكبر من مساحة العنوان". - ChrisInEdmonton
انظر على سبيل المثال ، blog.superuser.com/2011/04/23/... الآن ، بالتأكيد ، لا يمكنك استخدام أكثر من 4 غيغابايت في وقت واحد ، ولكن يمكن لعملية واحدة تفكيك وإعادة تخطيط الذاكرة ، بحيث يمكن استخدام أكثر من 4 جيجابايت في عملية واحدة ، هناك القليل من مسك الدفاتر. هذا بلوق وظيفة محددة بالأحرى إلى Windows. لقد قمت بتشغيل خوادم قواعد البيانات مع> 4 غيغابايت من الذاكرة المخصصة ، على تثبيت لينكس 32 بت. في هذه الأيام ، بالطبع ، يمكنك فقط تشغيل Linux 64 بت. - ChrisInEdmonton
حسنًا ، اعتذاري. لم أفكر في إمكانية mmap ذاكرة اضافية. - Dmitry Grigoryev