कार्यक्रम संघर्ष जब वे दोनों एक ही संसाधन का उपयोग करने का प्रयास करते हैं। जब एक ही समय में कई प्रोग्राम एक संसाधन पर काम करने का प्रयास करते हैं, तो कॉनक्लेयर प्रॉब्लम्स का खतरा होता है । जब एक प्रक्रिया संसाधन पर परिवर्तन करती है, और अन्य प्रोग्राम (जो संसाधन के बीच में अपना संशोधन होता था) से अनभिज्ञ समस्याएँ उत्पन्न होती हैं, तो इससे अनभिज्ञ होता है, और इस प्रकार समायोजित करने में असमर्थ होता है।
यहां पाठ्य पुस्तक समवर्ती मुद्दों के कुछ उदाहरण दिए गए हैं।
अंतिम में जीत की समस्या
कल्पना कीजिए कि आप एक दस्तावेज़ साझा करने के लिए एक एफ़टीपी निर्देशिका का उपयोग कर रहे हैं जहाँ आप और एक सहयोगी एक दस्तावेज़ पर सहयोग कर रहे हैं। आप दस्तावेज़ डाउनलोड करते हैं, इसे संपादित करते हैं, और इसे फिर से पोस्ट करते हैं, जैसा कि आपके सहयोगी ने किया है।
- आप दस्तावेज़ डाउनलोड करते हैं, और परिवर्तनों का एक सेट शुरू करते हैं जिसमें 1 घंटा लगता है।
- आपके सहकर्मी ने उसी समय दस्तावेज़ डाउनलोड किया है जब आपने किया था, लेकिन उनके परिवर्तनों को पूरा करने और पुनः लोड करने में केवल आधा घंटा लगता है।
परिणाम: जब आप अपना दस्तावेज़ अपलोड करते हैं, तो आप उनके परिवर्तनों को लिख देते हैं और वे खो जाते हैं।
बासी डेटा
उसी परिदृश्य में, आपका सहकर्मी आपको बिना बताए कुछ बदलाव करता है। फ़ाइल की आपकी प्रतिलिपि में परिवर्तन नहीं हैं,
परिणाम: आप अपने आप में थोड़े अलग शब्दों में एक ही बदलाव लिखते हैं, या इससे भी बदतर, कैसे गायब हो रहे हैं, इस बारे में एक बुरा ईमेल फायर करें।
यह एक साधारण परिदृश्य की तरह प्रतीत होता है, लेकिन बहु-पहुंच डेटाबेस जैसे उन्नत मामलों में यदि आप उसी मिलीसेकंड पर रिकॉर्ड का चयन करते हैं जो कोई उन्हें अपडेट कर रहा है, तो आप गंभीर मुद्दों का अनुभव कर सकते हैं।
खराब संगणना
एक विवाहित जोड़े के पास एक साझा बैंक खाता और एटीएम कार्ड हैं। उनके खाते में 1000USD हैं। अपने दैनिक जीवन में, वे शहर के विपरीत किनारों पर हैं, और दोनों एक ही पल में एटीएम का उपयोग करते हैं। वे दोनों 1000USD को वापस लेते हैं। एटीएम दोनों जानते हैं कि शेष राशि 1000 है, इसलिए वे निकासी की अनुमति देते हैं, और फिर केंद्रीय डेटाबेस में वापस लिखते हैं कि नया संतुलन 0 है।
परिणाम: बैंक अब बाहर 1000USD है, और यहां तक कि यह नहीं जानता है।
इन सभी उदाहरणों में कई पार्टियां थीं जो एक ही समय पर या एक साझा संसाधन पर कार्रवाई कर रही थीं। इसलिए शब्द "संगामिति" या "तुल्यकालिकता"।
समाधान
इस प्रकार के मुद्दों से निपटने के लिए कुछ तरीके हैं। एक सॉफ्टवेयर का उपयोग करना है जो संसाधन तक पहुंचने वाले कई दलों के बीच मध्यस्थता करता है। इन आर्बिटर प्रोग्रामों में दो विकल्प होते हैं, जो ऑपरेशंस के दायरे और पूर्वानुमान के आधार पर होते हैं:
- बुद्धिमानी से संचालन मर्ज करें
- पहले देखे गए दो ऑपरेशनों में से एक को ब्लॉक / लॉक करें।
ब्लॉक / लॉक करना भी संभव है, बशर्ते कि दोनों कार्यक्रमों को संसाधन की स्थिति को दर्शाता एक साझा ध्वज की जांच करने के लिए डिज़ाइन किया गया हो। इसके लिए आमतौर पर कस्टम विकास की आवश्यकता होती है।
आपका उत्तर
आपके विशिष्ट मामले में, संसाधन आपकी डिस्क पर फ़ाइलें हैं। सिंक्रोनसिटी फ़ाइल रीड / राइट जैसी घटनाओं से आती है, जो दोनों एवी कार्यक्रमों में ऑन-एक्सेस स्कैन को ट्रिगर करती है।
जब प्रोग्राम उन्हें विशिष्ट ऑपरेशन के लिए खोलते हैं, तो फ़ाइलें लॉक करके फाइलसिस्टम समवर्ती मुद्दों को हल करने के लिए विंडोज एक आर्बिटर के रूप में कार्य करता है ।
इसका मतलब है कि दोनों प्रोग्राम फ़ाइल तक पहुंचने के लिए दौड़ रहे हैं, और जो भी वहां पहुंचता है, उसे सबसे पहले ताला मिलता है। निम्न स्तर पर, कुछ डिस्क में यह परिणाम होता है कि दोनों प्रोग्राम अपनी I / O गतिविधियां शुरू करते हैं, हार्डवेयर को दोनों कार्यों को अलग-अलग करने के लिए मजबूर करते हैं, फिर भी IO निर्देशों को इंटरलेक्ट करते हुए, दोनों को बहुत कम कुशल बनाते हैं, और अंत में, केवल एक उनमें से जीत होगी। अन्य स्पिन करेगा और अपने स्वयं के लॉक स्थापित करने में सक्षम होने की प्रतीक्षा करेगा।