strace
I के स्रोत को देखते हुए क्लोन ध्वज का उपयोग किया गया, CLONE_IDLETASK
जिसे इस प्रकार वर्णित किया गया है:
#define CLONE_IDLETASK 0x00001000 /* kernel-only flag */
इसमें गहराई से देखने के बाद मैंने पाया कि, हालांकि यह ध्वज man clone
उसमें शामिल नहीं है, वास्तव में कर्नेल द्वारा बूट प्रक्रिया के दौरान मशीन पर प्रत्येक सीपीयू के लिए निष्क्रिय प्रक्रियाएं बनाने के लिए उपयोग किया जाता है (जिनमें सभी में PID 0 होना चाहिए)। यानी 8 सीपीयू वाली मशीन में कम से कम 7 (नीचे प्रश्न देखें) ऐसी प्रक्रियाएं "रनिंग" (नोट कोट्स) होंगी।
अब, यह मुझे उस प्रश्न के एक जोड़े की ओर ले जाता है जो "निष्क्रिय" प्रक्रिया वास्तव में करते हैं। मेरी धारणा यह है कि यह NOP ऑपरेशन को तब तक लगातार निष्पादित करता है जब तक कि इसकी समय सीमा समाप्त नहीं हो जाती है और कर्नेल एक बार फिर निष्क्रिय प्रक्रिया को चलाने या असाइन करने के लिए एक वास्तविक प्रक्रिया प्रदान करता है (यदि सीपीयू का उपयोग नहीं किया जा रहा है)। फिर भी, यह एक पूर्ण अनुमान है। इसलिए:
एक मशीन पर, कहते हैं, 8 सीपीयू 7 ऐसी निष्क्रिय प्रक्रियाएं बनाएंगे? (और एक सीपीयू कर्नेल द्वारा आयोजित किया जाएगा, जबकि कोई प्रदर्शन उपयोगकर्ता कार्य नहीं करेगा?)
क्या निष्क्रिय प्रक्रिया वास्तव में एनओपी परिचालनों की सिर्फ एक अनंत धारा है? (या एक लूप जो ऐसा ही करता है)।
क्या सीपीयू उपयोग (कहना
uptime
) की गणना केवल सीपीयू पर निष्क्रिय प्रक्रिया कितनी देर तक की गई थी और एक निश्चित अवधि के दौरान कितनी देर तक नहीं हुई थी?
PS यह संभावना है कि इस प्रश्न का एक अच्छा सौदा इस तथ्य के कारण है कि मुझे पूरी तरह से समझ में नहीं आता है कि सीपीयू कैसे काम करता है। यानी मैं असेंबली, टाइमफ्रेम और इंटरप्ट को समझता हूं, लेकिन मुझे नहीं पता कि कैसे, उदाहरण के लिए, एक सीपीयू कम या ज्यादा ऊर्जा का उपयोग कर सकता है जो उसके निष्पादन पर निर्भर करता है। मैं आभारी रहूंगा यदि कोई मुझे उस पर भी प्रकाश डाल सके।