ஆப்பரேட்டிங் சிஸ்டம்களில் செயல்முறை நிலைகள், திட்டமிடல் வழிமுறைகள், செயல்முறைகளுக்கு இடையேயான தொடர்பு மற்றும் முட்டுக்கட்டை கையாளுதல் உள்ளிட்ட செயல்முறை மேலாண்மையின் முக்கியக் கருத்துக்களை ஆராயுங்கள். டெவலப்பர்கள் மற்றும் கணினி நிர்வாகிகளுக்கு அவசியம்.
ஆப்பரேட்டிங் சிஸ்டம்ஸ்: செயல்முறை மேலாண்மைக்கான ஒரு விரிவான வழிகாட்டி
செயல்முறை மேலாண்மை என்பது எந்தவொரு நவீன ஆப்பரேட்டிங் சிஸ்டத்தின் ஒரு அடிப்படைக் கூறு ஆகும். இது செயல்முறைகளின் செயல்பாட்டை நிர்வகித்தல், வளங்களை ஒதுக்குதல் மற்றும் சீரான பல்பணியை உறுதி செய்தல் ஆகியவற்றை உள்ளடக்கியது. இந்த வழிகாட்டி செயல்முறை மேலாண்மைக் கருத்துக்கள், நுட்பங்கள் மற்றும் சவால்கள் பற்றிய விரிவான கண்ணோட்டத்தை வழங்குகிறது. இது மாணவர்கள், டெவலப்பர்கள், கணினி நிர்வாகிகள் மற்றும் ஆப்பரேட்டிங் சிஸ்டம்கள் எவ்வாறு செயல்படுகின்றன என்பதைப் புரிந்துகொள்ள ஆர்வமுள்ள எவருக்கும் வடிவமைக்கப்பட்டுள்ளது.
ஒரு செயல்முறை (Process) என்றால் என்ன?
அதன் மையத்தில், ஒரு செயல்முறை என்பது செயல்பாட்டில் உள்ள ஒரு நிரலின் ஒரு நிகழ்வு ஆகும். இது நிரலின் குறியீட்டை விட அதிகம்; இது புரோகிராம் கவுண்டர், ரெஜிஸ்டர்கள் மற்றும் மாறிகளின் தற்போதைய மதிப்புகளை உள்ளடக்கியது. ஒவ்வொரு செயல்முறைக்கும் அதன் சொந்த நினைவக இடம் உள்ளது, இது மற்ற செயல்முறைகளுடன் நேரடியாகத் தலையிடுவதைத் தடுக்கிறது.
ஒரு நிரலை ஒரு சமையல் குறிப்பு என்றும், ஒரு செயல்முறையை உண்மையில் அந்த உணவைச் சமைக்கும் செயல் என்றும் நினைத்துப் பாருங்கள். ஒரே நிரலை ஒரே நேரத்தில் பல செயல்முறைகள் இயக்க முடியும் (உதாரணமாக, ஒரு டெக்ஸ்ட் எடிட்டரின் பல நிகழ்வுகள்), ஒவ்வொன்றும் அதன் சொந்த தரவு மற்றும் நிலையுடன் இருக்கும்.
ஒரு செயல்முறையின் முக்கிய கூறுகள்:
- நிரல் குறியீடு (டெக்ஸ்ட் பிரிவு): செயல்படுத்தப்பட வேண்டிய வழிமுறைகள்.
- தரவுப் பிரிவு: குளோபல் மாறிகள் மற்றும் டைனமிக்காக ஒதுக்கப்பட்ட நினைவகம்.
- ஸ்டேக் (Stack): ஃபங்ஷன் கால்கள், லோக்கல் மாறிகள் மற்றும் ரிட்டர்ன் முகவரிகளுக்குப் பயன்படுத்தப்படுகிறது.
- ஹீப் (Heap): இயக்க நேரத்தில் டைனமிக்காக ஒதுக்கப்பட்ட நினைவகம்.
- செயல்முறை கட்டுப்பாட்டுத் தொகுதி (PCB): ஒவ்வொரு செயல்முறைக்கும் OS ஆல் பராமரிக்கப்படும் ஒரு தரவுக் கட்டமைப்பு. இது செயல்முறை ஐடி, நிலை, புரோகிராம் கவுண்டர் மற்றும் ரெஜிஸ்டர் மதிப்புகள் போன்ற தகவல்களைக் கொண்டுள்ளது.
செயல்முறை நிலைகள்
ஒரு செயல்முறை அதன் வாழ்க்கைச் சுழற்சியில் வெவ்வேறு நிலைகளைக் கடந்து செல்கிறது. இந்த நிலைகளைப் புரிந்துகொள்வது செயல்முறை மேலாண்மையைப் புரிந்துகொள்ள மிகவும் முக்கியமானது.
- புதியது (New): செயல்முறை உருவாக்கப்படுகிறது.
- தயார்நிலை (Ready): ஒரு பிராசஸருக்கு ஒதுக்கப்படுவதற்காக செயல்முறை காத்திருக்கிறது.
- இயங்குகிறது (Running): வழிமுறைகள் செயல்படுத்தப்படுகின்றன.
- காத்திருப்பு (தடுக்கப்பட்டது - Waiting/Blocked): செயல்முறை ஏதேனும் ஒரு நிகழ்வு நடப்பதற்காக காத்திருக்கிறது (உதாரணமாக, I/O நிறைவு அல்லது சிக்னலைப் பெறுதல்).
- முடிவடைந்தது (Terminated): செயல்முறை தனது செயல்பாட்டை முடித்துவிட்டது.
இந்த நிலைகள் ஒரு செயல்முறையின் வாழ்க்கைச் சுழற்சியைக் குறிக்கின்றன, மேலும் ஆப்பரேட்டிங் சிஸ்டம் அவற்றுக்கிடையேயான மாற்றங்களை நிர்வகிப்பதற்குப் பொறுப்பாகும். உதாரணமாக, ஒரு செயல்முறை ஒரு வட்டில் இருந்து தரவைப் படிக்க வேண்டியிருக்கும் போது, அது இயங்குகிறது நிலையிலிருந்து காத்திருப்பு நிலைக்கு மாறுகிறது, I/O செயல்பாடு முடியும் வரை. பின்னர், அது மீண்டும் தயார்நிலை நிலைக்குத் திரும்பி, மீண்டும் இயங்குவதற்கான தனது முறைக்காகக் காத்திருக்கிறது.
செயல்முறை கட்டுப்பாட்டுத் தொகுதி (PCB)
PCB என்பது ஒரு தரவுக் கட்டமைப்பாகும், இது ஒரு செயல்முறையை நிர்வகிக்க ஆப்பரேட்டிங் சிஸ்டத்திற்குத் தேவையான அனைத்து தகவல்களையும் கொண்டுள்ளது. இது ஒரு செயல்முறையின் ரெஸ்யூம் போன்றது, OS அதைக் கண்காணிப்பதற்குத் தேவையான அனைத்தையும் இது வைத்திருக்கிறது.
ஒரு PCB-யின் பொதுவான உள்ளடக்கங்கள்:
- செயல்முறை ஐடி (PID): செயல்முறைக்கான ஒரு தனித்துவமான அடையாளங்காட்டி.
- செயல்முறை நிலை: செயல்முறையின் தற்போதைய நிலை (உதாரணமாக, தயார்நிலை, இயங்குகிறது, காத்திருப்பு).
- புரோகிராம் கவுண்டர் (PC): அடுத்து செயல்படுத்தப்பட வேண்டிய வழிமுறையின் முகவரி.
- சிபியு ரெஜிஸ்டர்கள்: சிபியு ரெஜிஸ்டர்களின் உள்ளடக்கங்கள் (அக்யூமுலேட்டர்கள், இன்டெக்ஸ் ரெஜிஸ்டர்கள், ஸ்டேக் பாயிண்டர்கள், பொது-நோக்க ரெஜிஸ்டர்கள் மற்றும் எந்த நிபந்தனை-குறியீடு தகவல்களும்).
- நினைவக மேலாண்மைத் தகவல்: செயல்முறைக்கு ஒதுக்கப்பட்ட நினைவகம் பற்றிய தகவல்கள், அதாவது பேஸ் மற்றும் லிமிட் ரெஜிஸ்டர்கள், பேஜ் டேபிள்கள் அல்லது செக்மென்ட் டேபிள்கள்.
- கணக்கியல் தகவல்: பயன்படுத்தப்பட்ட சிபியு நேரம், நேர வரம்புகள், கணக்கு எண்கள், பயன்படுத்தப்பட்ட நினைவகத்தின் அளவு போன்றவை.
- I/O நிலைத் தகவல்: செயல்முறைக்கு ஒதுக்கப்பட்ட I/O சாதனங்கள், திறந்த கோப்புகளின் பட்டியல் போன்றவை.
செயல்முறை திட்டமிடல் (Scheduling)
செயல்முறை திட்டமிடல் என்பது தயார்நிலை வரிசையில் உள்ள எந்த செயல்முறைக்கு சிபியு ஒதுக்கப்பட வேண்டும் என்பதைத் தீர்மானிக்கும் செயல்பாடு ஆகும். திட்டமிடலின் நோக்கம், சிபியு பயன்பாட்டை அதிகப்படுத்துதல், டர்ன்அரவுண்ட் நேரத்தைக் குறைத்தல் அல்லது செயல்முறைகளிடையே நேர்மையை உறுதி செய்தல் போன்ற சில அளவுகோல்களின்படி கணினி செயல்திறனை மேம்படுத்துவதாகும்.
திட்டமிடல் வரிசைகள் (Scheduling Queues)
OS செயல்முறைகளை நிர்வகிக்க வரிசைகளைப் பயன்படுத்துகிறது. பொதுவான வரிசைகள் பின்வருமாறு:
- பணி வரிசை (Job queue): கணினியில் உள்ள அனைத்து செயல்முறைகளையும் கொண்டுள்ளது.
- தயார்நிலை வரிசை (Ready queue): செயல்படுத்தத் தயாராக உள்ள மற்றும் சிபியுவுக்காக காத்திருக்கும் அனைத்து செயல்முறைகளையும் கொண்டுள்ளது.
- சாதன வரிசைகள் (Device queues): ஒவ்வொரு I/O சாதனத்திற்கும் ஒரு வரிசை என, அந்தச் சாதனத்திற்காகக் காத்திருக்கும் செயல்முறைகளைக் கொண்ட வரிசைகளின் தொகுப்பு.
திட்டமிடுபவர்கள் (Schedulers)
திட்டமிடுபவர்கள் என்பது அடுத்த செயல்முறையை இயக்கத் தேர்ந்தெடுக்கும் கணினி மென்பொருள் தொகுதிகள் ஆகும். இரண்டு முக்கிய வகை திட்டமிடுபவர்கள் உள்ளனர்:
- நீண்ட கால திட்டமிடுபவர் (பணி திட்டமிடுபவர்): பணி வரிசையிலிருந்து செயல்முறைகளைத் தேர்ந்தெடுத்து, அவற்றைச் செயல்படுத்துவதற்காக நினைவகத்தில் ஏற்றுகிறது. இது மல்டிபுரோகிராமிங்கின் அளவை (நினைவகத்தில் உள்ள செயல்முறைகளின் எண்ணிக்கை) கட்டுப்படுத்துகிறது. இது குறுகிய கால திட்டமிடுபவரை விட குறைவாகவே இயங்கும்.
- குறுகிய கால திட்டமிடுபவர் (சிபியு திட்டமிடுபவர்): தயார்நிலை வரிசையிலிருந்து ஒரு செயல்முறையைத் தேர்ந்தெடுத்து, அதற்கு சிபியுவை ஒதுக்குகிறது. இது மிக அடிக்கடி இயங்கும், எனவே இது வேகமாக இருக்க வேண்டும்.
சில கணினிகளில், ஒரு இடைக்கால திட்டமிடுபவரும் இருக்கிறார், இது செயல்முறைகளை நினைவகத்திலிருந்து வெளியேற்றி (வட்டுக்கு) மீண்டும் உள்ளே கொண்டு வந்து மல்டிபுரோகிராமிங்கின் அளவைக் குறைக்கிறது. இது ஸ்வாப்பிங் என்றும் அழைக்கப்படுகிறது.
திட்டமிடல் வழிமுறைகள் (Scheduling Algorithms)
பல திட்டமிடல் வழிமுறைகள் உள்ளன, ஒவ்வொன்றும் அதன் சொந்த பலம் மற்றும் பலவீனங்களைக் கொண்டுள்ளன. வழிமுறையின் தேர்வு, கணினியின் குறிப்பிட்ட இலக்குகளைப் பொறுத்தது. இங்கே சில பொதுவான வழிமுறைகள் உள்ளன:
- முதலில் வருபவருக்கே முன்னுரிமை (FCFS): செயல்முறைகள் அவை வரும் வரிசையில் செயல்படுத்தப்படுகின்றன. செயல்படுத்துவது எளிது, ஆனால் ஒரு நீண்ட செயல்முறை முதலில் வந்தால், குறுகிய செயல்முறைகளுக்கு நீண்ட காத்திருப்பு நேரத்திற்கு வழிவகுக்கும் (கான்வாய் விளைவு).
- குறுகிய பணிக்கு முன்னுரிமை (SJF): குறுகிய செயல்பாட்டு நேரத்தைக் கொண்ட செயல்முறைகள் முதலில் செயல்படுத்தப்படுகின்றன. சராசரி காத்திருப்பு நேரத்தைக் குறைப்பதில் இது உகந்தது, ஆனால் செயல்பாட்டு நேரத்தை முன்கூட்டியே அறிந்திருக்க வேண்டும், இது பெரும்பாலும் சாத்தியமில்லை.
- முன்னுரிமை திட்டமிடல்: ஒவ்வொரு செயல்முறைக்கும் ஒரு முன்னுரிமை ஒதுக்கப்படுகிறது, மேலும் அதிக முன்னுரிமை கொண்ட செயல்முறை முதலில் செயல்படுத்தப்படுகிறது. குறைந்த முன்னுரிமை செயல்முறைகள் தொடர்ந்து உயர் முன்னுரிமை செயல்முறைகளால் முந்தப்பட்டால், இது பசி (starvation) நிலைக்கு வழிவகுக்கும்.
- ரவுண்ட் ராபின் (RR): ஒவ்வொரு செயல்முறைக்கும் ஒரு குறிப்பிட்ட நேரத் துண்டு (குவாண்டம்) செயல்படுத்த வழங்கப்படுகிறது. அந்த நேரத் துண்டிற்குள் செயல்முறை పూర్తి కాకపోతే, அது தயார்நிலை வரிசையின் பின்னுக்கு நகர்த்தப்படுகிறது. இது நியாயமானது மற்றும் பசியைத் தடுக்கிறது, ஆனால் நேரத் துண்டு மிகவும் சிறியதாக இருந்தால், கான்டெக்ஸ்ட் ஸ்விட்சிங் ஓவர்ஹெட் செயல்திறனைக் குறைக்கலாம்.
- பல நிலை வரிசை திட்டமிடல்: தயார்நிலை வரிசை பல வரிசைகளாகப் பிரிக்கப்பட்டுள்ளது, ஒவ்வொன்றும் அதன் சொந்த திட்டமிடல் வழிமுறையைக் கொண்டுள்ளது. செயல்முறைகள் அவற்றின் பண்புகளின் அடிப்படையில் வரிசைகளுக்கு ஒதுக்கப்படுகின்றன (உதாரணமாக, ஊடாடும் மற்றும் தொகுதி).
- பல நிலை பின்னூட்ட வரிசை திட்டமிடல்: செயல்முறைகள் வெவ்வேறு வரிசைகளுக்கு இடையில் நகரலாம். இது திட்டமிடுபவர் அவற்றின் நடத்தையின் அடிப்படையில் செயல்முறைகளின் முன்னுரிமையை மாறும் வகையில் சரிசெய்ய அனுமதிக்கிறது.
உதாரணம்: முறையே 24, 3, மற்றும் 3 மில்லி விநாடிகள் பர்ஸ்ட் நேரங்களைக் (செயல்படுத்தும் நேரம்) கொண்ட P1, P2 மற்றும் P3 ஆகிய மூன்று செயல்முறைகளைக் கவனியுங்கள். அவை P1, P2, P3 என்ற வரிசையில் வந்தால், FCFS திட்டமிடல் முதலில் P1 ஐ இயக்கும், பின்னர் P2, பின்னர் P3. சராசரி காத்திருப்பு நேரம் (0 + 24 + 27) / 3 = 17 மில்லி விநாடிகள் ஆக இருக்கும். இருப்பினும், நாம் SJF ஐப் பயன்படுத்தினால், செயல்முறைகள் P2, P3, P1 என்ற வரிசையில் செயல்படுத்தப்படும், மேலும் சராசரி காத்திருப்பு நேரம் (0 + 3 + 6) / 3 = 3 மில்லி விநாடிகள் ஆக இருக்கும் – இது ஒரு குறிப்பிடத்தக்க முன்னேற்றம்!
செயல்முறைகளுக்கு இடையேயான தொடர்பு (IPC)
செயல்முறைகளுக்கு இடையேயான தொடர்பு (IPC) செயல்முறைகள் ஒன்றுக்கொன்று தொடர்பு கொள்ளவும் ஒத்திசைக்கவும் அனுமதிக்கிறது. பல செயல்முறைகள் இணைந்து செயல்படும் சிக்கலான பயன்பாடுகளை உருவாக்குவதற்கு இது அவசியம்.
பொதுவான IPC வழிமுறைகள்:
- பகிரப்பட்ட நினைவகம்: செயல்முறைகள் ஒரு நினைவகப் பகுதியைப் பகிர்ந்து கொள்கின்றன, இது தரவை நேரடியாக அணுகவும் மாற்றவும் அனுமதிக்கிறது. ரேஸ் கண்டிஷன்களைத் தவிர்க்க கவனமாக ஒத்திசைவு தேவை.
- செய்தி அனுப்புதல்: செயல்முறைகள் ஒன்றுக்கொன்று செய்திகளை அனுப்புவதன் மூலம் தொடர்பு கொள்கின்றன. பகிரப்பட்ட நினைவகத்தை விட சிறந்த தனிமைப்படுத்தலை வழங்குகிறது, ஆனால் மெதுவாக இருக்கலாம்.
- பைப்ஸ் (Pipes): இரண்டு செயல்முறைகளுக்கு இடையே ஒரு திசை தொடர்பு சேனல். பொதுவாக தொடர்புடைய செயல்முறைகளுக்கு இடையேயான தொடர்புக்குப் பயன்படுத்தப்படுகிறது (உதாரணமாக, பெற்றோர் மற்றும் குழந்தை).
- பெயரிடப்பட்ட பைப்ஸ் (FIFOs): பைப்ஸ் போலவே இருக்கும், ஆனால் தொடர்பில்லாத செயல்முறைகளுக்கு இடையேயான தொடர்புக்குப் பயன்படுத்தப்படலாம்.
- செய்தி வரிசைகள்: செயல்முறைகள் ஒரு வரிசைக்கு செய்திகளை அனுப்பலாம் மற்றும் பெறலாம். ஒத்திசைவற்ற தொடர்பை வழங்குகிறது.
- சாக்கெட்ஸ் (Sockets): ஒரே கணினியில் அல்லது ஒரு நெட்வொர்க்கில் உள்ள செயல்முறைகளுக்கு இடையேயான தொடர்புக்கு ஒரு பல்துறை வழிமுறை. கிளையன்ட்-சர்வர் பயன்பாடுகள் மற்றும் விநியோகிக்கப்பட்ட கணினிகளுக்குப் பயன்படுத்தப்படுகிறது.
- சிக்னல்கள் (Signals): ஒரு நிகழ்வைப் பற்றி ஒரு செயல்முறைக்கு அறிவிக்க அனுப்பக்கூடிய ஒரு மென்பொருள் குறுக்கீடு (உதாரணமாக, முடித்தல் கோரிக்கை, பிழை நிலை).
உதாரணம்: ஒரு வலை சேவையகம் உள்வரும் கோரிக்கைகளை ஒரே நேரத்தில் கையாள பல செயல்முறைகளைப் பயன்படுத்தலாம். ஒவ்வொரு செயல்முறையும் ஒரு கோரிக்கையைக் கையாளலாம், மேலும் சர்வரின் நிலை குறித்த தரவைப் பகிர, செயல்முறைகள் பகிரப்பட்ட நினைவகம் அல்லது செய்தி அனுப்புதல் மூலம் தொடர்பு கொள்ளலாம்.
ஒத்திசைவு (Synchronization)
பல செயல்முறைகள் பகிரப்பட்ட வளங்களை அணுகும்போது, தரவு சிதைவு மற்றும் ரேஸ் கண்டிஷன்களைத் தடுக்க ஒத்திசைவை உறுதி செய்வது மிகவும் முக்கியம். ஒத்திசைவு வழிமுறைகள் செயல்முறைகளின் செயல்பாட்டை ஒருங்கிணைக்கவும் பகிரப்பட்ட தரவைப் பாதுகாக்கவும் வழிகளை வழங்குகின்றன.
பொதுவான ஒத்திசைவு நுட்பங்கள்:
- மியூடெக்ஸ் பூட்டுகள் (Mutex Locks): குறியீட்டின் ஒரு முக்கிய பகுதியைப் பாதுகாக்கப் பயன்படும் ஒரு பைனரி செமாஃபோர். ஒரு நேரத்தில் ஒரு செயல்முறை மட்டுமே மியூடெக்ஸ் பூட்டை வைத்திருக்க முடியும்.
- செமாஃபோர்கள் (Semaphores): மியூடெக்ஸ் பூட்டுகளின் ஒரு பொதுவான வடிவம், இது ஒரு குறிப்பிட்ட எண்ணிக்கையிலான வளங்களுக்கான அணுகலைக் கட்டுப்படுத்தப் பயன்படுகிறது.
- மானிட்டர்கள் (Monitors): பகிரப்பட்ட தரவு மற்றும் அதன் மீது செய்யக்கூடிய செயல்பாடுகளை உள்ளடக்கிய ஒரு உயர் நிலை ஒத்திசைவு அமைப்பு. பரஸ்பர விலக்கு மற்றும் காத்திருப்பு மற்றும் சமிக்ஞைக்கான நிபந்தனை மாறிகளை வழங்குகிறது.
- நிபந்தனை மாறிகள் (Condition Variables): ஒரு குறிப்பிட்ட நிபந்தனை உண்மையாக மாறும் வரை செயல்முறைகள் காத்திருக்க மானிட்டர்களுக்குள் பயன்படுத்தப்படுகின்றன.
- ஸ்பின்லாக்குகள் (Spinlocks): ஒரு வகையான பூட்டு, இதில் ஒரு செயல்முறை பூட்டு கிடைக்கிறதா என்று மீண்டும் மீண்டும் சரிபார்க்கிறது. குறுகிய முக்கிய பிரிவுகளுக்கு இது திறமையானதாக இருக்கலாம், ஆனால் பூட்டு நீண்ட நேரம் வைக்கப்பட்டிருந்தால் சிபியு நேரத்தை வீணாக்குகிறது.
உதாரணம்: பல செயல்முறைகளால் அதிகரிக்கப்படும் ஒரு பகிரப்பட்ட கவுண்டரைக் கவனியுங்கள். ஒத்திசைவு இல்லாமல், பல செயல்முறைகள் கவுண்டரின் மதிப்பைப் படித்து, அதை அதிகரித்து, மீண்டும் எழுதக்கூடும், இது தவறான முடிவுகளுக்கு வழிவகுக்கும். அதிகரிப்பு செயல்பாட்டைப் பாதுகாக்க ஒரு மியூடெக்ஸ் பூட்டைப் பயன்படுத்துவது, ஒரு நேரத்தில் ஒரு செயல்முறை மட்டுமே கவுண்டரை அணுக முடியும் என்பதை உறுதி செய்கிறது, இது ரேஸ் கண்டிஷன்களைத் தடுக்கிறது.
முட்டுக்கட்டை (Deadlock)
முட்டுக்கட்டை என்பது இரண்டு அல்லது அதற்கு மேற்பட்ட செயல்முறைகள் காலவரையின்றி தடுக்கப்படும்போது ஏற்படுகிறது, ஒவ்வொன்றும் மற்றொன்றால் வைக்கப்பட்டிருக்கும் ஒரு வளத்திற்காகக் காத்திருக்கிறது. இது ஒரு கணினியை முடக்கிவிடும் ஒரு கடுமையான பிரச்சனையாகும்.
முட்டுக்கட்டைக்கான நிபந்தனைகள்:
ஒரு முட்டுக்கட்டை ஏற்பட நான்கு நிபந்தனைகள் ஒரே நேரத்தில் பூர்த்தி செய்யப்பட வேண்டும் (காஃப்மேன் நிபந்தனைகள்):
- பரஸ்பர விலக்கு: குறைந்தபட்சம் ஒரு வளமாவது பகிர முடியாத முறையில் வைத்திருக்கப்பட வேண்டும்; அதாவது, ஒரு நேரத்தில் ஒரு செயல்முறை மட்டுமே அந்த வளத்தைப் பயன்படுத்த முடியும்.
- பிடித்து வைத்து காத்திருத்தல்: ஒரு செயல்முறை குறைந்தபட்சம் ஒரு வளத்தை வைத்திருக்க வேண்டும் மற்றும் தற்போது மற்ற செயல்முறைகளால் வைக்கப்பட்டிருக்கும் கூடுதல் வளங்களைப் பெறுவதற்காகக் காத்திருக்க வேண்டும்.
- முன்கூட்டியே பறிக்க முடியாமை: வளங்களை ஒரு செயல்முறையிலிருந்து வலுக்கட்டாயமாகப் பறிக்க முடியாது; ஒரு வளம் அதை வைத்திருக்கும் செயல்முறையால் தானாக முன்வந்து மட்டுமே வெளியிடப்பட முடியும்.
- வட்ட வடிவ காத்திருப்பு: காத்திருக்கும் செயல்முறைகளின் ஒரு தொகுப்பு {P0, P1, ..., Pn} இருக்க வேண்டும், அதாவது P0 ஆனது P1 வைத்திருக்கும் ஒரு வளத்திற்காகக் காத்திருக்கிறது, P1 ஆனது P2 வைத்திருக்கும் ஒரு வளத்திற்காகக் காத்திருக்கிறது, ..., Pn-1 ஆனது Pn வைத்திருக்கும் ஒரு வளத்திற்காகக் காத்திருக்கிறது, மற்றும் Pn ஆனது P0 வைத்திருக்கும் ஒரு வளத்திற்காகக் காத்திருக்கிறது.
முட்டுக்கட்டை கையாளும் நுட்பங்கள்:
முட்டுக்கட்டைகளைக் கையாள பல அணுகுமுறைகள் உள்ளன:
- முட்டுக்கட்டை தடுத்தல்: காஃப்மேன் நிபந்தனைகளில் குறைந்தபட்சம் ஒன்று ஏற்படாது என்பதை உறுதி செய்தல். உதாரணமாக, செயல்முறைகள் அனைத்து வளங்களையும் ஒரே நேரத்தில் கோர வேண்டும் அல்லது வளங்களை முன்கூட்டியே பறிக்க அனுமதிக்க வேண்டும்.
- முட்டுக்கட்டை தவிர்த்தல்: ஒரு முட்டுக்கட்டை நிலைக்குள் நுழைவதைத் தவிர்க்க வள ஒதுக்கீடு பற்றிய தகவல்களைப் பயன்படுத்துதல். பேங்கர்ஸ் வழிமுறை ஒரு பொதுவான உதாரணமாகும்.
- முட்டுக்கட்டையைக் கண்டறிந்து மீட்டெடுத்தல்: முட்டுக்கட்டைகள் ஏற்பட அனுமதித்து, பின்னர் அவற்றைக் கண்டறிந்து மீட்டெடுத்தல். மீட்டெடுப்பு என்பது செயல்முறைகளை முடிவுக்குக் கொண்டுவருவது அல்லது வளங்களை முன்கூட்டியே பறிப்பது ஆகியவற்றை உள்ளடக்கியிருக்கலாம்.
- முட்டுக்கட்டையைப் புறக்கணித்தல்: பிரச்சனையைப் புறக்கணித்துவிட்டு, அது ஏற்படாது என்று நம்புவது. இது விண்டோஸ் மற்றும் லினக்ஸ் உள்ளிட்ட பெரும்பாலான ஆப்பரேட்டிங் சிஸ்டம்களால் எடுக்கப்பட்ட அணுகுமுறையாகும், ஏனெனில் முட்டுக்கட்டை தடுப்பு மற்றும் தவிர்ப்பு செலவு மிக்கதாக இருக்கும்.
உதாரணம்: இரண்டு செயல்முறைகள், P1 மற்றும் P2, மற்றும் இரண்டு வளங்கள், R1 மற்றும் R2 ஆகியவற்றைக் கவனியுங்கள். P1 ஆனது R1 ஐ வைத்திருக்கிறது மற்றும் R2 க்காகக் காத்திருக்கிறது, அதே நேரத்தில் P2 ஆனது R2 ஐ வைத்திருக்கிறது மற்றும் R1 க்காகக் காத்திருக்கிறது. இது ஒரு வட்ட வடிவ காத்திருப்பை உருவாக்குகிறது, இது ஒரு முட்டுக்கட்டைக்கு வழிவகுக்கிறது. இந்த முட்டுக்கட்டையைத் தடுப்பதற்கான ஒரு வழி, செயல்முறைகள் செயல்பாட்டைத் தொடங்குவதற்கு முன்பு அனைத்து வளங்களையும் ஒரே நேரத்தில் கோர வேண்டும் என்பதாகும்.
நிஜ உலக உதாரணங்கள்
செயல்முறை மேலாண்மைக் கருத்துக்கள் உலகளவில் பல்வேறு ஆப்பரேட்டிங் சிஸ்டம்களில் பயன்படுத்தப்படுகின்றன:
- லினக்ஸ்: கம்ப்ளீட்லி ஃபேர் ஷெட்யூலர் (CFS) எனப்படும் ஒரு அதிநவீன திட்டமிடல் வழிமுறையைப் பயன்படுத்துகிறது, இது அனைத்து செயல்முறைகளுக்கும் நியாயமான சிபியு ஒதுக்கீட்டை வழங்குவதை நோக்கமாகக் கொண்டுள்ளது.
- விண்டோஸ்: பல முன்னுரிமை நிலைகளைக் கொண்ட ஒரு முன்னுரிமை அடிப்படையிலான திட்டமிடல் வழிமுறையைப் பயன்படுத்துகிறது.
- மேக்ஓஎஸ்: முன்னுரிமை அடிப்படையிலான திட்டமிடலை நேரப் பகிர்வுடன் இணைக்கும் ஒரு கலப்பின அணுகுமுறையைப் பயன்படுத்துகிறது.
- ஆண்ட்ராய்டு: லினக்ஸ் கெர்னலில் கட்டமைக்கப்பட்டுள்ளது, இது மொபைல் சாதனங்களுக்காக உகந்ததாக்கப்பட்ட இதே போன்ற செயல்முறை மேலாண்மை நுட்பங்களைப் பயன்படுத்துகிறது.
- நிகழ்நேர ஆப்பரேட்டிங் சிஸ்டம்ஸ் (RTOS): உட்பொதிக்கப்பட்ட அமைப்புகள் மற்றும் முக்கியமான பயன்பாடுகளில் பயன்படுத்தப்படுகின்றன, இவை பெரும்பாலும் பணிகளின் சரியான நேரத்தில் செயல்படுத்துதலை உறுதிசெய்யும் சிறப்புத் திட்டமிடல் வழிமுறைகளைப் பயன்படுத்துகின்றன. VxWorks மற்றும் FreeRTOS ஆகியவை எடுத்துக்காட்டுகள்.
முடிவுரை
செயல்முறை மேலாண்மை என்பது ஆப்பரேட்டிங் சிஸ்டம்களின் ஒரு முக்கியமான அம்சமாகும், இது பல்பணி, வளப் பகிர்வு மற்றும் திறமையான கணினி பயன்பாட்டை செயல்படுத்துகிறது. இந்த வழிகாட்டியில் விவாதிக்கப்பட்ட கருத்துக்களைப் புரிந்துகொள்வது ஆப்பரேட்டிங் சிஸ்டம்களுடன் பணிபுரியும், பயன்பாடுகளை உருவாக்கும் அல்லது கணினிகளை நிர்வகிக்கும் எவருக்கும் அவசியம். செயல்முறை நிலைகள், திட்டமிடல் வழிமுறைகள், செயல்முறைகளுக்கு இடையேயான தொடர்பு மற்றும் முட்டுக்கட்டை கையாளுதல் ஆகியவற்றில் தேர்ச்சி பெறுவதன் மூலம், நீங்கள் மேலும் வலுவான, திறமையான மற்றும் நம்பகமான மென்பொருள் அமைப்புகளை உருவாக்க முடியும். வெவ்வேறு அணுகுமுறைகளுக்கு இடையிலான சமரசங்களைக் கருத்தில் கொண்டு, உங்கள் குறிப்பிட்ட தேவைகளுக்கு மிகவும் பொருத்தமான நுட்பங்களைத் தேர்வுசெய்ய நினைவில் கொள்ளுங்கள்.
மேலும் அறிய
செயல்முறை மேலாண்மை பற்றிய உங்கள் புரிதலை ஆழப்படுத்த, பின்வரும் ஆதாரங்களை ஆராய்வதைக் கவனியுங்கள்:
- Operating System Concepts by Abraham Silberschatz, Peter Baer Galvin, and Greg Gagne
- Modern Operating Systems by Andrew S. Tanenbaum
- Coursera, edX, மற்றும் Udacity போன்ற தளங்களில் இருந்து ஆப்பரேட்டிங் சிஸ்டம்கள் குறித்த ஆன்லைன் படிப்புகள் மற்றும் பயிற்சிகள்.
- நீங்கள் விரும்பும் ஆப்பரேட்டிங் சிஸ்டத்தின் ஆவணங்கள் (உதாரணமாக, லினக்ஸ் மேன் பக்கங்கள், விண்டோஸ் ஏபிஐ ஆவணங்கள்).