പ്രോഗ്രാം, പ്രോസസ്സ് #0

സുബിന്‍ പി. റ്റി on 29 മാർച്ച്, 2019

യൂണിക്സ്/ലിനക്സ് സിസ്റ്റങ്ങളിലെ ഫയല്‍ സിസ്റ്റങ്ങളെക്കുറിച്ചും ഫയല്‍ മാനേജ്‌‌മെന്റിനെക്കുറിച്ചും ഒരു ഏകദേശ ധാരണ കിട്ടിയിരിക്കും എന്ന് കരുതുന്നു. ഏതൊരു വിവിധോപയോഗ ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റത്തിലെയും സുപ്രധാനമായ ഭാഗമാണ് പ്രോസസ് മാനേജ്‌‌മെന്റ്. യൂണിക്സ്/ലിനക്സ് സിസ്റ്റങ്ങള്‍ ഇത് എങ്ങനെ കൈകാര്യം ചെയ്യുന്നു എന്ന് തുടര്‍ന്നുള്ള പോസ്റ്റുകളില്‍.

ആദ്യം തന്നെ പ്രോഗ്രാം, പ്രോസസ്സ്, ത്രെഡ് ഇവയൊക്കെ എന്താണെന്ന് നോക്കാം. ഒരു പ്രോഗ്രാം എന്നത് എക്സിക്യൂട്ട് ചെയ്യാന്‍ അല്ലെങ്കില്‍ പ്രവര്‍ത്തിപ്പിക്കാന്‍ സാധിക്കുന്ന ഒരു ഫയല്‍ ആണ്. യന്ത്രഭാഷയിലുള്ള നിര്‍ദ്ദേശങ്ങള്‍ അടങ്ങിയിരിക്കുന്ന ഈ ഫയലുകളില്‍ വിവരങ്ങള്‍ ക്രമീകരിക്കുന്നതിന് പ്രത്യേക രീതികള്‍ അവലംബിക്കുന്നു. ഓരോ ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റങ്ങളും ഓരോ തരത്തിലാണ് എക്സിക്യൂട്ടബിള്‍ ഫയലുകള്‍ രേഖപ്പെടുത്തുന്നത്. വിന്‍ഡോസില്‍ പോര്‍ട്ടബില്‍ എക്സിക്യൂട്ടബിള്‍ ഫോര്‍മാറ്റ് (PE), യൂണിക്സ്/ലിനക്സ് സിസ്റ്റങ്ങളില്‍ എക്സിക്യൂട്ടബിള്‍ ലിങ്കബിള്‍ ഫോര്‍മാറ്റ് (ELF) എന്നിവയാണ് പൊതുവേ ഉപയോഗിച്ച് വരുന്നത്. ഇതിനു പുറമേ a.out, COFF, HEX തുടങ്ങിയ നിരവധി ക്രമീകരണ രീതികളും ഉപയോഗത്തിലുണ്ട്.

പ്രോസസ്സ് എന്ന് പറയുന്നത് പ്രവര്‍ത്തന സജ്ജമായ അല്ലെങ്കില്‍ പ്രവര്‍ത്തിച്ചുകൊണ്ടിരിക്കുന്ന പ്രോഗ്രാമുകളെ ആണ്. ഇതിനായി ഡിസ്കില്‍ നിന്ന് പ്രോഗ്രാമുകളെ മൊത്തമായോ ഭാഗികമായോ പ്രധാന മെമ്മറിയിലേക്ക് (RAM) കൊണ്ടുവരേണ്ടതുണ്ട്. ഇവിടെയാണ് വിര്‍ച്ച്വല്‍ മെമ്മറി, സെഗ്‌‌മെന്റേഷന്‍, സ്വാപ്പിങ്ങ് തുടങ്ങിയവയൊക്കെ വരുന്നത്.

ത്രെഡ് എന്ന് പറയുന്നത് ഒരു പ്രോസസ്സിലെ തന്നെ സ്വതന്ത്രമായ ഒരു ഭാഗത്തെ ആണ്. ഒന്നിലധികം പ്രോസസറുകള്‍ ഉള്ള കമ്പ്യൂട്ടറുകളില്‍ ആണ് ഇവയുടെ ഉപയോഗം പ്രസക്തമാകുന്നത്. ഒരു പ്രോഗ്രാമിലെ തന്നെ പരസ്പരം ബന്ധപ്പെട്ടിരിക്കുന്നതും എന്നാല്‍ സ്വന്തം നിലയില്‍ പ്രവര്‍ത്തിക്കാന്‍ സാധിക്കുന്നതുമായ ഭാഗങ്ങളെ ത്രെഡ്ഡുകള്‍ ആക്കി മാറ്റുന്നത് വഴി അവയെ സമാന്തരമായി പ്രവര്‍ത്തിപ്പിക്കാനും പ്രോസസ്സിങ്ങ് വേഗത്തിലാക്കാനും സാധിക്കും. നമുക്ക് ഒരു വീഡിയോ പ്ലയര്‍ ഉദാഹരണമായി എടുക്കാം. ഒരു വീഡിയോ ഫയല്‍ ഡിസ്കില്‍ നിന്ന് വായിക്കുക, അതിലെ വീഡിയോ, ഓഡിയോ ഭാഗങ്ങള്‍ വേര്‍തിരിക്കുക, അവയെ ഡീകോഡ് ചെയ്യുക, സ്ക്രീനില്‍ ഫ്രെയിമുകള്‍ വരക്കുക, ശബ്ദ സംവിധാനത്തിലൂടെ ഓഡിയോഭാഗം കേള്‍പ്പിക്കുക എന്നിവയൊക്കെ അതിലെ വിവിധ ഭാഗങ്ങളാണ്. മീഡിയ പ്ലെയര്‍ പ്രോഗ്രാം ഒരൊറ്റ പ്രോസസ്സായി പ്രവര്‍ത്തിക്കുന്നു. മേല്‍പ്പറഞ്ഞ ഭാഗങ്ങള്‍ അവയിലെ വിവിധ ത്രെഡുകള്‍ ആയി പ്രവര്‍ത്തിക്കുന്നു.

ഒരു പ്രോസസറിന് ഒരു സമയത്ത് ഒരു പ്രോഗ്രാം മാത്രമേ പ്രവര്‍ത്തിപ്പിക്കാന്‍ സാധിക്കുകയുള്ളു. എന്നാലും നമ്മളൊക്കെ ഒന്നില്‍ കൂടുതല്‍ പ്രോഗ്രാമുകള്‍ ഒരേ സമയത്ത് പ്രവര്‍ത്തിപ്പിക്കാറുണ്ട്. ടൈപ്പ് ചെയ്തുകൊണ്ടിരിക്കുമ്പോള്‍ പാട്ട് കേള്‍ക്കുന്നതുപോലെ. ഒരേ സമയത്ത് പ്രവര്‍ത്തിച്ചുകൊണ്ടിരിക്കുന്ന വിവിധ പ്രോഗ്രാമുകളെ വേഗത്തില്‍ മാറ്റിക്കൊണ്ടിരിക്കുകയാണ് ഇവിടെയൊക്കെ ചെയ്യുന്നത്. ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റം ഓരോ പ്രോസസ്സുകളെയും ഒരു നിശ്‌‌ചിത സമയത്തേക്ക് പ്രവര്‍ത്തിക്കാന്‍ അനുവദിക്കുന്നു. അതിനു ശേഷം അടുത്ത പ്രോസസ്സിന് സി പി യു വിട്ടുകൊടുക്കുന്നു. ഇത് വളരെ വേഗത്തില്‍ സംഭവിക്കുന്നതിനാല്‍ പ്രോഗ്രാമുകളൊക്കെ ഒരേ സമയം പ്രവര്‍ത്തിക്കുന്നു എന്ന തോന്നല്‍ ഉപയോക്താവിന് ഉണ്ടാകുന്നു. ഷെഡ്യൂളിങ്ങ് എന്നാണ് ഈ പ്രക്രിയയുടെ പേര്. ഇതിന് വിവിധ രീതികള്‍ അവലംബിക്കാറൂണ്ട്. പ്രവര്‍ത്തിപ്പിക്കേണ്ട പ്രോഗ്രാമുകളുടെ വലിപ്പം, പ്രാധാന്യം എന്നിവക്കൊക്കെ അനുസരിച്ച് ഓരോ പ്രോഗ്രാമിനും പ്രവര്‍ത്തിക്കാനനുവദിക്കപ്പെടുന്ന സമയത്തില്‍ മാറ്റമുണ്ടാകാം.

ഇതിനോടൊപ്പം തന്നെ റിയല്‍ ടൈം ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റങ്ങളുടെ കാര്യം കൂടി പ്രതിപാദിക്കുന്നു. നാം സാധാരണയായി ഉപയോഗിക്കുന്ന ലിനക്സും വിന്‍ഡോസുമൊക്കെ ജെനറല്‍ പര്‍പ്പസ് ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റങ്ങള്‍ (ജിപിഒഎസ്) എന്ന വിഭാഗത്തിലുള്ളവയാണ്. ഇവയെല്ലാം പൊതുവായ കാര്യങ്ങള്‍ക്ക് വേണ്ടി ഉപയോഗിക്കപ്പെടുന്നു. എല്ലാ ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റങ്ങളുടെയും അടിസ്ഥാന പ്രവര്‍ത്തന രീതി പുറമേ നിന്നുണ്ടാകുന്ന സംഭവങ്ങളോട് (ഈവന്റുകള്‍) പ്രതികരിക്കുക എന്നതാണ്. ഉദാഹരണത്തിന് ഉപഭോക്താവ് ഒരു ഫയലിനു മുകളില്‍ മൗസ് ഉപയോഗിച്ച് ക്ലിക്ക് ചെയ്യുന്നു എന്ന് കരുതുക. ആ ഫയലിനെ പ്രവര്‍ത്തിപ്പിക്കാന്‍ ആവശ്യമായ പ്രോഗ്രാം തുറക്കേണ്ടതുണ്ട്. ഇതിനായി ആകെ വേണ്ടിവരുന്ന സമയത്തെ പ്രതികരണ സമയം എന്ന് വിളിക്കാം (Response time). ഈ പ്രതികരണ സമയം സാധാരണ രീതിയില്‍ അത്ര പ്രധാനമല്ല. ഇപ്പോള്‍ ഞാന്‍ ഒരു എംപി3 ഫയലിനെ തുറക്കുമ്പോള്‍ മൗസ് ക്ലിക്ക് ചെയ്യുന്ന സമയം മുതല്‍ ആ പാട്ട് പാടിത്തുടങ്ങുന്നത് വരെയുള്ള ഇടവേള അല്പം കൂടുതല്‍ ആണെങ്കില്‍ പോലും പ്രശ്നങ്ങള്‍ ഒന്നും ഉണ്ടാകുന്നില്ല. എന്നാല്‍ വിമാനങ്ങളിലോ മിസ്സൈല്‍ നിയന്ത്രണ സംവിധാനങ്ങളിലോ വാഹനങ്ങളുടെ ബ്രേക്ക്, ഇന്ധന നിയന്ത്രണ സംവിധാനം എന്നിവയിലൊക്കെ ഒരു ഈവന്റിനോടുള്ള പ്രതികരണം അല്പം താമസിച്ച് പോയാല്‍ ഉള്ള അവസ്ഥ ഒന്ന് ആലോചിച്ച് നോക്കൂ. ഇങ്ങനെയുള്ള സാഹചര്യങ്ങളില്‍ പ്രതികരണത്തിനായി എടുക്കുന്ന ഇടവേള വളരെ കുറവായിരിക്കണം. വേറൊരു രീതിയില്‍ പറഞ്ഞാല്‍ ഒരു നിശ്ചിത സമയത്തിനുള്ളില്‍ ഒരു സംഭവത്തോടുള്ള പ്രതികരണം ഉണ്ടായില്ലെങ്കില്‍ ആ സിസ്റ്റം തന്നെ നശിച്ച് പോകുന്ന അവസ്ഥ ഉണ്ടായേക്കും. ഈ ഇടവേള വളരെ കുറവായ/കുറവായിരിക്കേണ്ട സാഹചര്യങ്ങളില്‍ ഉപയോഗിക്കുന്നവയാണ് റിയല്‍ ടൈം ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റം (ആര്‍റ്റിഒഎസ്). ഇതില്‍ തന്നെ ഹാര്‍ഡ് ആര്‍റ്റിഒഎസ്സുകളും സോഫ്റ്റ് ആര്‍റ്റിഒഎസ്സുകളും ഉണ്ട്. ഒരു സംഭവത്തോടുള്ള പ്രതികരണം നിശ്ചിത സമയത്തില്‍ തന്നെ ഉണ്ടായില്ലെങ്കില്‍ കൂടി ചില സാഹചര്യങ്ങളില്‍ അത് പരാജയപ്പെട്ടു എന്ന് പറയാന്‍ സാധിക്കില്ല. ഇങ്ങനെയുള്ളവയാണ് സോഫ്റ്റ് ആര്‍റ്റിഒസ്സുകള്‍. നിശ്ചിത സമയത്തിനുള്ളില്‍ പ്രതികരണം ഉണ്ടായില്ലെങ്കില്‍ അതിനെ പൂര്‍ണ്ണ പരാജയം എന്ന് വിളിക്കുന്നവയാണ് ഹാര്‍ഡ് ആര്‍റ്റിഒഎസ്സുകള്‍. ഈ സമയനിഷ്ഠ നഷ്ടമായാല്‍ ഉണ്ടാകുന്ന നഷ്ടങ്ങളും വലുതായിരിക്കും.

ഈ ലേഖനം ശ്രീ സുബിന്‍ പി. റ്റി അദ്ദേഹത്തിന്റെ ബ്ലോഗില്‍ ക്രിയേറ്റീവ് കോമണ്‍സ് സിസി-ബൈ-എസ്.എ 3.0 ലൈസന്‍സ് പ്രകാരം പ്രസിദ്ധീകരിച്ചതാണ്.