क्या विंडोज 7 ने आईडी का पुन: उपयोग किया है?


19

क्या विंडोज 7 ने आईडी का पुन: उपयोग किया है?

मेरे द्वारा यह प्रश्न पूछने का कारण मेरे अनुभव के कारण है कि Windows XP और Linux कभी भी प्रक्रिया आईडी 20-30 k से अधिक नहीं बनाते हैं। हालाँकि, मेरी विंडोज 7 मशीन एक रिबूट के बाद कुछ घंटों के भीतर आईडी तक पहुँच जाएगी, जो कि पिछले कुछ समय से मेरा सामान्य अनुभव है। अगली सुबह मैं जांच करता हूं और कुछ प्रक्रियाएं 250k या उच्चतर होती हैं, जो नहीं है।

मैंने प्रक्रिया निर्माण और समाप्ति लॉग करने के लिए सुरक्षा ऑडिटिंग सुविधा को सक्रिय किया। कुछ भी सैकड़ों या हजारों या प्रक्रियाओं को उत्पन्न नहीं कर रहा है। इन घटनाओं में से केवल 513 एक 24 घंटे की अवधि के लिए पंजीकृत हैं, फिर भी सैकड़ों हजारों प्रक्रिया आईडी का उपयोग किया गया है, ऐसा प्रतीत होता है।

मैंने अपने प्रश्न की खोज करने की कोशिश की और सुझाए गए प्रश्नों में से एक पहले एक मार्क रोसिनोविच के अद्भुत ब्लॉग की ओर इशारा किया । लेकिन यह लेख, बहुत दिलचस्प पढ़ने के दौरान, मुझे हैरान कर गया।


2
मुझे यकीन है कि वे रिबूट के बाद रीसेट करेंगे ...
ऑस्टिन टी फ्रेंच

3
बेशक वे करते हैं, क्योंकि बूट शुरू होने पर कोई प्रक्रिया नहीं होती है, इसलिए सभी पीआईडी> 4 अप्रयुक्त हैं।
ग्रैविटी

1
मुझे लगता है कि उसकी / उसकी बात यह थी कि जब तक विंडोज पीआईडी ​​का पुन: उपयोग नहीं करता, तब तक वह बाहर चला जाएगा और उसे रिबूट की आवश्यकता होगी।
साइमन रिक्टर

जवाबों:


22

मेरे परीक्षण से यह प्रतीत होता है कि आपके पास एक झूठी धारणा है, पीआईडी ​​नंबर क्रमिक क्रम में नहीं दिए गए हैं। यह साबित करना बहुत आसान है, कमांड लाइन से निम्न कमांड करें। इसे नोटपैड की 3 प्रतियां खोलनी चाहिए।

notepad & notepad & notepad

मेरी मशीन पर यहाँ PID की 3 प्रतियाँ हैं, जहाँ सभी एक ही समय में खुलते हैं।

यहां छवि विवरण दर्ज करें

जैसा कि आप पीआईडी ​​की छलांग को बहुत अधिक देख सकते हैं, यदि आप उन्हें एक बार में खोलते हैं तो आप यह भी देखेंगे कि अगला पीआईडी ​​हमेशा पिछले वाले से बड़ा नहीं है। उदाहरण के लिए, मैंने नोटपैड की 4 वीं प्रति खोली और इसे प्राप्त किया

यहां छवि विवरण दर्ज करें

तो ऐसा प्रतीत होता है कि विंडोज 7 एक प्रक्रिया शुरू होने पर हर बार एक यादृच्छिक अप्रयुक्त पीआईडी ​​को ले जाएगा, इसलिए बहुत अच्छी तरह से रिबूट के बिना खिड़कियों के चलने के दौरान पीआईडी ​​का पुन: उपयोग किया जा सकता है।


मैंने एक साधारण पॉवरशेल स्क्रिप्ट लिखी है (v2 या नए की आवश्यकता है, इस उत्तर को C # संस्करण के लिए इतिहास संपादित करें देखें) यह सुनिश्चित करने के लिए

$h = new-object 'System.Collections.Generic.HashSet[string]'
do {
    $proc = Start-Process 'notepad' -PassThru
    $id = $proc.Id
    Stop-Process $id
} while ($h.Add($id))
$count = $h.Count
Write-Host "Took $count PIDs to hit a duplicate, the duplicate was $id."

कार्यक्रम को 10 बार चलाना 134और 147एक ही पीआईडी ​​के लिए नोटपैड के लॉन्च के बीच हमेशा इसे लिया जाता है (यह संख्या इतनी कम क्यों है? GO-GO गैजेट जन्मदिन की समस्या !)


5
Windows NT इसे और भी तेज़ बनाता है क्योंकि PID हमेशा चार के गुणक होते हैं
ग्रैविटी

धन्यवाद स्कॉट। क्या कोई शेल स्क्रिप्ट / उपयोगिता है जो सभी प्रक्रियाओं को पीआईडी ​​नंबर को ट्रैक कर सकती है और इसे उस फाइल के साथ लॉग कर सकती है जिस प्रक्रिया के नाम उन्हें सौंपे गए थे?
isildur

1
आप कर सकते थे, लेकिन मुझे इसकी उपयोगिता नहीं दिखती। क्या आप अभी शुरू की गई हर प्रक्रिया को ट्रैक करना चाहते हैं या क्या आप वास्तव में पीआईडी ​​के बारे में परवाह करते हैं?
स्कॉट चैंबरलेन

इस बिंदु पर, मैं बस यह जानना चाहता हूं कि कौन सी प्रक्रिया (ओं) को इतनी बार चलाया जा रहा है कि इसने प्रक्रिया आईडी संख्याओं को 500+ सीमा में धकेल दिया। शायद एक प्रक्रिया भी प्रक्रियाओं spawning है। यह सिर्फ एक बुनियादी जीत 7 डेस्कटॉप, एंटीवायरस और फायरफॉक्स, एक या दो गेम है और हम इस पर और कुछ नहीं करते हैं। उत्तर के लिए धन्यवाद।
isildur

इसलिए मैंने एक पुरानी उपयोगिता को हटा दिया जो कि बैच फ़ाइलों का उपयोग करके डिस्क ड्राइव को अनुक्रमित करता है जो किसी ने वर्षों पहले लिखा था और यह पता चलता है कि यह इस तरह के उच्च पीआईडी ​​नंबर पैदा करने वाला अपराधी था। अब एक ही मशीन हफ्तों से चली आ रही है और अब तक की सबसे अधिक पीआईडी ​​संख्या 12252 है।
इसिल्डर

1

मैंने एक घंटे तक परीक्षण किया और उस समय में 302 प्रक्रियाएं समाप्त हो गईं। उनमें से, 70 में एक पीआईडी ​​था, इसलिए मैं कहूंगा कि पीआईडी ​​का अक्सर उपयोग किया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.