கேள்வி: செமாஃபோர் (நிரலாக்கம்) பற்றி விளக்கவும்.
பதில்: கணினியியலில் சேமாஃபோர் என்பது ஒரு பாதுகாக்கப்பட்ட மாறுபாட்டு தன்மைகொண்ட அல்லது ஒரு திட்டவட்டமான உருவமற்ற தரவு வகையாகும், இது இணையான புரோகிராமிங் சூழலில் நினைவக பகிர்வு (shared memory) போன்ற பகிர்வு ஆதாரங்களை (shared resources) அணுகுவதைக் கட்டுப்படுத்தும் ஒரு பழைய முறையைக் கொண்டிருக்கிறது. ஒரு கவுண்டிங் சேமாஃபோர் என்பது ஒரேயொரு ஆதாரத்தின் பூட்டப்பட்ட/பூட்டப்படாத ஃபிளாகாக (flag) மட்டும் இல்லாமல், இருக்கும் அனைத்து ஆதாரங்களுக்கான ஒரு கவுண்டராகவும் இருக்கிறது. இதனைக் கண்டுபிடித்தவர் எட்ஸ்ஜர் டிஜ்ஸ்ட்ரா ஆவார்.http://www.cs.utexas.edu/users/EWD/transcriptions/EWD01xx/EWD123.html E. W. Dijkstra, Cooperating sequential processes. டெக்னாலஜிக்கல் பல்கலைக்கழகம், ஈய்ண்டஹோவன், நெதர்லாந்து, செப்டம்பர் 1965. சேமாஃபோர்கள் ஆதாரங்களின் முட்டுக்கட்டையைத் (deadlock) தடுப்பதில்லை என்றாலும் கூட, வெற்று தத்துவவாதிகளின் சிக்கல்களில் இருக்கும் போட்டி நிலைமைகளைத் தடுப்பதில் ஒரு சிறந்த தீர்வாக இருக்கின்றன.
கேள்வி: செமாஃபோர் (நிரலாக்கம்) - ஒப்பீடு பற்றி தகவல் சொல்.
பதில்: ஒரு பொது அறையில் இருக்கும் கழிவறைகளாக ''ஆதாரங்களையும்'', அந்தக் கழிவறைகளுக்குச் செல்ல காத்திருக்கும் நபர்களாக ''செயல்முறைகளையும்'', ஏதாவதொரு கழிவறைக்காக வரிசையில் நபர்கள் காத்திருக்கிறார்கள் அல்லது ஏற்கனவே அவர்கள் கழிவறையைப் பயன்படுத்திக் கொண்டிருக்கிறார்கள் என்பதாக கற்பனை செய்து கொள்ளுங்கள். கழிவறைக்கு வெளியில் உட்கார்ந்திருக்கும் ஒரு நபர், அந்த சமயத்தில் எத்தனை கழிவறைகள் காலியாக இருக்கின்றன, யார் அடுத்ததாக போக வேண்டும் என்று தீர்மானிக்கிறார். காலியாக இருக்கும் கழிவறைகளின் எண்ணிக்கை தான், சேமாஃபோரின் மதிப்பு, இது காலியாக இருக்கும் ஆதாரங்களைக் (கழிவறைகளை) குறிக்கிறது. ஒரு செயல்பாடு (நபர்) கழிவறையை அணுக வேண்டுமானால், சேமாஃபோரானது (பொறுப்பாளர்) வரிசையில் காத்திருக்க வேண்டுமா அல்லது காலியாக இருக்கும் கழிவறையைப் பயன்படுத்தலாமா என்று கூறுவார். கழிவறை காலியாக இருந்தால் அதில் நுழைய நபருக்கு (செயல்பாட்டிற்கு) வாய்ப்பு கிடைக்கும், பிறகு கழிவறைகளின் எண்ணிக்கையில் ஒன்று குறையும் (P அல்லது கீழ் செயல்பாடு போல). அதாவது காலியாக இருக்கும் ஆதாரங்களின் எண்ணிக்கையில் 1 குறைந்துவிட்டது என்பதை இது குறிக்கிறது. காலியாக இருக்கும் கழிவறைகளின் எண்ணிக்கை பூஜ்ஜியம் என்றால், காலியாகும் வரை நபர் (செயல்முறை) வரிசையில் இருக்க வேண்டும் (அதாவது, S>0 என்று ஆகும் வரை செயல்முறை உறக்கநிலையில் இருக்க வேண்டும்). ஒரு நபர் கழிவறையைப் பயன்படுத்தி முடித்துவிட்டால் (செயல்பாடு ஆதாரத்துடனான அதன் வேலையை முடித்துக் கொள்கிறது), அடுத்த நபர் அதைப் பயன்படுத்திக் கொள்ளலாம். இது, காலியான கழிவறைகளின் எண்ணிக்கை அதிகரித்திருப்பதைக் குறிக்கிறது (இது V அல்லது மேல் செயல்பாடு என்பதைப் போல). இப்போது, S பூஜ்ஜியத்தை விட அதிகமாகி விடும். அதனால் காத்திருக்கும் நபர் (அதாவது, உறக்கநிலையில் இருக்கும் செயல்முறை) இந்த கழிவறையைப் (ஆதாரத்தை) பயன்படுத்திக் கொள்ளலாம். காலியாக இருக்கும் கழிவறைகளை விசாரிப்பது (ஆதாரம் காலியாக இருக்கிறதா என்று பரிசோதிக்கும் செயல்பாடு), காலியான கழிவறைகளின் (ஆதாரங்களின்) எண்ணிக்கையை மீண்டும் மீண்டும் குறிப்பிடுவது, வரிசையில் காத்திருப்பது போன்ற செயல்பாடுகள் மற்ற செயல்பாடுகளால் தொந்தரவு செய்யப்படக்கூடாது. இது தான் அட்டாமிக் நடவடிக்கை என்றழைக்கப்படுகிறது. இந்த வரிசையானது முதலில் வருபவர் முதலில் வெளியில் செல்லலாம் என்ற அடிப்படையில் இருக்கும், அதாவது வரிசையில் முதலில் இருக்கும் நபருக்கு முதலில் காலியாகும் கழிவறையைப் பயன்படுத்த வாய்ப்பளிக்கப்படும். இருந்தாலும் கூட, வரிசையில் எங்கோ நிற்கும் ஒருவர் அவசரமாக பயன்படுத்த விரும்பினாலும் இந்த வரிசை மாற்றி அமைக்கப்படலாம் (அதாவது, செயல்பாடு அதிக முன்னுரிமை பெற்றிருந்தால் மாற்றி அமைக்கப்படும்). கவுண்டிங் சேமாஃபோர் கருத்தை, சேமாஃபோரில் இருந்து ஒரு 'யூனிட்டிற்கு' மேலாக ஏறும் அல்லது திரும்பும் திறனுடன் விரிவுபடுத்தலாம். இவ்வாறுதான் சேமாஃபோர் யூனிக்ஸ் இயங்கு தளத்தில் வேலை செய்கிறது. மாற்றி அமைக்கப்பட்ட P மற்றும் V செயல்பாடுகள் பின்வருமாறு வேலை செய்கின்றன: procedure P (S : Semaphore; I : Integer); begin (* மொத்த செயல்பாடும் அட்டாமிக் ஆகும்*) S >= 1 என்று வரும் வரை திரும்ப திரும்ப செய்யவும்; S := S - I end; procedure V (S : Semaphore; I : Integer); begin S := S + I (* அட்டாமிக் செயல்பாடு *) end;
கேள்வி: செமாஃபோர் (நிரலாக்கம்) - இன்று புரோகிராமர்களால் பயன்படுத்தப்படும் சேமாஃபோர்கள் என்பது என்ன?
பதில்: பொதுவாக வேறு எந்த வகையான ஒத்தியக்கத்திற்கு இயல்பாகவே பொருந்தி வராத புரோகிராமிங் மொழிகளில் சேமாஃபோர் பயன்படுத்தப்பட்டு வருகிறது. பெரும்பாலான இயங்கு தளங்களில் இவை ப்ரிமிட்டிவ் சின்க்ரோனைசேசன் இயங்குமுறையாக இருக்கின்றன. புரோகிராமிங் மொழி விரிவாக்கத்தில் இருக்கும் போக்கு, கணினித்திரை போன்ற ஒத்தியக்கத்திற்கு சிறந்த கட்டமைப்பு வடிவத்தில் இருக்கிறது (இருந்தாலும், இந்த நவீன கட்டமைப்புகள் சேமாஃபோர்களை திரைக்குப் பின்னால் இருந்து தான் பயன்படுத்துகின்றன). (மல்டி-ரிசோர்ஸ்) முட்டுக்கட்டைகளுடன் செயல்படும் போது இருக்கும் அவற்றின் செயல்திறமின்மையோடு கூட, புரோகிராமர்களின் ஒருசில சிறிய தவறுகளிலும் அவை புரோகிராமர்களைக் கைவிட்டுவிடுகின்றன, அதாவது ஒரு செயல்முறையில் ஏற்கெனவே கையாளப்பட்டு வரும் ஒரு சேமாஃபோரை அதிலிருந்து நீக்குவது மற்றும் நீக்கப்பட்ட சேமாஃபோரை மீண்டும் வெளியிடுவதற்கு மறந்துவிடுவது போன்ற சிறிய தவறுகளிலும் புரோகிராமர்களை இவை கைவிட்டுவிடுகின்றன.
கேள்வி: செமாஃபோர் (நிரலாக்கம்) - வன்பொருள் ஒத்துழைப்பு என்பது என்ன?
பதில்: பொதுவாக, தேவைப்படும் பின்புல மறைவு செயல்பாடுகளைச் (automicity operations) செய்ய சேமாஃபோரின் பயன்பாட்டிற்கு வன்பொருள் ஒத்துழைப்பு தேவைப்படுகிறது. பெரும்பாலும், தகவல் குறியீடுகளைக் (instructions) கொண்டிருக்கும் கணினி இயந்திர மொழிகள் குறிப்பாக சேமாஃபோர்களை மனதில் வைத்தே வடிவமைக்கப்பட்டு இருக்கின்றன. இந்தச் சிறப்புத் தகவல் குறியீடுகள் நினைவகத்திற்கு ஒரு ரீட்-மாடிஃபை-ரைட் சுழற்சியைக் (read-modify-write cycle) கொண்டு செல்கின்றன, இவை தடையில்லாமல் இருப்பது மட்டுமில்லாமல், பிற புரோசஸர்கள் அல்லது உள்ளீட்டு/வெளியீட்டு சாதனங்களால் அதே நினைவக இடத்தில் நடைபெறும் ஏனைய எல்லா செயல்பாடுகளையும் தவிர்த்துவிடுகிறது. இந்தச் சிறப்புத் தகவல் குறியீடுகள் பயன்படுத்தப்படும் சேமாஃபோர் வழிமுறை சோதனைச் செய்வதையும், ஒரு சேமாஃபோரை ஒரே அட்டாமிக் செயல்பாட்டில் மாற்றுவதற்கும் உத்திரவாதம் அளிக்கிறது.
கேள்வி: செமாஃபோர் (நிரலாக்கம்) - பைனரி சேமாஃபோரும், மியூடெக்சும் பற்றி தகவல் சொல்.
பதில்: ஒரு மியூடெக்ஸ் என்பது பைனரி சேமாஃபோர் (அதாவது, 1-இன் திறனுடன் கூடிய ஒரு சேமாஃபோர்) ஆகும், வழக்கமாக உரிமைஉடைமை (ownership), பாதுகாப்பு அல்லது மீள்சுழற்சி (recursivity) ஆகியவற்றிற்கு ஏற்ப முன்னுரிமை மாற்றி அளிப்பது போன்ற சிறப்பு வசதிகளையும் உள்ளடக்கி இருக்கும். மியூடெக்ஸ் மற்றும் சேமாஃபோர் இரண்டிற்கும் இடையிலான வேறுபாடுகள் இயங்குதள அமைப்பைச் சார்ந்திருக்கிறது, இருந்தாலும் மியூடெக்ஸ்கள் சிறப்பார்ந்த மற்றும் விரைவான செயல்பாடுகளுக்காக நிறுவப்படுகின்றது. மியூடெக்ஸ்கள் பரஸ்பர விடுபாட்டிற்காக (mutual exclusion) (போஸ்ட்/ரிலீஸ் செயல்முறை இழைக்கு மறுக்கப்படுவது பெண்ட்/அக்யூர் என்று அழைக்கப்படுகிறது) மட்டுமே உரியவை என்றும், பைனரி சேமாஃபோர்கள் நிகழ்வு அறிவிப்புகளை (event notification) (எந்தவித இழையிலிருந்தும் எடுக்கும் முன்கூட்டிய திறன்) காட்டுவதற்கானவை என்று கருதப்படுகின்றன.
கேள்வி: செமாஃபோர் (நிரலாக்கம்) - பிற வலைத்தளங்கள் குறித்து விரிவாக சொல்லுங்கள்.
பதில்: * [http://www.cs.utexas.edu/users/EWD/transcriptions/EWD00xx/EWD74.html Over Seinpalen (EWD 74)], இதில் டிஜிக்ஸ்டிரா அந்தக் கருத்தை (டச் மொழியில்) வெளியிடுகிறார் * [http://www.opengroup.org/onlinepubs/009695399/basedefs/semaphore.h.html semaphore.h] programming interface - The Open Group Base Specifications Issue 6, IEEE Std 1003.1 * [http://greenteapress.com/semaphores/ ''The Little Book of Semaphores''], ஆசிரியர் ஆலன் பி. டௌனி * [http://www.tseka.org/gradu/jleppaja_gradu_080511.pdf ''A pragmatic, historically oriented survey on the universality of synchronization primitives''], by Jouni Leppäjärvi பகுப்பு:கூகுள் தமிழாக்கம்-கணினியியல்