ஐ ஓ மானேஜர்
கந்தசாமி; என் பாட்டி ஒரு கதை சொல்லுவாங்க. கதையின் சுருக்கம் இப்படிப் போகுது: ஒரு நாட்டின் ராஜகுமாரியை ஒரு அரக்கன் க்டத்ததிட்டுப் போயிடரான். அதைக் கேட்டு பக்கத்து நாட்டு ராஜகுமாரன் அந்த அரக்கனைக் கண்டுபிடிக்சு கொன்னுட்டுக் ராஜகுமாரியை மீட்டுவந்துக் அவளைக் கல்யாணம் பண்ணிப்பான்.
இந்தக் கதையிலே ஒரு வித்தியாசமான விஷயம் என்ன தெரியுமா? அரக்கனோட நேரடியா சண்டைபோட்டோம் ஜெயிக்சோமின்னு இல்லை. ஏனென்றால் அரக்கனோட உயிரு அவனோட உடம்புலே இல்லே.
அவனை அம்பு வில்லு என்று போட்டு கொல்ல முடியாது. பின்னே அவனோட உயிரு எங்கேதான் இருக்கும்?. எப்படிக் கொல்ல முடியும்?.
அரக்கன் உயிரு இருக்கிர இடம் அவன் இருக்கிற இடத்துலேருந்து ஏழு கடல் தாண்டிப் போகணும்.
அங்கே மலைகளுக்கு நடுவுலே ஒரு சமவெளியிருக்கு. அதுக்குள்ளே ஒரு அழகான ஏரி அதுக்கு நடுவுலே ஒரு சில மரங்கள் அவற்றுள் ஒண்ணில் ஒரே ஒரு கிளி. அதைக் கொன்னுட்டா அரக்கன் மடிவான்க் ராஜகுமாரியை மீட்கலாம். ராஜகுமாரன் அப்படிதான் ராஜகுமாரியை மீட்டான். சும்மா இல்லே. நடுவுலே கணக்கில்லாத தொல்லைகள். அதை எல்லாம் கடந்துதான்.
சுத்தமா புரிஞ்சு வச்சிருக்கீங்க. யுனிகஸோட கட்டமைப்piலும் அதுக்கு பயன்படுத்திய உத்திகள் எல்லாமே மிகவும் எளிமையானவை.
ஆனாக் ஐ ஓ மானேஜ்மெண்ட் என்கிற பாகத்துக்கு வந்தவுடனே விஷயம் சிக்கலாயிடுது. ஒரு உதாரணம்:
ஐ ஓ -வில் எழும் சிக்கல். கெர்னலை ஒரு சமையில் அறையையும்¢ கம்ப்யூட்டர் மற்றும் ஐ ஓ டிவைஸ்களையும் பாத்திரங்கள் மற்றும் பலவேறு உணவு தயாரிக்க உதவும் பொருட்களாகவும் நினைத்துப் பாருங்கள்.
அதோடு¢ ஒவ்வொரு புரோகிராமும் ஒரு சாப்பாடு தயாரிக்கிற மனிதராக கற்பனை செய்து கொள்ளுங்கள்.
அதோட எல்லா ஐ ஓ கருவிகளும் தாங்களே நேரடியா கருவிகளோடு தொடர்பு கொண்டு தன் இஷ்டம்போல செயல்படலாம் என்றும் வக்சிப்போம். இதுபோல செயல்படும்போதுக் நிகழும் குழப்பங்கள் யூசர் புரோகிராம்கள் நேரடியாக ஐ ஓ டிவைசஸ்களை தொடர்பு கொண்டு செயல்பட்டால் விளையும் கேடுகள் தெளிவாகும்.
இப்போ ஒரு யூசர் புரோகிராம் ஓடுது அதோட பேரு காபி.exe.. அது ஓடினாக் காப்பி தயாராகும் என்று வைப்போம்.
ஒரு சுற்றிலே காபி போட காபி.exe ஓடும்போது பாத்திரத்தை தயாராவக்சிருக்கிறப்போ அந்த சுற்றுக்கான பிராசசிங் (பிராசஸர் மணித்துளிகள் முடிஞ்க்சு) நேரம் முடிஞ்க்சுபோயிடும். மெமொரியிலே கம்முனு ஒக்காந்திடும்.
அடுத்த யூசர் புரோகிராம் ஓடத்துவங்கும். அதோட பேரு (மதியஉணவு.exe) என்ரு வக்சிப்போம். அது ஓடுரப்போல அதே பாதிரத்துலே ரசம் ஊத்தி மூடி வைக்குது.
அப்போ,அந்தப் பாத்திரத்திலே என்ன இருக்கும்? பலவேறு ருசிகள் வண்ணங்கள் மணங்களாலான ஒரு குழம்பாக ஏதோ ஒண்ணு இருக்கும்..
அதை காபி பாயாசம்¢ இட்டலி குருமான்னு ஒன்றினால் அடையாளம் கண்டுபிடிக்க முடியாதில்லையா?
அது நாம் விரும்பும் ஒரு நல்ல ஒரு காபியாக (அல்லது குருமாவாகவோ .. வேறு எதுவுமாகவோ) இருக்கவே இருக்காது.
இது ஒரு பிரச்சனை.வராம இருக்க, ஒரு சமயல் முடியுற வரை, அந்த (Device) வேற எந்த பிராசஸ் கையிலேயும் மாட்டாம பாத்துக்கணும். அதற்கு சிறப்பான கருகிகள் தேவை.
(1) சிமாபோர் (semaphore என்னும் கருவியால, ஒரு ரிஸோர்ஸ் பிடிக்கப்பட்டு, அதன் வேலை முழுவதா முடியுறவரை வேறு ஒரு பிராசஸ் அதை தொடாமல் பார்த்துக்கும்.
(2) கௌண்டிங் சிமாபோர்; ஒரு கம்ப்யூட்டரிலே இரண்டு அல்லது அதற்கு மேலும் ஒரே மாதிரி ரிஸோர்ஸ் (பிரிண்டருன்னு வச்சிப்போமே) வேற வேற பிராசஸ்களுக்கு கொடுத்திடும். அதே சமயம், அதோட வேலை முடிஞ்சு திருப்பித்தர வரை வேற பிராசஸ் அதை புடிச்சுக்காம பத்துக்கும்.
இப்போ யுனிக்ஸ்சுக்கு வருவோம்.
இணைக்கப்பட்டுள்ள ஹார்டுவேர் கருவிகளை யூசர் புரோகிராம்களின் நேரடி தொடர்பை தடை செய்வது அவசியம். ஆகவே யூசர் புரோகிராம்லிருந்து ஐ-ஓ கருவிகளாய் இயக்குவது என்பதுக் சற்று சுற்றி வளைத்துக் செய்ய வேண்ணிய வேலை. ஒரு கருவி தொடர்பு கொள்ளும்போது மற்றது தொடர்புகொள்வதைத் தடை செய்யவேண்டும்.
அதற்கு நல்ல கதையை உதாரணமாக சொல்லிட்டோம். கதையில் சொன்ன அரக்கனை வெல்ல ஏழு கடல் தாண்டி பல மலைகளுக்குள் புகுந்துக் குறிபிட்ட மரத்தைத் தேடிக் அதிலுள்ள கிளியைப் பிடித்து அரக்கன் உயிரை எடுப்பது போன்ற ஒரு சுற்றி வளைத்த வேலை.
ஐ ஓ கருவிகள் (I/O Devices¢) என்னென்ன? கணக்கில்லாத கீ போர்டு (key Board)¢ மௌஸ் (Mouse¦) வகைகள் என்று ஆரம்பித்துக் டி வி டி ரைட்டர்கL, மோடம், கேமரா வகைகள் டஸ்-ஸ்க்ரீன் என்றும் பல வகையான பிரிண்டர்கள்¢ வகை வகையான சேமிப்புக் கருவிகள் வந்து கொண்டே இருக்கின்றன.
அவற்றில் வேறுபடும் அதிகரித்து வருகின்றன. அவை இயங்க்கும் விதங்கள், வேகம், கம்பூடருடன் இணைக்கப்படும் விதங்க்களில் வேறுபாடுகள்.
இவை எண்ணிக்கையில் வளந்து வருகிறது. யுனிக்ஸ் கட்டமைப்பை தயார் செய்தவர்கள் இவை எதைப் பற்றியும் கவலைப் படுவதில்லை.
எல்லா ஐ ஓ கருவிகளையும் மூன்றாகப் பிரித்து அறிகிறது யுனிக்ஸ்.
(1) காரக்டர் ஐ ஒ (Charecter I/O); (2) Block I/O)¢; (3) ஸ்ட்றீம் ஐ ஓ (Stream I/O).
கேரக்டர் ஐ ஓ, ஒவ்வொரு பைட்டாக மெதுவா செய்தி வரும்- இல்லை போகும். பிரிண்டர் கீ-போர்டு போன்ற கருவிகள் இதற்கு உதாரணம்.
(2) Block I/O)¢; குறைந்தது ஒரு செக்டார் அளாவு (512 பைட்டிலிருந்து 4096 அளவு பெறலாம் அல்லது அனுப்புவதற்கு பயனாகும் எல்லாம் இந்த வகை. உதாரணம், ஹார்டு டிஸ்க், சிடி டிரைவ், பென் டிரைவ் போன்றவை.நிற்காமல் டேட்டா வரும்.
இவற்றுள் உள்ள வேரு பாட்டை, மனசுலே நிக்கறமாதிரி உதாரணமா கீழே கண்டவாறு சொல்லலாம்.
தெருவிலே உள்ள ஒரு பெட்டிக்கடையிலே ஒரே ஒரு சாக்லேட் வாங்கலாம். ஊர் மத்டியிலே இருக்கிற மால்களிலே குறைந்த்தது நூறு சாக்லேட் உள்ள ஒரு பொட்டலம்தான் விற்பாங்க.¢ உற்பத்தியாளர் கிட்டே ஒரு சாக்கலேட்டோ அல்லது ஒரு பொட்டலம் சாக்கலேட்டோ வாங்க முடியாது. அவங்ககிட்ட தொடர்ந்து ஆயிரக்கணக்கான பொட்டலங்களை வாங்கிரவங்களுக்கு மட்டுமே விற்பாங்க. இப்போ, எது கேரக்டர் ஐ ஓ, பிளாக் ஐ ஓ, எது ஸ்ட்¢றீம் ஐ ஓ என்று தெளிவாயிருக்குமே!
சாதாரண மற்றும் சிறப்பு பைல்கள்
முன்பே ஒரு தடவை யுனிக்ஸ் ஆபரெடிங் சிஸ்டத்திலேக் எல்லாமே பைல்தான் என்று சொல்லிட்டோம். முக்கியமா கம்ப்யூட்டரின் (பக்க வாத்தியங்களான) எண்ணற்ற கருவிகள் உண்டல்லவா? அவற்றையும் பைல்களை கையாளுவதைப் போலவே இந்தக் கருவிகளையும் கையாள்கிறது.
ஆனால் இவற்றை ஸ்பெஷல் பைல் (சிறப்பு பைல்) என்று அழைகக்கப்படு¢கிறது. இந்த பைல்கள் இரண்டு எண்களால் குறிக்கப்படுகின்றன. மேஜர் டிவைஸ் எண், மைனர் டிவைஸ் எண். சேவை அளித்து வரும் பெரிய கம்ப்யூட்டர் அமைப்புகளில் ஒரே விதமான பல பிரிண்டர்கள் போன்ற கருவிகள்க் ஒன்றுக்கும் அதிகமாக இருப்பதுண்டு.
எல்லா பிரிண்டர்களும் ஒரே நிருவனத்தால் தயாரிக்கப்பட்டு மாடல் எண் ஒன்றாக இருந்தால் அவைகள் மேஜர் எண் அந்த பிரிண்டர்களுக்கு மாறாது. அந்த பிரிண்டர்கள் உபயோகப் படுத்துவதோ ஒரே சாப்ட்வேர் (டிவைஸ் டிரைவர்) தான் (அந்த பிரிண்டர்களுக்கும் மேஜர் எண் மாறாது).
பிரிண்டரின் மாடல்கள் வெவ்வேறாக இருன்தால். மேஜர் எண் மாறிவிடும். ஆகவே அதன் டிரைவரும் மாறிவிடும்.
இப்படிக் ஒரு யூசர் புரோகிராம்க் (உதாரணமாகக் பிரிண்டிங் செய்யவேண்டுமென்றால்) பிரிண்ட செய்யக் குறிப்பிட்ட
குறிப்பிட்ட ஒரு பிரிண்டரை குறியிட்ட பிரிண்டர் டிரைவரை மேஜன்ர் – மைனர் எண்ணைக் கொண்ட ரிறப்பு பைல் குறிக்கப்பட்டுக் அந்த பைல் திறக்கப்பட்டு ( open ), (Write), (Close) என்கிற மூன்று கட்டளைகள் (System call ) மூலம் பிரிண்டிங் பணி பூர்த்தியாகிறது.
வாசகர்கள் தவறாது கவனிக்கவும்:
ஒரு பைலை எப்படி திறப்பது, எப்படி எழுதுவது, எப்படி திறந்த பைலை மூடுவது போன்ற விவரங்களை டிவை-டிரைவர் எழுதும் பொருப்பை சிஸ்டம் புரோகிராமர்களுக்கு விட்டுவிடுகிறது.
ஏன்?
வருடா வருடம் கம்ப்யூட்டர்கள் புதிதாக உருவாக்கப்பட்டு வருகின்றன. அவற்றின் செயல் திறன் வேகம் எல்லாமே அதிகரித்து வருகிறது.
அதே சமயம் எல்லா இன்புட்க் அவுட்புட் கருவிகளின் வகைகளும் வேகம் மற்றும் திறன் எல்லாமே அதகிரித்து வருகிறது.
அதிக வேகம் கொண்ட கம்ப்யூட்டரிலிருன்து கமாண்ட் எழுகிறது. வேகம் குறைவான இன்புட் கருவியிலிருந்து டேட்டா வெளிவந்து கம்ப்யூட்டர் மெமொரியை அடைய அதிக நேரம் தேவைப்படுகிறது.
பிராசஸ் ஓடும்போது ஐ ஓ கருவியிலிருந்து டேட்டா வந்தால் அது பிராசஸின் டேட்டா பகுதியில் சென்று அமர வாவாய்ப்புண்டு.
அன்னால்க் பெரும்பாலும்க் இன்புட் கருவியிருந்து டேட்டா வெளிவரும்போது பிராசஸுக்கு ஒதுக்கப்பட்ட மணித்துளிகள் காலாவதியாகிவிடும்.
அப்போது கம்ப்யூட்டர் மெமொரியில் ஒவ்வொரு இன்புட் டிவைசுக்காக ஒதுக்கப்பட்ட (buffer -ல் ) மெமொரியில் தங்கிவிடும். அடுத்த சுற்றில் அதே பிராசஸ் உயிர்பெற்று ஓடும்பொழுது டிவைஸ் buffer-ல் இருந்த டேட்டா பிராசஸின் டேட்டா பகுதியை அடைகிறது.
கந்தசாமி; பலவித ஹார்டுவேர் கருவி இருக்கே ஒவ்வொன்றுக்கும் தனித்தனியா புரோகிராம் வேண்டும் இல்லையா?
நடராஜன்; யுனிக்ஸிலே அதை மிக எளிமையாக்கிட்டாங்க. அரக்கனைக் கொன்னுடு என்று சொல்லிட்டாப் போதும்,
அதை எங்கே இருக்குன்னு தேடிப் பார்த்து கண்டு பிடிக்கிறது.யு னிக்ஸுக்கு விடல்லை.
ஒரு ஐந்து கமாண்டுகளை வைத்து எல்லா வித டிவைகளையும் இயக்குவது. பைல்களைப் பற்றி விளக்கிய போது டிவைஸ்- பைல்களாக் கண்டோம்,