Friday, August 30, 2013

కంప్యూటర్ పని చేసే విధానం


 కంప్యూటర్ పని చేసే విధానం ఏమిటి? 

వేమూరి వేంకటేశ్వరరావు

1. ఉపోద్ఘాతం 

కంప్యూటర్ సమాచారాన్ని బక్షించి, మర్దనా చేసి, రంగరించి, జీర్ణించికుని, కొత్త సమాచారాన్ని మనకి ఇస్తుందని మనలో చాలామందికి తెలుసు. ఈ  కార్యక్రమం ఎలా జరుగుతుందో చూద్దాం.  ఇది అంత తేలికగా అర్థం ఆయే అంశం కాదు. ఒకటికి రెండు సార్లు మనస్సు లగ్నం చేసి చదివితేకానీ అర్థం కాకపోవచ్చు. 

మచ్చుకి ఈ ప్రశ్నలు చూడండి: బయట ఎన్ని డిగ్రీలు వేడిగా ఉంది? కారు ఎంత జోరుగా పరిగెడుతోంది? ఫలానా వాడి వయస్సు ఎంత? సాధారణంగా ఈ రకం ప్రశ్నలకి నిర్దిష్టంగా సమాదానాలు చెప్పడం కుదరదు. వయస్సు ఎంత అంటే ఏ 26 అనో 33 అనో చెబుతాం. చిన్న పిల్లలని అడిగితే మూడున్నర ఏళ్లు అని చెప్పినా ఆశ్చర్యపోము. కాని నిజానికి మన వయస్సు క్షణక్షణానికీ పెరుగుతూ ఉంటుంది. కాని మనం సాధారణంగా “నా వయస్సు 33 ఏళ్ల, ఆరు నెలల, మూడు రోజుల, ఎనిమిది గంటల, మూడు నిమిషాల,…. అంటూ చెప్పం. వయస్సే కాదు. ఈ మధ్య మనవాళ్లు పేర్లని కూడ కత్తిరిస్తునారు. రంగనాధం కాస్తా క్లుప్తంగా “రేంగ్” అవుతాడు. రాయుడు ఫేషనబుల్‌గా “రే” అవుతాడు, అపరాజిత కాస్తా “జీతా” అవుతుంది. ఇలా సమాచారాన్ని కత్తిరించి కుదిమట్టంగా గుళికలలా చెయ్యడాన్ని “గుళికీకరించడం” (quantization) అందాం. ఇటుపైన ఉష్ణోగ్రత, వయస్సు, వేళ, మొదలైనవి కంప్యూటర్‌లోకి ఎక్కించవలసి వచ్చినప్పుడు వాటిని కత్తిరించి, గుళికీకరించి వాడదాం. గుళికీకరించగా వచ్చిన సంఖ్యలని అదే పళంగా కంప్యూటర్ వాడుకోలేదు. ఉదాహరణకి 33.14 అనే సంఖ్యనే తీసుకుందాం. దీన్ని గుళికీకరించి 33 చేసి ఆ పళంగా కంప్యూటరుకి ఇస్తే దానికి అర్థం కాదు. అందుకని ఆ 33 ని 100001 అని ఒకట్లు, సున్నలు ఉన్న పద్ధతిలో రాసి కంప్యూటర్‌కి ఇవ్వడం ఒక పద్ధతి. 

2. టూకీగా వర్ణన 

మనం కంప్యూటర్‌లో దత్తాంశాలు (data), ఆదేశాలు (instructions or commands) దాచినప్పుడు వాటిని ఎక్కడ దాచేమో తెలియాలి కదా. అందుకని కొట్టు (store or memory) అనే గదిని అరల పెట్టెలా ఊహించుకుందాం. అంటే, పోస్టాఫీసులో ఉత్తరాలు బట్వాడా చేసే బీరువాలా కాని, పోపు సామానులు దాచుకునే పెట్టెలా కాని ఉంటుందని ఊహించుకుందాం. ప్రతి “అర” కి ఒక చిరునామా లేదా విలాసం (address) ఉంటుంది. ప్రతి అర ఒక అష్టా (byte) పొడవు ఉంటుంది అని కూడ ఊహించుకుందాం. అంటే, ప్రతి అర లోనూ 8 ద్వింకములు (ద్వియాంశ సంఖ్యలు లేదా bits) పొడుగున్న సంఖ్య పడుతుంది. ఇలాంటి అరలు 1024 ఉంటే వాటిల్లో సున్న నుండి 1023 వరకు, మొత్తం 1024 ఏకైక ద్వియాంశ సంఖ్యలని దాచవచ్చు. కనుక అష్టా పొడుగున్న ఒక  అరల పెట్టేలో  0, 1, 2, 3, 4,…, 9 అనే అంకెలు, A, B, C, D, …, Z అనే  పెద్ద బడిలోని ఇంగ్లీషు అక్షరాలు, a, b, c, d, …, z అనుకుంటూ చిన్న బడిలోని అక్షరాలు, !, @, $, ^, &, *, (, ), _ , +, -, /, <, >, ? వంటి చిహ్నాలు సునాయాసంగా దాచవచ్చు. ఈ శాల్తీ (character) లు అన్నీ కలుపుకున్నా 1024 కంటె తక్కువే ఉంటాయి కనుక ఇవి సునాయాసంగా మన కొట్లో పడతాయి. పట్టగా ఇంకా ఖాళీలు కూడ మిగిలిపోతాయి. ఇదే పనిని తెలుగు అక్షరాలతో చెయ్యాలంటే 1024 కంటే ఎక్కువ అరలు ఉన్న పెద్ద పెట్టె కావలసి ఉంటుంది. 

ఇప్పుడు మనం అంతా ఒక ఒప్పందానికి వద్దాం. ఏమిటా ఒప్పందం?  0 ని 0000 0000 గాను, A ని 01000 0001 గాను, M ని 1101 0101 గాను అనుకుంటూ, కుంచికపలక (keyboard) మీద కనిపించే ప్రతి శాల్తీని ఒక ఏకైక పద్ధతిలో, ద్వియాంశ మాల (binary string) రూపంలో రాద్దాం. అలా రాసినప్పుడు కుంచికపలక మీద ఉన్న కొన్ని శాల్తీలు ఎలా ఉంటాయో ఈ దిగువ చూపిస్తున్నాను. దీనినే ASCII code అంటారు. ఈ సున్నలని, ఒకట్లని పదే పదే రాయడం కష్టం కనుక వీటిని షోడశాంశలో ఎలా రాయవచ్చో కూడ చూపించేను.

దశాంశ ద్వియాంశ షోడశాంశ

0      0000 0000     00
1      0000 0001     01
2      0000 0010     02
A      0100 0001    41
B      0100 0010    42
M      1101 0101   D5
a      0110 0001     61
b      0110 0010     62
.      ...                    ...
.      ...                    ...

ఉదాహరణకి చాల చిన్న కంప్యూటర్‌లలో “ముద్రాపకి” (printer) విలాసం షోడశాంశలో 378 అయి ఉండడం రివాజుగా వస్తూన్న ఆచారం. అంటే మనం అచ్చు కొట్టవలసిన అక్షరాన్ని ఈ విలాసం ఉన్న గదిలో దాచి, “ఇప్పుడు ముద్రించు” అని ఆదేశం ఇచ్చేమంటే కంప్యూటరు తిన్నగా 378 విలాసం ఉన్న గదిలోకి వెళ్లి, అక్కడ ఏది కనిపిస్తే దాని నకలు తీసుకుని ఆ నకలుని ముద్రాపకి కి పంపుతుంది. ఇదీ టూకీగా కంప్యూటర్ పని చేసే విధానం.

3. విపులంగా వర్ణన 

ఇప్పుడు కంప్యూటరు ఎలా పని చేస్తుందో మరి కొంచెం వివరంగా చెప్పడానికి ఒక చిన్న ఉదాహరణతో కథ నడిపిస్తాను. ఈ వివరణ ఒకటికి రెండు సార్లు చదివితే కాని గభీమని అర్థం కాదు. కొంచెం ఓపిక పట్టి చదవాలి. ఓపిక పట్టి చదివినా అర్థం కాకపోతే కంగారు పడకండి. సాంకేతిక రంగంలో పదార్థం ఒకటికి పది సార్లు చదివితేకాని అర్థం కాదు. 

ఒక కథో, వ్యాసమో రాసే ఉద్దేశంతో కంప్యూటర్ ఎదురుగా కూర్చుని, మీటలపలక (keyboard) మీద M అనే ఇంగ్లీషు అక్షరం ఉన్న మీట లేదా బొత్తం (key) నొక్కేమని అనుకుందాం. అప్పుడు ఆ M అనే అక్షరం తెర మీద కనిపించడానికి ఎంత తతంగం ఉందో చవి చూద్దాం.

1. మీటలపలక మీద ఒక బొత్తం నొక్కినప్పుడు ఈ దిగువ చెప్పిన సంఘటనలు, ఒక దాని తరువాత మరొకటి, జరుగుతాయి. సాంకేతిక పదజాలంతో కూడిన ఈ వర్ణన చదవగానే అర్థం కాకపోతే కంగారు పడవద్దు. ఈ వివరణ ఇంగ్లీషులో రాసినా గభీమని అర్థం కాదు; ఎందుకంటే భావజాలం కొత్తది కావడం వల్ల.

2. మీటలపలక ఒక విద్యుత్ వాకేతం (signal) ని కంప్యూటర్ పెట్టెలో ఉన్న అనేకమైన విభాగాలలో ఒక విభాగానికి పంపుతుంది. వాకేతం అంటే వార్తకి సంకేతం. ఈ సందర్భంలో ఈ వాకేతాన్ని "వీక్షక ప్రతీక" (scan code) అంటారు. M కి బదులు 6 ఉన్న బొత్తాన్ని నొక్కితే మరొక వాకేతం (అంటే మరొక scan code) పుడుతుంది. అంటే మనం నొక్కే ప్రతి బొత్తానికి ఒక ఏకైక (unique) వీక్షక ప్రతీక కేటాయించబడి ఉంటుందన్న మాట. సర్వసాధారణంగా ఈ స్కేన్ కోడ్ కి ASCII కోడు ఉపయోగించడం జరుగుతుంది. ఇదే సందర్భంలో మనం తెలుగు అక్షరాలు వాడితే ఈ వీక్షక ప్రతీక UNICODE  అవుతుంది. (ఒక వాకేతాన్ని అంకెల రూపంలో కానీ చిహ్నం రూపంలో కానీ  రాసినప్పుడు దానిని మనం ప్రతీక అని తెలుగులోనూ  “కోడు” అని ఇంగ్లీషులోను అంటున్నాం.)

3. కంప్యుటర్ పెట్టె లోపల ఈ వీక్షక ప్రతీక (స్కేన్ కోడ్) ని అర్థం చేసుకో గలిగే స్థోమత గల గోరంత పరిమాణం గల చిన్న సిలికాన్ చితుకు (chip) ఉంటుంది. ఈ చితుకు చూడడానికి చితికిపోయిన చిల్లపెంకులా కాని, పలక ముక్కలా కాని ఉంటుంది. ఈ చితుకులో, కంటికి కనబడని పరిమాణంలో, వందలాది ట్రాన్‌సిస్టర్లు ఉంటాయి. ఈ ట్రాన్సిస్టర్ల సహాయంతో ఈ చితుకు మీటలపలక కార్యకలాపాలని నియంత్రిస్తుంది కనుక ఈ చితుకుని “మీటలపలక నియంత్రకి” (keyboard controller) అంటారు. ఈ చితుకు మన  స్కేన్ కోడ్ ని చదివి, అర్థం చేసుకుని, M అనే అక్షరం ఉన్న మీట మనం నొక్కేమని నిర్ద్వందంగా నిర్ధారిస్తుంది.

4. అప్పుడు ఆ వీక్షక ప్రతీక ని ఒక అర లో తాత్కాలికంగా దాచడం జరుగుతుంది.  ఇలా తాత్కాలికంగా దాచుకుందికి వాడే అరలని ఇంగ్లీషులో “బఫ్ఫర్” (buffer) అంటారు. దీనిని తెలుగులో మధ్యస్థి అని కానీ నిథానకం అని కానీ అనొచ్చు. ఈ బఫ్ఫర్ అనే ఇంగ్లీషు మాట అనేక రంగాల్లో వస్తూ ఉంటుంది. రెండు పెద్ద రాజ్యాల మధ్య ఉండే బడుగు దేశాలని “బఫ్ఫర్” అనొచ్చు. భారతదేశం, చైనాల మధ్య ఉన్న నేపాలు, భూటాను బఫ్ఫర్ రాజ్యాలు.  మందు తీక్షణతని అదుపులో పెట్టడానికి వాడే ఘటక ద్రవ్యాన్ని  బఫ్ఫర్ అంటారు. నేను చిన్నప్పుడు తరగతిలో కూర్చుని విన్న పాఠాన్ని చిత్తు పుస్తకంలో రాసుకుని ఇంటికొచ్చి “మంచి పుస్తకం” లో తిరగ రాసుకునేవాడిని; ఇక్కడ చిత్తు పుస్తకం బఫ్ఫర్ లాంటిది. మన సందర్భంలో బఫ్ఫర్ అంటే “చిత్తు కొట్టు” లేదా “తాత్కాలికంగా వాడుకుంటున్న స్ధలం.” మనం వాడుతూన్న ఉదాహరణలో M అనే అక్షరాన్ని నొక్కేము కనుక, M యొక్క ASCII కోడు D5 కనుక, చిత్తు పలక మీద D5, (అనగా ద్వియాంశలో 1101 0101), నమోదు అవుతుంది. (ఇక్కడ "కీబోర్డ్ కంట్రోలర్" లో ఒక పెద్ద జాబితా ఉన్నట్లు ఊహించుకొండి. ఆ జాబితాలో, ఒకొక్క బొత్తాం నుండి ఒకొక్క తీగ చొప్పున వచ్చి ఆ జాబితాకి తగిలించినట్లు ఊహించుకొండి. ఈ తీగ ఒక వైపు, దానికి ఎదురుగా మనం నొక్కిన బొత్తానికి సంబంధించిన అక్షరాంకం (alphanumeric) యొక్క ASCII కోడు ఉన్నట్లు ఊహించుకొండి. అప్పుడు జాబితాలో ఏ అడ్డు వరసలో M ఉందో చూసుకుని దానికి ఎదురుగా ఉన్న అష్టా (byte) మనకి కావలసిన ASCII కోడు అనుకోవచ్చు.

5. ఒక విషయం. మన మధ్యస్థి (buffer) అనేది తాత్కాలికంగా రాసుకుందుకి వాడే పలక లాంటిదని మరిచిపోకండి. ఇక్కడ ఎక్కువ సేపు దాచుకోడానికి కుదరదు. ఎందుకంటే M తరువాత మరొక అక్షరం టైపు కొట్టవచ్చు కదా. అప్పుడు ఇదే పలక మీద మరొక అక్షరం రాయవలసి వస్తుంది. అందుకని పలక మీద ఉన్న అష్టాని త్వరగా కొట్లోకి పంపెయ్యాలి. ఈ పని చెయ్యడానికి కలనకలశం అనబడే పరికర్మరి (processor) సహాయం కావాలి.

6. అందుకని అత్యంత జోరుగా పని చేస్తూన్న పరికర్మరి (processor) ని ఒక్క క్షణం ఆపి “ఎవరో మీటలపలక మీద మీటని నొక్కేరు. దానికి సంబంధించిన దత్తాంశాన్ని త్వరగా పంపాలి” అని అర్జీ దాఖలు చేసుకుందుకని పరికర్మరి చేస్తూన్న పనికి అంతరాయం కల్పించాలి. ఈ పని "అంతరాయ అధికారి" (interrupt controller)  అనే మరొక చితుకు (chip) చేస్తుంది. ఎలా? “అంతరాయం” అనే వాకేతాన్ని పంపి! ఎవరికి పంపుతుంది? పరికర్మరిని నడిపిస్తూన్న నిరవాకి లేదా ఉపద్రష్ట (operating system) కి. ఈ నిరవాకి ఎన్నో పనుల మీద, ఎంతో జోరుగా అజమాయిషీ చేస్తూ ఉంటుంది కదా? ఇప్పుడు మన దగ్గర ఉన్న M ని అందుకోమని మరొక పని పురమాయిస్తున్నాం. పాఠం చెప్పుకుంటూ పోతూన్న మేష్టారిని ప్రశ్న అడగాలంటే ఏమిటి చేస్తాం? చెయ్యి ఎత్తి ఆయన అనుమతి కోసం ఎదురు చూస్తూ వేచి ఉంటాం. మేష్టారు ఆయన చెబుతూన్న వాక్యాన్ని పూర్తి చేసి, ఆయన పాఠంలో ఎక్కడ ఉన్నారో పుస్తకంలో గుర్తు పెట్టుకుని, మన ప్రశ్న కొరకు ఎదురు చూస్తారు. అదే విధంగా తన దగ్గర దత్తాంశం ఒకటి ఉందని చెప్పడానికి అంతరాయ నియంత్రణ  పరికర్మరి (interrupt controller) కి ఒక “అంతరాయ వాకేతం” (interrupt signal) పంపుతుంది. ఇటువంటి వాకేతం మీటలపలక నుండి రావచ్చు, మూషికం (mouse) నుండి రావచ్చు, మోడెం (modem) నుండి రావచ్చు, మరెక్కడనుండైనా రావచ్చు. కనుక అంతరాయ వాకేతం అందగానే పరికర్మరిని నడుపుతూన్న నిరవాకి (లేదా ఉపద్రష్ట లేదా operating system) తన పనికి అంతరాయం ఎవరివల్ల కలిగిందో అర్థం చేసుకుని, ఆ సందర్భానికి ఉచితమైన కార్యక్రమాలని నెరవేర్చాలి.

7. విద్యార్థి చెయ్యి ఎత్తిన సమయంలోనే ప్రిన్సిపాలు గారు గుమ్మం దగ్గర నిలబడి తలుపు మీద టకటక కొట్టేరనుకుందాం. అది మరొక అంతరాయం. ఇలా కంప్యూటరు ఎన్నో అంతారాయాలని ఎదుర్కుంటూనే ఉంటుంది. ఏ అంతరాయానికి ఏ పరిచర్య (service) చెయ్యాలో ఉపద్రష్టకి తెలుసు. ఒకొక్క పరిచర్యని నడపడానికి ఒకొక్క "అంతరాయం పరిచర్య  క్రమణిక" (interrupt service program) ఉంటుంది. ఇప్పుడు తరువాయి కార్యక్రమం మధ్యస్థి (buffer) లో ఉన్న M అనే అక్షరాన్ని కొట్లో (store లో) రాసుకోవడం కనుక ఈ పని చెయ్యడానికి కావలసిన ఆదేశాలలో మొదటిది కొట్లో ఎక్కడ ఉందో అక్కడకి వెళ్లి అక్కడ నుండి కలనం కొనసాగిస్తుంది.

8. ఉదాహరణకి మనం విండోస్ (Windows) వంటి బహుళబాహు (multi-tasking) ఉపద్రష్టని వాడుతునాం అనుకుందాం. అనగా, ఎన్నో కార్యాలని "ఒకేసారి" చేసే పద్ధతి. (అనగా ఒకేసారి నాలుగైదు "కిటికీ" లు తెరచి, ఒక కిటికీలో కథ రాసుకుంటూ, మరొక కిటికీలో నిఘంటువుని సంప్రదిస్తూ, మూడవ కిటికీలో సినిమా పాటలు వింటూ....) అప్పుడు మన ఉపద్రష్ట పై పనులన్నిటితోపాటు మనం M అనే అక్షరం "ఏ విండో” లో పని చేస్తున్నప్పుడు నొక్కెమో కూడ జ్ఞాపకం పెట్టుకుంటుంది. (ఇక్కడ “విండో” అంటే ఏమిటో సందర్భానుసారంగా మీరు అర్థం చేసుకున్నారనే అనుకుంటున్నాను. అర్థం కాకపోతే "ఏ విండో” కి బదులు "ఏ సందర్భం"  అని చదువుకొండి! )

9. మనం కథో, వ్యాసమో రాస్తూ M అనే మీట నొక్కేము కనుక, అంతా సవ్యంగా జరిగితే తెర మీద M అనే అక్షరం మన “విండో” లో కనిపించాలి. ఇలా కనిపించేటట్లు చెయ్యాలంటే వీక్షకపు కొట్టు (video store) అనే మరొక కొట్లోకి మన M ని బదిలీ చెయ్యాలి.

10. వీక్షకపు కొట్లో ఏది ఉంటే దానిని సెకండుకి 100 సార్లు చొప్పున ఉపద్రష్ట మనకి చూపిస్తుంది.

ఒక్క చిన్న పని చెయ్యడానికి ఇంత హడావిడా? పైపెచ్చు ఇదంతా త్రుటి కాలంలో జరిగిపోయినట్లు మనకి భ్రమ కలుగుతుంది. కలనకలశం మన జ్ఞానేంద్రియాల కంటె ఎన్నో రెట్లు జోరుగా పని చెయ్యడమే ఈ భ్రమకి కారణం.

పైన రాసినది కేవలం ఒక నఖచిత్రం అని మరచి పోకండి. ఈ ఒక్క పని చెయ్యడానికి లోపల జరిగే తతంగం కూలంకషంగా వర్ణించాలంటే ఎన్నో కాగితాలు ఖరాబు చెయ్యాలి. ఇలాంటి పనులు సెకండుకి వెయ్యికి పైబడి కలశం చేస్తూ ఉంటుంది.

ఇదంతా చదివి కంప్యూటర్లని అర్థం చేసుకోవాలనే ఆశ వదలుకోకండి. ఏ ఒక్క వ్యక్తికి, అన్నీ అర్థం కావు. కంప్యూటర్లతో రోజూ పని చేసేవాళ్లకి కూడ కొద్ది భాగమే అర్థం అవుతుంది.


3 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. అయ్యా గురువుగారు
    చాలా రోజులుంచీ చూస్తున్నాను. ఇంత కష్టపడి రాసిన వ్యాసాలకి ఇంకొంచెం సహస్రాంసం కష్టపడి సబ్జెక్ట్ హెడింగ్ పెట్టలేరూ? ఎప్పుడు మీ పోస్టు చూసినా (హారం మీదో, మాలిక మీదో), సబ్జెక్ట్ ఉండదు. మొదటి లైను కాపీ చేసి పేస్ట్ చేయవచ్చు. పనిలో పని ఖతి సైజు మార్చండి. మరీ చీమల్లా కనిపిస్తున్నాయి అక్షరాలు.

    ReplyDelete
  3. Did I do what you asked me to do? Reader's feedback is important.

    ReplyDelete