क्या पूरी तरह से स्वैप से एक प्रक्रिया लाने के लिए विंडोज को संकेत देना संभव है


13

क्या किसी विशेष प्रक्रिया को स्वैप से लाने के लिए विंडोज वर्चुअल-मेमोरी-मैनेजर को इंगित करना संभव है?

जिस स्थिति में मैं अक्सर खुद को देखता हूं, वह सामान्य रूप से सभी सामान्य कार्यक्रमों के लिए लगभग 50% रैम का उपयोग करता है, विशेष रूप से एक एम्बेडेड लक्ष्य के लिए आईडीई होने के साथ-साथ अपने संबंधित डिबगर के साथ।

फिर मैं एक मेमोरी भूखी प्रक्रिया को छोड़ देता हूं - जैसे कि वायरशर्क या ऐसा कुछ जो एक सप्ताह के अंत में डेटा जमा कर रहा है, सब कुछ बाहर स्वैप हो जाता है - जैसा कि उन्हें चाहिए। बड़ी प्रक्रिया समाप्त होने के बाद, अधिकांश प्रक्रियाओं को स्वैप में छोड़ दिया जाता है।

तब छिटपुट प्रक्रिया डिबगर के साथ समस्याओं के कारण वापस स्वैप करने के लिए रुक जाती है, संभवतः आईडीई और हार्डवेयर-डिबगर के बीच के कॉम्स में मुद्दों के कारण। तो लक्ष्य डिवाइस का नियंत्रण तब तक छिटपुट हो सकता है जब तक कि आईडीई में डिबग-डेटा को स्वैप से वापस लाने का पर्याप्त प्रयास नहीं किया गया हो।


यह बहुत उपयोगी होगा! उपयोगकर्ताओं के दृष्टिकोण से, प्रत्येक क्लिक या उपयोगकर्ता कार्रवाई के बाद स्वैप की गई प्रक्रिया की प्रतीक्षा करना कष्टप्रद है। यह कहना बेहतर होगा: "इस प्रक्रिया को अनसैप करें!" , एक कॉफी के लिए जाओ और एक उत्तरदायी प्रणाली पर वापस लौटें!
टॉमस

मैं विंडोज की स्वैपिंग प्रक्रिया की बारीकियों से परिचित नहीं हूं, लेकिन क्या यह ऐसी चीज है जिसकी आप तलाश कर रहे हैं? टिप्पणियों में एक कार्यशील द्विआधारी उदाहरण होना चाहिए।
रिक डे

1
मेरे पास एक बार इसी तरह का सवाल था , और मैंने स्टैक ओवरफ्लो पर मिले उत्तरों के आधार पर एक कार्यक्रम लिखा।
केरेक एसबी

@Kerrek, मैंने मिनजीडब्ल्यू के तहत आपके कोड को संकलित करने की कोशिश की और प्रत्येक पढ़ने में त्रुटियां मिलीं "0x161000 से एक बाइट पढ़ने में विफल, त्रुटि 299 (0 बाइट्स पढ़ें)।" चूँकि मेरे पास केवल काम पर विंडोज है, इसलिए मैंने आपके द्वारा संलग्न किए गए यादृच्छिक बाइनरी को चलाने के लिए पर्याप्त बहादुर नहीं किया था ताकि समस्या मेरे संकलन में हो सके।
ग्रेग

1
@KerrekSB, मामूली समस्या की तरह लगता है। शायद आप स्मृति क्षेत्र को छू रहे हैं जो मैप नहीं किया गया है? वैसे भी मुझे लगता है कि आपका उत्तर बाउंटी का हकदार है :) पुनश्च: एचडीडी की गति की तुलना में यह व्हाट्सएप बहुत धीमा लगता है। लगता है कि अड़चन कहीं और है, लेकिन कहां?
टॉमस

जवाबों:


1

KerrekSB ने इस उद्देश्य के लिए एक विशेष उपकरण विकसित किया:

/programming//a/2940209/684229

यह बायनेरिज़ के साथ GiTHUB पर उपलब्ध है: https://github.com/louisdx/unpage

रन के दौरान, आपको बहुत सारी त्रुटियाँ मिलती हैं "0x से एक बाइट को पढ़ने में विफल ... 000, एरर 299 (0 बाइट्स पढ़ें)", लेकिन यह कोई समस्या नहीं है, टूल बहुत अच्छा काम करता है।


"लेकिन यह एक समस्या है"? मुझे नहीं लगता कि यह कोई समस्या है।
केरेक एसबी

उद्धरण: "उपकरण जो सभी अनुप्रयोगों को भौतिक स्मृति में वापस लाने की कोशिश करता है "। पोस्टर की "मेमोरी हंगर प्रोसेस" के साथ यह काम नहीं कर सकता है।
harrymc

@harrymc प्रश्न से उद्धरण After the big process is finished, most processes are left in swap.:। इसलिए संभवतः उसने "मेमोरी हंगर प्रोसेस" को पहले ही समाप्त कर दिया।
रिक

@KerrekSB बेशक, वह एक टाइपो था। धन्यवाद :-)
टॉमस

@ टॉमास मुझे यह मिला । C ++ के मेरे बहुत सीमित ज्ञान के साथ मैंने यह सत्यापित किया कि हर असफल एक्सेस के लिए पेज वास्तव में PAGE_GUARD-bit द्वारा सुरक्षित है। मैं -line if (meminfo.Protect > 50) { std::cerr << meminfo.Protect << " - " << PAGE_GUARD << std::endl; }से ठीक पहले इस्तेमाल किया ReadProcessMemory। PAGE_GUARD 256 है और मुझे असफल पृष्ठों के साथ 260 मिला। इसलिए त्रुटियों से छुटकारा पाना संभव है। कुछ सी ++ और पेजिंग ज्ञान वाले किसी व्यक्ति को PAGE_GUARD बिट पर पढ़ना होगा।
रिक डे

1

आप किसी प्रक्रिया को मेमोरी पेज प्राथमिकता देने के लिए प्रोसेस लासो का उपयोग कर सकते हैं :

विंडोज विस्टा के साथ शुरुआत करते हुए, प्रत्येक मेमोरी पेज में 0 से 7. तक की प्राथमिकता होती है। स्टैंडबाई लिस्ट को आठ सूचियों में विभाजित किया जाता है, जो प्रत्येक एक अलग प्राथमिकता वाले पृष्ठों को संभालती है। जब मेमोरी मैनेजर स्टैंडबाई सूची से एक पेज लेना चाहता है, तो पहले कम-प्राथमिकता वाली सूचियों के पेज लेता है। "

प्रक्रिया लास्सो स्मृति की प्राथमिकताओं को प्रबंधित करने में मदद कर सकता है ताकि प्रक्रियाओं के लिए लगातार स्मृति प्राथमिकताओं को निर्धारित किया जा सके, ताकि उनके वर्चुअल मेमोरी पेज प्रत्येक बार चलने वाली एक विशिष्ट प्राथमिकता पर सेट हो जाएं।

प्रक्रिया लासो के दो संस्करण हैं: नि: शुल्क और वाणिज्यिक (परीक्षण के साथ $ 18.95)।


मुझे डर है कि आप पूरी तरह से अलग सवाल का जवाब दे रहे हैं। प्रक्रिया देना एक मेमोरी प्राथमिकता है अलग कार्य, संभवत: संदर्भ में बेकार है ओपी और मुझे स्केच आउट: जब आपके पास पहले से ही एक प्रक्रिया है जो स्वैप में है और इसे अनसैप करना चाहते हैं। आप इसे स्वैप पर जाने से रोकना नहीं चाहते हैं।
टॉमस

@ टॉमस: यह मेरी समझ में नहीं है। अनुरोध है कि किसी दी गई प्रक्रिया को स्वैप करने से रोका जाए। यदि प्रक्रिया को अपने पृष्ठों को मेमोरी में लॉक करने के लिए प्रोग्राम नहीं किया गया है, तो अगला सबसे अच्छा समाधान यह है कि इसे उच्चतम मेमोरी प्राथमिकता दी जाए ताकि इसे स्वैप किए जाने की संभावना कम हो।
हरमिक्क

3
@harrymc, ओपी का कहना है कि जब मेमोरी हॉग चलता है, "सब कुछ स्वैप हो जाता है - जैसा कि उन्हें चाहिए" तो यही ओपी चाहता है। यह सिर्फ इतना है कि सोमवार की सुबह वह चाहता है कि महत्वपूर्ण प्रक्रियाओं के वर्किंग सेटों को एक बार में लाया जाए, समय के साथ पेज में खराबी से ड्रब्स और ड्रेब्स में नहीं।
mgkrebbs

@mgkrebbs: यह समस्या का एक अलग समाधान है, जो मेरा मानना ​​है कि ऐसा करना असंभव है। मेरा समाधान यह है कि अगर IDE को कभी स्वैप नहीं किया जाता है, तो उसे वापस स्वैप करने की कोई आवश्यकता नहीं है। "मेमोरी हंगर प्रोसेस" में RAM की मात्र कुछ मेगाबाइट कम होगी, जो इसके प्रदर्शन पर बहुत अधिक प्रभाव नहीं डालेगी।
harrymc
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.