Deadlock prevention algorithms
கணினி அறிவியலில், பல செயல்முறைகள் ஒன்றுக்கு மேற்பட்ட பகிரப்பட்ட வளங்களைப் பெற வேண்டியிருக்கும் போது, ஒரே நேரத்தில் நிரலாக்கத்தில் முட்டுக்கட்டை தடுப்பு வழிமுறைகள் பயன்படுத்தப்படுகின்றன. இரண்டு அல்லது அதற்கு மேற்பட்ட ஒருங்கிணைந்த செயல்முறைகள் கண்மூடித்தனமாக பல வளங்களைப் பெற்றால், ஒவ்வொரு செயல்முறையும் மற்றொரு செயல்முறைக்கு தேவையான வளத்தைக் கொண்டிருக்கும் சூழ்நிலை ஏற்படலாம். இதன் விளைவாக, எந்தவொரு செயல்முறையும் அதற்குத் தேவையான அனைத்து வளங்களையும் பெற முடியாது, எனவே அனைத்து செயல்முறைகளும் மேலும் செயல்படுத்தப்படுவதிலிருந்து தடுக்கப்படுகின்றன. இந்த நிலைமை ஒரு முட்டுக்கட்டை என்று அழைக்கப்படுகிறது. ஒரு முட்டுக்கட்டை தடுப்பு வழிமுறை ஒவ்வொரு செயல்முறையிலும் வள பயன்பாட்டை ஒழுங்கமைக்கிறது, குறைந்தபட்சம் ஒரு செயல்முறையாவது எப்போதும் அதற்குத் தேவையான அனைத்து வளங்களையும் பெற முடியும் என்பதை உறுதிப்படுத்துகிறது. முட்டுக்கட்டை வழிமுறையின் அத்தகைய ஒரு எடுத்துக்காட்டு பேங்கரின் வழிமுறை ஆகும். மதிப்பாய்வு விநியோகிக்கப்பட்ட முட்டுக்கட்டை விநியோகிக்கப்பட்ட முடக்கங்கள் விநியோகிக்கப்பட்ட பரிவர்த்தனைகள் அல்லது ஒருங்கிணைந்த கட்டுப்பாடு பயன்படுத்தப்படும்போது விநியோகிக்கப்பட்ட அமைப்புகளில் ஏற்படலாம். உலகளாவிய காத்திருப்பு வரைபடத்தை உருவாக்குவதன் மூலமோ, முட்டுக்கட்டை கண்டறிதலில் உள்ள உள்ளூர் காத்திருப்பு வரைபடங்களிலிருந்து அல்லது விளிம்பைத் துரத்துவது போன்ற விநியோகிக்கப்பட்ட வழிமுறை மூலம் விநியோகிக்கப்பட்ட டெட்லாக்குகளைக் கண்டறிய முடியும். பேண்டம் டெட்லாக்குகள் என்பது கணினி உள் தாமதங்கள் காரணமாக விநியோகிக்கப்பட்ட அமைப்பில் கண்டறியப்படும் டெட்லாக்குகள் ஆகும், ஆனால் கண்டறிதல் நேரத்தில் உண்மையில் இல்லை. டெட்லாக் தடுப்பு இணையான தன்மையை அதிகரிக்க பல வழிகள் உள்ளன, அங்கு தொடர்ச்சியான பூட்டுகள் டெட்லாக்குகளை ஏற்படுத்தும். ஆனால் அதற்கு ஒரு விலை இருக்கிறது. அந்த விலை செயல்திறன்/மேல்நிலை, தரவு ஊழலை அனுமதிக்கிறது அல்லது இரண்டும். சில எடுத்துக்காட்டுகளில் பின்வருவன அடங்கும்ஃ பூட்டு படிநிலைகள், பூட்டு குறிப்பு-எண்ணிக்கை மற்றும் முன்நிபந்தனை (பதிப்பைப் பயன்படுத்துதல் அல்லது முன்நிபந்தனை ஏற்படும் போது தரவு ஊழலை அனுமதிப்பது); டெட்லாக்குகளை ஏற்படுத்தும் அனைத்து சுழற்சிகளையும் (தற்காலிக டெட்லாக்குகள் உட்பட) கண்காணிக்கும் வெயிட்-ஃபார்-கிராஃப் (டபிள்யூ. எஃப். ஜி) வழிமுறைகள்; மற்றும் டெட்லாக்குகள் சாத்தியமான இடங்களின் 100% இல் இணையை அதிகரிக்க வேண்டிய அவசியமில்லாத ஹூரிஸ்டிக்ஸ் வழிமுறைகள், மாறாக செயல்திறன்/மேல்நிலை மற்றும் இணக்கம் ஏற்றுக்கொள்ளக்கூடிய போதுமான இடங்களில் அவற்றைத் தீர்ப்பதன் மூலம் சமரசம் செய்கின்றன. "ஒரு குறுக்குவெட்டில் இரண்டு ரயில்கள் ஒருவருக்கொருவர் அணுகும்போது" ஒரு சூழ்நிலையைக் கவனியுங்கள். சரியான நேரத்தில் தடுப்பு என்பது ஒரு நபர் குறுக்குவெட்டில் (குறுக்குவெட்டு காவலர்) ஒரு சுவிட்சுடன் நிற்பது போன்றது, இது ஒரு ரயிலை மட்டுமே "சூப்பர் டிராக்குகளில்" அனுமதிக்கும், இது மற்ற காத்திருக்கும் ரயில் (களுக்கு) மேலேயும் மேலேயும் இயங்குகிறது. தொடர்ச்சியற்ற பூட்டுகளுக்கு, ஒரு பூட்டை ஒரு முறை மட்டுமே உள்ளிட முடியும் (அங்கு ஒரு நூல் திறக்கப்படாமல் இரண்டு முறை நுழைவது ஒரு முட்டுக்கட்டையை ஏற்படுத்தும், அல்லது வட்ட காத்திருப்பு தடுப்பை அமல்படுத்த ஒரு விதிவிலக்கை வீசும்). தொடர்ச்சியான பூட்டுகளுக்கு, ஒரு நூல் மட்டுமே பூட்டு வழியாக செல்ல அனுமதிக்கப்படுகிறது. வேறு ஏதேனும் நூல்கள் பூட்டுக்குள் நுழைந்தால், அதன் வழியாகச் சென்ற ஆரம்ப நூல் அது எத்தனை முறை நுழைந்துள்ளது என்பதை முடிக்கும் வரை அவை காத்திருக்க வேண்டும். எனவே முதல் ஒன்றின் சிக்கல் என்னவென்றால், அது முட்டுக்கட்டை தடுப்பு எதுவும் செய்யாது. இரண்டாவது விநியோகிக்கப்பட்ட முட்டுக்கட்டை தடுப்பு செய்யவில்லை. ஆனால் இரண்டாவது ஒன்று முதல் ஒன்று உரையாற்றாத ஒரு முட்டுக்கட்டை சூழ்நிலையைத் தடுக்க மறுவரையறை செய்யப்படுகிறது. தொடர்ச்சியான, ஒரு நூல் மட்டுமே ஒரு பூட்டு வழியாக செல்ல அனுமதிக்கப்படுகிறது. மற்ற நூல்கள் பூட்டுக்குள் நுழைந்தால், அதன் வழியாகச் சென்ற ஆரம்ப நூல் n முறை முடியும் வரை அவை காத்திருக்க வேண்டும். ஆனால் பூட்டுதலுக்குள் நுழையும் நூல்களின் எண்ணிக்கை பூட்டப்பட்ட எண்ணுக்கு சமமாக இருந்தால், ஒரு நூலை சூப்பர்-நூலாக ஒதுக்கி, அது முடியும் வரை அதை இயக்க மட்டுமே அனுமதிக்கவும் (பூட்டுதலுக்குள் நுழையும்/வெளியேறும் நேரங்களின் எண்ணிக்கையைக் கண்காணித்தல்). ஒரு சூப்பர்-த்ரெட் முடிந்த பிறகு, நிபந்தனை மீண்டும் மறுநிகழ்வு பூட்டிலிருந்து தர்க்கத்தைப் பயன்படுத்துவதற்கு மாறுகிறது, மேலும் வெளியேறும் சூப்பர்-த்ரெட் ஒரு சூப்பர்-த்ரெட் அல்ல என்று தன்னை அமைத்துக் கொள்கிறது, மற்ற பூட்டப்பட்ட, காத்திருக்கும் நூல்கள் இந்த நிபந்தனையை மீண்டும் சரிபார்க்க வேண்டும் என்று லாக்கருக்கு அறிவிக்கிறது. இல்லையெனில், வழக்கமான பூட்டுதலை மீண்டும் தொடங்கவும். மேலே தீர்க்கப்படாத பிரச்சினைகள் நிறைய குழப்பம் நிறுத்தும் சிக்கலைச் சுற்றி வருகிறது. ஆனால் இந்த தர்க்கம் நிறுத்தும் சிக்கலைத் தீர்க்காது, ஏனெனில் பூட்டுதல் ஏற்படும் நிலைமைகள் அறியப்படுகின்றன, இது ஒரு குறிப்பிட்ட தீர்வைத் தருகிறது (இல்லையெனில் நிறுத்தும் சிக்கலுக்குத் தேவையான பொதுவான தீர்வுக்கு பதிலாக). இருப்பினும், இந்த லாக்கர் இந்த தர்க்கத்தைப் பயன்படுத்தி பூட்டுகளைக் கருத்தில் கொண்டு மட்டுமே அனைத்து முட்டுக்கட்டைகளையும் தடுக்கிறது. ஆனால் இது மற்ற பூட்டுதல் வழிமுறைகளுடன் பயன்படுத்தப்பட்டால், தொடங்கப்பட்ட ஒரு பூட்டு ஒருபோதும் திறக்கப்படாது (விதிவிலக்கு திறக்கப்படாமல் வெளியே குதித்தல், பூட்டுக்குள் காலவரையின்றி சுழற்றுதல் அல்லது பூட்டுதலை அழைக்க மறந்துவிடுவது குறியீட்டு பிழை), முட்டுக்கட்டை மிகவும் சாத்தியம். இவற்றைச் சேர்ப்பதற்கான நிபந்தனையை அதிகரிக்க, நிறுத்தும் சிக்கலைத் தீர்க்க வேண்டும், ஏனெனில் ஒருவர் தனக்குத் தெரியாத மற்றும் மாற்ற முடியாத நிலைமைகளைக் கையாள்வார். மற்றொரு சிக்கல் என்னவென்றால், இது தற்காலிக முட்டுக்கட்டை சிக்கலை நிவர்த்தி செய்யாது (உண்மையில் ஒரு முட்டுக்கட்டை அல்ல, ஆனால் ஒரு செயல்திறன் கொலையாளி), அங்கு இரண்டு அல்லது அதற்கு மேற்பட்ட நூல்கள் ஒருவருக்கொருவர் பூட்டப்படுகின்றன, மற்றொரு தொடர்பில்லாத நூல் இயங்குகிறது. இந்த தற்காலிக முற்றுகைகள் அவற்றுக்குள் பிரத்தியேகமாக இயங்கும் ஒரு நூலைக் கொண்டிருக்கலாம், இது இணையான தன்மையை அதிகரிக்கிறது. ஆனால் விநியோகிக்கப்பட்ட முட்டுக்கட்டை கண்டறிதல் அனைத்து பூட்டுகளுக்கும் எவ்வாறு செயல்படுகிறது என்பதன் காரணமாக, அதில் உள்ள துணைக்குழுக்கள் அல்ல, தற்காலிக முட்டுக்கட்டை அகற்ற சூப்பர்-த்ரெட் தர்க்கத்தை செய்வதற்கு முன்பு தொடர்பில்லாத இயங்கும் நூல் முடிக்கப்பட வேண்டும். மேற்கூறியவற்றில் தற்காலிக லைவ்-லாக் காட்சியை ஒருவர் காணலாம். முதல் தொடர்பில்லாத நூல் வெளியேறுவதற்கு முன்பு மற்றொரு தொடர்பில்லாத ஓடும் நூல் தொடங்கினால், தற்காலிக முட்டுக்கட்டையின் மற்றொரு காலம் ஏற்படும். இது தொடர்ந்து நடந்தால் (மிகவும் அரிதானது), நிரல் வெளியேறுவதற்கு சற்று முன்பு வரை தற்காலிக முட்டுக்கட்டை நீட்டிக்கப்படலாம், மற்ற தொடர்பில்லாத நூல்கள் முடிக்கப்படும் என்று உத்தரவாதம் அளிக்கப்படும் போது (ஒரு நூல் எப்போதும் முடியும் என்ற உத்தரவாதத்தின் காரணமாக). மேலும் விரிவாக்கம் தற்காலிக முற்றுகைகள் ஏற்படக்கூடிய இடத்தில் இணையான தன்மையை அதிகரிக்க கூடுதல் தர்க்கத்தை ஈடுபடுத்த இது மேலும் விரிவுபடுத்தப்படலாம். ஆனால் அதிக தர்க்கத்தை சேர்க்கும் ஒவ்வொரு கட்டத்திற்கும், அதிக மேல்நிலையைச் சேர்க்கிறோம். இரண்டு எடுத்துக்காட்டுகள் பின்வருமாறுஃ தற்போதுள்ள பூட்டுகளின் ஒவ்வொரு துணைக்குழுவையும் கருத்தில் கொள்ள விநியோகிக்கப்பட்ட சூப்பர்-த்ரெட் பூட்டுதல் பொறிமுறையை விரிவுபடுத்துதல்; டெட்லாக்குகளை ஏற்படுத்தும் அனைத்து சுழற்சிகளையும் (தற்காலிக டெட்லாக்குகள் உட்பட) கண்காணிக்கும் வெயிட்-ஃபார்-கிராஃப் (டபிள்யூ. எஃப். ஜி) வழிமுறைகள்; மற்றும் தற்காலிக டெட்லாக்குகள் சாத்தியமான இடங்களின் 100% இல் இணையான தன்மையை அதிகரிக்க வேண்டிய அவசியமில்லாத ஹூரிஸ்டிக்ஸ் வழிமுறைகள், ஆனால் செயல்திறன்/மேல்நிலை மற்றும் இணையான தன்மை ஏற்றுக்கொள்ளக்கூடிய போதுமான இடங்களில் அவற்றைத் தீர்ப்பதன் மூலம் சமரசம் செய்தல் (எ. கா. கிடைக்கக்கூடிய ஒவ்வொரு செயலிக்கும், செயலிகளின் எண்ணிக்கை + 1 ஆழத்தை விட குறைவான முட்டுக்கட்டை சுழற்சிகளைக் கண்டுபிடிப்பதில் வேலை செய்யுங்கள்). குறிப்புகள் விநியோகிக்கப்பட்ட கணினி