प्रोसेस सिंक्रोनाइज़ेशन क्या है?
प्रोसेस सिंक्रोनाइज़ेशन एक तरह से प्रक्रियाओं के निष्पादन को समन्वित करने का कार्य है जो कि किसी भी दो प्रक्रियाओं में समान डेटा और संसाधनों तक पहुँच नहीं हो सकता है।
बहु-प्रक्रिया प्रणाली में इसकी विशेष आवश्यकता होती है, जब कई प्रक्रियाएँ एक साथ चल रही होती हैं, और एक से अधिक प्रक्रियाएँ एक ही समय में एक ही साझा संसाधन या डेटा तक पहुँच प्राप्त करने का प्रयास करती हैं।
इससे साझा डेटा की असंगति हो सकती है। एक प्रक्रिया द्वारा किया गया परिवर्तन आवश्यक रूप से परिलक्षित नहीं होता है जब अन्य प्रक्रियाएं समान साझा डेटा तक पहुंचती हैं। डेटा की इस प्रकार की असंगति से बचने के लिए, प्रक्रियाओं को एक दूसरे के साथ सिंक्रनाइज़ करने की आवश्यकता है।
इस ऑपरेटिंग सिस्टम ट्यूटोरियल में, आप सीखेंगे:
- प्रोसेस सिंक्रोनाइज़ेशन क्या है?
- कैसे काम करता है सिंक्रोनाइज़ेशन?
- एक कार्यक्रम के अनुभाग
- गंभीर धारा समस्या क्या है?
- क्रिटिकल सेक्शन के लिए नियम
- क्रिटिकल सेक्शन के समाधान
कैसे काम करता है सिंक्रोनाइज़ेशन?
उदाहरण के लिए, प्रक्रिया A डेटा को मेमोरी लोकेशन में बदल रही है जबकि अन्य प्रोसेस B उसी मेमोरी लोकेशन से डेटा को पढ़ने की कोशिश कर रहा है । एक उच्च संभावना है कि दूसरी प्रक्रिया द्वारा पढ़ा गया डेटा गलत होगा।
एक कार्यक्रम के अनुभाग
यहाँ, महत्वपूर्ण खंड के चार आवश्यक तत्व हैं:
- प्रवेश अनुभाग: यह उस प्रक्रिया का हिस्सा है जो किसी विशेष प्रक्रिया के प्रवेश का निर्णय करता है।
- महत्वपूर्ण खंड: यह भाग एक प्रक्रिया को साझा चर में प्रवेश करने और संशोधित करने की अनुमति देता है।
- एग्जिट सेक्शन: एग्जिट सेक्शन एंट्री सेक्शन में प्रतीक्षा करने वाली अन्य प्रक्रिया को क्रिटिकल सेक्शन में प्रवेश करने की अनुमति देता है। यह भी जांचता है कि इस धारा के माध्यम से इसका निष्पादन समाप्त करने वाली प्रक्रिया को हटा दिया जाना चाहिए।
- रेमिनेडर सेक्शन: कोड के अन्य सभी भाग, जो क्रिटिकल, एंट्री और एग्जिट सेक्शन में नहीं हैं, रेमिनेडर सेक्शन के रूप में जाने जाते हैं।
गंभीर धारा समस्या क्या है?
एक महत्वपूर्ण खंड कोड का एक खंड है जिसे एक विशिष्ट बिंदु पर सिग्नल प्रक्रिया द्वारा पहुँचा जा सकता है। इस खंड में साझा डेटा संसाधन शामिल हैं जिन्हें अन्य प्रक्रियाओं द्वारा एक्सेस करने की आवश्यकता है।
- महत्वपूर्ण खंड में प्रवेश प्रतीक्षा () फ़ंक्शन द्वारा नियंत्रित किया जाता है, और इसे P () के रूप में दर्शाया जाता है।
- एक महत्वपूर्ण खंड से बाहर निकलने को संकेत () फ़ंक्शन द्वारा नियंत्रित किया जाता है, जिसे वी () के रूप में दर्शाया गया है।
महत्वपूर्ण अनुभाग में, केवल एक प्रक्रिया को निष्पादित किया जा सकता है। अन्य प्रक्रियाएं, अपने महत्वपूर्ण खंड को निष्पादित करने के लिए इंतजार कर रही हैं, जब तक कि वर्तमान प्रक्रिया अपने निष्पादन को पूरा नहीं कर लेती है।
क्रिटिकल सेक्शन के लिए नियम
महत्वपूर्ण खंड को तीनों नियमों को लागू करना होगा:
- म्यूचुअल एक्सक्लूज़न: म्यूचुअल एक्सक्लूज़न एक विशेष प्रकार का बाइनरी सेमाफोर है जो साझा संसाधन तक पहुंच को नियंत्रित करने के लिए उपयोग किया जाता है। इसमें विस्तारित प्राथमिकता उलटा समस्याओं से बचने के लिए एक प्राथमिकता विरासत तंत्र शामिल है। एक समय में एक से अधिक प्रक्रिया अपने महत्वपूर्ण खंड में निष्पादित नहीं हो सकती।
- प्रगति: इस समाधान का उपयोग तब किया जाता है जब कोई महत्वपूर्ण अनुभाग में नहीं होता है, और कोई व्यक्ति चाहता है। फिर उन प्रक्रियाओं को उनके अनुस्मारक खंड में नहीं होना चाहिए जो तय करना चाहिए कि कौन परिमित समय में अंदर जाना चाहिए।
- बाउंड वेटिंग: जब कोई प्रक्रिया क्रिटिकल सेक्शन में आने के लिए रिक्वेस्ट करती है, तो एक खास लिमिट होती है कि प्रॉसेस की संख्या उनके क्रिटिकल सेक्शन में आ सकती है। इसलिए, जब सीमा समाप्त हो जाती है, तो सिस्टम को प्रक्रिया को उसके महत्वपूर्ण खंड में आने के लिए अनुरोध करने की अनुमति देनी चाहिए।
क्रिटिकल सेक्शन के समाधान
प्रोसेस सिंक्रोनाइज़ेशन में, महत्वपूर्ण सेक्शन मुख्य भूमिका निभाता है ताकि समस्या का समाधान हो।
यहां महत्वपूर्ण खंड समस्या को हल करने के लिए कुछ व्यापक रूप से उपयोग किए गए तरीके हैं।
पीटरसन समाधान
पीटरसन का समाधान गंभीर खंड की समस्याओं के समाधान के लिए व्यापक रूप से उपयोग किया जाता है। यह एल्गोरिथ्म एक कंप्यूटर वैज्ञानिक पीटरसन द्वारा विकसित किया गया था, इसलिए इसे पीटरसन के समाधान के रूप में नामित किया गया है।
इस समाधान में, जब एक प्रक्रिया एक महत्वपूर्ण स्थिति में निष्पादित हो रही है, तो दूसरी प्रक्रिया केवल बाकी कोड को निष्पादित करती है, और इसके विपरीत हो सकती है। यह विधि यह सुनिश्चित करने में भी मदद करती है कि विशिष्ट समय में केवल एक ही प्रक्रिया महत्वपूर्ण खंड में चलती है।
उदाहरण
PROCESS PiFLAG[i] = truewhile( (turn != i) AND (CS is !free) ){ wait;}CRITICAL SECTION FLAG[i] = falseturn = j; //choose another process to go to CS
- मान लें कि N प्रक्रियाएँ हैं (P1, P2,… PN) और किसी समय हर प्रक्रिया को क्रिटिकल सेक्शन में प्रवेश करना होता है
- एक FLAG [] आकार N की सरणी बनाए रखी जाती है जो डिफ़ॉल्ट रूप से गलत है। इसलिए, जब भी किसी प्रक्रिया को महत्वपूर्ण खंड में प्रवेश करने की आवश्यकता होती है, उसे अपना झंडा सच के रूप में सेट करना पड़ता है। उदाहरण के लिए, यदि Pi इसे दर्ज करना चाहता है तो यह FLAG [i] = TRUE सेट करेगा।
- TURN नामक एक अन्य चर उस प्रक्रिया संख्या को इंगित करता है जो वर्तमान में CS में प्रवेश करने के लिए तैयार है।
- जो प्रक्रिया बाहर निकलते समय महत्वपूर्ण खंड में प्रवेश करती है, वह तैयार प्रक्रियाओं की सूची से TURN को दूसरी संख्या में बदल देगी।
- उदाहरण: टर्न 2 है तो P2 क्रिटिकल सेक्शन में प्रवेश करता है और टर्न = 3 से बाहर निकलते समय और इसलिए P3 वेट लूप से बाहर निकलता है।
सिंक्रनाइज़ेशन हार्डवेयर
कुछ बार हार्डवेयर द्वारा क्रिटिकल सेक्शन की समस्याओं को भी हल किया जाता है। कुछ ऑपरेटिंग सिस्टम एक लॉक फंक्शनलिटी प्रदान करता है, जहाँ क्रिटिकल सेक्शन में प्रवेश करने पर एक प्रोसेस लॉक प्राप्त करता है और इसे छोड़ने के बाद लॉक रिलीज़ करता है।
इसलिए जब कोई अन्य प्रक्रिया महत्वपूर्ण अनुभाग में प्रवेश करने की कोशिश कर रही है, तो यह लॉक होने के साथ ही प्रवेश नहीं कर पाएगी। यह केवल तभी कर सकता है जब यह लॉक को प्राप्त करने से मुक्त हो।
म्यूटेक्स लॉक
तुल्यकालन हार्डवेयर सभी के लिए लागू करने के लिए सरल विधि नहीं है, इसलिए म्यूटेक्स लॉक्स के रूप में जाना जाने वाला सख्त सॉफ्टवेयर विधि भी पेश किया गया था।
इस दृष्टिकोण में, कोड के प्रवेश अनुभाग में, महत्वपूर्ण खंड के अंदर उपयोग किए जाने वाले महत्वपूर्ण संसाधनों पर एक LOCK प्राप्त होता है। निकास अनुभाग में जो लॉक जारी किया गया है।
सेमाफोर समाधान
सेमाफोर केवल एक चर है जो गैर-नकारात्मक है और थ्रेड्स के बीच साझा किया गया है। यह महत्वपूर्ण अनुभाग समस्या का एक और एल्गोरिथ्म या समाधान है। यह एक संकेतन तंत्र और एक धागा है जो एक अर्धवृत्त पर इंतजार कर रहा है, जिसे दूसरे धागे से संकेत दिया जा सकता है।
यह प्रक्रिया सिंक्रनाइज़ेशन के लिए दो परमाणु संचालन, 1) प्रतीक्षा और 2) संकेत का उपयोग करता है।
उदाहरण
WAIT ( S ):while ( S <= 0 );S = S - 1;SIGNAL ( S ):S = S + 1;
सारांश:
- प्रक्रिया तुल्यकालन एक तरह से प्रक्रियाओं के निष्पादन को समन्वित करने का कार्य है जो कि किसी भी दो प्रक्रियाओं में समान साझा डेटा और संसाधनों तक पहुंच नहीं हो सकती है।
- क्रिटिकल सेक्शन के चार तत्व हैं 1) एंट्री सेक्शन 2) क्रिटिकल सेक्शन 3) एग्जिट सेक्शन 4) रिमाइंडर सेक्शन
- एक महत्वपूर्ण खंड कोड का एक खंड है जिसे एक विशिष्ट बिंदु पर सिग्नल प्रक्रिया द्वारा पहुँचा जा सकता है।
- तीन नियम जो महत्वपूर्ण अनुभाग द्वारा लागू होने चाहिए, वे हैं: 1) पारस्परिक बहिष्करण 2) प्रक्रिया समाधान 3) बाध्य प्रतीक्षा
- म्यूचुअल बहिष्कार एक विशेष प्रकार का बाइनरी सेमाफोर है जो साझा संसाधन तक पहुंच को नियंत्रित करने के लिए उपयोग किया जाता है।
- प्रक्रिया समाधान का उपयोग तब किया जाता है जब कोई महत्वपूर्ण अनुभाग में नहीं होता है, और कोई व्यक्ति चाहता है।
- बाध्य प्रतीक्षा समाधान में, जब एक प्रक्रिया अपने महत्वपूर्ण खंड में आने के लिए अनुरोध करती है, तो इस बात की सीमा होती है कि अन्य प्रक्रियाएं आपके महत्वपूर्ण खंड में कैसे प्राप्त हो सकती हैं।
- पीटरसन का समाधान गंभीर खंड की समस्याओं के समाधान के लिए व्यापक रूप से उपयोग किया जाता है।
- हार्डवेयर के सिंक्रनाइज़ेशन द्वारा क्रिटिकल सेक्शन की समस्याओं को भी हल किया जाता है
- सिंक्रोनाइज़ेशन हार्डवेयर हर किसी के लिए लागू करने का एक सरल तरीका नहीं है, इसलिए म्यूटेक्स लॉक्स के नाम से जाना जाने वाला सख्त सॉफ्टवेयर तरीका भी पेश किया गया।
- सेमाफोर एक और एल्गोरिथ्म या महत्वपूर्ण खंड समस्या का समाधान है।