యునిక్స్ ఆపరేటింగ్ సిస్టం పార్ట్ – 1

ఆపరేటింగ్ సిస్టం స్వరూపాన్ని బట్టి కేరెక్టర్ బేసెడ్, గ్రాఫిక్ బేసెడ్ అని రెండు విభాగాలుగా విభజించవచ్చు.  వీటికే కేరక్టర్ ఇంటర్ఫేస్(CUI), గ్రాఫిక్ ఇంటర్ఫేస్ (GUI) అని వ్యవహారంలో పేర్లున్నాయి.  పని చేసే తీరుని బట్టి చుస్తే సింగిల్ యుసేర్, మల్టీ టాస్కింగ్, మల్టీ యుసేర్, టైం షేరింగ్ అని 4  రకాలుగా వీటిని విభజించవచ్చు.  మల్టీ టాస్కింగ్ విధానంలో ఒక కంప్యూటర్ని అనేకులు వాడుతున్న ఏక కాలంలో సి పి యు ఒక ప్రోగ్రంనే రన్ చేస్తుంది.  సింగిల్ యూసర్ ఆపరేటింగ్ సిస్టం అనేది CPU  తో ఏక కాలం లో ఒక పని మాత్రమే చేయుంచుకో గలుగుతుంది.  అదే మల్టీ యూసర్ ఆపరేటింగ్ సిస్టం లో అయితే ఏక కాలం లో ఒకరికి మించి యుసేర్లు CPU ని వాడుకునే వీలు ఉంది.  అదే టైం లో షేరింగ్ వ్యవస్థ అయితే అనేక మంది యుసేర్లు CPU సమయాన్ని బాగస్వామ్య రీతిలో షేర్ చేసుకుంటారు.
యునిక్స్ అంటే ఏమిటి?
యునిక్స్ అనేది పైన చెప్పిన అన్నిటి మిశ్రమంగా చెప్పవచ్చు.  అంటే యునిక్స్ క్యారెక్టర్ బేసెడ్, గ్రాఫిక్ బేసెడ్, మల్టీ టాస్కింగ్, సింగిల్, మల్టీ యూజర్ , టైం షేరింగ్ ఆపరేటింగ్ సిస్టం.
ఇది ఎందుకు పాపులర్ అయిందో ఇక ప్రత్యేకంగా చెప్పక్కర్లేదు అనుకుంటాను.  ఇంకా చెప్పాలంటే యునిక్స్ ఒక్కటే అటు మెయిన్ ఫ్రేమ్స్ నుంచి ఇటు మైక్రో కంప్యూటర్ వరకు పని చేయగలదు.  దీని నెట్ వర్కింగ్, యునిక్స్ టు యునిక్స్ మెసేజిగ్, గ్రాఫిక్ ఇంటర్ఫేస్ వంటి ఎన్నో అంశాలు దేనికి వ్యాపార పరంగా చక్కని అవకాశాలు తెచ్చి పెట్టాయి.
పైగా యునిక్స్ ఆపరేటింగ్ సిస్టం చెందినసోర్స్ కోడ్ పూర్తి స్థాయిలో అందరికి అందుబాటులో ఉండడం ఒక విశేషం మైతే, ఇదంతా మొత్తం సి-ప్రోగ్రామింగ్ లాంగ్వేజ్ లోనే రూపుదిద్దుకోవడం మరో విశేషం.  అందు వల్లే అనేక మంది ఔత్సాహికులు, విద్యాసంస్థలు, వ్యాపార సంస్థలు సైతం ఆ సోర్స్ కోడ్ ని అందిపుచ్చుకుని, అదనం గా కొత్త కమాండ్లు, సౌకర్యాలు జోడించి యుసేర్లకు అందచేయడంలో యుసర్లు కూడా దీనిని వాడడానికి ఇష్టపడ్డారు.  ఇది ప్రోగ్రమర్లకు కొత్త వినూత్న అప్లికేషన్లు రూపొందించడానికి అందుబాటులో అనేక యుటిలిటీస్, టూల్స్ ని అందుబాటులోకి తెచ్చినంతగా మరే ఆపరేటింగ్ సిస్టం ఇవ్వలేదు.  AT&T బెల్ లాబొరేటరీ రూపొందిచిన ఈ ఆపరేటింగ్ సిస్టం V రిలీజ్ 4 అనేక అతి పెద్ద ప్రామాణికమైన వెర్షన్.  ఇది అటు AT&T, ఇటు ఇతర ప్రవేట్ సంస్థలు రూపొందిచిన అన్ని యునిక్స్ వెర్షన్లును ఏకం చేస్తు రూపొందింది.  AT&T  సిస్టం V రిలీజ్ 3, బర్క్లీ సాఫ్ట్ వేర్ డిస్ట్రిబ్యూషన్(BSD), మైక్రోసాఫ్ట్ రూపొదించిన జేనిక్స్, సన్ ఆపరేటింగ్ సిస్టం – వీటన్నిటిని యునిపై (ఏకీకృతం) చేస్తూ విడుదల చేసిన రిలీజ్ 4 ఎంతో ప్రజాదరణ పొందింది.
ఫోసిక్స్ –పోర్టబుల్ ఓపెన్ సిస్టం ఇంటర్ఫేస్ ఫర్ కంప్యూటర్ ఎన్విరాన్మెంట్, XOPEN-ఇంటర్నేషనల్ కాంసేర్ట్టియం ఫర్ కంప్యూటర్ వెండార్స్ అనే ప్రమాణాలను రూపొందించే కమిటీలు, వెండర్లు సంస్థలు నిర్దేశించిన రీతిలో ఈ ఆపరేటింగ్ సిస్టం రూపొందించిది.
యునిక్స్ ఇంటర్నేషనల్(UI) అనే వివిధ గ్రూప్ సంస్థకు ఎప్పటికపుడు దాని గురించిన సలహాలు, సూచనలు అందించేది.  వివిధ సంస్థలకు, AT&T సంస్థకు మధ్య లైసెన్సుకి చెందిన విషయాలను,  వ్యాపార విషయాలును కూడా ఇదే చూసేది. అదే విధంగా ఓపెన్ సాఫ్ట్ వారే ఫౌండేషను (OSF) అనే సంస్థను IBM, DEC, HP వంటి  సంస్థలు ఏర్పాటు చేసాయి, యునిక్స్ సిస్టం V కి దీటుగా యునిక్స్ ని రూపొందించే పనిని ఈ సంస్థకు అప్పచేప్పాయి, ఫలితంగా OSF/I అనే యునిక్స్ ని,  దాని యూసర్ ఇంటర్ఫేస్ MOTIF ని  ఈ సంస్థ రూపొందించింది.
 
యునిక్స్ నిర్మాణం
యునిక్స్ ఆపరేటింగ్ సిస్టం అనేది అనేక పొరలతో (Layers) కూడినది.  దేనినే ‘Layered Architecture’ అంటారు.  దీనిని ప్రధానంగా 4 కాంపొనెంట్ లతో రూపొందించారు.  అవి Kernal, Shell, File System, Utilities.
 
కెర్నల్ (Kernal)
కెర్నల్ అనేది యునిక్స్ ఆపరేటింగ్ సిస్టం కి గుండెకాయ, కీలకమయిన ఈ ప్రోగ్రాం కంప్యూటర్ వనరులను నియత్రించడం, యూజర్ కు  వారి ప్రోగ్రాంలు కు వాటిని కేటాయించడం చేస్తుంది.  అయితే కెర్నల్ నేరుగా యూజర్ తో ఇంటరాక్ట్ అవదు.  బదులుగా అది మరొక ఇంటరాక్టివ్ ప్రోగ్రాం అయిన షెల్ (Shell) అనే దానిని రన్ చేస్తుంది.  ప్రతి యూజర్ లాగిన్ అయినప్పటికి ఒక షెల్ ప్రోగ్రాం విడిగా రన్ అవుతుంది.  ఈ షెల్ వాడడానికి కొన్ని కమాండ్లుఉన్నాయి.  అవే షెల్ కమాండ్లు, కెర్నల్ కి , యూజర్ కి ఈ షెల్ వారధిగా పని చేస్తుంది.  టెర్మినల్ పై మనం టైపు చేసిన ఇన్ పుట్ స్వీకరించి, డైనమిక్ గా రన్ చేయడం, ప్రాసెస్ Execute  చేసినపుడు సింక్రనైజ్ చేయడం, తిరిగి అవుట్ పుట్ తెరపై చూపడం – అంతా ఈ కెర్నల్ చూసుకుంటుంది.
మనం కీ బోర్డు టైపు చేసినపుడు కెర్నల్ ఆ ఇన్ పుట్ స్వీకరించి తిరిగి షెల్ కి అందిస్తుంది.  అంతే కాని ‘షెల్’ నేరుగా కీ బోర్డు ని గాని,  ఇతర ఉపకరనలును గాని ఎక్సెస్ చేయదు.  కెర్నల్ ని ప్రోగ్రాములు కాల్ చేసి వాడుకునే సౌకర్యం ఉంది.  వితిన్ని ‘సిస్టం కాల్స్’ అంటారు.  సిస్టం కాల్స్ ద్వారా మన ప్రోగ్రాంలు లో కెర్నల్ ని కాల్ చేసి Opening, Closing, Writing వంటి ఫైల్ Operation  చేసుకోవచ్చు.  ఇవన్ని కెర్నల్ Routines , ఒక సిస్టం కాల్ ని వాడినపుడు కెర్నల్ ఆ సిస్టం కాల్ ప్రోగ్రంమ్ని రన్ చేస్తుంది.
సిస్టం కాల్స్ అనేవి ప్రాధమిక యూనిట్స్.  వీటి మీదే యునిక్స్ కంమండ్స్ మొత్తం రూపొందింది.  మనం ఏ కంప్యూటర్ ని వాడుతున్న ఒకే రకమయిన సిస్టం కాల్స్ నే వాడగలగడం యునిక్స్ విశిష్టత,  సిస్టం కాల్ పని తీరు యునిక్స్ ని ‘పోర్టబుల్’ గా చేసింది.
 
షెడ్యూలర్ (Scheduler):
కెర్నల్   షెడ్యూలర్ ఒక బాగం .  ఇది CPU  మెమరీ వివిధ ప్రాసెస్ లకు కేటాయిస్తుంది.  ఏ ప్రోగ్రాం ఎలా రన్ చేయాలో షెడ్యూల్ చేస్తుందన్నమాట.  ఒకరికి మించి యూజర్ కంప్యూటర్ ని వాడేటపుడు, ఒక యూసర్ ఒకటికి మించి ప్రోగ్రాం లను రన్ చేసేటపుడు షెడ్యూలర్ ప్రముఖ పాత్ర వహిస్తుంది.  వివిధ యూసర్ ప్రోగ్రాంలను ఒకే సారి మెమొరీలో రన్ కావడానికి తగిన మెమరీ ‘స్లైస్’ (ముక్కలు) లను కేటాయించడం దీని వంతు.
ఉదాహరణకు ముగ్గురు యుసర్లు a,b,c అనే మూడు ప్రోగ్రాంలను రన్ చేయాలను కున్నరనుకుందాం, అవి ముందు సిస్టం మెయిన్ మెమరీ లోడ్ అవుతాయి.  అప్పటి నుంచి అవి 3 ప్రాసెస్ లుగా వ్యవహరిస్తాయి.  షెడ్యూలర్ ముందు ‘a’ ని ఉం చేయనిచ్చి, కొంత పని జరిగాక ‘b’ ని రన్ చేయనిస్తుంది.  కొంతసేపు అది రన్ అయ్యాక ‘c’  ని రన్ చేస్తుంది.  ఇదంతా ఒక ‘సెకను’ లో కొంత సమయాన్ని అలా కేటాయించడం ద్వారా సాదిస్తుంది.  తిరిగి a ని , b ని, c ని – ఇలా ప్రోగ్రాంలు అన్నిటిని రన్ చేస్తుంది.  ఫైల్ షేరింగ్ ఆపరేటింగ్ సిస్టమ్స్ ఏక కలం లో 3 ప్రాసెస్ లను అనుమతించేవి.  అదే యునిక్స్ షెడ్యూలర్ లో కొన్ని వందల ప్రాసెస్ లను అనుమతించే వీలు ఉంది.
 
షెల్ (Shell)
యునిక్స్ కెర్నల్ గుండెకాయ అయితే ఈ షెల్ అక్షిజెన్, షెల్ ద్వారా యుసేర్ కెర్నల్ తో పనులు చేయించుకుంటాడు.  ఈ షెల్ ప్రాధమికంగా ఒక కమాండ్ ఇంటర్ప్రేటర్, టైపు చేసిన కంమండ్స్ ని చెల్ల స్వీకరించి, దానిని అర్ధం చేసుకుని కెర్నల్ కి రన్ చేయన్డానికి అప్పగిస్తుంది.  షెల్ తెసుకున్న కమాండ్ మొదటి పదం కమాండ్ గా ఇతర పాదాలను దాని పెరమిటర్ విలువలుగా అర్ధం చేసుకున్న షెల్ వాటిని కెర్నల్ కి అప్పచెప్పుతుంది.  కెర్నల్ వాటిని రన్ చేసిందా లేదా అని చూస్తుంది.  ప్రధాన ప్రాసెస్ ని పేరెంట్ ప్రాసెస్ అని, ఈ మాదిరి అందించిన కమాండ్ Execute చేయడానికి కెర్నల్ ప్రారంభించిన ప్రాసెస్ ని చైల్డ్ ప్రాసెస్ అని అంటారు.  ఈ చైల్డ్ ప్రాసెస్ పూర్తి అయిన తరువాత షెల్ ప్రాసెస్ తిరిగి పనిచేయడం అరభిస్తుంది.  షెల్ అనేది మూడు రకాలు కంమడ్స్ ని అనుమతిస్తుంది.  మొదటి రకం కమాండ్ అనేది షెల్ .  ఇందులో ‘Object Code’ ఉంది,  ఆ ఫైల్ Executable ఫైల్ గానే ఉంటుంది.  రెండవది కూడా Executable  ఫైల్ గానే ఉండి, అందులో కొన్ని షెల్ కంమండ్స్ వరుసగా ఉంటాయి.  వాటిని ఒక దాని తరువాత మరొకటి Execute  చేస్తుంది.  ఒక కమాండ్ execution   పూర్తి అయిన తరువాత రెండవది Execute చేస్తుంది షెల్.  ఇక మూడువధి ఇంటర్నల్ షెల్ కంమాండ్.
షెల్ Background లో ప్రాసెస్ లను రన్ చేసుకుంటూ, ఫోర్ గ్రౌండ్ విడిగా మరొక ప్రాసెస్ ని రన్ చేస్తూ మన సమయాన్ని,  కంప్యూటర్ సమయాన్ని సమర్ధవంతంగా వాడు కోవచ్చు.
షెల్ అనేది యుజర్ కి, కెర్నల్ కి వారధిగా ఫైల్ నమెస్ ని షార్ట్ కట్ లతో వెదికి పట్టుకోవడానికి-ఇలా ఎన్నో ఉపయోగాలను అందిస్తుంది.
అనేక షెల్ల్స్ఉంటాయి.  కాని ఒకే కెర్నల్ ఉంటుంది.  మల్టీ యూసర్ సౌకర్యాలును మనకు అందించడం లోను కిటుకు ఇదే.  షెల్ల్స్ విడి విడిగా ప్రోగ్రంమ్ లను కంట్రోల్ చేస్తే, కెర్నల్ వీటన్నిటిని కంట్రోల్ చేస్తుంది.