سؤال

أقوم بتشغيل برنامج وضع المستخدم على الأولوية العادية. يبحث برنامجي في مشكلة NP، ونتيجة لذلك، يستخدم الكثير من الذاكرة التي تنتهي في نهاية المطاف في ملف المبادلة.

ثم يتجمد الماوس، ويستغرق الأمر إلى الأبد لمدير المهام للفتح واسمحوا لي إنهاء العملية.

ما أريد أن أعرفه هو كيف يمكنني إيقاف نظام التشغيل Windows الخاص بي من قفل تماما من هذا حتى على الرغم من أن 1 فقط من النوى الخاصة بي تستخدم.

تحرير: شكرا على الردود.

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

هل كانت مفيدة؟

المحلول

المشكلة هي أنه عندما يكون برنامج آخر (مثل Explorer.exe) سوف ينفذ، تم تبديل جميع رمزه وذاكرة. لإفساح المجال لبرنامج آخر، يجب على Windows أولا كتابة البيانات التي يستخدمها برنامجك إلى القرص، ثم قم بتحميل ذاكرة البرنامج الأخرى. كل صفحة جديدة من التعليمات البرمجية التي يتم تنفيذها في البرنامج الآخر تتطلب الوصول إلى القرص، مما يؤدي إلى تشغيلها ببطء.

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

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

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

نصائح أخرى

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

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

لا أعتقد أن هناك إجابة برمجة على هذا السؤال، بصرف النظر عن "إعادة هيكلة تطبيقك لاستخدام ذاكرة أقل." من المرجح أن تكون مشكلة SWAPFILE بسبب عنق الزجاجة في الوصول إلى القرص، خاصة إذا كنت تستخدم HDD IDE أو Swapfile مجزأة للغاية.

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

سيكون هناك شيء آخر يستحق النظر فيه إذا كنت منصة Ona 32bit، منفذ إلى نظام 64bit واحصل على صندوق مع ذاكرة الوصول العشوائي أكثر واقعية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top