एक और प्रमुख बिंदु जो प्रक्रिया और थ्रेड को अलग करता है वह यह है कि प्रक्रियाएं एक दूसरे के साथ अलग-थलग हैं जबकि धागे एक दूसरे के साथ स्मृति या संसाधनों को साझा करते हैं।
तुलना चार्ट
तुलना के लिए आधार | प्रक्रिया | धागा |
---|---|---|
बुनियादी | निष्पादन में कार्यक्रम। | हल्की प्रक्रिया या उसका हिस्सा। |
मेमोरी शेयरिंग | पूरी तरह से अलग-थलग और स्मृति साझा न करें। | एक दूसरे के साथ याददाश्त साझा करता है। |
संसाधन उपभोग | अधिक | कम |
दक्षता | संचार के संदर्भ में प्रक्रिया की तुलना में कम कुशल। | संचार के संदर्भ में दक्षता बढ़ाता है। |
सृजन के लिए आवश्यक समय | अधिक | कम |
प्रसंग स्विचिंग समय | अधिक समय लगता है। | कम समय लगता है। |
अनिश्चित समाप्ति | प्रक्रिया के नुकसान में परिणाम। | एक धागा पुनः प्राप्त किया जा सकता है। |
समाप्ति के लिए आवश्यक समय | अधिक | कम |
प्रक्रिया की परिभाषा
प्रक्रिया एक कार्यक्रम का निष्पादन है और एक कार्यक्रम में निर्दिष्ट प्रासंगिक क्रिया करता है, या यह एक निष्पादन इकाई है जहां एक कार्यक्रम चलता है। ऑपरेटिंग सिस्टम सीपीयू के उपयोग के लिए प्रक्रियाओं को बनाता है, शेड्यूल करता है और समाप्त करता है। मुख्य प्रक्रिया द्वारा बनाई गई अन्य प्रक्रियाओं को बाल प्रक्रिया के रूप में जाना जाता है।
एक प्रक्रिया संचालन को पीसीबी की मदद से नियंत्रित किया जाता है (प्रोसेस कंट्रोल ब्लॉक) को प्रक्रिया के मस्तिष्क के रूप में माना जा सकता है, जिसमें प्रक्रिया से संबंधित सभी महत्वपूर्ण जानकारी होती है जैसे कि प्रोसेस आईडी, प्राथमिकता, राज्य, PWS और सामग्री CPU रजिस्टर ।
पीसीबी एक कर्नेल-आधारित डेटा संरचना भी है जो तीन प्रकार के फ़ंक्शन का उपयोग करता है जो शेड्यूलिंग, डिस्पैचिंग और संदर्भ बचाते हैं।
- निर्धारण - यह सरल शब्दों में प्रक्रिया के अनुक्रम को चुनने की एक विधि है जो उस प्रक्रिया को चुनती है जिसे पहले सीपीयू में निष्पादित करना होता है।
- डिस्पैचिंग - यह प्रक्रिया को निष्पादित करने के लिए एक वातावरण सेट करता है।
- संदर्भ बचाओ - यह फ़ंक्शन किसी प्रक्रिया के बारे में जानकारी को तब बचाता है जब वह फिर से शुरू या अवरुद्ध हो जाती है।
एक निश्चित जीवन चक्र में शामिल कुछ राज्य हैं जैसे कि तैयार, दौड़ना, अवरुद्ध और समाप्त करना। प्रोसेस स्टेट्स का इस्तेमाल प्रक्रिया की गतिविधि पर नज़र रखने के लिए किया जाता है।
प्रोग्रामर के दृष्टिकोण से, प्रक्रियाएं एक कार्यक्रम के समवर्ती निष्पादन को प्राप्त करने का माध्यम हैं। एक समवर्ती कार्यक्रम की मुख्य प्रक्रिया एक बच्चे की प्रक्रिया बनाती है। मुख्य लक्ष्य और बाल प्रक्रिया को एक सामान्य लक्ष्य प्राप्त करने के लिए प्रत्येक के साथ बातचीत करने की आवश्यकता होती है।
जब प्रक्रियाओं में एक या दूसरी प्रक्रिया में एक कम्प्यूटेशनल गतिविधि के साथ ओवरलैप हो जाता है, तो प्रक्रियाओं के परस्पर क्रियाकलाप कम्प्यूटेशन गति को बढ़ाते हैं।
एक प्रक्रिया के गुण:
- प्रत्येक प्रक्रिया के निर्माण में प्रत्येक प्रक्रिया के लिए अलग से सिस्टम कॉल शामिल हैं।
- एक प्रक्रिया एक पृथक निष्पादन इकाई है और यह डेटा और सूचना को साझा नहीं करती है।
- संचार के लिए प्रक्रियाएं IPC (अंतर-प्रक्रिया संचार) तंत्र का उपयोग करती हैं जो सिस्टम कॉल की संख्या को काफी बढ़ाता है।
- प्रक्रिया प्रबंधन अधिक सिस्टम कॉल का उपभोग करता है।
- प्रत्येक प्रक्रिया का अपना स्टैक और हीप मेमोरी, इंस्ट्रक्शन, डेटा और मेमोरी मैप होता है।
थ्रेड की परिभाषा
थ्रेड एक प्रोग्राम निष्पादन है जो कार्य को पूरा करने के लिए प्रक्रिया संसाधनों का उपयोग करता है। एक कार्यक्रम के भीतर सभी सूत्र तार्किक रूप से एक प्रक्रिया के भीतर समाहित होते हैं। कर्नेल प्रत्येक थ्रेड को एक स्टैक और एक थ्रेड कंट्रोल ब्लॉक (TCB) आवंटित करता है। ऑपरेटिंग सिस्टम उसी प्रक्रिया के थ्रेड्स के बीच स्विच करने के समय केवल स्टैक पॉइंटर और सीपीयू स्थिति को बचाता है।
थ्रेड्स को तीन अलग-अलग तरीकों से लागू किया जाता है; ये कर्नेल-लेवल थ्रेड्स, उपयोगकर्ता-लेवल थ्रेड्स, हाइब्रिड थ्रेड्स हैं। थ्रेड्स में तीन राज्य चल सकते हैं, तैयार और अवरुद्ध; इसमें केवल कम्प्यूटेशनल स्थिति शामिल है संसाधन आवंटन और संचार राज्य नहीं जो स्विचिंग ओवरहेड को कम करता है। यह समवर्ती (समानता) को बढ़ाता है इसलिए गति भी बढ़ जाती है।
मल्टीथ्रेडिंग भी अवगुणों के साथ आता है, कई धागे जटिलता पैदा नहीं करते हैं, लेकिन उनके बीच बातचीत होती है।
जब कोई थ्रेड सक्रिय होते हैं तो थ्रेड में प्राथमिकता गुण होना चाहिए। एक ही प्रक्रिया में अन्य सक्रिय थ्रेड्स से संबंधित निष्पादन के लिए जो समय मिलता है वह थ्रेड की प्राथमिकता द्वारा निर्दिष्ट किया जाता है।
एक धागे के गुण:
- केवल एक सिस्टम कॉल एक से अधिक थ्रेड (लाइटवेट प्रक्रिया) बना सकता है।
- थ्रेड्स डेटा और जानकारी साझा करते हैं।
- थ्रेड्स निर्देश, वैश्विक और ढेर क्षेत्रों को साझा करते हैं लेकिन इसके अपने व्यक्तिगत ढेर और रजिस्टर हैं।
- थ्रेड प्रबंधन कोई या कम सिस्टम कॉल नहीं खाता है क्योंकि साझा मेमोरी का उपयोग करके थ्रेड्स के बीच संचार प्राप्त किया जा सकता है।
- संसाधन की खपत के मामले में प्रक्रिया की अलगाव संपत्ति इसके ओवरहेड को बढ़ाती है।
प्रक्रिया और थ्रेड के बीच महत्वपूर्ण अंतर
- प्रोग्राम के सभी थ्रेड्स तार्किक रूप से एक प्रक्रिया के भीतर समाहित होते हैं।
- एक प्रक्रिया भारी भारित होती है, लेकिन एक धागा हल्का भारित होता है।
- एक प्रोग्राम एक पृथक निष्पादन इकाई है जबकि थ्रेड पृथक नहीं है और मेमोरी साझा करता है।
- एक धागे का एक अलग अस्तित्व नहीं हो सकता; यह एक प्रक्रिया से जुड़ा हुआ है। दूसरी ओर, एक प्रक्रिया व्यक्तिगत रूप से मौजूद हो सकती है।
- एक धागे की समाप्ति के समय, इसके संबद्ध स्टैक को पुनर्प्राप्त किया जा सकता है क्योंकि हर धागे का अपना स्टैक होता है। इसके विपरीत, यदि कोई प्रक्रिया मर जाती है, तो प्रक्रिया सहित सभी धागे मर जाते हैं।
निष्कर्ष
प्रक्रियाओं का उपयोग समवर्ती और अनुक्रमिक तरीके से कार्यक्रमों के निष्पादन को प्राप्त करने के लिए किया जाता है। जबकि एक धागा एक प्रोग्राम एक्ज़ीक्यूशन यूनिट है जो प्रक्रिया के वातावरण का उपयोग करता है जब कई थ्रेड्स उसी प्रक्रिया के वातावरण का उपयोग करते हैं जो उन्हें अपने कोड, डेटा और संसाधनों को साझा करने की आवश्यकता होती है। ऑपरेटिंग सिस्टम इस तथ्य का उपयोग ओवरहेड को कम करने और गणना में सुधार करने के लिए करता है।