హలో, హబ్ర్! నేను మీ దృష్టికి వ్యాసాల శ్రేణిని అందించాలనుకుంటున్నాను - నా అభిప్రాయంలో ఆసక్తికరమైన ఒక సాహిత్యం యొక్క అనువాదాలు - OSTEP. ఈ పదార్థం యునిక్స్ లాంటి ఆపరేటింగ్ సిస్టమ్ల పనిని చాలా లోతుగా పరిశీలిస్తుంది, అవి ప్రక్రియలు, వివిధ షెడ్యూలర్లు, మెమరీ మరియు ఆధునిక OSని రూపొందించే ఇతర సారూప్య భాగాలతో పని చేస్తాయి. మీరు ఇక్కడ అన్ని మెటీరియల్స్ యొక్క అసలైనదాన్ని చూడవచ్చు ఇక్కడ. అనువాదం వృత్తిపరంగా (చాలా స్వేచ్ఛగా) జరిగిందని దయచేసి గమనించండి, కానీ నేను సాధారణ అర్థాన్ని నిలుపుకున్నానని ఆశిస్తున్నాను.
ఈ ఉపన్యాసంలో మేము అత్యంత ప్రసిద్ధ విధానాలలో ఒకదానిని అభివృద్ధి చేయడంలో సమస్యల గురించి మాట్లాడుతాము
ప్రణాళిక, దీనిని పిలుస్తారు బహుళ-స్థాయి ఫీడ్బ్యాక్ క్యూ (MLFQ). MLFQ షెడ్యూలర్ను మొదటిసారిగా 1962లో ఫెర్నాండో J. కార్బాటో అనే వ్యవస్థలో వివరించాడు.
అనుకూల సమయ-భాగస్వామ్య వ్యవస్థ (CTSS). ఈ పనులు (తర్వాత పనితో సహా
మల్టీక్స్) తదనంతరం ట్యూరింగ్ అవార్డుకు నామినేట్ చేయబడింది. ప్లానర్ ఉంది
తదనంతరం మెరుగుపరచబడింది మరియు ఇప్పటికే కనిపించే రూపాన్ని పొందింది
కొన్ని ఆధునిక వ్యవస్థలు.
MLFQ అల్గారిథమ్ 2 ప్రాథమిక అతివ్యాప్తి సమస్యలను పరిష్కరించడానికి ప్రయత్నిస్తుంది. ముందుగా, ఇది టర్న్అరౌండ్ సమయాన్ని ఆప్టిమైజ్ చేయడానికి ప్రయత్నిస్తుంది, ఇది మేము మునుపటి ఉపన్యాసంలో చర్చించినట్లుగా, క్యూ ప్రారంభంలో ఎక్కువగా ప్రారంభించే పద్ధతి ద్వారా ఆప్టిమైజ్ చేయబడింది
చిన్న పనులు. అయినప్పటికీ, నిర్దిష్ట ప్రక్రియ ఎంతకాలం నడుస్తుందో OSకి తెలియదు మరియు ఇది
SJF, STCF అల్గారిథమ్ల నిర్వహణకు అవసరమైన జ్ఞానం. రెండవది, MLFQ ప్రయత్నిస్తోంది
సిస్టమ్ను వినియోగదారులకు ప్రతిస్పందించేలా చేయండి (ఉదాహరణకు, కూర్చున్న వారికి మరియు
పని పూర్తయ్యే వరకు స్క్రీన్ వైపు చూస్తూ వేచి ఉండండి) తద్వారా సమయాన్ని తగ్గించండి
ప్రతిస్పందన. దురదృష్టవశాత్తూ, RR వంటి అల్గారిథమ్లు ప్రతిస్పందన సమయాన్ని మెరుగుపరుస్తాయి, కానీ చాలా ఎక్కువ
టర్న్అరౌండ్ టైమ్ మెట్రిక్పై చెడు ప్రభావం చూపుతుంది. అందువల్ల మా సమస్య: ఎలా డిజైన్ చేయాలి
ఏదైనా తెలియకుండానే మన అవసరాలను తీర్చగల షెడ్యూలర్
సాధారణంగా ప్రక్రియ యొక్క స్వభావం? షెడ్యూలర్ టాస్క్ల లక్షణాలను ఎలా నేర్చుకోవచ్చు,
ఇది ఏది ప్రారంభిస్తుంది మరియు తద్వారా మెరుగైన ప్రణాళిక నిర్ణయాలు తీసుకుంటుంది?
సమస్య యొక్క సారాంశం: ఖచ్చితమైన జ్ఞానం లేకుండా పనుల అమరికను ఎలా ప్లాన్ చేయాలి?
ప్రతిస్పందన సమయాన్ని ఏకకాలంలో తగ్గించే షెడ్యూలర్ను ఎలా రూపొందించాలి
ఇంటరాక్టివ్ టాస్క్ల కోసం మరియు అదే సమయంలో తెలియకుండా టర్న్అరౌండ్ సమయాన్ని తగ్గిస్తుంది
విధి నిర్వహణ సమయం గురించి జ్ఞానం?
గమనిక: మేము మునుపటి సంఘటనల నుండి నేర్చుకుంటాము
MLFQ క్యూ అనేది నేర్చుకునే సిస్టమ్కి అద్భుతమైన ఉదాహరణ
భవిష్యత్తును అంచనా వేయడానికి గత సంఘటనలు. ఇలాంటి విధానాలు తరచుగా ఉంటాయి
OSలో కనుగొనబడింది (మరియు బ్రాంచ్లతో సహా కంప్యూటర్ సైన్స్ యొక్క అనేక ఇతర శాఖలు
హార్డ్వేర్ అంచనాలు మరియు కాషింగ్ అల్గోరిథంలు). ఇలాంటి ప్రయాణాలు
పనులు ప్రవర్తనా దశలను కలిగి ఉన్నప్పుడు ప్రేరేపించబడతాయి మరియు తద్వారా ఊహించవచ్చు.
అయితే, మీరు ఈ సాంకేతికతతో జాగ్రత్తగా ఉండాలి ఎందుకంటే అంచనాలు చాలా సులభం
తప్పుగా మారవచ్చు మరియు వ్యవస్థ కంటే దారుణమైన నిర్ణయాలు తీసుకోవచ్చు
అస్సలు జ్ఞానం లేకుండా ఉంటుంది.
MLFQ: ప్రాథమిక నియమాలు
MLFQ అల్గోరిథం యొక్క ప్రాథమిక నియమాలను చూద్దాం. మరియు ఈ అల్గోరిథం యొక్క అమలులు అయినప్పటికీ
అనేక ఉన్నాయి, ప్రాథమిక విధానాలు సమానంగా ఉంటాయి.
మేము చూడబోయే అమలులో, MLFQ అనేకం ఉంటుంది
ప్రత్యేక క్యూలు, వీటిలో ప్రతి ఒక్కటి విభిన్న ప్రాధాన్యతను కలిగి ఉంటాయి. ఎప్పుడైనా,
అమలు కోసం సిద్ధంగా ఉన్న ఒక పని ఒక వరుసలో ఉంది. MLFQ ప్రాధాన్యతలను ఉపయోగిస్తుంది,
అమలు కోసం ఏ పనిని అమలు చేయాలో నిర్ణయించడానికి, అనగా. అధిక పని
ప్రాధాన్యత (అత్యధిక ప్రాధాన్యత కలిగిన క్యూ నుండి టాస్క్) ముందుగా ప్రారంభించబడుతుంది
క్యూ.
వాస్తవానికి, ఇచ్చిన క్యూలో ఒకటి కంటే ఎక్కువ టాస్క్లు ఉండవచ్చు
కాబట్టి వారికి అదే ప్రాధాన్యత ఉంటుంది. ఈ సందర్భంలో, యంత్రాంగం ఉపయోగించబడుతుంది
ఈ టాస్క్ల మధ్య పరుగును షెడ్యూల్ చేయడానికి RR.
కాబట్టి మేము MLFQ కోసం రెండు ప్రాథమిక నియమాలకు చేరుకున్నాము:
నియమం1: ప్రాధాన్యత(A) > ప్రాధాన్యత(B), టాస్క్ A ప్రారంభించబడుతుంది (B కాదు)
నియమం2: ప్రాధాన్యత(A) = ప్రాధాన్యత(B), A&B RRని ఉపయోగించి ప్రారంభించబడితే
పైన పేర్కొన్న వాటి ఆధారంగా, MLFQని ప్లాన్ చేయడానికి కీలక అంశాలు
ప్రాధాన్యతలు ఉన్నాయి. ప్రతిదానికి నిర్ణీత ప్రాధాన్యత ఇవ్వడానికి బదులు
పని, గమనించిన ప్రవర్తనపై ఆధారపడి MLFQ దాని ప్రాధాన్యతను మారుస్తుంది.
ఉదాహరణకు, కీబోర్డ్ ఇన్పుట్ కోసం వేచి ఉన్నప్పుడు ఒక పని నిరంతరం CPU వద్ద పనిని విసురుతూ ఉంటే,
MLFQ ప్రాసెస్ ప్రాధాన్యతను ఎక్కువగా ఉంచుతుంది ఎందుకంటే ఆ విధంగా
ఒక ఇంటరాక్టివ్ ప్రక్రియ పని చేయాలి. ఒకవేళ, విరుద్దంగా, పని నిరంతరం మరియు
చాలా కాలం పాటు CPUని ఎక్కువగా ఉపయోగిస్తుంది, MLFQ దానిని తగ్గిస్తుంది
ఒక ప్రాధాన్యత. అందువలన, MLFQ ప్రక్రియలు నడుస్తున్నప్పుడు వాటి ప్రవర్తనను అధ్యయనం చేస్తుంది
మరియు ప్రవర్తనలను ఉపయోగించండి.
ఏదో ఒక సమయంలో క్యూలు ఎలా ఉండవచ్చో ఉదాహరణగా గీయండి
సమయం ఆపై మీరు ఇలాంటివి పొందుతారు:
ఈ పథకంలో, A మరియు B అనే 2 ప్రక్రియలు అత్యధిక ప్రాధాన్యత గల వరుసలో ఉన్నాయి. ప్రక్రియ
C మధ్యలో ఎక్కడో ఉంది మరియు ప్రాసెస్ D క్యూ చివరిలో ఉంటుంది. పై ప్రకారం
MLFQ అల్గోరిథం యొక్క వివరణల ప్రకారం, షెడ్యూలర్ అత్యధికంగా మాత్రమే పనులను అమలు చేస్తుంది
RR ప్రకారం ప్రాధాన్యత మరియు టాస్క్లు C, D పని చేయడం లేదు.
సహజంగానే, స్టాటిక్ స్నాప్షాట్ MLFQ ఎలా పని చేస్తుందో పూర్తి చిత్రాన్ని అందించదు.
కాలక్రమేణా చిత్రం ఎలా మారుతుందో అర్థం చేసుకోవడం చాలా ముఖ్యం.
ప్రయత్నం 1: ప్రాధాన్యతను ఎలా మార్చాలి
ఈ సమయంలో మీరు MLFQ ప్రాధాన్యత స్థాయిని ఎలా మారుస్తుందో నిర్ణయించుకోవాలి
టాస్క్లు (అందువలన క్యూలో టాస్క్ యొక్క స్థానం) దాని జీవిత చక్రంలో అభివృద్ధి చెందుతుంది. కోసం
వర్క్ఫ్లోను గుర్తుంచుకోవడానికి ఇది అవసరం: కొంత మొత్తం
తక్కువ రన్టైమ్లతో ఇంటరాక్టివ్ టాస్క్లు (అందువల్ల తరచుగా విడుదల అవుతుంది
CPU) మరియు వారి పని సమయమంతా CPUని ఉపయోగించే అనేక దీర్ఘకాలిక పనులు
అటువంటి పనులకు ప్రతిస్పందన సమయం ముఖ్యం కాదు. మరియు ఈ విధంగా మీరు మీ మొదటి ప్రయత్నం చేయవచ్చు
కింది నియమాలతో MLFQ అల్గోరిథంను అమలు చేయండి:
రూల్3: ఒక పని సిస్టమ్లోకి ప్రవేశించినప్పుడు, అది అత్యధికంగా క్యూలో ఉంచబడుతుంది
ప్రాధాన్యత.
నియమం 4a: ఒక పని దానికి కేటాయించిన మొత్తం సమయ విండోను ఉపయోగిస్తే, అది
ప్రాధాన్యత తగ్గింది.
రూల్4బి: ఒక టాస్క్ దాని టైమ్ విండో గడువు ముగిసేలోపు CPUని విడుదల చేస్తే, అది
అదే ప్రాధాన్యతతో ఉంటుంది.
ఉదాహరణ 1: సింగిల్ లాంగ్ రన్నింగ్ టాస్క్
ఈ ఉదాహరణలో చూడగలిగినట్లుగా, అడ్మిషన్ టాస్క్ అత్యధికంగా సెట్ చేయబడింది
ప్రాధాన్యత. 10ms సమయ విండో తర్వాత, ప్రాసెస్ ప్రాధాన్యతలో తగ్గించబడుతుంది
ప్లానర్. తదుపరి సమయం విండో తర్వాత, టాస్క్ చివరకు తగ్గించబడుతుంది
వ్యవస్థలో అత్యల్ప ప్రాధాన్యత, అది మిగిలిపోయింది.
ఉదాహరణ 2: ఒక చిన్న పనిని అందించారు
ఇప్పుడు MLFQ SJFని ఎలా సంప్రదించడానికి ప్రయత్నిస్తుందో ఒక ఉదాహరణ చూద్దాం. అందులో
ఉదాహరణకు, రెండు టాస్క్లు: A, ఇది నిరంతరం దీర్ఘకాలం పని చేసే పని
CPU మరియు Bలను ఆక్రమించడం, ఇది చిన్న ఇంటరాక్టివ్ పని. అనుకుందాం
టాస్క్ B చేరుకునే సమయానికి A అప్పటికే కొంత సమయం పని చేసిందని.
ఈ గ్రాఫ్ దృష్టాంతం యొక్క ఫలితాలను చూపుతుంది. టాస్క్ A, ఏదైనా పని వలె,
CPU వినియోగం చాలా దిగువన ఉంది. టాస్క్ B T=100 సమయానికి చేరుకుంటుంది మరియు అవుతుంది
అత్యంత ప్రాధాన్యత గల క్యూలో ఉంచారు. దాని ఆపరేటింగ్ సమయం తక్కువగా ఉన్నందున, అప్పుడు
ఇది చివరి క్యూను చేరుకోవడానికి ముందే పూర్తవుతుంది.
ఈ ఉదాహరణ నుండి, అల్గోరిథం యొక్క ప్రధాన లక్ష్యాన్ని అర్థం చేసుకోవాలి: అల్గోరిథం లేదు కాబట్టి
ఒక పని పొడవైనదా లేదా చిన్నదా అని తెలుసు, అప్పుడు అతను మొదట పని అని ఊహిస్తాడు
చిన్నది మరియు దానికి అత్యధిక ప్రాధాన్యత ఇస్తుంది. ఇది నిజంగా చిన్న పని అయితే, అప్పుడు
అది త్వరగా పూర్తవుతుంది, లేకుంటే సుదీర్ఘమైన పని అయితే, అది నెమ్మదిగా కదులుతుంది
ప్రాధాన్యత తగ్గుతుంది మరియు ఆమె నిజంగా చేయని సుదీర్ఘ పని అని త్వరలో రుజువు చేస్తుంది
ప్రతిస్పందన అవసరం.
ఉదాహరణ 3: I/O గురించి ఏమిటి?
ఇప్పుడు I/O ఉదాహరణ చూద్దాం. నియమం 4b లో పేర్కొన్న విధంగా,
ఒక ప్రక్రియ దాని ప్రాసెసర్ సమయాన్ని పూర్తిగా ఉపయోగించకుండా ప్రాసెసర్ను విడుదల చేస్తే,
అప్పుడు అది అదే ప్రాధాన్యత స్థాయిలో ఉంటుంది. ఈ నియమం యొక్క ఉద్దేశ్యం చాలా సులభం
- ఇంటరాక్టివ్ జాబ్ చాలా I/O ఆపరేషన్లను చేస్తే, ఉదాహరణకు, వేచి ఉండండి
వినియోగదారు కీ లేదా మౌస్ ప్రెస్ల నుండి, అటువంటి పని ప్రాసెసర్ను ఖాళీ చేస్తుంది
కేటాయించిన విండో ముందు. అటువంటి పని యొక్క ప్రాధాన్యతను తగ్గించడానికి మేము ఇష్టపడము,
అందువలన అది అదే స్థాయిలో ఉంటుంది.
అటువంటి ప్రక్రియలతో అల్గోరిథం ఎలా పని చేస్తుందో ఈ ఉదాహరణ చూపిస్తుంది - ఇంటరాక్టివ్ జాబ్ B, ఇది అమలు చేయడానికి ముందు 1ms మాత్రమే CPU అవసరం.
I/O ప్రాసెస్ మరియు దీర్ఘకాల జాబ్ A, ఇది CPUని ఉపయోగించి మొత్తం సమయాన్ని వెచ్చిస్తుంది.
MLFQ ప్రాసెస్ Bని అత్యధిక ప్రాధాన్యతలో ఉంచుతుంది ఎందుకంటే ఇది కొనసాగుతుంది
CPUని విడుదల చేయండి. B అనేది ఇంటరాక్టివ్ టాస్క్ అయితే, అల్గోరిథం సాధించింది
ఇంటరాక్టివ్ టాస్క్లను త్వరగా అమలు చేయడమే మీ లక్ష్యం.
ప్రస్తుత MLFQ అల్గారిథమ్తో సమస్యలు
మునుపటి ఉదాహరణలలో మేము MLFQ యొక్క ప్రాథమిక సంస్కరణను రూపొందించాము. మరియు అతను అని తెలుస్తోంది
దాని పనిని చక్కగా మరియు నిజాయితీగా చేస్తుంది, CPU సమయాన్ని మధ్యస్తంగా పంపిణీ చేస్తుంది
పొడవైన పనులు మరియు చిన్న లేదా అధిక-వాల్యూమ్ పనులను అనుమతించడం
I/Oలో త్వరగా పని చేయండి. దురదృష్టవశాత్తు, ఈ విధానం అనేక అంశాలను కలిగి ఉంది
తీవ్రమైన సమస్యలు. ముందుగా, ఆకలి సమస్య: సిస్టమ్ చాలా ఇంటరాక్టివ్ కలిగి ఉంటే
పనులు, అప్పుడు వారు మొత్తం ప్రాసెసర్ సమయాన్ని వినియోగిస్తారు మరియు తద్వారా ఎక్కువ కాలం ఒక్కటి కూడా ఉండరు
పనిని అమలు చేయడం సాధ్యం కాదు (వారు ఆకలితో ఉన్నారు).
రెండవది, స్మార్ట్ వినియోగదారులు వారి ప్రోగ్రామ్లను వ్రాయగలరు
షెడ్యూలర్ను మోసం చేయండి. బలవంతంగా ఏదైనా చేయడంలో మోసం ఉంటుంది
షెడ్యూలర్ ప్రక్రియకు ఎక్కువ CPU సమయాన్ని ఇస్తుంది. అల్గోరిథం అని
పైన వివరించిన అటువంటి దాడులకు చాలా హాని ఉంది: సమయం విండో ఆచరణాత్మకంగా ముందు
ముగిసింది, మీరు I/O ఆపరేషన్ చేయవలసి ఉంటుంది (కొందరికి, ఏ ఫైల్ అయినా)
తద్వారా CPUని ఖాళీ చేయండి. అలాంటి ప్రవర్తన మిమ్మల్ని అలాగే ఉండేందుకు అనుమతిస్తుంది
క్యూ మరియు మళ్లీ ఎక్కువ శాతం CPU సమయాన్ని పొందుతుంది. మీరు చేస్తే
ఇది సరైనది (ఉదాహరణకు, CPUని విడుదల చేయడానికి ముందు విండో సమయాన్ని 99% అమలు చేయండి),
అటువంటి పని కేవలం ప్రాసెసర్ను గుత్తాధిపత్యం చేయగలదు.
చివరగా, ప్రోగ్రామ్ కాలక్రమేణా దాని ప్రవర్తనను మార్చగలదు. ఆ పనులు
CPUని ఉపయోగించినది ఇంటరాక్టివ్గా మారుతుంది. మా ఉదాహరణలో, ఇదే
టాస్క్లు ఇతరులు పొందే విధంగా షెడ్యూలర్ నుండి వారికి తగిన చికిత్స అందదు
(ప్రారంభ) ఇంటరాక్టివ్ పనులు.
ప్రేక్షకుల కోసం ప్రశ్న: ఆధునిక ప్రపంచంలో షెడ్యూలర్పై ఎలాంటి దాడులు చేయవచ్చు?
ప్రయత్నం 2: ప్రాధాన్యతను పెంచడం
నిబంధనలను మార్చడానికి ప్రయత్నిద్దాం మరియు మేము సమస్యలను నివారించగలమో లేదో చూద్దాం
ఉపవాసం. దానికి సంబంధించినది నిర్ధారించడానికి మనం ఏమి చేయవచ్చు
CPU టాస్క్లు వాటి సమయాన్ని పొందుతాయి (దీర్ఘకాలం కాకపోయినా).
సమస్యకు సాధారణ పరిష్కారంగా, మీరు క్రమానుగతంగా సూచించవచ్చు
వ్యవస్థలో అటువంటి పనులన్నింటి ప్రాధాన్యతను పెంచండి. అనేక మార్గాలు ఉన్నాయి
దీన్ని సాధించడానికి, ఉదాహరణగా సరళమైనదాన్ని అమలు చేయడానికి ప్రయత్నిద్దాం: అనువదించండి
అన్ని పనులకు తక్షణమే అత్యధిక ప్రాధాన్యత ఇవ్వబడుతుంది, అందుకే కొత్త నియమం:
రూల్ 5: నిర్దిష్ట వ్యవధి S తర్వాత, సిస్టమ్లోని అన్ని టాస్క్లను అత్యధిక క్యూకి తరలించండి.
మా కొత్త నియమం ఒకేసారి రెండు సమస్యలను పరిష్కరిస్తుంది. మొదట, ప్రక్రియలు
ఆకలితో ఉండకూడదని హామీ ఇచ్చారు: అత్యంత ప్రాధాన్యత ఉన్న పనులు విభజించబడతాయి
RR అల్గోరిథం ప్రకారం CPU సమయం మరియు అందువలన అన్ని ప్రక్రియలు అందుతాయి
CPU సమయం. రెండవది, గతంలో ఉపయోగించిన కొన్ని ప్రక్రియ ఉంటే
ప్రాసెసర్ మాత్రమే ఇంటరాక్టివ్ అవుతుంది, ఇది అత్యధికంగా క్యూలో ఉంటుంది
అత్యధికంగా ప్రాధాన్యతలో ఒక సారి పెరుగుదల పొందిన తర్వాత ప్రాధాన్యత.
ఒక ఉదాహరణ చూద్దాం. ఈ దృష్టాంతంలో, ఉపయోగించిన ఒక ప్రక్రియను పరిగణించండి
CPU మరియు రెండు ఇంటరాక్టివ్, షార్ట్ ప్రాసెస్లు. చిత్రంలో ఎడమవైపున, ఫిగర్ ప్రాధాన్యత ప్రమోషన్ లేకుండా ప్రవర్తనను చూపుతుంది, తద్వారా సిస్టమ్లోకి రెండు ఇంటరాక్టివ్ టాస్క్లు వచ్చిన తర్వాత దీర్ఘకాలంగా కొనసాగుతున్న పని ఆకలితో ప్రారంభమవుతుంది. కుడివైపున ఉన్న చిత్రంలో, ప్రతి 50మి.లకు ప్రాధాన్యత పెరుగుదల నిర్వహించబడుతుంది మరియు అందువల్ల అన్ని ప్రక్రియలు CPU సమయాన్ని అందుకోవడానికి హామీ ఇవ్వబడతాయి మరియు క్రమానుగతంగా ప్రారంభించబడతాయి. ఈ సందర్భంలో 50ms ఒక ఉదాహరణగా తీసుకోబడింది; వాస్తవానికి ఈ సంఖ్య కొంచెం ఎక్కువగా ఉంటుంది.
సహజంగానే, ఆవర్తన పెరుగుదల సమయాన్ని జోడించడం S దారితీస్తుంది
తార్కిక ప్రశ్న: ఏ విలువను సెట్ చేయాలి? గౌరవించబడిన వారిలో ఒకరు
సిస్టమ్స్ ఇంజనీర్లు జాన్ ఆస్టర్హౌట్ సిస్టమ్లలోని అటువంటి పరిమాణాలను వూ-డూ అని పిలిచారు
స్థిరంగా ఉంటుంది, ఎందుకంటే వారికి ఏదో ఒక విధంగా సరైన కోసం చేతబడి అవసరం
ప్రదర్శించడం. మరియు, దురదృష్టవశాత్తు, S అటువంటి సువాసనను కలిగి ఉంది. మీరు విలువను కూడా సెట్ చేస్తే
పెద్ద - పొడవైన పనులు ఆకలితో ప్రారంభమవుతాయి. మరియు మీరు విలువను చాలా తక్కువగా సెట్ చేస్తే,
ఇంటరాక్టివ్ టాస్క్లకు సరైన CPU సమయం అందదు.
ప్రయత్నం 3: మెరుగైన అకౌంటింగ్
ఇప్పుడు మనం పరిష్కరించడానికి మరొక సమస్య ఉంది: ఎలా కాదు
మా షెడ్యూలర్ను మోసం చేయడానికి అనుమతించాలా? ఈ అవకాశానికి ప్రజలు నిందించాలి
నియమాలు 4a, 4b, ఇది ప్రాసెసర్ను ఖాళీ చేయడం ద్వారా ఉద్యోగానికి ప్రాధాన్యతనిస్తుంది
కేటాయించిన సమయం ముగిసేలోపు. దీన్ని ఎలా ఎదుర్కోవాలి?
ఈ సందర్భంలో పరిష్కారం ప్రతిదానిపై CPU సమయం యొక్క మెరుగైన అకౌంటింగ్గా పరిగణించబడుతుంది
MLFQ స్థాయి. ప్రోగ్రామ్ ఉపయోగించిన సమయాన్ని మరచిపోయే బదులు
కేటాయించిన కాలానికి ప్రాసెసర్, దానిని పరిగణనలోకి తీసుకోవాలి మరియు సేవ్ చేయాలి. తర్వాత
ప్రక్రియ దాని కేటాయించిన సమయాన్ని ఉపయోగించుకుంది, అది తదుపరిదానికి తగ్గించబడాలి
ప్రాధాన్యత స్థాయి. ప్రక్రియ దాని సమయాన్ని ఎలా ఉపయోగిస్తుందో ఇప్పుడు పట్టింపు లేదు
ప్రాసెసర్లో లేదా అనేక కాల్ల రూపంలో నిరంతరం గణించడం. ఈ విధంగా,
నియమం 4 క్రింది ఫారమ్కు తిరిగి వ్రాయబడాలి:
రూల్ 4: ఒక టాస్క్ ప్రస్తుత క్యూలో దాని కేటాయించిన సమయాన్ని ఉపయోగించుకున్న తర్వాత (అది ఎన్ని సార్లు CPUని ఖాళీ చేసినప్పటికీ), ఆ పని యొక్క ప్రాధాన్యత తగ్గించబడుతుంది (ఇది క్యూలో క్రిందికి కదులుతుంది).
ఒక ఉదాహరణ చూద్దాం:
»
మీరు షెడ్యూలర్ను మోసం చేయడానికి ప్రయత్నిస్తే ఏమి జరుగుతుందో ఫిగర్ చూపిస్తుంది
ఇది మునుపటి నియమాలు 4a, 4bతో ఉన్నట్లయితే ఎడమవైపున ఫలితం పొందబడుతుంది. కొత్త ఆనందం
నియమం కుడివైపున ఫలితం. రక్షణకు ముందు, ఏదైనా ప్రక్రియ పూర్తి కావడానికి ముందు I/Oకి కాల్ చేయవచ్చు మరియు
ప్రవర్తనతో సంబంధం లేకుండా రక్షణను ప్రారంభించిన తర్వాత, CPUపై ఆధిపత్యం చెలాయిస్తుంది
I/O, అతను ఇప్పటికీ క్యూలో క్రిందికి కదులుతాడు మరియు తద్వారా నిజాయితీగా చేయలేరు
CPU వనరులను స్వాధీనం చేసుకోండి.
MLFQ మరియు ఇతర సమస్యలను మెరుగుపరచడం
పై మెరుగుదలలతో కొత్త సమస్యలు వస్తాయి: ప్రధానమైన వాటిలో ఒకటి
ప్రశ్నలు - అటువంటి షెడ్యూలర్ను ఎలా పారామీటర్ చేయాలి? ఆ. ఎంత ఉండాలి
క్యూలు? క్యూలో ప్రోగ్రామ్ విండో పరిమాణం ఎంత ఉండాలి? ఎలా
ఆకలిని నివారించడానికి ప్రోగ్రామ్ ప్రాధాన్యతను తరచుగా పెంచాలి
ప్రోగ్రామ్ ప్రవర్తనలో మార్పును పరిగణనలోకి తీసుకుంటారా? ఈ ప్రశ్నలకు సాధారణ సమాధానం లేదు
సమాధానం మరియు లోడ్లు మరియు తదుపరి కాన్ఫిగరేషన్తో మాత్రమే ప్రయోగాలు
ప్లానర్ కొంత సంతృప్తికరమైన బ్యాలెన్స్కు దారి తీయవచ్చు.
ఉదాహరణకు, చాలా MLFQ ఇంప్లిమెంటేషన్లు విభిన్నమైన వాటిని కేటాయించడానికి మిమ్మల్ని అనుమతిస్తాయి
వేర్వేరు క్యూల కోసం సమయ వ్యవధి. సాధారణంగా అధిక ప్రాధాన్యత గల క్యూలు
చిన్న విరామాలు సూచించబడతాయి. ఈ క్యూలు ఇంటరాక్టివ్ టాస్క్లను కలిగి ఉంటాయి,
దీని మధ్య మారడం చాలా సున్నితంగా ఉంటుంది మరియు 10 లేదా అంతకంటే తక్కువ తీసుకోవాలి
కుమారి. దీనికి విరుద్ధంగా, తక్కువ-ప్రాధాన్యత క్యూలు ఉపయోగించే దీర్ఘ-పరుగు పనులను కలిగి ఉంటాయి
CPU. మరియు ఈ సందర్భంలో, దీర్ఘకాల విరామాలు బాగా సరిపోతాయి (100ms).
ఈ ఉదాహరణలో అధిక ప్రాధాన్యత గల క్యూ 2లో పనిచేసిన 20 టాస్క్లు ఉన్నాయి
ms, 10ms విండోలుగా విభజించబడింది. మధ్య క్యూలో (40ms విండో) మరియు తక్కువ ప్రాధాన్యతలో 20ms
పనులు తమ పనిని పూర్తి చేసే క్యూ టైమ్ విండో 40మి.లుగా మారింది.
MLFQ యొక్క సోలారిస్ OS అమలు సమయం-భాగస్వామ్య షెడ్యూలర్ల తరగతి.
ప్లానర్ ఖచ్చితంగా నిర్వచించే పట్టికల సమితిని అందిస్తుంది
ప్రక్రియ యొక్క ప్రాధాన్యత దాని జీవిత కాలంలో మారుతుంది, పరిమాణం ఎలా ఉండాలి
కేటాయించబడిన విండో మరియు మీరు ఎంత తరచుగా విధి ప్రాధాన్యతలను పెంచాలి. నిర్వాహకుడు
సిస్టమ్లు ఈ పట్టికతో పరస్పర చర్య చేయగలవు మరియు షెడ్యూలర్ ప్రవర్తించేలా చేస్తాయి
భిన్నంగా. డిఫాల్ట్గా, ఈ పట్టికలో క్రమంగా పెరుగుదలతో 60 క్యూలు ఉన్నాయి
విండో పరిమాణం 20ms (అధిక ప్రాధాన్యత) నుండి అనేక వందల ms (తక్కువ ప్రాధాన్యత) మరియు
సెకనుకు ఒకసారి అన్ని టాస్క్ల బూస్ట్తో.
ఇతర MLFQ ప్లానర్లు టేబుల్ని లేదా ఏదైనా నిర్దిష్టంగా ఉపయోగించరు
ఈ ఉపన్యాసంలో వివరించిన నియమాలు, దీనికి విరుద్ధంగా, వారు ఉపయోగించి ప్రాధాన్యతలను లెక్కిస్తారు
గణిత సూత్రాలు. ఉదాహరణకు, FreeBSD షెడ్యూలర్ ఒక ఫార్ములాను ఉపయోగిస్తుంది
ప్రక్రియ ఎంతకాలం ఉందో దాని ఆధారంగా పని యొక్క ప్రస్తుత ప్రాధాన్యతను లెక్కించండి
CPU ఉపయోగించబడింది. అదనంగా, CPU వినియోగం కాలక్రమేణా క్షీణిస్తుంది మరియు అందువలన
అందువలన, పెరుగుతున్న ప్రాధాన్యత పైన వివరించిన దానికంటే కొంత భిన్నంగా జరుగుతుంది. ఇది నిజం
క్షయం అల్గోరిథంలు అంటారు. వెర్షన్ 7.1 నుండి, FreeBSD ULE షెడ్యూలర్ను ఉపయోగించింది.
చివరగా, అనేక షెడ్యూలర్లు ఇతర లక్షణాలను కలిగి ఉన్నారు. ఉదాహరణకు, కొన్ని
షెడ్యూలర్లు ఆపరేటింగ్ సిస్టమ్ యొక్క ఆపరేషన్ కోసం అత్యధిక స్థాయిలను రిజర్వ్ చేస్తారు
అందువల్ల, ఏ వినియోగదారు ప్రక్రియ కూడా అత్యధిక ప్రాధాన్యతను పొందదు
వ్యవస్థ. కొన్ని సిస్టమ్లు మీకు సహాయం చేయడానికి సలహా ఇవ్వడానికి అనుమతిస్తాయి
ప్లానర్ ప్రాధాన్యతలను సరిగ్గా సెట్ చేయవచ్చు. ఉదాహరణకు, ఆదేశాన్ని ఉపయోగించడం మంచి
మీరు పని యొక్క ప్రాధాన్యతను పెంచవచ్చు లేదా తగ్గించవచ్చు మరియు తద్వారా పెంచవచ్చు లేదా
CPU సమయాన్ని ఉపయోగించుకునే ప్రోగ్రామ్ అవకాశాలను తగ్గించండి.
MLFQ: సారాంశం
మేము MLFQ అనే ప్రణాళికా విధానాన్ని వివరించాము. అతని పేరు
ఆపరేషన్ సూత్రంలో జతచేయబడింది - ఇది అనేక క్యూలను కలిగి ఉంది మరియు అభిప్రాయాన్ని ఉపయోగిస్తుంది
పని ప్రాధాన్యతను నిర్ణయించడానికి.
నియమాల యొక్క తుది రూపం క్రింది విధంగా ఉంటుంది:
రూల్ 1: ప్రాధాన్యత(A) > ప్రాధాన్యత(B), టాస్క్ A ప్రారంభించబడుతుంది (B కాదు)
రూల్ 2: ప్రాధాన్యత(A) = ప్రాధాన్యత(B), A&B RRని ఉపయోగించి ప్రారంభించబడితే
రూల్ 3: ఒక పని సిస్టమ్లోకి ప్రవేశించినప్పుడు, అది అత్యధిక ప్రాధాన్యత గల క్యూలో ఉంచబడుతుంది.
రూల్ 4: ఒక టాస్క్ ప్రస్తుత క్యూలో దాని కేటాయించిన సమయాన్ని ఉపయోగించుకున్న తర్వాత (అది ఎన్ని సార్లు CPUని ఖాళీ చేసినప్పటికీ), ఆ పని యొక్క ప్రాధాన్యత తగ్గించబడుతుంది (ఇది క్యూలో క్రిందికి కదులుతుంది).
రూల్ 5: నిర్దిష్ట వ్యవధి S తర్వాత, సిస్టమ్లోని అన్ని టాస్క్లను అత్యధిక క్యూకి తరలించండి.
MLFQ కింది కారణాల వల్ల ఆసక్తికరంగా ఉంది - దాని గురించి జ్ఞానం అవసరం కాకుండా
విధి యొక్క స్వభావం ముందుగానే, అల్గోరిథం పని మరియు సెట్ల యొక్క గత ప్రవర్తనను అధ్యయనం చేస్తుంది
తదనుగుణంగా ప్రాధాన్యతలు. ఆ విధంగా, అతను ఒకేసారి రెండు కుర్చీలపై కూర్చోవడానికి ప్రయత్నిస్తాడు - చిన్న పనులకు (SJF, STCF) ఉత్పాదకతను సాధించడానికి మరియు నిజాయితీగా ఎక్కువసేపు నడపడానికి,
CPU-లోడింగ్ ఉద్యోగాలు. అందువల్ల, BSD మరియు వాటి ఉత్పన్నాలతో సహా అనేక వ్యవస్థలు,
Solaris, Windows, Mac షెడ్యూలర్గా కొన్ని రకాల అల్గారిథమ్లను ఉపయోగిస్తాయి
MLFQ బేస్లైన్గా.