ഇന്റര്‍ പ്രോസസ്സ് കമ്യൂണിക്കേഷന്‍ #0

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

എല്ലാ മള്‍­ട്ടി പ്രോ­സ­സ്സ് ഓപ്പ­റേ­റ്റി­ങ്ങ് സി­സ്റ്റ­ങ്ങ­ളി­ലും ഒന്നി­ല­ധി­കം പ്രോ­സ­സ്സു­കള്‍ ഒരേ സമ­യ­ത്ത് പ്ര­വര്‍­ത്തി­ക്കു­ന്നു­ണ്ടാ­കും. ചില അവ­സ­ര­ങ്ങ­ളില്‍ ഈ പ്രോ­സ­സ്സു­കള്‍­ക്ക് പര­സ്പ­രം വി­വ­ര­ങ്ങള്‍ കൈ­മാ­റേ­ണ്ട ആവ­ശ്യം വരും. ഇങ്ങ­നെ­യു­ള്ള വിവര കൈ­മാ­റ്റ­ങ്ങ­ളെ ഇന്റര്‍ പ്രോ­സ­സ്സ് കമ്യൂ­ണി­ക്കേ­ഷന്‍ എന്ന് പറ­യു­ന്നു. ഇതിന് വിവിധ മാര്‍­ഗ­്ഗ­ങ്ങള്‍ ഉണ്ട്. യൂ­ണി­ക്സ് ഓപ്പ­റേ­റ്റി­ങ്ങ് സി­സ്റ്റ­ത്തി­ന്റെ ആദ്യ­കാല കമേര്‍­ഷ്യല്‍ പതി­പ്പു­ക­ളില്‍ ഒന്നായ സി­സ്റ്റം വി (System V - വാ­യി­ക്കു­ന്ന­ത് സി­സ്റ്റം ഫൈവ്) ആണ് ഇക്കാ­ര്യ­ത്തില്‍ അടി­സ്ഥാന മാ­ന­ദ­ണ്ഡ­മാ­യി പരി­ഗ­ണി­ക്ക­പ്പെ­ടു­ന്ന­വ­യില്‍ ഒന്ന്. SysV യില്‍ ഉണ്ടാ­യി­രു­ന്ന ഐ പി സി മെ­ക്കാ­നി­സ­ങ്ങ­ളെ SysV IPC Mechanisms എന്ന് വി­ളി­ക്കു­ന്നു. അതില്‍ ഉണ്ടാ­യി­രു­ന്ന­തി­ല­ധി­കം സം­വി­ധാ­ന­ങ്ങള്‍ ഇന്ന് ലി­ന­ക്സി­ല­ട­ക്കം ഉണ്ട്.

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

  1. പൈപ്പുകള്‍ (pipe)
    1. പേരുള്ളവ (named pipes)
    2. പേരില്ലാത്തവ (un­named pipes)
  2. സോക്കറ്റുകള്‍ (sock­et)
  3. സിഗ്നലുകള്‍ (sig­nal)
  4. മെസ്സേജ് ക്യൂ (mes­sage queue)
  5. ഷെയേര്‍ഡ് മെമ്മറി (shared mem­o­ry)
  6. സെമാഫോറുകള്‍ (semaphore)

പൈ­പ്പു­കള്‍

വെ­ള്ള­വും മറ്റും കൊ­ണ്ടു­പോ­കു­ന്ന പൈ­പ്പു­കള്‍ പോലെ തന്നെ­യാ­ണ് ഇവ­യു­ടെ പ്ര­വര്‍­ത്ത­നം. ഇവ­ക്ക് രണ്ട് അഗ­്ര­ങ്ങള്‍ ഉണ്ടാ­യി­രി­ക്കും. ഒരു വശ­ത്തു­കൂ­ടി പോ­കു­ന്ന വി­വ­ര­ങ്ങള്‍ മറു­വ­ശ­ത്ത് ലഭ്യ­മാ­കു­ന്നു. പേ­രു­ള്ള പൈ­പ്പു­കള്‍ ആ പേര് അറി­യാ­വു­ന്ന പ്രോ­സ­സ്സു­കള്‍­ക്ക് എല്ലാം ഉപ­യോ­ഗ­ി­ക്കാം. എന്നാല്‍ പേ­രി­ല്ലാ­ത്തവ അതിനെ നിര്‍­മ്മി­ച്ച പ്രോ­സ­സ്സി­നും അതി­ന്റെ ചൈല്‍­ഡ് പ്രോ­സ­സ്സു­കള്‍­ക്കും മാ­ത്ര­മേ ലഭ്യ­മാ­വു­ക­യു­ള്ളു.

സോ­ക്ക­റ്റു­കള്‍

ബിഎസ്‌‌ഡി യൂ­ണി­ക്സില്‍ ആണ് സോ­ക്ക­റ്റു­കള്‍ ആദ്യ­മാ­യി വന്ന­ത്. ഇവ­യൂ­ടെ ഉപ­യോ­ഗം കമ്പ്യൂ­ട്ട­റു­കള്‍ തമ്മില്‍ നെ­റ്റ്‌‌വര്‍­ക്ക് ചെ­യ്യു­ന്ന­തില്‍ ആണ്. ഒരു സോ­ക്ക­റ്റി­നെ വിവിധ വയ­റു­കള്‍ ഘടി­പ്പി­ച്ച് വയ്ക്കാ­വു­ന്ന ഒരു പ്ല­ഗ­്ഗ­ു­മാ­യി താ­ര­ത­മ്യം ചെ­യ്യാം. ഒരേ കമ്പ്യൂ­ട്ട­റി­ലെ വിവിധ പ്രോ­ഗ­്രാ­മു­കള്‍­ക്ക് പര­സ്പ­രം സം­വ­ദി­ക്കാന്‍ സോ­ക്ക­റ്റു­കള്‍ ഉപ­യോ­ഗ­ി­ക്കാ­വു­ന്ന­താ­ണ്. എന്നാല്‍ ഇതിന് കെര്‍­ണ­ലി­ലെ നെ­റ്റ്‌‌വര്‍­ക്കി­ങ്ങ് ഭാ­ഗ­ത്തി­ന്റെ പിന്‍­തുണ ആവ­ശ്യ­മാ­ണ്.

സി­ഗ­്ന­ലു­കള്‍

സി­ഗ­്ന­ലു­കള്‍ വഴി പ്രോ­സ­സ്സു­കള്‍­ക്ക് പര­സ്പ­രം വി­വ­ര­ങ്ങള്‍­കൈ­മാ­റാന്‍ സാ­ധി­ക്കു­ക­യി­ല്ല. എന്നാല്‍ വിവിധ സാ­ഹ­ച­ര്യ­ങ്ങ­ളെ­ക്കു­റി­ച്ച് മറ്റ് പ്രോ­സ­സ്സു­കള്‍­ക്ക് അറി­യി­പ്പ് കൊ­ടു­ക്കാന്‍ സി­ഗ­്ന­ലു­കള്‍ വഴി സാ­ധി­ക്കും. ഒരു പ്രോ­ഗ­്രാ­മി­ന്റെ വിവിധ അവ­സ്ഥ­ക­ളെ­ക്കു­റി­ച്ച് ആ പ്രോ­ഗ­്രാ­മി­നെ അറി­യി­ക്കാന്‍ കെര്‍­ണ­ലി­നും സി­ഗ­്ന­ലു­കള്‍ വഴി സാ­ധി­ക്കും.

മെ­സ്സേ­ജ് ക്യൂ

അധികം വലി­പ്പ­മി­ല്ലാ­ത്ത വി­വ­ര­ങ്ങള്‍ പ്രോ­സ­സ്സു­കള്‍­ക്ക് പര­സ്പ­രം കൈ­മാ­റ്റം ചെ­യ്യാന്‍ മെ­സ്സേ­ജ് ക്യൂ വഴി സാ­ധി­ക്കും. പ്രോ­സ­സ്സു­കള്‍ ക്യൂ­വി­ലേ­ക്ക് മെ­സ്സേ­ജു­കള്‍ അയ­ക്കു­ക­യും ക്യൂ­വില്‍ നി­ന്ന് മെ­സ്സേ­ജു­കള്‍ സ്വീ­ക­രി­ക്കു­ക­യും ചെ­യ്യും.

ഷെ­യേര്‍­ഡ് മെ­മ്മ­റി

പ്ര­ധാന മെ­മ്മ­റി­യി­ലെ ഒരു ഭാഗം ഒന്നോ അതി­ല­ധി­ക­മോ പ്രോ­സ­സ്സു­കള്‍ പങ്കി­ട്ട് ഉപ­യോ­ഗ­ി­ക്കു­ന്ന രീ­തി­യി­ലാ­ണ് ഇതി­ന്റെ രൂ­പ­കല്‍­പ്പന. ഇത് വി­വ­ര­ങ്ങള്‍ പര­സ്പ­രം കൈ­മാ­റാന്‍ ഏറ്റ­വും വേ­ഗ­ത­യു­ള്ള രീ­തി­യാ­ണ്.

സെ­മാ­ഫോ­റു­കള്‍

ഒരു പൊ­തു­വായ വിഭവം വിവിധ പ്രോ­സ­സ്സു­കള്‍­ക്ക് ഒരേ സമയം ഉപ­യോ­ഗ­ി­ക്കേ­ണ്ട അവ­സ്ഥ­യു­ണ്ടാ­യാല്‍ ഒന്നി­നു പുറകെ ഒന്നാ­യി അവ­യ്ക്ക് ആ വി­ഭ­വ­ത്തെ ഉപ­യോ­ഗ­ി­ക്കാ­നു­ള്ള അവസരം കൊ­ടു­ക്കു­ന്ന­തി­നു­വേ­ണ്ടി­യു­ള്ള ഒരു സം­വി­ധാ­ന­മാ­ണി­ത്. ഉപ­യോ­ഗ­ി­ക്കേ­ണ്ടി­വ­രു­ന്ന ഒരു വി­ഭ­വ­ത്തെ മറ്റൊ­രു പ്രോ­സ­സ്സ് ഉപ­യോ­ഗ­ി­ക്കു­ന്നു­ണ്ടോ എന്ന് പരി­ശോ­ധി­ക്കാ­നും പ്രോ­സ­സ്സു­കള്‍­ക്ക് ഇവ ഉപ­യോ­ഗ­ി­ക്കാം. ബൈനറി സെ­മാ­ഫോര്‍, കൗ­ണ്ടി­ങ്ങ് സെ­മാ­ഫോര്‍ എന്ന് രണ്ട്‌ തര­ത്തി­ലു­ള്ള സെ­മാ­ഫോ­റു­കള്‍ ഉണ്ട്.

ലി­ന­ക്സ് അധി­ഷ്ഠിത സി­സ്റ്റ­ങ്ങള്‍ ഉപ­യോ­ഗ­ി­ക്കു­ന്ന­വര്‍­ക്ക് ipcs കമാ­ന്റ് ഉപ­യോ­ഗ­ി­ച്ച് സി­സ്റ്റ­ത്തില്‍ വിവിധ പ്രോ­സ­സ്സു­കള്‍ ഉപ­യോ­ഗ­ി­ച്ചു­കൊ­ണ്ടി­രി­ക്കു­ന്ന ഐ പി സി മെ­ക്കാ­നി­സ­ങ്ങ­ളെ­ക്കു­റി­ച്ചു­ള്ള വി­വ­ര­ങ്ങള്‍ കാ­ണാന്‍ സാ­ധി­ക്കും. ഈ കമാ­ന്റി­ന്റെ കൂ­ടു­തല്‍ വി­വ­ര­ങ്ങള്‍­ക്ക് man ipcs ഉപ­യോ­ഗ­ി­ക്കുക.

മു­ക­ളില്‍ പരാ­മര്‍­ശി­ച്ച ഐപിസി മെ­ക്കാ­നി­സ­ങ്ങ­ളില്‍ മെ­സ്സേ­ജ് ക്യൂ, ഷെ­യേര്‍­ഡ് മെ­മ്മ­റി, സെ­മാ­ഫോ­റു­കള്‍ എന്നിവ സി­സ്റ്റം വി ഐപിസി മെ­ക്കാ­നി­സ­ങ്ങ­ളാ­ണ്. സി­ഗ­്ന­ലു­കള്‍, പൈ­പ്പു­കള്‍ എന്നിവ പോ­സി­ക്സും സോ­ക്ക­റ്റു­കള്‍ ബി­എ­സ്ഡി സ്റ്റാന്‍­ഡേര്‍­ഡും ആണ്. ലി­ന­ക്സ് പിന്‍­തു­ട­രു­ന്ന­ത് പോ­സി­ക്സ് മാ­ന­ദ­ണ്ഡ­മാ­ണ്. സി­സ്റ്റം വി ഐപിസി മെ­ക്കാ­നി­സ­ങ്ങ­ളെ പൂര്‍­ണ്ണ­മാ­യും പോ­സി­ക്സ് നിര്‍­വ്വ­ചി­ക്കു­ന്നി­ല്ലെ­ങ്കി­ലും ഇവ­യെ­ല്ലാം ലി­ന­ക്സില്‍ ലഭ്യ­മാ­ണ്. ഇതില്‍ സോ­ക്ക­റ്റു­കള്‍ വളരെ വി­ശാ­ല­മായ ഒരു വി­ഷ­യ­മാ­യ­തി­നാല്‍ അവയെ മാ­ത്ര­മാ­യി മറ്റൊ­രു വി­ഭാ­ഗ­ത്തില്‍ പരി­ച­യ­പ്പെ­ടാം.

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