"नौकरी" और "प्रक्रिया" में क्या अंतर है?
"नौकरी" और "प्रक्रिया" में क्या अंतर है?
जवाबों:
एक प्रक्रिया अपने स्वयं के पते के स्थान के साथ किसी भी चल रहे कार्यक्रम है।
एक नौकरी एक अवधारणा है जिसका उपयोग शेल द्वारा किया जाता है - कोई भी कार्यक्रम जो आप अंतःक्रियात्मक रूप से शुरू करते हैं जो अलग नहीं होता है (यानी, डेमॉन नहीं) एक नौकरी है। यदि आप एक इंटरैक्टिव कार्यक्रम चला रहे हैं, तो आप CtrlZइसे निलंबित करने के लिए दबा सकते हैं । फिर आप इसे अग्रभूमि में (उपयोग करके fg
) या पृष्ठभूमि में (उपयोग करके bg
) शुरू कर सकते हैं ।
जबकि कार्यक्रम को निलंबित कर दिया गया है या पृष्ठभूमि में चल रहा है, तो आप एक और कार्यक्रम शुरू कर सकते हैं - फिर आपके पास दो काम चलेंगे। तुम भी एक "और" इस तरह जोड़कर पृष्ठभूमि में एक कार्यक्रम चल रहा है शुरू कर सकते हैं: program &
। वह कार्यक्रम पृष्ठभूमि की नौकरी बन जाएगा। आपके द्वारा चलाए जा रहे सभी नौकरियों को सूचीबद्ध करने के लिए, आप उपयोग कर सकते हैं jobs
।
नौकरियों के बारे में अधिक जानकारी के लिए, बैश मैन पेज के इस भाग को देखें ।
ls | sort
एक काम है, लेकिन प्रत्येक कमांड एक अलग उप-प्रक्रिया प्रक्रिया के बच्चे की प्रक्रिया के रूप में चलती है। यह कई प्रक्रियाओं से युक्त नौकरी का एक उदाहरण है। नौकरी की आपकी परिभाषा कैसे बता सकती है कि नौकरी में कई प्रक्रियाएं हो सकती हैं?
UNIX में अलग-अलग अवधारणाएं "प्रक्रिया", "प्रक्रिया समूह", और "सत्र" हैं।
आपके द्वारा लॉगिन पर प्राप्त किया गया प्रत्येक शेल अपने नए सत्र और प्रक्रिया समूह का नेता बन जाता है, और टर्मिनल के नियंत्रक प्रक्रिया समूह को स्वयं सेट करता है।
शेल चालू सत्र के भीतर प्रत्येक "नौकरी" के लिए एक प्रक्रिया समूह बनाता है जो इसे लॉन्च करता है, और प्रत्येक प्रक्रिया को उपयुक्त प्रक्रिया समूह में रखता है। उदाहरण के लिए, ls | head
दो प्रक्रियाओं की एक पाइपलाइन है, जिसे शेल एक एकल नौकरी मानता है, और एक एकल, नई प्रक्रिया समूह से संबंधित होगा।
एक प्रक्रिया निष्पादन और अन्य संदर्भ के धागे का एक (संग्रह) है, जैसे पता स्थान और फ़ाइल विवरणक तालिका। एक प्रक्रिया अन्य प्रक्रियाओं को शुरू कर सकती है; जब तक अन्य कार्रवाई नहीं की जाती है, ये नई प्रक्रियाएं अभिभावक के समान प्रक्रिया समूह की होंगी। प्रत्येक प्रक्रिया में एक "नियंत्रण टर्मिनल" भी हो सकता है, जो अपने माता-पिता के समान शुरू होता है।
शेल में "अग्रभूमि" नौकरियों और "पृष्ठभूमि" नौकरियों की अवधारणा है। फोरग्राउंड नौकरियां टर्मिनल के नियंत्रण के साथ प्रक्रिया समूह हैं, और पृष्ठभूमि नौकरियां टर्मिनल के नियंत्रण के बिना प्रक्रिया समूह हैं।
प्रत्येक टर्मिनल में अग्रभूमि प्रक्रिया समूह होता है। अग्रभूमि में नौकरी लाते समय, शेल इसे टर्मिनल के अग्रभूमि प्रक्रिया समूह के रूप में सेट करता है; जब एक नौकरी पृष्ठभूमि में डालते हैं, तो शेल टर्मिनल के अग्रभूमि प्रक्रिया समूह को किसी अन्य प्रक्रिया समूह या स्वयं के लिए सेट करता है।
प्रक्रियाएं उनके नियंत्रण टर्मिनल से पढ़ सकती हैं और लिख सकती हैं यदि वे अग्रभूमि प्रक्रिया समूह में हैं। अन्यथा वे प्राप्त SIGTTIN
और SIGTTOU
प्रयासों पर संकेत क्रमशः से और टर्मिनल के लिए लिखने पढ़ने के लिए। डिफ़ॉल्ट रूप से ये संकेत प्रक्रिया को रोक देते हैं, हालांकि अधिकांश गोले मास्क करते हैं SIGTTOU
ताकि एक पृष्ठभूमि नौकरी निर्बाध रूप से लिख सके।
कंप्यूटिंग में, एक कार्य कार्य की एक इकाई या निष्पादन की इकाई है (जो कहा जाता है कि कार्य करता है)। नौकरी का एक घटक (काम की एक इकाई के रूप में) को एक कार्य या एक कदम (यदि अनुक्रमिक, नौकरी की धारा में) कहा जाता है। निष्पादन की एक इकाई के रूप में, एक नौकरी को एक एकल प्रक्रिया के साथ समवर्ती रूप से पहचाना जा सकता है, जिसमें बदले में उपप्रोसेस (बच्चे की प्रक्रिया, माता-पिता की प्रक्रिया के अनुरूप नौकरी की प्रक्रिया) हो सकती है, जो उन कार्यों या चरणों को पूरा करती है जिनमें कार्य शामिल होते हैं; काम; या एक प्रक्रिया समूह के साथ; या एक प्रक्रिया या प्रक्रिया समूह के लिए एक सार संदर्भ के साथ, यूनिक्स नौकरी नियंत्रण के रूप में।
उपर्युक्त परिभाषाएँ बहुत ही तकनीकी हैं, लेकिन शायद ऑप दिन के स्पष्टीकरण के लिए अधिक दिन चाहते थे। मुझे लगता है कि नौकरी एक निर्धारित प्रक्रिया है। जब हम सामान्य रूप से प्रक्रियाओं से निपटते हैं, तो निश्चित रूप से अनुसूची की धारणा नहीं होती है, लेकिन जब हम "नौकरी" शब्द का उपयोग करते हैं, तो हमारा हमेशा मतलब होता है कि यह अनुसूचित है, या लूप की तरह दोहरावदार है, यह एक कार्यकर्ता की तरह है।