अच्छी और बच्चे की प्रक्रिया


22

क्या कोई मुझे बता सकता है कि एक निर्दिष्ट niceस्तर और बच्चे की प्रक्रियाओं के बीच क्या संबंध है?

उदाहरण के लिए, यदि मेरे पास डिफ़ॉल्ट niceहै 0, और मैं एक स्क्रिप्ट शुरू करता हूं nice 5, जिसके बदले में कुछ बच्चे प्रक्रिया शुरू करते हैं (इस मामले में लगभग 20 समानांतर में), तो बच्चे की प्रक्रियाओं में से क्या अच्छा है?


1
केवल रूट उपयोगकर्ता ही किसी प्रक्रिया की निष्पक्षता को कम कर सकता है, और मूल्य किसी भी समझदार forkकार्यान्वयन में बाल प्रक्रियाओं द्वारा विरासत में मिला है ।
jw013

@ jw013 - स्पष्टता के लिए, मैं स्क्रिप्ट हूँ उपयोग करते हुए, &, अंडे बच्चे प्रक्रियाओं के लिए उपयोग नहीं कर cऔर fork
NWS

3
जब तक आप एक गैर-यूनिक्स / लिनक्स ओएस पर नहीं होते हैं, यह एक काफी सुरक्षित शर्त है जो आपके शेल की पृष्ठभूमि प्रक्रियाओं के साथ होती है fork
jw013

जवाबों:


28

एक बच्चे की प्रक्रिया niceउस समय माता-पिता के पास जो भी मूल्य होता है, उसे विरासत में मिला है (यह आपके उदाहरण में 5) है।

हालांकि, अगर niceबच्चे की प्रक्रियाओं को समझने के बाद माता-पिता की प्रक्रिया का मूल्य बदल जाता है, तो बच्चे की प्रक्रियाएं नए niceमूल्य को प्राप्त नहीं करती हैं ।

आप इसे आसानी से निगरानी उपकरण के साथ देख सकते हैं top। यदि niceफ़ील्ड (NI) डिफ़ॉल्ट रूप से नहीं दिखाया गया है, तो आप इसे दबाकर fऔर चुनकर जोड़ सकते हैं I। यह NIकॉलम को topडिस्प्ले में जोड़ेगा ।

* I: NI = Nice value

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
1937 root      20   0  206m  66m  45m S  6.2  1.7  11:03.67 X                                         

से अच्छी जानकारी man 2 fork

फोर्क () कॉलिंग प्रक्रिया को डुप्लिकेट करके एक नई प्रक्रिया बनाता है। नई प्रक्रिया, जिसे बच्चे के रूप में जाना जाता है, कॉलिंग प्रक्रिया का एक सटीक डुप्लिकेट है, जिसे निम्नलिखित बिंदुओं को छोड़कर माता-पिता के रूप में संदर्भित किया जाता है:

  • बच्चे की अपनी अनूठी प्रक्रिया आईडी होती है, और यह पीआईडी ​​किसी भी मौजूदा प्रक्रिया समूह (सेटपेस्सिड (2)) की आईडी से मेल नहीं खाती है।
  • बच्चे की मूल प्रक्रिया आईडी माता-पिता की प्रक्रिया आईडी के समान है।
  • बच्चा अपने माता-पिता की स्मृति ताले (झुंड (2), मालकॉल (2)) को विरासत में नहीं लेता है।
  • प्रक्रिया संसाधन उपयोग (गेट्रेज (2)) और सीपीयू समय काउंटर (समय (2)) बच्चे में शून्य पर रीसेट हो जाते हैं।
  • लंबित संकेतों के बच्चे का सेट शुरू में खाली है (सिग्पेंडिंग (2))।
  • बच्चा अपने माता-पिता (सेमोप (2)) से सेमाफोर समायोजन को विरासत में नहीं लेता है।
  • बच्चा अपने माता-पिता (fcntl (2)) से रिकॉर्ड ताले को विरासत में नहीं लेता है।
  • बच्चा अपने माता-पिता (सेटरिमर (2), अलार्म (2), टाइमर_क्रिएट (2)) से टाइमर को विरासत में नहीं लेता है।
  • बच्चे को अपने माता-पिता (aio_read (3), aio_write (3)) से बकाया अतुल्यकालिक I / O संचालन विरासत में नहीं मिलता है, न ही वह अपने माता-पिता से कोई भी अतुल्यकालिक I / O संदर्भ प्राप्त करता है (देखें io_setup (2))।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.