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


