2010-06-19 20 views

उत्तर

14

उन्हें सभी एक ही चीज़ माना जा सकता है, वास्तव में संदर्भ पर निर्भर करता है। एक प्रक्रिया हालांकि आमतौर पर एक अलग इकाई है जो ऑपरेटिंग सिस्टम द्वारा प्रबंधित की जाती है। एक नौकरी प्रायः एक आवेदन स्तर की अवधि या केवल कुछ स्क्रिप्ट होती है जिसे कार्य के विशिष्ट सेट करने के लिए निष्पादित किया जाता है। एक कार्य अक्सर नौकरी का हिस्सा होता है - कभी-कभी एकमात्र हिस्सा।

+1

अच्छी बात यह है कि ये संदिग्ध हैं, कि "प्रक्रिया" एक ओएस इकाई है, और "नौकरी" एक उच्च स्तरीय इकाई है जो अक्सर "कार्यों" से बना है; यह सामान्य समझ का एक अच्छा प्रतिबिंब है! हालांकि, यह जवाब बहुत अस्पष्ट है और इसमें विशिष्टताएं नहीं हैं, और मुझे और अधिक चाहते हैं। (इसलिए नीचे लंबा जवाब।) –

9

एक नौकरी काम की एक इकाई है जो उपयोगकर्ता द्वारा प्रस्तुत की गई है। यह आमतौर पर बैच सिस्टम से जुड़ा हुआ है। एक बैच नौकरी उत्तराधिकार में कई कार्यक्रम चलाने का अनुरोध हो सकता है [पेज 144]। हालांकि, यह माना जा सकता है कि एक नौकरी एक कार्यक्रम चलाने का अनुरोध है। इसलिए, संदर्भ के आधार पर, एक नौकरी एक कार्यक्रम हो सकता है (हम आमतौर पर इसे मानते हैं), या कार्यक्रमों का एक सेट (जैसे बैच सिस्टम) [पृष्ठ 8]।

एक प्रक्रिया एक सक्रिय इकाई है, जिसके लिए प्रोसेसर और विशेष रजिस्ट्रार समेत संसाधनों का एक सेट आवश्यक है। यह एक निष्पादन योग्य कार्यक्रम का एक उदाहरण है। तो यहां से, आप एक प्रक्रिया और एक कार्यक्रम के बीच कनेक्शन देख सकते हैं, इसलिए, एक नौकरी।

लिनक्स कर्नेल आंतरिक रूप से प्रक्रियाओं को कार्यों [पीजी 742] के रूप में दर्शाता है।

स्रोत: आधुनिक ऑपरेटिंग सिस्टम (3 संस्करण) Tanenbaum द्वारा, पियर्सन एजुकेशन, इंक द्वारा प्रकाशित, 2009

2

एक काम के लिए एक गणना नोड पर एक भी प्रक्रिया के निष्पादन या कई प्रक्रियाओं का प्रतिनिधित्व करता है। गणना करने के लिए उपयोग किए जाने वाले कार्यों का संग्रह नौकरी के रूप में जाना जाता है। नौकरियों का उपयोग कार्यों द्वारा आवश्यक संसाधनों को आरक्षित करने के लिए किया जाता है।

स्रोत: नौकरियों और कार्यों http://msdn.microsoft.com/en-us/library/bb525214%28v=vs.85%29.aspx

15

"प्रक्रिया" अच्छी तरह से परिभाषित किया गया है; "नौकरी" और "कार्य" संदिग्ध हैं।

मूलरूप एक नौकरी/कार्य, क्या काम हो गया है, जबकि एक प्रक्रिया कैसे यह किया जाता है, आम तौर पर जो यह करता है के रूप में anthropomorphised है। एक नौकरी काम की इकाई इकाई है, और कार्यों का बना है। अभ्यास में उपयोग बहुत असंगत है, और अक्सर "कार्य" == "प्रक्रिया", हालांकि औपचारिक रूप से एक प्रक्रिया कार्य करता है।

प्रक्रिया, एक अच्छी तरह से परिभाषित ऑपरेटिंग सिस्टम अवधारणा है के रूप में है धागा: एक process एक कार्यक्रम है कि निष्पादित किया जा रहा का एक उदाहरण है, और संसाधनों की बुनियादी इकाई है: एक प्रक्रिया के होते हैं या इसकी छवि, निष्पादन संदर्भ, स्मृति, फाइलें, आदि का मालिक है; etymologically एक प्रक्रिया या प्रक्रिया द्वारा किए गए कदम हैं। एक प्रक्रिया में एक या अधिक धागे होते हैं, जो शेड्यूलिंग की इकाई होते हैं, और एक प्रक्रिया के कुछ सबसेट (संभावित रूप से अन्य धागे के साथ साझा) होते हैं: निष्पादन संदर्भ और शायद अधिक। परंपरागत रूप से एक धागा निष्पादन प्रोसेसर पर एक धागा है (एक थ्रेड "निष्पादित हो रहा है"), लेकिन बहु-कोर प्रोसेसर और hardware threads के साथ, कुछ शेड्यूलिंग एक कोर के स्तर पर भी किया जाता है। विभिन्न प्रकार की प्रक्रियाएं और धागे हैं, और सटीक परिभाषा प्लेटफ़ॉर्म के बीच भिन्न होती है।

नौकरी और कार्य आज अस्पष्ट, अस्पष्ट संदर्भ में, विशेष रूप से कार्य हैं। एक "job" अक्सर प्रक्रियाओं का एक सेट होता है, जबकि "task" का अर्थ प्रक्रिया, धागा, प्रक्रिया या धागा, या स्पष्ट रूप से की एक इकाई द्वारा किया जा सकता है, एक प्रक्रिया या धागा।

इसका अंदाज़ा लगा सकते नामकरण भ्रमित है देने के लिए, Windows Task Manager का प्रबंधन करता है (चल रहा है) प्रक्रियाओं, जबकि Windows Task Scheduler कार्यक्रम कार्यक्रमों भविष्य में निष्पादित करने के लिए, क्या पारंपरिक रूप से एक job scheduler के रूप में जाना जाता है, और .job एक्सटेंशन का उपयोग करता!

शब्द "job" पारंपरिक रूप से एक "काम का एक टुकड़ा" का मतलब है, और वाक्यांश "job production" में, विनिर्माण क्षेत्र में इस तरह के रूप में इस्तेमाल किया जाता है, जिसका अर्थ है 'कस्टम उत्पादन ", यह वह जगह है जहाँ (के रूप में विरोध किया" व्यवसाय "करने के लिए) batch production (एक साथ कई आइटम, एक समय में एक कदम) और flow production (एक साथ कई आइटम, एक ही समय में सभी चरणों, आइटम द्वारा) के विपरीत। ध्यान दें कि इन भेदों को कंप्यूटिंग में धुंधला हो गया है, विशेष रूप से ऑक्सीमोरोनिक शब्द "batch job" में।

कंप्यूटिंग में, "नौकरी" आईबीएम के Job Control LanguageDOS/360 और 1960 दशक के मध्य के OS/360 के लिए में, mainframes पर गैर-सहभागी प्रसंस्करण में निकलती है विशेष रूप से, और औपचारिक रूप से, होते हैं जो "एक ऑपरेटिंग सिस्टम के लिए काम की इकाई" एक का मतलब है चरणों, जिनमें से प्रत्येक एक विशिष्ट प्रोग्राम निष्पादित करने के लिए अनुरोध है। प्रारंभिक कंप्यूटर मुख्य रूप से batch processing था (कई इनपुट डेटा पर एक ही कार्यक्रम चलाने), जनगणना या बिलिंग, और एक बंद काम का एक मानक प्रकार स्रोत से एक कार्यक्रम है, जो तब बैचों डेटा की संसाधित कर सकते हैं संकलन किया गया था की तरह। बाद में बैच सभी गैर-इंटरैक्टिव कंप्यूटिंग पर लागू किया गया, चाहे एक-ऑफ या एकाधिक आइटम हों। प्रक्रियाओं का एक सेट है कि सभी एक संकेत भेजा जा सकता है - -

यूनिक्स के गोले में, एक "job" एक process group के लिए खोल के प्रतिनिधित्व है वस्तुतः एक पाइप लाइन और उसके वंशज प्रक्रियाओं; ध्यान दें कि एक स्क्रिप्ट चलाने से नौकरी शुरू होती है, ठीक उसी तरह मेनफ्रेम में। प्रक्रिया पूरी होने तक काम नहीं किया जाता है, और एक नौकरी को रोका जा सकता है, फिर से शुरू किया जा सकता है, या समाप्त कर दिया जा सकता है, जो प्रक्रियाओं को निलंबित करने, फिर से शुरू करने या समाप्त करने के अनुरूप है। इस प्रकार औपचारिक रूप से एक कार्य प्रक्रिया समूह से अलग है, यह एक सूक्ष्म भेद है और इस प्रकार लोग अक्सर "प्रक्रियाओं के सेट" के अर्थ में "नौकरी" का उपयोग करते हैं।

पारंपरिक नौकरियां (और बैचों) में सीमित इनपुट डेटा है और इसे सफलतापूर्वक पूरा करना चाहिए या नहीं। इसके विपरीत, एक सर्वर चलाते समय, जैसे वेब सर्वर, इनपुट, जैसे अनुरोधों की धारा, असीमित (औपचारिक रूप से कोडडा) है। यह प्रवाह उत्पादन के समान है, और प्रक्रिया (या "नौकरी") कभी पूरा नहीं होती है, हालांकि इसे समाप्त या "रद्द" किया जा सकता है। एक कूल्हे में, "एक सर्वर का काम कभी नहीं किया जाता है" (औपचारिक रूप से, बाहर निकलने की स्थिति को रद्द किया जाएगा, पूर्ण/सफलता नहीं)।

शब्द "कदम" अनुक्रमिक कंप्यूटिंग के लिए समझ में आता है - एक कदम एक और प्रकार है - लेकिन एक बार आप समवर्ती कंप्यूटिंग है, तो आप एक निर्धारित किया है कार्यों, जो जरूरी एक विशेष क्रम में नहीं चला है, बजाय केअनुक्रमचरण।"टास्क" शब्द को ओएस/360 द्वारा लोकप्रिय किया गया था, जिसमें "फिक्स्ड नंबर ऑफ टास्क (एमएफटी)" और "वर्चुअल नंबर ऑफ टास्क (एमवीटी) के साथ मल्टीप्रोग्रामिंग" शामिल था, हालांकि इस मामले में "कार्य" समानार्थी रूप से प्रयोग किया गया था "प्रक्रिया" या "धागा" के साथ, मूल कार्य "इस कार्यक्रम को निष्पादित करें" (इसलिए परिणामस्वरूप प्रक्रिया/धागा कार्य करता है), जो शायद अस्पष्टता का स्रोत है।

औपचारिक रूप से "multitasking" का अर्थ है "कई कार्यों पर एक साथ काम करना", लेकिन व्यावहारिक रूप से एक ऑपरेटिंग सिस्टम (या वर्चुअल मशीन, या रनटाइम, या व्यक्तिगत प्रक्रिया) का अर्थ है "कई प्रक्रियाओं/थ्रेडों को एक साथ चलाना"।

एक स्पष्ट कैसे काम एक thread pool के इस diagram में किया, एक task queue में दी गई है है के रूप में के रूप में के रूप में काम और इस प्रक्रिया/धागे कार्यों के बीच अंतर: वहाँ एक (बड़ा, संभावित असीमित) कतार है इनकमिंग कार्यों (लंबित), जो धागे के एक छोटे, अक्सर तय किए गए सेट द्वारा किए जाते हैं, प्रत्येक कार्य एक थ्रेड द्वारा किया जा रहा है, और प्रत्येक थ्रेड एक समय में एक ही कार्य कर रहा है: सक्रिय कार्य सक्रिय धागे से मेल खाते हैं । संक्षेप में, एक बहुप्रचारित वेब सर्वर पर विचार करें, जहां कार्य "इस वेब पेज अनुरोध की सेवा" हैं, और प्रत्येक थ्रेड (डिस्क या मेमोरी से) प्राप्त करता है या वेब पेज (टेम्पलेट या PHP द्वारा कहता है) प्रस्तुत करता है, फिर परिणाम देता है।

जैसा कि आप इस अंतिम उदाहरण से देख सकते हैं, अक्सर कार्यों को धागे या प्रक्रियाओं से अलग करने के लिए उपयोगी होता है, और विशेष रूप से संदर्भ "नौकरी" और "कार्य" के विशिष्ट अर्थ होते हैं, हालांकि आम तौर पर वे संदिग्ध होते हैं।

स्पष्ट "काम" या "कार्य" का उपयोग कर से बचने के लिए और बदले में करने के लिए एक, "प्रक्रिया" "प्रक्रियाओं के सेट" का उल्लेख इस प्रकार है, या "सूत्र", और सर्वर अनुरोध (या प्रश्नों का उल्लेख करने के लिए) कार्यों के बजाय।

+0

इतना विस्तार! धन्यवाद! – Kai

संबंधित मुद्दे