इस भाग में हम ऐसे विशेष वातावरण को स्पष्ट करेंगे, जिसमें कम्प्यूटर द्वारा कई भिन्न प्रोसेसेस का एक साथ एक्जिक्यूशन उपलब्ध होता है। प्रोसेसेस की प्रकृति और प्रोसेसर के लिए उनमें प्रतिस्पर्धा का प्रबंधन सिस्टम शेड्यूलर द्वारा किया जाता है ।
कॉनकरेन्ट प्रोसेसिंग:
यदि कई प्रोसेसेस एक ही समय में अस्तित्व में आती है, तो वे कॉनकरेन्ट (एक साथ कार्य करना) प्रोसेसेस कहलाती हैं। कॉनकरेन्ट प्रोसेसेस् पूर्णता स्वतंत्र रूप से कार्य कर सकती हैं अथवा वे एसिनक्रोनस भी हो सकती है। इसका तात्पर्य यह है कि उन्हें कभी-कभी सिनक्रोनाइजेशन तथा आपसी सहयोग की आवश्यकता होती हैं ।
इस अध्याय में निम्न विषयों पर विस्तृत अध्ययन प्रस्तुत किया गया है ।
(1) रिसोर्सेस की प्राप्ति के लिये प्रोसेसेस के मध्य प्रतिस्पर्धा का प्रभाव।
(2) आपस में संचार करने वाली प्रोसेसेस की आवश्यकताएँ।
सामान्यतः, कम्प्यूटर में होने वाली सभी प्रोसेसेस, सिस्टम रिसोर्सेस के लिए प्रतिस्पर्धा करती हैं, परन्तु यदि हम ध्यानपूर्वक देखें, तो हम इन प्रोसेसेस में आपस में कई संबंध दर्शा सकते हैं। इसकी सम्भावनाएँ निम्नलिखित हैं
(1) पूर्णतः स्वतंत्र प्रोसेसेस : एक ही सिस्टम की विभिन्न एप्लिकेशन पर कार्य करने वाला यूजर, जैसे स्वयं के प्रोग्राम्स कम्पाइल करने वाले विद्यार्थी ।
(2) स्वतंत्र परंतु संबद्ध प्रोसेसेस: एक ही एप्लिकेशन का उपयोग करने वाले युजर्स, जैसे एक ही डिपार्टमेंट में कार्य करने वाले विभिन्न क्लर्क । प्रत्येक क्लर्क अपना स्वयं का एक डाटा इंट्री प्रोग्राम रन कर सकता है, परंतु वे सभी एक ही डाटाबेस को एक्सेस और अपडट करते हैं।
( 3 ) कॉनकरेन्ट प्रोग्रामिंग एप्लिकेशन :- इसका संबंध वास्तव में उस एप्लिकेशन से होता है, जिसका निर्माण सहयोगी प्रोसेसेस के समुच्चय के रूप में किया गया है । उदाहरण के लिये, ऑपरेटिंग सिस्टम, रियल टाईम सिस्टम, जैसे प्रोसेस कन्ट्रोल, आनलाईन डाटाबेस आदि ।
रिसोर्सेस को रोयुजेबल (पुना उपयोगी) या कनस्यूमेन के रूप में वर्गीकृत किया जा सकता है। एक युजेल रिर्सोस को उपयोग करके उसे नष्ट नहीं किया जा सकता है। फिजिकल रिसोर्सेस जैसे प्रोसेसर और मुख्य मेमोरी, 10 डिवाइसेस, सेकण्डरी स्टोरेज, आदि स्पष्ट रूप से रीयुजेवन हैं। यदि किसी रिसोर्स का उपयोग एक समय में एक हो प्रोसेस द्वारा किया जा सकता है, तो उसे सिरियलो रीयूजेवल कहा जाता है। उदाहरण के लिए, प्रिंटर । कुछ विशेष प्रकार के रिसोर्सेस इस तरह की शेयरिंग प्रॉब्लम से संबद्ध नहीं होते हैं, जैसे- डिस्क फाइले, जिन्हें कुछ प्रतिबंधों के साथ, कई प्रोसेसेस द्वारा समान्तर रूप से शेयर किया जा सकता है।
कनस्यूमेबल रिसोर्स एक ऐसा अल्पस्थायी (ट्रांसिएट) डाटा आयटम अथवा सिग्नल है, जिसका निर्माण एक प्रोसेस द्वारा किया जाता है और दूसरी प्रोसेस द्वारा ग्रहण कर लेने पर नष्ट हो जाता है। । एक आदर्श कनस्यूमेबल रिसोर्स दो प्रोसेसेस के बीच का एक उचित संदेश होता है ।
रिसोसेंस की शेयरिंग से सामने आने वाली एक समस्या यह तय करना है कि सिरियली रीयूजेबल रिसोर्सेस का उपयोग एक समय में एक ही प्रोसेस द्वारा किया जा है, अर्थात आपसी एक्सक्लूशन निर्धारित करने के लिये।
पेरेलल (समानान्तर प्रोसेसिंग):
जैसे-जैसे कम्प्यूटर का आकार और होती जाती है, वैसे-वैसे प्रोसेसिंग और मेसीव पेरेललीज्म के प्रति भिन्न ट्रेंड्स (स्वरूप) सामने आते हैं। यदि कुछ निश्चित ऑपरेशन्स समानांतर रूप में लॉजिकली पफोंम किये जा सकते हैं, तब पेरेललिज्म का स्तर हजारों और संभवतया लाखों कॉनकरेंट क्रियाओं होने पर भी, कम्प्यूटर्स द्वारा उन्हें समानांतर रूप में पफोंम किया जा सकता है इसके परिणामस्वरूप सिक्वेंशियल कम्प्यूटर्स की तुलना में कार्यक्षमता को अत्यधिक बढ़ाया जा सकता है।
यह निर्धारित करना बहुत कठिन और लम्बी प्रक्रिया कि पेरेलल प्रोसेसिंग में कौन-कौन से कार्यकलाप किये जा सकते हैं और कौन-से नहीं एक बग (समस्या) के निर्धारित होने के बाद, पेरेलल प्रोग्राम्स को डिबग (debug) करना क्रमिक (सिम्बेशियल) प्रोग्राम्स की तुलना में अधिक कठिन है जिस घटनाक्रम में बग पहले स्थान पर प्रदर्शित होता है, उस घटनाक्रम को पुनः निर्मित करना संभव नहीं होता है इसीलिए, कुछ संदर्भों में यह प्रमाणित करना अनुचित होगा बग को वास्तव में सही किया गया है।
एसिन्क्रेनियस प्रोसेसेस् समय-समय पर एक दुसरे के साथ क्रियाएँ करती है और ये क्रियाएँ जटिल हो सकता हैं ।
अंततः, सिक्वेंशियल प्रोग्राम्स की तुलना में मेरेलल, प्रोग्राम को सही साबित करना कठिन है और यह माना जाता है कि यदि उच्च विश्वसनीयता और विभिन्न श्रेणियों के सॉफ्टवेयर सिस्टम बनाने के लिये बड़े स्तर पर प्रयास करना है, तो प्रोग्राम को सही साबित करने के लिए जटिल परिक्षण वाले प्रोग्राम्स् बनाने होंगे ।
पेरेललिज्म को इंगित करने के लिए एक कंट्रोल स्ट्रक्चर :
पेरेललिज्म को निर्दिष्ट करने के लिए बनाई गई कई प्रोग्रामिंग लैंग्वेजेस् का उल्लेख संबंधित सामग्री में किया गया है। इनमें सामान्यतः निम्नलिखित कथनों के युग्म होते हैं
(1) एक कथन यह दर्शाता है कि सिक्वेंशियल एक्जिक्यूशन को विभिन्न समान्तर (पेरेलल) एक्जिक्यूशन (कन्ट्रोल थ्रेड) में विभाजित किया जाए।
(2) एक कथन यह दर्शाता है कि कुछ निश्चित पेरेलल एक्जिक्यूशन क्रम विलिन (मर्ज) हो जायेंगे और सिक्वेंशियल एक्जिक्यूशन को पुनः प्राप्त करना है ।
ये कथन युग्म में होते हैं और इन्हें परबिगिन / परएण्ड (पेरेलल एक्जिक्यूशन को प्रारंभ और समाप्त करने के लिए) अथवा को-बिगिन / को-एण्ड (कॉनकरेट एक्जिक्यूशन को प्रारंभ और समाप्त करने के लिए) कहा जाता है।
मानाकि वर्तमान में इंस्ट्रक्शन के एक क्रम को एक्जिक्यूट करने वाला किसी प्रोग्राम में परबिगिन कंस्ट्रक्ट निर्मित है । इसके परिणामस्वरूप, परबिगिन/ परएण्ड कंस्ट्रक्ट के प्रत्येक स्टेटमेंट के लिये कंट्रोल का सिंगल थ्रेड स्वतंत्र थ्रेड्स में विभाजित होता है । ये थ्रेड्स सरल कथन, प्रोसिजर काल्स, बिगिन/एण्ड द्वारा चित्रित ब्लॉक के सिक्वेंशियल कथन अथवा इनके मिश्रण के रूप में हो। सकते हैं। कंट्रोल का प्रत्येक स्वतंत्र थ्रेड टर्मिनेट होकर परएण्ड तक पहुँचता है । जब कंट्रोल के सभी पेरेलल थ्रेड अंततः टर्मीनेट हो जाते हैं, तब कन्ट्रोल का एक सिंगल थ्रेड पुनः प्राप्त होता है और सिस्टम परएण्ड के बाद अगले कथन की ओर बढ़ता है।
थ्रेड्स:
कंट्रोल के फ्लो को थ्रेड कहा जाता है। हम जानते हैं कि प्रोग्राम, इंस्ट्रक्शन्स का एक समुच्चय है। ये इंस्ट्रक्शन सिंगल प्रोग्राम के भिन्न भागों का निर्माण करते हैं। के प्रत्येक स्वतंत्र भाग को प्रोग्राम का ब्रेड कहा जाता है। इस का वर्गीकरण निम्नानुसार किया जा सकता है (1) सिंगल थ्रेड (2) मल्टि थ्रेड
जिस प्रोसेस में कंट्रोल का केवल एक फ्लो होता है, उसे सिंगल थ्रेड (लाइट वेट प्रोसेस) कहा जाता है। दूसरी तरफ, जिस प्रोसेस में कंट्रोल के कई फ्लो होते हैं, उसे मल्टि थ्रेड (हेवी वेट प्रोसेस) कहा जाता है।
एक थ्रेड, CPU उपयोग की मूलभूत इकाई है। इसमें एक थ्रेड ID, एक प्रोग्राम काउंटर, एक रजिस्टर सेट तथा एक स्टेक होते हैं। समान प्रोसेस से संबद्ध दूसरे थ्रेड के साथ यह कोड सेक्शन, डाटा सेक्शन और दूसरे ऑपरेटिंग सिस्टम रिसोर्स, जैसे ओपन फाइल और सिग्नल को शेयर करता है।
आधुनिक डेस्कटॉप PCs में प्रयुक्त कई सॉफ्टवेयर पेकेज, मल्टिथ्रेडेड होते हैं। एक एप्लिकेशन को कंट्रोल के विभिन्न थ्रेड के साथ एक पृथक प्रोसेस के रूप में कार्यान्वित किया जाता है। जब तक एक अन्य थ्रेड नेटवर्क से पुनः डाटा प्राप्त करता है, वेब ब्राउसर के पास एक थ्रेड डिस्प्ले इमेज या टेक्स्ट हो सकता है।