तुल्यकालन (कंप्यूटर विज्ञान): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 12: Line 12:
विशिष्ट उपयोग संसाधन: जब कई प्रक्रियाएं संसाधन पर निर्भर होती हैं और उन्हें ही समय में इसे अभिगम करने की आवश्यकता होती है, तो परिचालन प्रणाली को यह सुनिश्चित करने की आवश्यकता होती है कि केवल प्रक्रमक निश्चित समय पर इसे अभिगम करता है। यह समेकन को कम करता है।
विशिष्ट उपयोग संसाधन: जब कई प्रक्रियाएं संसाधन पर निर्भर होती हैं और उन्हें ही समय में इसे अभिगम करने की आवश्यकता होती है, तो परिचालन प्रणाली को यह सुनिश्चित करने की आवश्यकता होती है कि केवल प्रक्रमक निश्चित समय पर इसे अभिगम करता है। यह समेकन को कम करता है।


==थ्रेड या प्रोसेस सिंक्रोनाइज़ेशन==
==धागा या प्रक्रिया तुल्यकालन==
[[File:Multiple Processes Accessing the shared resource.png|thumb|चित्र 1: साथ साझा संसाधन (महत्वपूर्ण खंड) तक पहुँचने वाली तीन प्रक्रियाएँ।]]थ्रेड तुल्यकालन को तंत्र के रूप में परिभाषित किया गया है जो यह सुनिश्चित करता है कि दो या अधिक समवर्ती प्रक्रिया (कंप्यूटर साइंस) या [[ धागा (कंप्यूटर विज्ञान) |धागा (कंप्यूटर विज्ञान)]] साथ कुछ विशेष प्रोग्राम सेगमेंट को निष्पादित नहीं करते हैं जिसे क्रिटिकल सेक्शन के रूप में जाना जाता है। तुल्यकालन तकनीकों का उपयोग करके महत्वपूर्ण अनुभाग तक प्रक्रियाओं की पहुंच को नियंत्रित किया जाता है। जब थ्रेड क्रिटिकल सेक्शन (प्रोग्राम का सीरियलाइज्ड सेगमेंट) को निष्पादित करना प्रारंभ करता है, तो दूसरे थ्रेड को पहले थ्रेड के खत्म होने तक इंतजार करना चाहिए। यदि उचित तुल्यकालन तकनीक<ref>
[[File:Multiple Processes Accessing the shared resource.png|thumb|चित्र 1: साथ साझा संसाधन (महत्वपूर्ण खंड) तक पहुँचने वाली तीन प्रक्रियाएँ।]]धागा तुल्यकालन को तंत्र के रूप में परिभाषित किया गया है जो यह सुनिश्चित करता है कि दो या अधिक समवर्ती प्रक्रिया (कंप्यूटर विज्ञान ) या [[ धागा (कंप्यूटर विज्ञान) |धागा (कंप्यूटर विज्ञान)]] साथ कुछ विशेष प्रोग्राम खंड  को निष्पादित नहीं करते हैं जिसे क्रिटिकल सेक्शन के रूप में जाना जाता है। तुल्यकालन प्रविधियों का उपयोग करके महत्वपूर्ण अनुभाग तक प्रक्रियाओं की पहुंच को नियंत्रित किया जाता है। जब धागा क्रिटिकल सेक्शन (प्रोग्राम का सीरियलाइज्ड खंड ) को निष्पादित करना प्रारंभ करता है, तो दूसरे धागा को पहले धागा के खत्म होने तक इंतजार करना चाहिए। यदि उचित तुल्यकालन प्रविधि<ref>
{{cite conference
{{cite conference
   |  title=More than you ever wanted to know about synchronization: Synchrobench, measuring the impact of the synchronization on concurrent algorithms
   |  title=More than you ever wanted to know about synchronization: Synchrobench, measuring the impact of the synchronization on concurrent algorithms
Line 26: Line 26:
उदाहरण के लिए, मान लीजिए कि तीन प्रक्रियाएं हैं, अर्थात् 1, 2, और 3। ये तीनों समवर्ती रूप से क्रियान्वित हैं, और उन्हें सामान्य संसाधन (महत्वपूर्ण खंड) साझा करने की आवश्यकता है जैसा कि चित्र 1 में दिखाया गया है। यहां तुल्यकालन का उपयोग किया जाना चाहिए इस साझा संसाधन तक पहुँचने के लिए किसी भी विरोध से बचें। इसलिए, जब प्रक्रिया 1 और 2 दोनों उस संसाधन तक पहुँचने का प्रयास करते हैं, तो इसे समय में केवल ही प्रक्रिया को सौंपा जाना चाहिए। यदि इसे प्रक्रिया 1 को सौंपा गया है, तो दूसरी प्रक्रिया (प्रक्रिया 2) को तब तक प्रतीक्षा करने की आवश्यकता है जब तक कि प्रक्रिया 1 उस संसाधन को मुक्त नहीं कर देती (जैसा कि चित्र 2 में दिखाया गया है)।
उदाहरण के लिए, मान लीजिए कि तीन प्रक्रियाएं हैं, अर्थात् 1, 2, और 3। ये तीनों समवर्ती रूप से क्रियान्वित हैं, और उन्हें सामान्य संसाधन (महत्वपूर्ण खंड) साझा करने की आवश्यकता है जैसा कि चित्र 1 में दिखाया गया है। यहां तुल्यकालन का उपयोग किया जाना चाहिए इस साझा संसाधन तक पहुँचने के लिए किसी भी विरोध से बचें। इसलिए, जब प्रक्रिया 1 और 2 दोनों उस संसाधन तक पहुँचने का प्रयास करते हैं, तो इसे समय में केवल ही प्रक्रिया को सौंपा जाना चाहिए। यदि इसे प्रक्रिया 1 को सौंपा गया है, तो दूसरी प्रक्रिया (प्रक्रिया 2) को तब तक प्रतीक्षा करने की आवश्यकता है जब तक कि प्रक्रिया 1 उस संसाधन को मुक्त नहीं कर देती (जैसा कि चित्र 2 में दिखाया गया है)।


[[File:Shared Resource access in synchronization environment.png|thumb|चित्र 2: कुछ तुल्यकालन तकनीक के आधार पर, यदि उपलब्ध हो तो साझा संसाधन तक पहुँचने की प्रक्रिया।]]एक अन्य तुल्यकालन आवश्यकता जिस पर विचार करने की आवश्यकता है वह वह क्रम है जिसमें विशेष प्रक्रियाओं या थ्रेड्स को निष्पादित किया जाना चाहिए। उदाहरण के लिए, कोई टिकट खरीदने से पहले हवाई जहाज़ पर नहीं चढ़ सकता। इसी तरह, उपयुक्त क्रेडेंशियल्स (उदाहरण के लिए, उपयोगकर्ता नाम और पासवर्ड) को मान्य करने से पहले कोई भी ई-मेल की जांच नहीं कर सकता है। इसी तरह, एटीएम तब तक कोई सेवा प्रदान नहीं करेगा जब तक कि उसे सही पिन प्राप्त न हो जाए।
[[File:Shared Resource access in synchronization environment.png|thumb|चित्र 2: कुछ तुल्यकालन प्रविधि के आधार पर, यदि उपलब्ध हो तो साझा संसाधन तक पहुँचने की प्रक्रिया।]]एक अन्य तुल्यकालन आवश्यकता जिस पर विचार करने की आवश्यकता है वह वह क्रम है जिसमें विशेष प्रक्रियाओं या थ्रेड्स को निष्पादित किया जाना चाहिए। उदाहरण के लिए, कोई टिकट खरीदने से पहले हवाई जहाज़ पर नहीं चढ़ सकता। इसी तरह, उपयुक्त क्रेडेंशियल्स (उदाहरण के लिए, उपयोगकर्ता नाम और पासवर्ड) को मान्य करने से पहले कोई भी ई-मेल की जांच नहीं कर सकता है। इसी तरह, एटीएम तब तक कोई सेवा प्रदान नहीं करेगा जब तक कि उसे सही पिन प्राप्त न हो जाए।


पारस्परिक बहिष्करण के अतिरिक्त, तुल्यकालन निम्नलिखित से भी संबंधित है:
पारस्परिक बहिष्करण के अतिरिक्त, तुल्यकालन निम्नलिखित से भी संबंधित है:
Line 69: Line 69:


=== प्रोग्रामिंग भाषाओं में तुल्यकालन रणनीतियाँ ===
=== प्रोग्रामिंग भाषाओं में तुल्यकालन रणनीतियाँ ===
[[ जावा (प्रोग्रामिंग भाषा) | जावा (प्रोग्रामिंग भाषा)]] में, थ्रेड इंटरफेरेंस और मेमोरी कंसिस्टेंसी एरर को रोकने के लिए, कोड के ब्लॉक को सिंक्रोनाइज़्ड ''(lock_object)'' सेक्शन में लपेटा जाता है। यह किसी भी थ्रेड को ब्लॉक को निष्पादित करने से पहले उक्त लॉक ऑब्जेक्ट को प्राप्त करने के लिए बाध्य करता है। लॉक स्वचालित रूप से जारी किया जाता है जब थ्रेड जिसने लॉक प्राप्त किया है, और फिर ब्लॉक निष्पादित कर रहा है, ब्लॉक छोड़ देता है या ब्लॉक के भीतर प्रतीक्षा स्थिति में प्रवेश करता है। किसी थ्रेड द्वारा सिंक्रोनाइज़्ड ब्लॉक में किया गया कोई भी वेरिएबल अपडेट, अन्य थ्रेड्स के लिए दृश्यमान हो जाता है जब वे समान रूप से लॉक प्राप्त करते हैं और ब्लॉक को निष्पादित करते हैं।
[[ जावा (प्रोग्रामिंग भाषा) | जावा (प्रोग्रामिंग भाषा)]] में, धागा इंटरफेरेंस और मेमोरी कंसिस्टेंसी एरर को रोकने के लिए, कोड के ब्लॉक को सिंक्रोनाइज़्ड ''(lock_object)'' सेक्शन में लपेटा जाता है। यह किसी भी धागा को ब्लॉक को निष्पादित करने से पहले उक्त लॉक ऑब्जेक्ट को प्राप्त करने के लिए बाध्य करता है। लॉक स्वचालित रूप से जारी किया जाता है जब धागा जिसने लॉक प्राप्त किया है, और फिर ब्लॉक निष्पादित कर रहा है, ब्लॉक छोड़ देता है या ब्लॉक के भीतर प्रतीक्षा स्थिति में प्रवेश करता है। किसी धागा द्वारा सिंक्रोनाइज़्ड ब्लॉक में किया गया कोई भी वेरिएबल अपडेट, अन्य थ्रेड्स के लिए दृश्यमान हो जाता है जब वे समान रूप से लॉक प्राप्त करते हैं और ब्लॉक को निष्पादित करते हैं।


जावा ''सिंक्रनाइज़्ड'' ब्लॉक, आपसी बहिष्करण और मेमोरी स्थिरता को सक्षम करने के अतिरिक्त, सिग्नलिंग को सक्षम करता है - अर्थात, उन थ्रेड्स से ईवेंट भेजना जिन्होंने लॉक प्राप्त कर लिया है और कोड ब्लॉक को निष्पादित कर रहे हैं जो ब्लॉक के भीतर लॉक की प्रतीक्षा कर रहे हैं। इसका मतलब यह है कि जावा सिंक्रोनाइज़्ड सेक्शन म्यूटेक्स और इवेंट्स की कार्यक्षमता को जोड़ती है। ऐसे आदिम को [[मॉनिटर (सिंक्रनाइज़ेशन)]] के रूप में जाना जाता है।
जावा ''सिंक्रनाइज़्ड'' ब्लॉक, आपसी बहिष्करण और मेमोरी स्थिरता को सक्षम करने के अतिरिक्त, सिग्नलिंग को सक्षम करता है - अर्थात, उन थ्रेड्स से ईवेंट भेजना जिन्होंने लॉक प्राप्त कर लिया है और कोड ब्लॉक को निष्पादित कर रहे हैं जो ब्लॉक के भीतर लॉक की प्रतीक्षा कर रहे हैं। इसका मतलब यह है कि जावा सिंक्रोनाइज़्ड सेक्शन म्यूटेक्स और इवेंट्स की कार्यक्षमता को जोड़ती है। ऐसे आदिम को [[मॉनिटर (सिंक्रनाइज़ेशन)]] के रूप में जाना जाता है।
Line 75: Line 75:
जावा में लॉक/मॉनीटर के रूप में किसी भी वस्तु का उपयोग किया जा सकता है। घोषित वस्तु ताला वस्तु है जब पूरी विधि को ''सिंक्रनाइज़'' के साथ चिह्नित किया जाता है।
जावा में लॉक/मॉनीटर के रूप में किसी भी वस्तु का उपयोग किया जा सकता है। घोषित वस्तु ताला वस्तु है जब पूरी विधि को ''सिंक्रनाइज़'' के साथ चिह्नित किया जाता है।


.NET फ्रेमवर्क में तुल्यकालन प्राथमिक  हैं। तुल्यकालन को सहकारी होने के लिए डिज़ाइन किया गया है, यह मांग करते हुए कि प्रत्येक थ्रेड या प्रक्रिया लगातार परिणामों के लिए संरक्षित संसाधनों (महत्वपूर्ण अनुभाग) तक पहुँचने से पहले तुल्यकालन तंत्र का पालन करती है। .NET में, लॉकिंग, सिग्नलिंग, लाइटवेट तुल्यकालन प्रकार, स्पिनवेट और इंटरलॉक्ड ऑपरेशंस कुछ तुल्यकालन से संबंधित तंत्र हैं।<ref>{{cite web|title=.NET फ्रेमवर्क में सिंक्रोनाइज़ेशन प्रिमिटिव्स|url=http://msdn.microsoft.com/en-us/library/ms228964%28v=vs.110%29.aspx|website=MSDN, The Microsoft Developer Network|publisher=Microsoft|access-date=23 November 2014}}</ref>
.NET फ्रेमवर्क में तुल्यकालन प्राथमिक  हैं। तुल्यकालन को सहकारी होने के लिए डिज़ाइन किया गया है, यह मांग करते हुए कि प्रत्येक धागा या प्रक्रिया लगातार परिणामों के लिए संरक्षित संसाधनों (महत्वपूर्ण अनुभाग) तक पहुँचने से पहले तुल्यकालन तंत्र का पालन करती है। .NET में, लॉकिंग, सिग्नलिंग, लाइटवेट तुल्यकालन प्रकार, स्पिनवेट और इंटरलॉक्ड ऑपरेशंस कुछ तुल्यकालन से संबंधित तंत्र हैं।<ref>{{cite web|title=.NET फ्रेमवर्क में सिंक्रोनाइज़ेशन प्रिमिटिव्स|url=http://msdn.microsoft.com/en-us/library/ms228964%28v=vs.110%29.aspx|website=MSDN, The Microsoft Developer Network|publisher=Microsoft|access-date=23 November 2014}}</ref>




Line 82: Line 82:
==== स्पिनलॉक ====
==== स्पिनलॉक ====
{{Main article|Spinlock}}
{{Main article|Spinlock}}
तुल्यकालन को लागू करने का अन्य प्रभावी विधि स्पिनलॉक्स का उपयोग करना है। किसी साझा संसाधन या कोड के टुकड़े तक पहुँचने से पहले, प्रत्येक प्रक्रमक ध्वज की जाँच करता है। यदि ध्वज को रीसमूह किया जाता है, तो प्रक्रमक ध्वज को समूह करता है और थ्रेड को निष्पादित करना जारी रखता है। लेकिन, यदि झंडा समूह (लॉक) है, तो धागे लूप में घूमते रहेंगे और जांचते रहेंगे कि झंडा समूह है या नहीं। लेकिन, स्पिनलॉक तभी प्रभावी होते हैं जब ध्वज को निचले चक्रों के लिए रीसमूह किया जाता है अन्यथा यह प्रदर्शन के मुद्दों को जन्म दे सकता है क्योंकि यह प्रतीक्षा में कई प्रक्रमक चक्रों को बर्बाद कर देता है।<ref>{{Cite book|title=ECos के साथ एंबेडेड सॉफ्टवेयर विकास|last=Massa|first=Anthony|publisher=Pearson Education Inc|year=2003|isbn=0-13-035473-2}}</ref>
तुल्यकालन को लागू करने का अन्य प्रभावी विधि स्पिनलॉक्स का उपयोग करना है। किसी साझा संसाधन या कोड के टुकड़े तक पहुँचने से पहले, प्रत्येक प्रक्रमक ध्वज की जाँच करता है। यदि ध्वज को रीसमूह किया जाता है, तो प्रक्रमक ध्वज को समूह करता है और धागा को निष्पादित करना जारी रखता है। लेकिन, यदि झंडा समूह (लॉक) है, तो धागे लूप में घूमते रहेंगे और जांचते रहेंगे कि झंडा समूह है या नहीं। लेकिन, स्पिनलॉक तभी प्रभावी होते हैं जब ध्वज को निचले चक्रों के लिए रीसमूह किया जाता है अन्यथा यह प्रदर्शन के मुद्दों को जन्म दे सकता है क्योंकि यह प्रतीक्षा में कई प्रक्रमक चक्रों को बर्बाद कर देता है।<ref>{{Cite book|title=ECos के साथ एंबेडेड सॉफ्टवेयर विकास|last=Massa|first=Anthony|publisher=Pearson Education Inc|year=2003|isbn=0-13-035473-2}}</ref>




==== बाधाएँ ====
==== बाधाएँ ====
{{Main article|Barrier (computer science)}}
{{Main article|Barrier (computer science)}}
बाधाएं लागू करने में सरल हैं और अच्छी प्रतिक्रिया प्रदान करती हैं। वे तुल्यकालन प्रदान करने के लिए प्रतीक्षा चक्रों को लागू करने की अवधारणा पर आधारित हैं। बैरियर 1 से प्रारंभ होकर साथ चलने वाले तीन थ्रेड्स पर विचार करें। समय t के बाद, थ्रेड 1 बैरियर 2 तक पहुँच जाता है, किन्तु इसे अभी भी बैरियर 2 तक पहुँचने के लिए थ्रेड 2 और 3 का इंतज़ार करना पड़ता है क्योंकि इसमें सही डेटा नहीं होता है। बार जब सभी धागे बाधा 2 तक पहुंच जाते हैं तो वे सभी फिर से प्रारंभ हो जाते हैं। समय t के बाद, थ्रेड 1 बैरियर 3 तक पहुँचता है किन्तु उसे थ्रेड 2 और 3 और फिर से सही डेटा के लिए इंतज़ार करना होगा।
बाधाएं लागू करने में सरल हैं और अच्छी प्रतिक्रिया प्रदान करती हैं। वे तुल्यकालन प्रदान करने के लिए प्रतीक्षा चक्रों को लागू करने की अवधारणा पर आधारित हैं। बैरियर 1 से प्रारंभ होकर साथ चलने वाले तीन थ्रेड्स पर विचार करें। समय t के बाद, धागा 1 बैरियर 2 तक पहुँच जाता है, किन्तु इसे अभी भी बैरियर 2 तक पहुँचने के लिए धागा 2 और 3 का इंतज़ार करना पड़ता है क्योंकि इसमें सही डेटा नहीं होता है। बार जब सभी धागे बाधा 2 तक पहुंच जाते हैं तो वे सभी फिर से प्रारंभ हो जाते हैं। समय t के बाद, धागा 1 बैरियर 3 तक पहुँचता है किन्तु उसे धागा 2 और 3 और फिर से सही डेटा के लिए इंतज़ार करना होगा।


इस प्रकार, कई थ्रेड्स के बैरियर तुल्यकालन में हमेशा कुछ थ्रेड्स होंगे जो अन्य थ्रेड्स की प्रतीक्षा में समाप्त हो जाएंगे क्योंकि उपरोक्त उदाहरण में थ्रेड 1 थ्रेड 2 और 3 की प्रतीक्षा करता रहता है। इसके परिणामस्वरूप प्रक्रिया के प्रदर्शन में गंभीर गिरावट आती है।<ref name=":0">{{Cite journal|last=Meng, Chen, Pan, Yao, Wu|first=Jinglei, Tianzhou, Ping, Jun. Minghui|date=2014|title=बाधा तुल्यकालन के लिए एक सट्टा तंत्र|journal=2014 IEEE International Conference on High Performance Computing and Communications (HPCC), 2014 IEEE 6th International Symposium on Cyberspace Safety and Security (CSS) and 2014 IEEE 11th International Conference on Embedded Software and Systems (ICESS)}}</ref>
इस प्रकार, कई थ्रेड्स के बैरियर तुल्यकालन में हमेशा कुछ थ्रेड्स होंगे जो अन्य थ्रेड्स की प्रतीक्षा में समाप्त हो जाएंगे क्योंकि उपरोक्त उदाहरण में धागा 1 धागा 2 और 3 की प्रतीक्षा करता रहता है। इसके परिणामस्वरूप प्रक्रिया के प्रदर्शन में गंभीर गिरावट आती है।<ref name=":0">{{Cite journal|last=Meng, Chen, Pan, Yao, Wu|first=Jinglei, Tianzhou, Ping, Jun. Minghui|date=2014|title=बाधा तुल्यकालन के लिए एक सट्टा तंत्र|journal=2014 IEEE International Conference on High Performance Computing and Communications (HPCC), 2014 IEEE 6th International Symposium on Cyberspace Safety and Security (CSS) and 2014 IEEE 11th International Conference on Embedded Software and Systems (ICESS)}}</ref>
मैं के लिए बाधा तुल्यकालन प्रतीक्षा समारोह<sup>वें</sup> धागे को इस प्रकार दर्शाया जा सकता है:
मैं के लिए बाधा तुल्यकालन प्रतीक्षा समारोह<sup>वें</sup> धागे को इस प्रकार दर्शाया जा सकता है:


(Wbarrier)i = f ((Tbarrier)i, (Rthread)i)
(Wbarrier)i = f ((Tbarrier)i, (Rthread)i)


जहाँ Wbarrier थ्रेड के लिए प्रतीक्षा समय है, Tbarrier थ्रेड्स की संख्या आ गई है, और Rthread थ्रेड्स की आगमन दर है।<ref>{{Cite book |doi=10.1109/ICIEV.2012.6317471 |isbn=978-1-4673-1154-0|chapter=Process synchronization in multiprocessor and multi-core processor|title=2012 International Conference on Informatics, Electronics & Vision (ICIEV)|pages=554–559|year=2012|last1=Rahman|first1=Mohammed Mahmudur|s2cid=8134329 }}</ref>
जहाँ Wbarrier धागा के लिए प्रतीक्षा समय है, Tbarrier थ्रेड्स की संख्या आ गई है, और Rthread थ्रेड्स की आगमन दर है।<ref>{{Cite book |doi=10.1109/ICIEV.2012.6317471 |isbn=978-1-4673-1154-0|chapter=Process synchronization in multiprocessor and multi-core processor|title=2012 International Conference on Informatics, Electronics & Vision (ICIEV)|pages=554–559|year=2012|last1=Rahman|first1=Mohammed Mahmudur|s2cid=8134329 }}</ref>
प्रयोगों से पता चलता है कि कुल निष्पादन समय का 34% अन्य धीमे धागों की प्रतीक्षा में व्यतीत होता है।<ref name=":0" />
प्रयोगों से पता चलता है कि कुल निष्पादन समय का 34% अन्य धीमे धागों की प्रतीक्षा में व्यतीत होता है।<ref name=":0" />


Line 100: Line 100:
==== सेमाफोर ====
==== सेमाफोर ====
{{Main article|Semaphore (programming)}}
{{Main article|Semaphore (programming)}}
सेमाफोर सिग्नलिंग तंत्र हैं जो या से अधिक थ्रेड्स / प्रक्रमक को सेक्शन तक पहुंचने की अनुमति दे सकते हैं। सेमाफोर में ध्वज होता है जिसके साथ निश्चित निश्चित मूल्य जुड़ा होता है और हर बार जब कोई धागा अनुभाग तक पहुंचने की इच्छा रखता है, तो यह ध्वज को कम कर देता है। इसी तरह, जब धागा खंड छोड़ देता है, तो ध्वज बढ़ जाता है। यदि ध्वज शून्य है, तो थ्रेड अनुभाग तक नहीं पहुंच सकता है और प्रतीक्षा करने का विकल्प चुनने पर अवरुद्ध हो जाता है।
सेमाफोर सिग्नलिंग तंत्र हैं जो या से अधिक थ्रेड्स / प्रक्रमक को सेक्शन तक पहुंचने की अनुमति दे सकते हैं। सेमाफोर में ध्वज होता है जिसके साथ निश्चित निश्चित मूल्य जुड़ा होता है और हर बार जब कोई धागा अनुभाग तक पहुंचने की इच्छा रखता है, तो यह ध्वज को कम कर देता है। इसी तरह, जब धागा खंड छोड़ देता है, तो ध्वज बढ़ जाता है। यदि ध्वज शून्य है, तो धागा अनुभाग तक नहीं पहुंच सकता है और प्रतीक्षा करने का विकल्प चुनने पर अवरुद्ध हो जाता है।


कुछ सेमाफोर कोड अनुभाग में केवल थ्रेड या प्रक्रिया की अनुमति देते हैं। ऐसे सेमाफोर को बाइनरी सेमाफोर कहा जाता है और यह म्यूटेक्स के समान हैं। यहां, यदि सेमाफोर का मान 1 है, तो थ्रेड को अभिगम करने की अनुमति है और यदि मान 0 है, तो अभिगम अस्वीकृत है।<ref>{{Cite book|title=एंबेडेड सिस्टम के लिए रीयल-टाइम अवधारणाएं|last=Li, Yao|first=Qing, Carolyn|publisher=CMP Books|year=2003|isbn=978-1578201242}}</ref>
कुछ सेमाफोर कोड अनुभाग में केवल धागा या प्रक्रिया की अनुमति देते हैं। ऐसे सेमाफोर को बाइनरी सेमाफोर कहा जाता है और यह म्यूटेक्स के समान हैं। यहां, यदि सेमाफोर का मान 1 है, तो धागा को अभिगम करने की अनुमति है और यदि मान 0 है, तो अभिगम अस्वीकृत है।<ref>{{Cite book|title=एंबेडेड सिस्टम के लिए रीयल-टाइम अवधारणाएं|last=Li, Yao|first=Qing, Carolyn|publisher=CMP Books|year=2003|isbn=978-1578201242}}</ref>




Line 110: Line 110:
चूँकि फ़ाइल डेटाबेस के लिए ताले बनाए गए थे, डेटा को प्रक्रियाओं और थ्रेड्स के बीच मेमोरी में भी साझा किया जाता है। कभी-कभी समय में से अधिक ऑब्जेक्ट (या फ़ाइल) लॉक हो जाते हैं। यदि वे साथ लॉक नहीं होते हैं तो वे ओवरलैप कर सकते हैं, जिससे डेडलॉक अपवाद हो सकता है।
चूँकि फ़ाइल डेटाबेस के लिए ताले बनाए गए थे, डेटा को प्रक्रियाओं और थ्रेड्स के बीच मेमोरी में भी साझा किया जाता है। कभी-कभी समय में से अधिक ऑब्जेक्ट (या फ़ाइल) लॉक हो जाते हैं। यदि वे साथ लॉक नहीं होते हैं तो वे ओवरलैप कर सकते हैं, जिससे डेडलॉक अपवाद हो सकता है।


जावा (प्रोग्रामिंग लैंग्वेज) और एडा (प्रोग्रामिंग लैंग्वेज) में केवल एक्सक्लूसिव लॉक होते हैं क्योंकि वे थ्रेड आधारित होते हैं और तुलना-और-स्वैप प्रक्रमक निर्देश पर निर्भर होते हैं।
जावा (प्रोग्रामिंग लैंग्वेज) और एडा (प्रोग्रामिंग लैंग्वेज) में केवल एक्सक्लूसिव लॉक होते हैं क्योंकि वे धागा आधारित होते हैं और तुलना-और-स्वैप प्रक्रमक निर्देश पर निर्भर होते हैं।


तुल्यकालन आदिम के लिए अमूर्त गणितीय आधार [[इतिहास मोनोइड]] द्वारा दिया गया है। कई उच्च-स्तरीय सैद्धांतिक उपकरण भी हैं, जैसे कि [[ प्रक्रिया गणना |प्रक्रिया गणना]] और [[पेट्री नेट]], जिन्हें इतिहास मोनोइड के शीर्ष पर बनाया जा सकता है।
तुल्यकालन आदिम के लिए अमूर्त गणितीय आधार [[इतिहास मोनोइड]] द्वारा दिया गया है। कई उच्च-स्तरीय सैद्धांतिक उपकरण भी हैं, जैसे कि [[ प्रक्रिया गणना |प्रक्रिया गणना]] और [[पेट्री नेट]], जिन्हें इतिहास मोनोइड के शीर्ष पर बनाया जा सकता है।
Line 121: Line 121:
विंडोज प्रदान करता है:
विंडोज प्रदान करता है:
* इंटरप्ट, जो यूनिप्रक्रमक प्रणाली पर वैश्विक संसाधनों (महत्वपूर्ण खंड) तक पहुंच की रक्षा करता है;
* इंटरप्ट, जो यूनिप्रक्रमक प्रणाली पर वैश्विक संसाधनों (महत्वपूर्ण खंड) तक पहुंच की रक्षा करता है;
* [[ spinlock ]], जो मल्टीप्रक्रमक प्रणाली में, स्पिनलॉकिंग-थ्रेड को प्रीमेप्ट होने से रोकते हैं;
* [[ spinlock ]], जो मल्टीप्रक्रमक प्रणाली में, स्पिनलॉकिंग-धागा को प्रीमेप्ट होने से रोकते हैं;
* गतिशील प्रेषक{{citation needed|date=June 2022}}, जो परस्पर बहिष्करण, [[सेमाफोर (प्रोग्रामिंग)]], [[ घटना (कंप्यूटिंग) |घटना (कंप्यूटिंग)]] और [[ घड़ी |घड़ी]] की तरह काम करते हैं।
* गतिशील प्रेषक{{citation needed|date=June 2022}}, जो परस्पर बहिष्करण, [[सेमाफोर (प्रोग्रामिंग)]], [[ घटना (कंप्यूटिंग) |घटना (कंप्यूटिंग)]] और [[ घड़ी |घड़ी]] की तरह काम करते हैं।


Line 149: Line 149:
* पाठक-लेखक ताले;
* पाठक-लेखक ताले;
* स्पिनलॉक्स;
* स्पिनलॉक्स;
* बैरियर (कंप्यूटर साइंस) एस।
* बैरियर (कंप्यूटर विज्ञान ) एस।


== डेटा तुल्यकालन ==
== डेटा तुल्यकालन ==
Line 161: Line 161:
* [[RAID]], जहां डेटा को से अधिक डिस्क में अनावश्यक विधियों से लिखा जाता है, जिससे कि किसी डिस्क के हानि से डेटा की हानि न हो;
* [[RAID]], जहां डेटा को से अधिक डिस्क में अनावश्यक विधियों से लिखा जाता है, जिससे कि किसी डिस्क के हानि से डेटा की हानि न हो;
* [[डेटाबेस प्रतिकृति]], जहां संभावित बड़े भौगोलिक अलगाव के अतिरिक्त डेटाबेस पर डेटा की प्रतियां सिंक में रखी जाती हैं;
* [[डेटाबेस प्रतिकृति]], जहां संभावित बड़े भौगोलिक अलगाव के अतिरिक्त डेटाबेस पर डेटा की प्रतियां सिंक में रखी जाती हैं;
* [[जर्नलिंग फाइल सिस्टम]], कई आधुनिक फ़ाइल प्रणाली द्वारा उपयोग की जाने वाली तकनीक यह सुनिश्चित करने के लिए कि फ़ाइल मेटाडेटा सुसंगत, सुसंगत विधियों से डिस्क पर अपडेट किया गया है।
* [[जर्नलिंग फाइल सिस्टम]], कई आधुनिक फ़ाइल प्रणाली द्वारा उपयोग की जाने वाली प्रविधि यह सुनिश्चित करने के लिए कि फ़ाइल मेटाडेटा सुसंगत, सुसंगत विधियों से डिस्क पर अपडेट किया गया है।


=== डेटा तुल्यकालन में चुनौतियां ===
=== डेटा तुल्यकालन में चुनौतियां ===

Revision as of 11:20, 10 May 2023


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

तुल्यकालन की आवश्यकता

तुल्यकालन की आवश्यकता केवल मल्टी-प्रक्रमक प्रणाली में ही नहीं जबकि किसी भी प्रकार की समवर्ती प्रक्रियाओं के लिए उत्पन्न होती है। एकल प्रक्रमक प्रणाली में भी नीचे तुल्यकालन की कुछ मुख्य आवश्यकताओं का उल्लेख किया गया है:

फोर्क-जॉइन मॉडल: जब कोई जॉब ​​फोर्क पॉइंट पर आता है, तो इसे N सब-जॉब्स में विभाजित किया जाता है, जो तब N कार्यों द्वारा सेवित होते हैं। सेवित होने के बाद, प्रत्येक उप-नौकरी तब तक प्रतीक्षा करती है जब तक कि अन्य सभी उप-कार्य संसाधित नहीं हो जाते। फिर, वे फिर से जुड़ जाते हैं और प्रणाली छोड़ देते हैं। इस प्रकार, समानांतर प्रोग्रामिंग को तुल्यकालन की आवश्यकता होती है क्योंकि सभी समानांतर प्रक्रियाएं कई अन्य प्रक्रियाओं के होने की प्रतीक्षा करती हैं।

निर्माता-उपभोक्ता समस्या | निर्माता-उपभोक्ता: निर्माता-उपभोक्ता संबंध में, उपभोक्ता प्रक्रिया निर्माता प्रक्रिया पर निर्भर होती है जब तक कि आवश्यक डेटा का उत्पादन नहीं किया जाता है।

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

धागा या प्रक्रिया तुल्यकालन

चित्र 1: साथ साझा संसाधन (महत्वपूर्ण खंड) तक पहुँचने वाली तीन प्रक्रियाएँ।

धागा तुल्यकालन को तंत्र के रूप में परिभाषित किया गया है जो यह सुनिश्चित करता है कि दो या अधिक समवर्ती प्रक्रिया (कंप्यूटर विज्ञान ) या धागा (कंप्यूटर विज्ञान) साथ कुछ विशेष प्रोग्राम खंड को निष्पादित नहीं करते हैं जिसे क्रिटिकल सेक्शन के रूप में जाना जाता है। तुल्यकालन प्रविधियों का उपयोग करके महत्वपूर्ण अनुभाग तक प्रक्रियाओं की पहुंच को नियंत्रित किया जाता है। जब धागा क्रिटिकल सेक्शन (प्रोग्राम का सीरियलाइज्ड खंड ) को निष्पादित करना प्रारंभ करता है, तो दूसरे धागा को पहले धागा के खत्म होने तक इंतजार करना चाहिए। यदि उचित तुल्यकालन प्रविधि[1] लागू नहीं होते हैं, यह दौड़ की स्थिति # सॉफ़्टवेयर का कारण बन सकता है जहां चर के मान अप्रत्याशित हो सकते हैं और प्रक्रियाओं या थ्रेड्स के संदर्भ स्विच के समय के आधार पर भिन्न हो सकते हैं।

उदाहरण के लिए, मान लीजिए कि तीन प्रक्रियाएं हैं, अर्थात् 1, 2, और 3। ये तीनों समवर्ती रूप से क्रियान्वित हैं, और उन्हें सामान्य संसाधन (महत्वपूर्ण खंड) साझा करने की आवश्यकता है जैसा कि चित्र 1 में दिखाया गया है। यहां तुल्यकालन का उपयोग किया जाना चाहिए इस साझा संसाधन तक पहुँचने के लिए किसी भी विरोध से बचें। इसलिए, जब प्रक्रिया 1 और 2 दोनों उस संसाधन तक पहुँचने का प्रयास करते हैं, तो इसे समय में केवल ही प्रक्रिया को सौंपा जाना चाहिए। यदि इसे प्रक्रिया 1 को सौंपा गया है, तो दूसरी प्रक्रिया (प्रक्रिया 2) को तब तक प्रतीक्षा करने की आवश्यकता है जब तक कि प्रक्रिया 1 उस संसाधन को मुक्त नहीं कर देती (जैसा कि चित्र 2 में दिखाया गया है)।

चित्र 2: कुछ तुल्यकालन प्रविधि के आधार पर, यदि उपलब्ध हो तो साझा संसाधन तक पहुँचने की प्रक्रिया।

एक अन्य तुल्यकालन आवश्यकता जिस पर विचार करने की आवश्यकता है वह वह क्रम है जिसमें विशेष प्रक्रियाओं या थ्रेड्स को निष्पादित किया जाना चाहिए। उदाहरण के लिए, कोई टिकट खरीदने से पहले हवाई जहाज़ पर नहीं चढ़ सकता। इसी तरह, उपयुक्त क्रेडेंशियल्स (उदाहरण के लिए, उपयोगकर्ता नाम और पासवर्ड) को मान्य करने से पहले कोई भी ई-मेल की जांच नहीं कर सकता है। इसी तरह, एटीएम तब तक कोई सेवा प्रदान नहीं करेगा जब तक कि उसे सही पिन प्राप्त न हो जाए।

पारस्परिक बहिष्करण के अतिरिक्त, तुल्यकालन निम्नलिखित से भी संबंधित है:

  • गतिरोध, जो तब होता है जब कई प्रक्रियाएँ साझा संसाधन (महत्वपूर्ण खंड) की प्रतीक्षा कर रही होती हैं जो किसी अन्य प्रक्रिया द्वारा आयोजित किया जा रहा होता है। इस स्थितियों में, प्रक्रियाएं केवल प्रतीक्षा करती रहती हैं और आगे नहीं चलती हैं;
  • संसाधन भुखमरी, जो तब होता है जब प्रक्रिया महत्वपूर्ण खंड में प्रवेश करने की प्रतीक्षा कर रही है, किन्तु अन्य प्रक्रियाएं महत्वपूर्ण खंड पर एकाधिकार करती हैं, और पहली प्रक्रिया को अनिश्चित काल तक प्रतीक्षा करने के लिए मजबूर किया जाता है;
  • प्राथमिकता उलटा, जो तब होता है जब उच्च-प्राथमिकता वाली प्रक्रिया महत्वपूर्ण खंड में होती है, और यह मध्यम-प्राथमिकता वाली प्रक्रिया से बाधित होती है। प्राथमिकता नियमों का यह उल्लंघन कुछ निश्चित परिस्थितियों में हो सकता है और रीयल-टाइम प्रणाली में इसके गंभीर परिणाम हो सकते हैं;
  • व्यस्त प्रतीक्षा, जो तब होती है जब प्रक्रिया बार-बार यह निर्धारित करने के लिए मतदान करती है कि उसके पास महत्वपूर्ण खंड तक पहुंच है या नहीं। यह लगातार मतदान अन्य प्रक्रियाओं से प्रसंस्करण समय लूटता है।

न्यूनतम तुल्यकालन

एक्सास्केल एल्गोरिथम डिज़ाइन के लिए चुनौतियों में से है तुल्यकालन को कम करना या कम करना। संगणना की तुलना में तुल्यकालन में अधिक समय लगता है, विशेष रूप से वितरित कंप्यूटिंग में। तुल्यकालन को कम करने ने दशकों तक कंप्यूटर वैज्ञानिकों का ध्यान आकर्षित किया। जबकि यह हाल ही में तेजी से महत्वपूर्ण समस्या बन गई है क्योंकि कंप्यूटिंग और विलंबता में सुधार के बीच की खाई बढ़ जाती है। प्रयोगों से पता चला है कि वितरित कंप्यूटरों पर तुल्यकालन के कारण (वैश्विक) संचार विरल पुनरावृत्त सॉल्वर में प्रमुख हिस्सा लेता है।[2] नए बेंचमार्क मीट्रिक, हाई परफॉरमेंस कॉन्जुगेट ग्रेडिएंट (एचपीसीजी) के उभरने के बाद इस समस्या पर ध्यान दिया जा रहा है।[3] शीर्ष 500 सुपर कंप्यूटरों की रैंकिंग के लिए।

तुल्यकालन की क्लासिक समस्याएं

तुल्यकालन की कुछ क्लासिक समस्याएं निम्नलिखित हैं:

  • निर्माता-उपभोक्ता समस्या|निर्माता-उपभोक्ता समस्या (जिसे द बाउंडेड बफर प्रॉब्लम भी कहा जाता है);
  • पाठक-लेखक समस्या|पाठक-लेखक समस्या;
  • भोजन दार्शनिकों की समस्या

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

हार्डवेयर तुल्यकालन

कई प्रणालियाँ महत्वपूर्ण खंड कोड के लिए हार्डवेयर समर्थन प्रदान करती हैं।

एक एकल प्रक्रमक या यूनिप्रक्रमक प्रणाली वर्तमान में चल रहे कोड को प्रीमेशन (कंप्यूटिंग) के बिना निष्पादित करके बाधा डालना को अक्षम कर सकता है, जो मल्टीप्रोसेसिंग प्रणाली पर बहुत अक्षम है।[4] एक मल्टीप्रक्रमक में तुल्यकालन को लागू करने के लिए हमें जिस प्रमुख क्षमता की आवश्यकता होती है, वह हार्डवेयर प्राथमिक का समूह है, जिसमें मेमोरी लोकेशन को परमाणु रूप से पढ़ने और संशोधित करने की क्षमता होती है। ऐसी क्षमता के बिना, मूल तुल्यकालन आदिमों के निर्माण की लागत बहुत अधिक होगी और प्रक्रमक की संख्या में वृद्धि के साथ बढ़ेगी। बुनियादी हार्डवेयर आदिमों के कई वैकल्पिक फॉर्मूलेशन हैं, जिनमें से सभी परमाणु रूप से किसी स्थान को पढ़ने और संशोधित करने की क्षमता प्रदान करते हैं, साथ ही यह बताने के लिए कि क्या पढ़ना और लिखना परमाणु रूप से किया गया था। ये हार्डवेयर प्रिमिटिव बुनियादी बिल्डिंग ब्लॉक्स हैं जिनका उपयोग ताला (कंप्यूटर विज्ञान) और बैरियर (कंप्यूटर विज्ञान) जैसी चीजों सहित उपयोगकर्ता-स्तरीय तुल्यकालन ऑपरेशंस की विस्तृत विविधता के निर्माण के लिए किया जाता है। सामान्यतः , आर्किटेक्ट उपयोगकर्ताओं से बुनियादी हार्डवेयर प्राइमिटिव्स को नियोजित करने की अपेक्षा नहीं करते हैं, जबकि यह उम्मीद करते हैं कि प्रणाली प्रोग्रामर द्वारा प्राइमिटिव्स का उपयोग तुल्यकालन लाइब्रेरी बनाने के लिए किया जाएगा, प्रक्रिया जो अधिकांशतः जटिल और पेचीदा होती है।[5] कई आधुनिक हार्डवेयर विशेष परमाणु हार्डवेयर निर्देश प्रदान करते हैं या तो मेमोरी शब्द का परीक्षण और समूह करते हैं या दो मेमोरी शब्दों की सामग्री की तुलना और स्वैप करते हैं।

प्रोग्रामिंग भाषाओं में तुल्यकालन रणनीतियाँ

जावा (प्रोग्रामिंग भाषा) में, धागा इंटरफेरेंस और मेमोरी कंसिस्टेंसी एरर को रोकने के लिए, कोड के ब्लॉक को सिंक्रोनाइज़्ड (lock_object) सेक्शन में लपेटा जाता है। यह किसी भी धागा को ब्लॉक को निष्पादित करने से पहले उक्त लॉक ऑब्जेक्ट को प्राप्त करने के लिए बाध्य करता है। लॉक स्वचालित रूप से जारी किया जाता है जब धागा जिसने लॉक प्राप्त किया है, और फिर ब्लॉक निष्पादित कर रहा है, ब्लॉक छोड़ देता है या ब्लॉक के भीतर प्रतीक्षा स्थिति में प्रवेश करता है। किसी धागा द्वारा सिंक्रोनाइज़्ड ब्लॉक में किया गया कोई भी वेरिएबल अपडेट, अन्य थ्रेड्स के लिए दृश्यमान हो जाता है जब वे समान रूप से लॉक प्राप्त करते हैं और ब्लॉक को निष्पादित करते हैं।

जावा सिंक्रनाइज़्ड ब्लॉक, आपसी बहिष्करण और मेमोरी स्थिरता को सक्षम करने के अतिरिक्त, सिग्नलिंग को सक्षम करता है - अर्थात, उन थ्रेड्स से ईवेंट भेजना जिन्होंने लॉक प्राप्त कर लिया है और कोड ब्लॉक को निष्पादित कर रहे हैं जो ब्लॉक के भीतर लॉक की प्रतीक्षा कर रहे हैं। इसका मतलब यह है कि जावा सिंक्रोनाइज़्ड सेक्शन म्यूटेक्स और इवेंट्स की कार्यक्षमता को जोड़ती है। ऐसे आदिम को मॉनिटर (सिंक्रनाइज़ेशन) के रूप में जाना जाता है।

जावा में लॉक/मॉनीटर के रूप में किसी भी वस्तु का उपयोग किया जा सकता है। घोषित वस्तु ताला वस्तु है जब पूरी विधि को सिंक्रनाइज़ के साथ चिह्नित किया जाता है।

.NET फ्रेमवर्क में तुल्यकालन प्राथमिक हैं। तुल्यकालन को सहकारी होने के लिए डिज़ाइन किया गया है, यह मांग करते हुए कि प्रत्येक धागा या प्रक्रिया लगातार परिणामों के लिए संरक्षित संसाधनों (महत्वपूर्ण अनुभाग) तक पहुँचने से पहले तुल्यकालन तंत्र का पालन करती है। .NET में, लॉकिंग, सिग्नलिंग, लाइटवेट तुल्यकालन प्रकार, स्पिनवेट और इंटरलॉक्ड ऑपरेशंस कुछ तुल्यकालन से संबंधित तंत्र हैं।[6]


तुल्यकालन का कार्यान्वयन

स्पिनलॉक

तुल्यकालन को लागू करने का अन्य प्रभावी विधि स्पिनलॉक्स का उपयोग करना है। किसी साझा संसाधन या कोड के टुकड़े तक पहुँचने से पहले, प्रत्येक प्रक्रमक ध्वज की जाँच करता है। यदि ध्वज को रीसमूह किया जाता है, तो प्रक्रमक ध्वज को समूह करता है और धागा को निष्पादित करना जारी रखता है। लेकिन, यदि झंडा समूह (लॉक) है, तो धागे लूप में घूमते रहेंगे और जांचते रहेंगे कि झंडा समूह है या नहीं। लेकिन, स्पिनलॉक तभी प्रभावी होते हैं जब ध्वज को निचले चक्रों के लिए रीसमूह किया जाता है अन्यथा यह प्रदर्शन के मुद्दों को जन्म दे सकता है क्योंकि यह प्रतीक्षा में कई प्रक्रमक चक्रों को बर्बाद कर देता है।[7]


बाधाएँ

बाधाएं लागू करने में सरल हैं और अच्छी प्रतिक्रिया प्रदान करती हैं। वे तुल्यकालन प्रदान करने के लिए प्रतीक्षा चक्रों को लागू करने की अवधारणा पर आधारित हैं। बैरियर 1 से प्रारंभ होकर साथ चलने वाले तीन थ्रेड्स पर विचार करें। समय t के बाद, धागा 1 बैरियर 2 तक पहुँच जाता है, किन्तु इसे अभी भी बैरियर 2 तक पहुँचने के लिए धागा 2 और 3 का इंतज़ार करना पड़ता है क्योंकि इसमें सही डेटा नहीं होता है। बार जब सभी धागे बाधा 2 तक पहुंच जाते हैं तो वे सभी फिर से प्रारंभ हो जाते हैं। समय t के बाद, धागा 1 बैरियर 3 तक पहुँचता है किन्तु उसे धागा 2 और 3 और फिर से सही डेटा के लिए इंतज़ार करना होगा।

इस प्रकार, कई थ्रेड्स के बैरियर तुल्यकालन में हमेशा कुछ थ्रेड्स होंगे जो अन्य थ्रेड्स की प्रतीक्षा में समाप्त हो जाएंगे क्योंकि उपरोक्त उदाहरण में धागा 1 धागा 2 और 3 की प्रतीक्षा करता रहता है। इसके परिणामस्वरूप प्रक्रिया के प्रदर्शन में गंभीर गिरावट आती है।[8] मैं के लिए बाधा तुल्यकालन प्रतीक्षा समारोहवें धागे को इस प्रकार दर्शाया जा सकता है:

(Wbarrier)i = f ((Tbarrier)i, (Rthread)i)

जहाँ Wbarrier धागा के लिए प्रतीक्षा समय है, Tbarrier थ्रेड्स की संख्या आ गई है, और Rthread थ्रेड्स की आगमन दर है।[9] प्रयोगों से पता चलता है कि कुल निष्पादन समय का 34% अन्य धीमे धागों की प्रतीक्षा में व्यतीत होता है।[8]


सेमाफोर

सेमाफोर सिग्नलिंग तंत्र हैं जो या से अधिक थ्रेड्स / प्रक्रमक को सेक्शन तक पहुंचने की अनुमति दे सकते हैं। सेमाफोर में ध्वज होता है जिसके साथ निश्चित निश्चित मूल्य जुड़ा होता है और हर बार जब कोई धागा अनुभाग तक पहुंचने की इच्छा रखता है, तो यह ध्वज को कम कर देता है। इसी तरह, जब धागा खंड छोड़ देता है, तो ध्वज बढ़ जाता है। यदि ध्वज शून्य है, तो धागा अनुभाग तक नहीं पहुंच सकता है और प्रतीक्षा करने का विकल्प चुनने पर अवरुद्ध हो जाता है।

कुछ सेमाफोर कोड अनुभाग में केवल धागा या प्रक्रिया की अनुमति देते हैं। ऐसे सेमाफोर को बाइनरी सेमाफोर कहा जाता है और यह म्यूटेक्स के समान हैं। यहां, यदि सेमाफोर का मान 1 है, तो धागा को अभिगम करने की अनुमति है और यदि मान 0 है, तो अभिगम अस्वीकृत है।[10]


गणितीय नींव

तुल्यकालन मूल रूप से प्रक्रिया-आधारित अवधारणा थी जिससे किसी वस्तु पर ताला प्राप्त किया जा सकता था। इसका प्राथमिक उपयोग डेटाबेस में था। (फ़ाइल) फाइल लॉकिंग दो प्रकार की होती है; रीड-ओनली और रीड-राइट। रीड-ओनली लॉक कई प्रक्रियाओं या थ्रेड्स द्वारा प्राप्त किए जा सकते हैं। पाठक-लेखक ताले अनन्य हैं, क्योंकि वे समय में केवल ही प्रक्रिया/धागे द्वारा उपयोग किए जा सकते हैं।

चूँकि फ़ाइल डेटाबेस के लिए ताले बनाए गए थे, डेटा को प्रक्रियाओं और थ्रेड्स के बीच मेमोरी में भी साझा किया जाता है। कभी-कभी समय में से अधिक ऑब्जेक्ट (या फ़ाइल) लॉक हो जाते हैं। यदि वे साथ लॉक नहीं होते हैं तो वे ओवरलैप कर सकते हैं, जिससे डेडलॉक अपवाद हो सकता है।

जावा (प्रोग्रामिंग लैंग्वेज) और एडा (प्रोग्रामिंग लैंग्वेज) में केवल एक्सक्लूसिव लॉक होते हैं क्योंकि वे धागा आधारित होते हैं और तुलना-और-स्वैप प्रक्रमक निर्देश पर निर्भर होते हैं।

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

तुल्यकालन उदाहरण

विभिन्न प्लेटफार्मों के संबंध में कुछ तुल्यकालन उदाहरण निम्नलिखित हैं।[11]


खिड़कियाँ ़ में तुल्यकालन

विंडोज प्रदान करता है:

  • इंटरप्ट, जो यूनिप्रक्रमक प्रणाली पर वैश्विक संसाधनों (महत्वपूर्ण खंड) तक पहुंच की रक्षा करता है;
  • spinlock , जो मल्टीप्रक्रमक प्रणाली में, स्पिनलॉकिंग-धागा को प्रीमेप्ट होने से रोकते हैं;
  • गतिशील प्रेषक[citation needed], जो परस्पर बहिष्करण, सेमाफोर (प्रोग्रामिंग), घटना (कंप्यूटिंग) और घड़ी की तरह काम करते हैं।

लिनक्स में तुल्यकालन

लिनक्स प्रदान करता है:

  • सेमाफोर (प्रोग्रामिंग);
  • स्पिनलॉक;
  • बाधा (कंप्यूटर विज्ञान);
  • आपसी बहिष्कार;
  • पाठक-लेखक लॉक, कोड के लंबे खंड के लिए जो बहुत बार अभिगम किए जाते हैं किन्तु बहुत बार बदलते नहीं हैं;
  • रीड-कॉपी-अपडेट (RCU)।[12]

यूनिप्रक्रमक प्रणाली पर कर्नेल प्रीमेशन की जगह स्पिनलॉक्स को सक्षम और अक्षम करना। कर्नेल संस्करण 2.6 से पहले, छोटे महत्वपूर्ण अनुभागों को लागू करने के लिए Linux ने व्यवधान को अक्षम कर दिया था। संस्करण 2.6 और बाद के संस्करण के बाद से, लिनक्स पूरी तरह से रिक्तिपूर्व है।

सोलारिस में तुल्यकालन

सोलारिस (परिचालन सिस्टम) प्रदान करता है:

  • सेमाफोर (प्रोग्रामिंग);
  • स्थिति चर;
  • अनुकूली म्यूटेक्स, बाइनरी सेमाफोर जो स्थितियों के आधार पर अलग-अलग विधियों से लागू किए जाते हैं;
  • पाठक-लेखक ताले:
  • टर्नस्टाइल्स, थ्रेड्स की कतार जो अधिग्रहीत लॉक पर प्रतीक्षा कर रहे हैं।[13]


पीथ्रेड्स सिंक्रोनाइज़ेशन

Pthreads प्लेटफ़ॉर्म-स्वतंत्र API है जो प्रदान करता है:

  • म्यूटेक्स;
  • स्थिति चर;
  • पाठक-लेखक ताले;
  • स्पिनलॉक्स;
  • बैरियर (कंप्यूटर विज्ञान ) एस।

डेटा तुल्यकालन

चित्रा 3: सर्वर और क्लाइंट दोनों से परिवर्तन सिंक्रनाइज़ किए गए हैं।

एक स्पष्ट रूप से भिन्न (किन्तु संबंधित) अवधारणा डेटा तुल्यकालन की है। यह दूसरे के साथ सुसंगत डेटा के समूह की कई प्रतियों को अद्यतन करने और रखने या डेटा अखंडता को बनाए रखने की आवश्यकता को संदर्भित करता है, चित्रा 3।[14] उदाहरण के लिए, डेटाबेस प्रतिकृति का उपयोग डेटा की कई प्रतियों को डेटाबेस सर्वर के साथ सिंक्रनाइज़ करने के लिए किया जाता है जो डेटा को विभिन्न स्थानों में संग्रहीत करता है।

उदाहरणों में सम्मलित :

  • फ़ाइल तुल्यकालन, जैसे कि हाथ से पकड़े जाने वाले एमपी3 प्लेयर को डेस्कटॉप कंप्यूटर से तुल्यकालित करना;
  • क्लस्टर फाइल सिस्टम, जो फाइल प्रणाली हैं जो पूरे कंप्यूटिंग क्लस्टर में सुसंगत फैशन में डेटा या इंडेक्स को बनाए रखते हैं;
  • कैश सुसंगतता, कई कैश (कंप्यूटिंग) में सिंक में डेटा की कई प्रतियों को बनाए रखना;
  • RAID, जहां डेटा को से अधिक डिस्क में अनावश्यक विधियों से लिखा जाता है, जिससे कि किसी डिस्क के हानि से डेटा की हानि न हो;
  • डेटाबेस प्रतिकृति, जहां संभावित बड़े भौगोलिक अलगाव के अतिरिक्त डेटाबेस पर डेटा की प्रतियां सिंक में रखी जाती हैं;
  • जर्नलिंग फाइल सिस्टम, कई आधुनिक फ़ाइल प्रणाली द्वारा उपयोग की जाने वाली प्रविधि यह सुनिश्चित करने के लिए कि फ़ाइल मेटाडेटा सुसंगत, सुसंगत विधियों से डिस्क पर अपडेट किया गया है।

डेटा तुल्यकालन में चुनौतियां

डेटा तुल्यकालन में उपयोगकर्ता को कुछ चुनौतियों का सामना करना पड़ सकता है:

  • डेटा प्रारूप जटिलता;
  • वास्तविक समयबद्धता;
  • डाटा सुरक्षा;
  • आधार सामग्री की गुणवत्ता;
  • प्रदर्शन।

डेटा प्रारूप जटिलता

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

वास्तविक समयबद्धता

रीयल-टाइम प्रणाली में, ग्राहक ई-शॉप में अपने ऑर्डर की वर्तमान स्थिति, पार्सल डिलीवरी की वर्तमान स्थिति- रीयल टाइम पार्सल ट्रैकिंग-, अपने खाते पर वर्तमान शेष राशि आदि देखना चाहते हैं। यह आवश्यकता को दर्शाता है वास्तविक समय प्रणाली, जिसे वास्तविक समय में सुचारू निर्माण प्रक्रिया को सक्षम करने के लिए अद्यतन किया जा रहा है, उदाहरण के लिए, जब उद्यम स्टॉक से बाहर चल रहा हो, सामग्री का आदेश देना, निर्माण प्रक्रिया के साथ ग्राहक के आदेशों को सिंक्रनाइज़ करना, आदि। वास्तविक जीवन से, बहुत सारे उपस्तिथ हैं उदाहरण जहां रीयल-टाइम प्रसंस्करण सफल और प्रतिस्पर्धी लाभ देता है।

डेटा सुरक्षा

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

डेटा गुणवत्ता

डेटा गुणवत्ता और गंभीर बाधा है। बेहतर प्रबंधन के लिए और डेटा की अच्छी गुणवत्ता बनाए रखने के लिए, सामान्य अभ्यास डेटा को स्थान पर संग्रहीत करना और विभिन्न लोगों और विभिन्न प्रणालियों और/या विभिन्न स्थानों के अनुप्रयोगों के साथ साझा करना है। यह डेटा में विसंगतियों को रोकने में सहायता करता है।

प्रदर्शन

डेटा तुल्यकालन प्रक्रिया में पांच अलग-अलग चरण सम्मलित हैं:

इनमें से प्रत्येक चरण महत्वपूर्ण है। बड़ी मात्रा में डेटा के स्थितियों में, प्रदर्शन पर किसी भी नकारात्मक प्रभाव से बचने के लिए तुल्यकालन प्रक्रिया को सावधानीपूर्वक नियोजित और निष्पादित करने की आवश्यकता होती है।

यह भी देखें

संदर्भ

  1. Gramoli, V. (2015). More than you ever wanted to know about synchronization: Synchrobench, measuring the impact of the synchronization on concurrent algorithms (PDF). Proceedings of the 20th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. ACM. pp. 1–10.
  2. Shengxin, Zhu and Tongxiang Gu and Xingping Liu (2014). "Minimizing synchronizations in sparse iterative solvers for distributed supercomputers". Computers & Mathematics with Applications. 67 (1): 199–209. doi:10.1016/j.camwa.2013.11.008.
  3. "HPCG Benchmark".
  4. Silberschatz, Abraham; Gagne, Greg; Galvin, Peter Baer (July 11, 2008). "Chapter 6: Process Synchronization". ऑपरेटिंग सिस्टम अवधारणाओं (Eighth ed.). John Wiley & Sons. ISBN 978-0-470-12872-5.
  5. Hennessy, John L.; Patterson, David A. (September 30, 2011). "Chapter 5: Thread-Level Parallelism". Computer Architecture: A Quantitative Approach (Fifth ed.). Morgan Kaufmann. ISBN 978-0-123-83872-8.
  6. ".NET फ्रेमवर्क में सिंक्रोनाइज़ेशन प्रिमिटिव्स". MSDN, The Microsoft Developer Network. Microsoft. Retrieved 23 November 2014.
  7. Massa, Anthony (2003). ECos के साथ एंबेडेड सॉफ्टवेयर विकास. Pearson Education Inc. ISBN 0-13-035473-2.
  8. 8.0 8.1 Meng, Chen, Pan, Yao, Wu, Jinglei, Tianzhou, Ping, Jun. Minghui (2014). "बाधा तुल्यकालन के लिए एक सट्टा तंत्र". 2014 IEEE International Conference on High Performance Computing and Communications (HPCC), 2014 IEEE 6th International Symposium on Cyberspace Safety and Security (CSS) and 2014 IEEE 11th International Conference on Embedded Software and Systems (ICESS).{{cite journal}}: CS1 maint: multiple names: authors list (link)
  9. Rahman, Mohammed Mahmudur (2012). "Process synchronization in multiprocessor and multi-core processor". 2012 International Conference on Informatics, Electronics & Vision (ICIEV). pp. 554–559. doi:10.1109/ICIEV.2012.6317471. ISBN 978-1-4673-1154-0. S2CID 8134329.
  10. Li, Yao, Qing, Carolyn (2003). एंबेडेड सिस्टम के लिए रीयल-टाइम अवधारणाएं. CMP Books. ISBN 978-1578201242.{{cite book}}: CS1 maint: multiple names: authors list (link)
  11. Silberschatz, Abraham; Gagne, Greg; Galvin, Peter Baer (December 7, 2012). "Chapter 5: Process Synchronization". ऑपरेटिंग सिस्टम अवधारणाओं (Ninth ed.). John Wiley & Sons. ISBN 978-1-118-06333-0.
  12. "What is RCU, Fundamentally? [LWN.net]". lwn.net.
  13. Mauro, Jim. "Turnstiles and priority inheritance - SunWorld - August 1999". sunsite.uakom.sk.
  14. Nakatani, Kazuo; Chuang, Ta-Tao; Zhou, Duanning (2006). "Data Synchronization Technology: Standards, Business Values and Implications". Communications of the Association for Information Systems. 17. doi:10.17705/1cais.01744. ISSN 1529-3181.
  • Schneider, Fred B. (1997). On concurrent programming. Springer-Verlag New York, Inc. ISBN 978-0-387-94942-0.


बाहरी संबंध