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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

लिनक्स में तुल्यकालन
लिनक्स प्रदान करता है: यूनिप्रोसेसर सिस्टम पर कर्नेल प्रीमेशन की जगह स्पिनलॉक्स को सक्षम और अक्षम करना। कर्नेल संस्करण 2.6 से पहले, छोटे महत्वपूर्ण अनुभागों को लागू करने के लिए Linux ने व्यवधान को अक्षम कर दिया था। संस्करण 2.6 और बाद के संस्करण के बाद से, लिनक्स पूरी तरह से रिक्तिपूर्व है।
 * सेमाफोर (प्रोग्रामिंग);
 * स्पिनलॉक;
 * बाधा (कंप्यूटर विज्ञान);
 * आपसी बहिष्कार;
 * पाठक-लेखक लॉक, कोड के लंबे खंड के लिए जो बहुत बार एक्सेस किए जाते हैं लेकिन बहुत बार बदलते नहीं हैं;
 * रीड-कॉपी-अपडेट (RCU)।

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

पीथ्रेड्स सिंक्रोनाइज़ेशन
Pthreads एक प्लेटफ़ॉर्म-स्वतंत्र API है जो प्रदान करता है:
 * म्यूटेक्स;
 * स्थिति चर;
 * पाठक-लेखक ताले;
 * स्पिनलॉक्स;
 * बैरियर (कंप्यूटर साइंस) एस।

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

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

डेटा तुल्यकालन में चुनौतियां
डेटा तुल्यकालन में उपयोगकर्ता को कुछ चुनौतियों का सामना करना पड़ सकता है:
 * डेटा प्रारूप जटिलता;
 * वास्तविक समयबद्धता;
 * डाटा सुरक्षा;
 * आधार सामग्री की गुणवत्ता;
 * प्रदर्शन।

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

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

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

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

प्रदर्शन
डेटा तुल्यकालन प्रक्रिया में पांच अलग-अलग चरण शामिल हैं:
 * स्रोत (या मास्टर, या मुख्य) प्रणाली से डेटा निष्कर्षण;
 * डेटा स्थानांतरण;
 * डेटा परिवर्तन;
 * डेटा लोड लक्ष्य प्रणाली के लिए।
 * डेटा अपडेशन

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

यह भी देखें

 * वायदा और वादे, शुद्ध कार्यात्मक प्रतिमानों में तुल्यकालन तंत्र

बाहरी संबंध

 * Anatomy of Linux synchronization methods at IBM developerWorks
 * The Little Book of Semaphores, by Allen B. Downey
 * Need of Process Synchronization