ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളിലെ പ്രോസസ്സ് മാനേജ്മെന്റിന്റെ പ്രധാന ആശയങ്ങളായ പ്രോസസ്സ് സ്റ്റേറ്റുകൾ, ഷെഡ്യൂളിംഗ് അൽഗോരിതങ്ങൾ, ഇന്റർ-പ്രോസസ്സ് കമ്മ്യൂണിക്കേഷൻ, ഡെഡ്ലോക്ക് കൈകാര്യം ചെയ്യൽ എന്നിവയെക്കുറിച്ച് അറിയുക. ഡെവലപ്പർമാർക്കും സിസ്റ്റം അഡ്മിനിസ്ട്രേറ്റർമാർക്കും അത്യാവശ്യമാണ്.
ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങൾ: പ്രോസസ്സ് മാനേജ്മെന്റിനെക്കുറിച്ചുള്ള ഒരു സമഗ്രമായ ഗൈഡ്
പ്രോസസ്സ് മാനേജ്മെന്റ് എന്നത് ഏതൊരു ആധുനിക ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെയും അടിസ്ഥാനപരമായ ഒരു ഘടകമാണ്. പ്രോസസ്സുകളുടെ നിർവ്വഹണം നിയന്ത്രിക്കുക, വിഭവങ്ങൾ അനുവദിക്കുക, സുഗമമായ മൾട്ടിടാസ്കിംഗ് ഉറപ്പാക്കുക എന്നിവ ഇതിൽ ഉൾപ്പെടുന്നു. ഈ ഗൈഡ് പ്രോസസ്സ് മാനേജ്മെന്റ് ആശയങ്ങൾ, സാങ്കേതികതകൾ, വെല്ലുവിളികൾ എന്നിവയെക്കുറിച്ചുള്ള വിശദമായ ഒരു അവലോകനം നൽകുന്നു. വിദ്യാർത്ഥികൾക്കും, ഡെവലപ്പർമാർക്കും, സിസ്റ്റം അഡ്മിനിസ്ട്രേറ്റർമാർക്കും, ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് മനസ്സിലാക്കാൻ താൽപ്പര്യമുള്ള ഏതൊരാൾക്കും വേണ്ടിയാണ് ഇത് രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്.
എന്താണ് ഒരു പ്രോസസ്സ്?
അടിസ്ഥാനപരമായി, ഒരു പ്രോസസ്സ് എന്നത് പ്രവർത്തിച്ചുകൊണ്ടിരിക്കുന്ന ഒരു പ്രോഗ്രാമിന്റെ ഉദാഹരണമാണ്. ഇത് പ്രോഗ്രാമിന്റെ കോഡിനേക്കാൾ കൂടുതലാണ്; ഇതിൽ പ്രോഗ്രാം കൗണ്ടർ, രജിസ്റ്ററുകൾ, വേരിയബിളുകൾ എന്നിവയുടെ നിലവിലെ മൂല്യങ്ങൾ ഉൾപ്പെടുന്നു. ഓരോ പ്രോസസ്സിനും അതിന്റേതായ മെമ്മറി സ്പേസ് ഉണ്ട്, ഇത് മറ്റ് പ്രോസസ്സുകളുമായി നേരിട്ട് ഇടപെടുന്നതിൽ നിന്ന് തടയുന്നു.
ഒരു പ്രോഗ്രാമിനെ ഒരു പാചകക്കുറിപ്പായും, ഒരു പ്രോസസ്സിനെ ആ വിഭവം യഥാർത്ഥത്തിൽ പാചകം ചെയ്യുന്ന പ്രവൃത്തിയായും ചിന്തിക്കുക. ഒരേ പ്രോഗ്രാം ഒരേസമയം പ്രവർത്തിപ്പിക്കുന്ന ഒന്നിലധികം പ്രോസസ്സുകൾ നിങ്ങൾക്ക് ഉണ്ടാകാം (ഉദാഹരണത്തിന്, ഒരു ടെക്സ്റ്റ് എഡിറ്ററിന്റെ ഒന്നിലധികം ഇൻസ്റ്റൻസുകൾ), ഓരോന്നിനും അതിന്റേതായ ഡാറ്റയും സ്റ്റേറ്റും ഉണ്ടായിരിക്കും.
ഒരു പ്രോസസ്സിന്റെ പ്രധാന ഘടകങ്ങൾ:
- പ്രോഗ്രാം കോഡ് (ടെക്സ്റ്റ് സെക്ഷൻ): എക്സിക്യൂട്ട് ചെയ്യേണ്ട നിർദ്ദേശങ്ങൾ.
- ഡാറ്റാ സെക്ഷൻ: ഗ്ലോബൽ വേരിയബിളുകളും ഡൈനാമിക് ആയി അനുവദിച്ച മെമ്മറിയും.
- സ്റ്റാക്ക്: ഫംഗ്ഷൻ കോളുകൾ, ലോക്കൽ വേരിയബിളുകൾ, റിട്ടേൺ വിലാസങ്ങൾ എന്നിവയ്ക്കായി ഉപയോഗിക്കുന്നു.
- ഹീപ്പ്: റൺടൈമിൽ ഡൈനാമിക് ആയി അനുവദിക്കുന്ന മെമ്മറി.
- പ്രോസസ്സ് കൺട്രോൾ ബ്ലോക്ക് (PCB): ഓരോ പ്രോസസ്സിനുമായി ഓപ്പറേറ്റിംഗ് സിസ്റ്റം പരിപാലിക്കുന്ന ഒരു ഡാറ്റാ സ്ട്രക്ചർ. ഇതിൽ പ്രോസസ്സ് ഐഡി, സ്റ്റേറ്റ്, പ്രോഗ്രാം കൗണ്ടർ, രജിസ്റ്റർ മൂല്യങ്ങൾ തുടങ്ങിയ വിവരങ്ങൾ അടങ്ങിയിരിക്കുന്നു.
പ്രോസസ്സ് സ്റ്റേറ്റുകൾ
ഒരു പ്രോസസ്സ് അതിന്റെ ജീവിതചക്രത്തിൽ വിവിധ സ്റ്റേറ്റുകളിലൂടെ കടന്നുപോകുന്നു. പ്രോസസ്സ് മാനേജ്മെന്റ് മനസ്സിലാക്കാൻ ഈ സ്റ്റേറ്റുകളെക്കുറിച്ച് അറിയേണ്ടത് അത്യാവശ്യമാണ്.
- പുതിയത് (New): പ്രോസസ്സ് സൃഷ്ടിക്കപ്പെടുന്നു.
- തയ്യാറായത് (Ready): പ്രോസസ്സ് ഒരു പ്രോസസ്സറിലേക്ക് അസൈൻ ചെയ്യാനായി കാത്തിരിക്കുന്നു.
- പ്രവർത്തിക്കുന്നത് (Running): നിർദ്ദേശങ്ങൾ എക്സിക്യൂട്ട് ചെയ്യപ്പെടുന്നു.
- കാത്തിരിക്കുന്നത് (Waiting/Blocked): പ്രോസസ്സ് എന്തെങ്കിലും ഒരു ഇവന്റ് സംഭവിക്കാൻ കാത്തിരിക്കുന്നു (ഉദാഹരണത്തിന്, I/O പൂർത്തിയാകാനോ ഒരു സിഗ്നൽ സ്വീകരിക്കാനോ).
- അവസാനിച്ചത് (Terminated): പ്രോസസ്സ് അതിന്റെ പ്രവർത്തനം പൂർത്തിയാക്കി.
ഈ സ്റ്റേറ്റുകൾ ഒരു പ്രോസസ്സിന്റെ ജീവിതചക്രത്തെ പ്രതിനിധീകരിക്കുന്നു, അവയ്ക്കിടയിലുള്ള മാറ്റങ്ങൾ കൈകാര്യം ചെയ്യുന്നത് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ ഉത്തരവാദിത്തമാണ്. ഉദാഹരണത്തിന്, ഒരു പ്രോസസ്സിന് ഒരു ഡിസ്കിൽ നിന്ന് ഡാറ്റ വായിക്കേണ്ടിവരുമ്പോൾ, അത് റണ്ണിംഗ് സ്റ്റേറ്റിൽ നിന്ന് വെയ്റ്റിംഗ് സ്റ്റേറ്റിലേക്ക് മാറുന്നു, I/O ഓപ്പറേഷൻ പൂർത്തിയാകുന്നതുവരെ. അതിനുശേഷം, അത് റെഡി സ്റ്റേറ്റിലേക്ക് മടങ്ങിവരുന്നു, വീണ്ടും പ്രവർത്തിക്കാനുള്ള ഊഴത്തിനായി കാത്തിരിക്കുന്നു.
പ്രോസസ്സ് കൺട്രോൾ ബ്ലോക്ക് (PCB)
ഒരു പ്രോസസ്സ് നിയന്ത്രിക്കാൻ ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന് ആവശ്യമായ എല്ലാ വിവരങ്ങളും അടങ്ങിയ ഒരു ഡാറ്റാ സ്ട്രക്ച്ചറാണ് പിസിബി. ഇത് ഒരു പ്രോസസ്സിന്റെ റെസ്യൂമെ പോലെയാണ്, ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന് അതിനെക്കുറിച്ച് അറിയേണ്ടതെല്ലാം ഇതിൽ അടങ്ങിയിരിക്കുന്നു.
ഒരു പിസിബി-യിലെ സാധാരണ ഉള്ളടക്കങ്ങൾ:
- പ്രോസസ്സ് ഐഡി (PID): പ്രോസസ്സിനുള്ള ഒരു അദ്വിതീയ ഐഡന്റിഫയർ.
- പ്രോസസ്സ് സ്റ്റേറ്റ്: പ്രോസസ്സിന്റെ നിലവിലെ അവസ്ഥ (ഉദാഹരണത്തിന്, റെഡി, റണ്ണിംഗ്, വെയ്റ്റിംഗ്).
- പ്രോഗ്രാം കൗണ്ടർ (PC): അടുത്തതായി എക്സിക്യൂട്ട് ചെയ്യേണ്ട നിർദ്ദേശത്തിന്റെ വിലാസം.
- സിപിയു രജിസ്റ്ററുകൾ: സിപിയു രജിസ്റ്ററുകളുടെ ഉള്ളടക്കം (അക്യുമുലേറ്ററുകൾ, ഇൻഡെക്സ് രജിസ്റ്ററുകൾ, സ്റ്റാക്ക് പോയിന്ററുകൾ, പൊതുവായ ആവശ്യങ്ങൾക്കുള്ള രജിസ്റ്ററുകൾ, കൂടാതെ ഏതെങ്കിലും കണ്ടീഷൻ-കോഡ് വിവരങ്ങൾ).
- മെമ്മറി മാനേജ്മെന്റ് വിവരങ്ങൾ: പ്രോസസ്സിന് അനുവദിച്ച മെമ്മറിയെക്കുറിച്ചുള്ള വിവരങ്ങൾ, ഉദാഹരണത്തിന് ബേസ്, ലിമിറ്റ് രജിസ്റ്ററുകൾ, പേജ് ടേബിളുകൾ, അല്ലെങ്കിൽ സെഗ്മെന്റ് ടേബിളുകൾ.
- അക്കൗണ്ടിംഗ് വിവരങ്ങൾ: ഉപയോഗിച്ച സിപിയു സമയം, സമയപരിധികൾ, അക്കൗണ്ട് നമ്പറുകൾ, ഉപയോഗിച്ച മെമ്മറിയുടെ അളവ് തുടങ്ങിയവ.
- I/O സ്റ്റാറ്റസ് വിവരങ്ങൾ: പ്രോസസ്സിന് അനുവദിച്ച I/O ഉപകരണങ്ങൾ, തുറന്ന ഫയലുകളുടെ ലിസ്റ്റ് തുടങ്ങിയവ.
പ്രോസസ്സ് ഷെഡ്യൂളിംഗ്
പ്രോസസ്സ് ഷെഡ്യൂളിംഗ് എന്നത് റെഡി ക്യൂവിലെ ഏത് പ്രോസസ്സിനാണ് സിപിയു അനുവദിക്കേണ്ടതെന്ന് തീരുമാനിക്കുന്ന പ്രവർത്തനമാണ്. സിപിയു ഉപയോഗം പരമാവധിയാക്കുക, ടേൺഎറൗണ്ട് സമയം കുറയ്ക്കുക, അല്ലെങ്കിൽ പ്രോസസ്സുകൾക്കിടയിൽ നീതി ഉറപ്പാക്കുക തുടങ്ങിയ ചില മാനദണ്ഡങ്ങൾക്കനുസരിച്ച് സിസ്റ്റത്തിന്റെ പ്രകടനം മെച്ചപ്പെടുത്തുകയാണ് ഷെഡ്യൂളിംഗിന്റെ ലക്ഷ്യം.
ഷെഡ്യൂളിംഗ് ക്യൂകൾ
ഓപ്പറേറ്റിംഗ് സിസ്റ്റം പ്രോസസ്സുകൾ കൈകാര്യം ചെയ്യാൻ ക്യൂകൾ ഉപയോഗിക്കുന്നു. സാധാരണ ക്യൂകളിൽ ഇവ ഉൾപ്പെടുന്നു:
- ജോബ് ക്യൂ: സിസ്റ്റത്തിലെ എല്ലാ പ്രോസസ്സുകളും അടങ്ങിയിരിക്കുന്നു.
- റെഡി ക്യൂ: എക്സിക്യൂട്ട് ചെയ്യാൻ തയ്യാറായതും സിപിയുവിനായി കാത്തിരിക്കുന്നതുമായ എല്ലാ പ്രോസസ്സുകളും അടങ്ങിയിരിക്കുന്നു.
- ഡിവൈസ് ക്യൂകൾ: ഓരോ I/O ഉപകരണത്തിനും ഓരോ ക്യൂ എന്ന നിലയിൽ ഒരു കൂട്ടം ക്യൂകൾ, ആ ഉപകരണത്തിനായി കാത്തിരിക്കുന്ന പ്രോസസ്സുകൾ അടങ്ങിയിരിക്കുന്നു.
ഷെഡ്യൂളറുകൾ
അടുത്തതായി പ്രവർത്തിക്കേണ്ട പ്രോസസ്സിനെ തിരഞ്ഞെടുക്കുന്ന സിസ്റ്റം സോഫ്റ്റ്വെയർ മൊഡ്യൂളുകളാണ് ഷെഡ്യൂളറുകൾ. പ്രധാനമായും രണ്ട് തരം ഷെഡ്യൂളറുകൾ ഉണ്ട്:
- ലോംഗ്-ടേം ഷെഡ്യൂളർ (ജോബ് ഷെഡ്യൂളർ): ജോബ് ക്യൂവിൽ നിന്ന് പ്രോസസ്സുകൾ തിരഞ്ഞെടുത്ത് അവയെ മെമ്മറിയിലേക്ക് ലോഡ് ചെയ്യുന്നു. ഇത് മൾട്ടിപ്രോഗ്രാമിംഗിന്റെ അളവ് (മെമ്മറിയിലുള്ള പ്രോസസ്സുകളുടെ എണ്ണം) നിയന്ത്രിക്കുന്നു. ഇത് ഷോർട്ട്-ടേം ഷെഡ്യൂളറിനേക്കാൾ കുറഞ്ഞ തവണ പ്രവർത്തിക്കുന്നു.
- ഷോർട്ട്-ടേം ഷെഡ്യൂളർ (സിപിയു ഷെഡ്യൂളർ): റെഡി ക്യൂവിൽ നിന്ന് ഒരു പ്രോസസ്സ് തിരഞ്ഞെടുത്ത് അതിന് സിപിയു അനുവദിക്കുന്നു. ഇത് വളരെ വേഗത്തിൽ പ്രവർത്തിക്കുന്നു, അതിനാൽ ഇത് വേഗതയുള്ളതായിരിക്കണം.
ചില സിസ്റ്റങ്ങളിൽ, ഒരു മീഡിയം-ടേം ഷെഡ്യൂളറും ഉണ്ട്, ഇത് മൾട്ടിപ്രോഗ്രാമിംഗിന്റെ അളവ് കുറയ്ക്കുന്നതിന് പ്രോസസ്സുകളെ മെമ്മറിയിൽ നിന്ന് (ഡിസ്കിലേക്ക്) പുറത്തേക്കും അകത്തേക്കും മാറ്റുന്നു. ഇതിനെ സ്വാപ്പിംഗ് എന്നും പറയുന്നു.
ഷെഡ്യൂളിംഗ് അൽഗോരിതങ്ങൾ
നിരവധി ഷെഡ്യൂളിംഗ് അൽഗോരിതങ്ങൾ നിലവിലുണ്ട്, ഓരോന്നിനും അതിന്റേതായ ഗുണങ്ങളും ദോഷങ്ങളുമുണ്ട്. അൽഗോരിതം തിരഞ്ഞെടുക്കുന്നത് സിസ്റ്റത്തിന്റെ പ്രത്യേക ലക്ഷ്യങ്ങളെ ആശ്രയിച്ചിരിക്കുന്നു. ഇവിടെ ചില സാധാരണ അൽഗോരിതങ്ങൾ നൽകുന്നു:
- ഫസ്റ്റ്-കം, ഫസ്റ്റ്-സെർവ്ഡ് (FCFS): പ്രോസസ്സുകൾ വരുന്ന ക്രമത്തിൽ എക്സിക്യൂട്ട് ചെയ്യപ്പെടുന്നു. നടപ്പിലാക്കാൻ എളുപ്പമാണ് എന്നാൽ ഒരു വലിയ പ്രോസസ്സ് ആദ്യം വന്നാൽ ചെറിയ പ്രോസസ്സുകൾക്ക് കൂടുതൽ സമയം കാത്തിരിക്കേണ്ടി വരും (കോൺവോയ് ഇഫക്റ്റ്).
- ഷോർട്ടസ്റ്റ് ജോബ് ഫസ്റ്റ് (SJF): ഏറ്റവും കുറഞ്ഞ എക്സിക്യൂഷൻ സമയമുള്ള പ്രോസസ്സുകൾ ആദ്യം എക്സിക്യൂട്ട് ചെയ്യപ്പെടുന്നു. ശരാശരി കാത്തിരിപ്പ് സമയം കുറയ്ക്കുന്നതിൽ ഇത് മികച്ചതാണ്, പക്ഷേ എക്സിക്യൂഷൻ സമയം മുൻകൂട്ടി അറിയേണ്ടതുണ്ട്, അത് പലപ്പോഴും സാധ്യമല്ല.
- പ്രയോറിറ്റി ഷെഡ്യൂളിംഗ്: ഓരോ പ്രോസസ്സിനും ഒരു പ്രയോറിറ്റി നൽകുന്നു, ഏറ്റവും ഉയർന്ന പ്രയോറിറ്റിയുള്ള പ്രോസസ്സ് ആദ്യം എക്സിക്യൂട്ട് ചെയ്യപ്പെടുന്നു. ഉയർന്ന പ്രയോറിറ്റിയുള്ള പ്രോസസ്സുകൾ തുടർച്ചയായി താഴ്ന്ന പ്രയോറിറ്റിയുള്ള പ്രോസസ്സുകളെ തടസ്സപ്പെടുത്തിയാൽ സ്റ്റാർവേഷന് (starvation) കാരണമായേക്കാം.
- റൗണ്ട് റോബിൻ (RR): ഓരോ പ്രോസസ്സിനും പ്രവർത്തിക്കാൻ ഒരു നിശ്ചിത സമയ സ്ലൈസ് (ക്വാണ്ടം) നൽകുന്നു. ആ സമയത്തിനുള്ളിൽ പ്രോസസ്സ് പൂർത്തിയായില്ലെങ്കിൽ, അതിനെ റെഡി ക്യൂവിന്റെ പിന്നിലേക്ക് മാറ്റുന്നു. ഇത് ന്യായയുക്തവും സ്റ്റാർവേഷൻ തടയുന്നതുമാണ്, പക്ഷേ കോൺടെക്സ്റ്റ് സ്വിച്ചിംഗ് ഓവർഹെഡ് കാര്യക്ഷമത കുറയ്ക്കും, സമയ സ്ലൈസ് വളരെ ചെറുതാണെങ്കിൽ.
- മൾട്ടിലെവൽ ക്യൂ ഷെഡ്യൂളിംഗ്: റെഡി ക്യൂവിനെ ഒന്നിലധികം ക്യൂകളായി വിഭജിക്കുന്നു, ഓരോന്നിനും അതിന്റേതായ ഷെഡ്യൂളിംഗ് അൽഗോരിതം ഉണ്ടായിരിക്കും. പ്രോസസ്സുകളെ അവയുടെ സ്വഭാവസവിശേഷതകളെ അടിസ്ഥാനമാക്കി ക്യൂകളിലേക്ക് നിയമിക്കുന്നു (ഉദാഹരണത്തിന്, ഇന്ററാക്ടീവ്, ബാച്ച്).
- മൾട്ടിലെവൽ ഫീഡ്ബാക്ക് ക്യൂ ഷെഡ്യൂളിംഗ്: പ്രോസസ്സുകൾക്ക് വ്യത്യസ്ത ക്യൂകൾക്കിടയിൽ മാറാൻ കഴിയും. ഇത് ഷെഡ്യൂളറിന് പ്രോസസ്സുകളുടെ സ്വഭാവമനുസരിച്ച് അവയുടെ പ്രയോറിറ്റി ഡൈനാമിക് ആയി ക്രമീകരിക്കാൻ അനുവദിക്കുന്നു.
ഉദാഹരണം: P1, P2, P3 എന്നീ മൂന്ന് പ്രോസസ്സുകൾ പരിഗണിക്കുക, അവയുടെ ബർസ്റ്റ് ടൈം (എക്സിക്യൂഷൻ സമയം) യഥാക്രമം 24, 3, 3 മില്ലിസെക്കൻഡ് ആണ്. അവ P1, P2, P3 എന്ന ക്രമത്തിൽ വന്നാൽ, FCFS ഷെഡ്യൂളിംഗ് പ്രകാരം ആദ്യം P1, പിന്നെ P2, പിന്നെ P3 എന്നിങ്ങനെ പ്രവർത്തിക്കും. ശരാശരി കാത്തിരിപ്പ് സമയം (0 + 24 + 27) / 3 = 17 മില്ലിസെക്കൻഡ് ആയിരിക്കും. എന്നാൽ, നമ്മൾ SJF ഉപയോഗിച്ചിരുന്നെങ്കിൽ, P2, P3, P1 എന്ന ക്രമത്തിലായിരിക്കും പ്രോസസ്സുകൾ എക്സിക്യൂട്ട് ചെയ്യപ്പെടുക, ശരാശരി കാത്തിരിപ്പ് സമയം (0 + 3 + 6) / 3 = 3 മില്ലിസെക്കൻഡ് ആയിരിക്കും – ഇത് ഒരു വലിയ മെച്ചപ്പെടുത്തലാണ്!
ഇന്റർ-പ്രോസസ്സ് കമ്മ്യൂണിക്കേഷൻ (IPC)
ഇന്റർ-പ്രോസസ്സ് കമ്മ്യൂണിക്കേഷൻ (IPC) പ്രോസസ്സുകളെ പരസ്പരം ആശയവിനിമയം നടത്താനും സിൻക്രൊണൈസ് ചെയ്യാനും അനുവദിക്കുന്നു. ഒരുമിച്ച് പ്രവർത്തിക്കുന്ന ഒന്നിലധികം പ്രോസസ്സുകൾ ഉൾക്കൊള്ളുന്ന സങ്കീർണ്ണമായ ആപ്ലിക്കേഷനുകൾ നിർമ്മിക്കുന്നതിന് ഇത് അത്യാവശ്യമാണ്.
സാധാരണ IPC മെക്കാനിസങ്ങൾ:
- ഷെയർഡ് മെമ്മറി: പ്രോസസ്സുകൾ ഒരു മെമ്മറി ഭാഗം പങ്കിടുന്നു, ഇത് ഡാറ്റ നേരിട്ട് ആക്സസ് ചെയ്യാനും പരിഷ്ക്കരിക്കാനും അവരെ അനുവദിക്കുന്നു. റേസ് കണ്ടീഷനുകൾ ഒഴിവാക്കാൻ ശ്രദ്ധാപൂർവ്വമായ സിൻക്രൊണൈസേഷൻ ആവശ്യമാണ്.
- മെസ്സേജ് പാസ്സിംഗ്: പ്രോസസ്സുകൾ പരസ്പരം സന്ദേശങ്ങൾ അയച്ചുകൊണ്ട് ആശയവിനിമയം നടത്തുന്നു. ഷെയർഡ് മെമ്മറിയേക്കാൾ മികച്ച ഐസൊലേഷൻ നൽകുന്നു, പക്ഷേ വേഗത കുറവായിരിക്കാം.
- പൈപ്പുകൾ: രണ്ട് പ്രോസസ്സുകൾക്കിടയിലുള്ള ഒരു ദിശയിലേക്കുള്ള ആശയവിനിമയ ചാനൽ. സാധാരണയായി ബന്ധപ്പെട്ട പ്രോസസ്സുകൾക്കിടയിലുള്ള (ഉദാഹരണത്തിന്, പാരന്റ്, ചൈൽഡ്) ആശയവിനിമയത്തിന് ഉപയോഗിക്കുന്നു.
- നെയിംഡ് പൈപ്പുകൾ (FIFOs): പൈപ്പുകൾക്ക് സമാനമാണ്, പക്ഷേ ബന്ധമില്ലാത്ത പ്രോസസ്സുകൾക്കിടയിലുള്ള ആശയവിനിമയത്തിന് ഉപയോഗിക്കാം.
- മെസ്സേജ് ക്യൂകൾ: പ്രോസസ്സുകൾക്ക് ഒരു ക്യൂവിലേക്ക് സന്ദേശങ്ങൾ അയയ്ക്കാനും സ്വീകരിക്കാനും കഴിയും. അസിൻക്രണസ് ആശയവിനിമയം നൽകുന്നു.
- സോക്കറ്റുകൾ: ഒരേ മെഷീനിലോ നെറ്റ്വർക്കിലുടനീളമോ ഉള്ള പ്രോസസ്സുകൾക്കിടയിലുള്ള ആശയവിനിമയത്തിനുള്ള ഒരു വൈവിധ്യമാർന്ന സംവിധാനം. ക്ലയിന്റ്-സെർവർ ആപ്ലിക്കേഷനുകൾക്കും ഡിസ്ട്രിബ്യൂട്ടഡ് സിസ്റ്റങ്ങൾക്കും ഉപയോഗിക്കുന്നു.
- സിഗ്നലുകൾ: ഒരു പ്രോസസ്സിന് ഒരു ഇവന്റ് അറിയിക്കാൻ (ഉദാഹരണത്തിന്, അവസാനിപ്പിക്കാനുള്ള അഭ്യർത്ഥന, എറർ കണ്ടീഷൻ) അയയ്ക്കാൻ കഴിയുന്ന ഒരു സോഫ്റ്റ്വെയർ ഇന്ററപ്റ്റ്.
ഉദാഹരണം: ഒരേസമയം വരുന്ന അഭ്യർത്ഥനകൾ കൈകാര്യം ചെയ്യാൻ ഒരു വെബ് സെർവർ ഒന്നിലധികം പ്രോസസ്സുകൾ ഉപയോഗിച്ചേക്കാം. ഓരോ പ്രോസസ്സിനും ഒരൊറ്റ അഭ്യർത്ഥന കൈകാര്യം ചെയ്യാൻ കഴിയും, സെർവറിന്റെ സ്റ്റേറ്റിനെക്കുറിച്ചുള്ള ഡാറ്റ പങ്കിടുന്നതിന് പ്രോസസ്സുകൾക്ക് ഷെയർഡ് മെമ്മറി വഴിയോ മെസ്സേജ് പാസ്സിംഗ് വഴിയോ ആശയവിനിമയം നടത്താം.
സിൻക്രൊണൈസേഷൻ
ഒന്നിലധികം പ്രോസസ്സുകൾ പങ്കിട്ട വിഭവങ്ങൾ ആക്സസ് ചെയ്യുമ്പോൾ, ഡാറ്റാ കറപ്ഷനും റേസ് കണ്ടീഷനുകളും തടയുന്നതിന് സിൻക്രൊണൈസേഷൻ ഉറപ്പാക്കേണ്ടത് അത്യാവശ്യമാണ്. സിൻക്രൊണൈസേഷൻ മെക്കാനിസങ്ങൾ പ്രോസസ്സുകളുടെ നിർവ്വഹണം ഏകോപിപ്പിക്കാനും പങ്കിട്ട ഡാറ്റ പരിരക്ഷിക്കാനും വഴികൾ നൽകുന്നു.
സാധാരണ സിൻക്രൊണൈസേഷൻ ടെക്നിക്കുകൾ:
- മ്യൂട്ടെക്സ് ലോക്കുകൾ: കോഡിന്റെ ഒരു ക്രിട്ടിക്കൽ സെക്ഷൻ സംരക്ഷിക്കാൻ ഉപയോഗിക്കാവുന്ന ഒരു ബൈനറി സെമാഫോർ. ഒരു സമയം ഒരു പ്രോസസ്സിന് മാത്രമേ മ്യൂട്ടെക്സ് ലോക്ക് പിടിക്കാൻ കഴിയൂ.
- സെമാഫോറുകൾ: പരിമിതമായ എണ്ണം വിഭവങ്ങളിലേക്കുള്ള പ്രവേശനം നിയന്ത്രിക്കാൻ ഉപയോഗിക്കാവുന്ന മ്യൂട്ടെക്സ് ലോക്കുകളുടെ ഒരു സാമാന്യവൽക്കരണം.
- മോണിറ്ററുകൾ: പങ്കിട്ട ഡാറ്റയും അതിൽ നടത്താവുന്ന പ്രവർത്തനങ്ങളും ഉൾക്കൊള്ളുന്ന ഒരു ഉയർന്ന തലത്തിലുള്ള സിൻക്രൊണൈസേഷൻ ഘടന. ഇത് മ്യൂച്വൽ എക്സ്ക്ലൂഷനും, കാത്തിരിക്കുന്നതിനും സിഗ്നൽ നൽകുന്നതിനുമുള്ള കണ്ടീഷൻ വേരിയബിളുകളും നൽകുന്നു.
- കണ്ടീഷൻ വേരിയബിളുകൾ: ഒരു പ്രത്യേക കണ്ടീഷൻ ശരിയാകുന്നതുവരെ പ്രോസസ്സുകളെ കാത്തിരിക്കാൻ അനുവദിക്കുന്നതിന് മോണിറ്ററുകൾക്കുള്ളിൽ ഉപയോഗിക്കുന്നു.
- സ്പിൻലോക്കുകൾ: ഒരു പ്രോസസ്സ് ലോക്ക് ലഭ്യമാണോ എന്ന് ആവർത്തിച്ച് പരിശോധിക്കുന്ന ഒരുതരം ലോക്ക്. ചെറിയ ക്രിട്ടിക്കൽ സെക്ഷനുകൾക്ക് കാര്യക്ഷമമാകാം, പക്ഷേ ലോക്ക് ദീർഘനേരം പിടിച്ചാൽ സിപിയു സമയം പാഴാക്കുന്നു.
ഉദാഹരണം: ഒന്നിലധികം പ്രോസസ്സുകൾ വർദ്ധിപ്പിക്കുന്ന ഒരു പങ്കിട്ട കൗണ്ടർ പരിഗണിക്കുക. സിൻക്രൊണൈസേഷൻ ഇല്ലാതെ, ഒന്നിലധികം പ്രോസസ്സുകൾക്ക് കൗണ്ടറിന്റെ മൂല്യം വായിക്കാനും അത് വർദ്ധിപ്പിക്കാനും തിരികെ എഴുതാനും കഴിയും, ഇത് തെറ്റായ ഫലങ്ങളിലേക്ക് നയിക്കുന്നു. ഇൻക്രിമെന്റ് ഓപ്പറേഷൻ പരിരക്ഷിക്കാൻ ഒരു മ്യൂട്ടെക്സ് ലോക്ക് ഉപയോഗിക്കുന്നത് ഒരു സമയം ഒരു പ്രോസസ്സിന് മാത്രമേ കൗണ്ടർ ആക്സസ് ചെയ്യാൻ കഴിയൂ എന്ന് ഉറപ്പാക്കുന്നു, ഇത് റേസ് കണ്ടീഷനുകൾ തടയുന്നു.
ഡെഡ്ലോക്ക്
ഡെഡ്ലോക്ക് സംഭവിക്കുന്നത് രണ്ടോ അതിലധികമോ പ്രോസസ്സുകൾ അനിശ്ചിതമായി തടസ്സപ്പെടുമ്പോഴാണ്, ഓരോന്നും മറ്റൊന്ന് കൈവശം വച്ചിരിക്കുന്ന ഒരു വിഭവത്തിനായി കാത്തിരിക്കുന്നു. ഒരു സിസ്റ്റത്തെ നിശ്ചലമാക്കാൻ കഴിയുന്ന ഒരു ഗുരുതരമായ പ്രശ്നമാണിത്.
ഡെഡ്ലോക്കിനുള്ള വ്യവസ്ഥകൾ:
ഒരു ഡെഡ്ലോക്ക് സംഭവിക്കാൻ ഒരേസമയം നാല് വ്യവസ്ഥകൾ പാലിക്കപ്പെടണം (കോഫ്മാൻ വ്യവസ്ഥകൾ):
- മ്യൂച്വൽ എക്സ്ക്ലൂഷൻ: കുറഞ്ഞത് ഒരു വിഭവം എങ്കിലും പങ്കിടാൻ കഴിയാത്ത രീതിയിൽ കൈവശം വയ്ക്കണം; അതായത്, ഒരു സമയം ഒരു പ്രോസസ്സിന് മാത്രമേ ആ വിഭവം ഉപയോഗിക്കാൻ കഴിയൂ.
- ഹോൾഡ് ആൻഡ് വെയ്റ്റ്: ഒരു പ്രോസസ്സ് കുറഞ്ഞത് ഒരു വിഭവം കൈവശം വയ്ക്കുകയും നിലവിൽ മറ്റ് പ്രോസസ്സുകൾ കൈവശം വച്ചിരിക്കുന്ന അധിക വിഭവങ്ങൾക്കായി കാത്തിരിക്കുകയും വേണം.
- നോ പ്രീഎംപ്ഷൻ: ഒരു പ്രോസസ്സിൽ നിന്ന് വിഭവങ്ങൾ ബലമായി പിടിച്ചെടുക്കാൻ കഴിയില്ല; ഒരു വിഭവം അത് കൈവശം വച്ചിരിക്കുന്ന പ്രോസസ്സ് സ്വമേധയാ വിട്ടുകൊടുക്കുമ്പോൾ മാത്രമേ റിലീസ് ചെയ്യാൻ കഴിയൂ.
- സർക്കുലർ വെയ്റ്റ്: {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
- ആൻഡ്രൂ എസ്. ടാനെൻബോമിന്റെ Modern Operating Systems
- Coursera, edX, Udacity പോലുള്ള പ്ലാറ്റ്ഫോമുകളിൽ നിന്നുള്ള ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളെക്കുറിച്ചുള്ള ഓൺലൈൻ കോഴ്സുകളും ട്യൂട്ടോറിയലുകളും.
- നിങ്ങൾ തിരഞ്ഞെടുക്കുന്ന ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ ഡോക്യുമെന്റേഷൻ (ഉദാഹരണത്തിന്, ലിനക്സ് മാൻ പേജുകൾ, വിൻഡോസ് എപിഐ ഡോക്യുമെന്റേഷൻ).