CPU ajakava Algorithms in Operating Systems
โก Nutikas kokkuvรตte
Protsessori ajastamine mรครคrab, millist valmisoleku protsessi operatsioonisรผsteem jรคrgmisena kรคivitab, keeping protsessori hรตivatud ja jรตudlust parandades selliste algoritmide abil nagu โkes ees, see meesโ, โlรผhim tรถรถ kรตigepealtโ, โprioriteetโ ja โringrobinโ.
Mis on protsessori ajastamine?
CPU ajakava on protsess, mille kรคigus mรครคratakse, milline protsess omab protsessorit tรคitmiseks, samal ajal kui teine โโprotsess on ootel. Protsessori ajastamise peamine รผlesanne on tagada, et kui protsessor jรครคb jรตudeolekusse, valiks operatsioonisรผsteem tรคitmiseks vรคhemalt รผhe valmisoleku jรคrjekorras oleva protsessi. Valikuprotsessi viib lรคbi protsessori ajastaja, mis valib รผhe mรคlus olevatest tรคitmiseks valmis protsessidest.
Protsessori ajastamise tรผรผbid
Siin on kahte tรผรผpi ajakava koostamise meetodeid:
Ennetav ajakava
Ennetava ajastamise puhul mรครคratakse รผlesanded enamasti vastavalt nende prioriteetidele. Mรตnikord on oluline kรคivitada kรตrgema prioriteediga รผlesanne enne madalama prioriteediga รผlesannet, isegi kui madalama prioriteediga รผlesanne veel tรถรถtab. Madalama prioriteediga รผlesanne jรครคb mรตnda aega ootele ja jรคtkub, kui kรตrgema prioriteediga รผlesanne on oma tรคitmise lรตpetanud.
Mitteennetav ajakava
Seda tรผรผpi ajastamismeetodi puhul eraldatakse protsessor kindlale protsessile. Protsess, mis hoiab protsessori hรตivatuna, vabastab selle kas konteksti vahetamise vรตi lรตpetamise teel. See on ainus meetod, mida saab kasutada erinevatel riistvaraplatvormidel, kuna see ei vaja spetsiaalset riistvara (nรคiteks taimerit) nagu ennetav ajastamine.
Millal on ajakava koostamine ennetav vรตi mitteennetav?
Selleks, et teha kindlaks, kas ajastamine on ennetav vรตi mitteennetav, arvestage jรคrgmiste nelja parameetriga:
- Protsess lรผlitub tรถรถtavast olekust ooteolekusse.
- Konkreetne protsess lรผlitub tรถรถtavast olekust valmisolekusse.
- Konkreetne protsess lรผlitub ooteolekust valmisolekusse.
- Protsess lรตpetab oma tรคitmise ja peatub.
Kui kehtivad ainult tingimused 1 ja 4, nimetatakse ajastamist mitte-ennetavaks. Kรตik muud ajastamisolukorrad on ennetavad.
Olulised protsessori ajastamise terminid
- Sarivรตtte aeg/tรคitmisaeg: Protsessi tรคitmiseks kuluv aeg. Seda nimetatakse ka jooksuajaks.
- Saabumise aeg: Aeg, mil protsess lรคheb valmisolekusse.
- Lรตpuaeg: Aeg, mil protsess lรตpeb ja sรผsteemist vรคljub.
- Multiprogrammeerimine: Mรคlus vรตib samaaegselt olla mitu programmi.
- Tรถรถkohad: Programmitรผรผp, mis ei vaja mingit kasutaja sekkumist.
- Kasutaja: Programmitรผรผp, mis nรตuab kasutajalt interaktsiooni.
- Protsess: Viide, mida kasutatakse nii tรถรถ kui ka kasutaja jaoks.
- CPU/IO sarivรตtte tsรผkkel: Iseloomustab protsessi tรคitmist, kus vaheldub protsessori ja sisend-/vรคljundtegevus. Protsessori ajad on tavaliselt lรผhemad kui sisend-/vรคljundajad.
CPU ajastamise kriteeriumid
Protsessori ajastamisalgoritm pรผรผab maksimeerida ja minimeerida jรคrgmist:
Maksimeerima
Protsessori kasutus: Protsessori kasutusaste on peamine รผlesanne, mille puhul operatsioonisรผsteem peab tagama protsessori maksimaalse hรตivatuse. See vรตib olla vahemikus 0 kuni 100 protsenti. RTOS-i puhul vรตib see aga olla madala taseme sรผsteemi puhul 40 protsendist kuni kรตrge taseme sรผsteemi puhul 90 protsendini.
Lรคbilaskevรตime: Protsesside arvu, mis ajaรผhikus oma tรคitmise lรตpetavad, nimetatakse lรคbilaskevรตimeks. Seega, kui protsessor on protsessi tรคitmisega hรตivatud, tehakse tรถรถd ja ajaรผhikus tehtud tรถรถd nimetatakse lรคbilaskevรตimeks.
Minimeerima
Ooteaeg: Ooteaeg on aeg, mille jooksul konkreetne protsess peab valmisoleku jรคrjekorras ootama.
Reaktsiooniaeg: See on aeg alates taotluse esitamisest kuni esimese vastuse saamiseni.
Tรถรถaeg: Pรถรถrdeaeg on aeg, mis kulub konkreetse protsessi kรคivitamiseks. See on kogu aeg, mis kulub mรคllu jรตudmiseks ootamisele, jรคrjekorras ootamisele ja protsessoris kรคivitamisele. Protsessi esitamise ja lรตpuleviimise vaheline ajavahemik on pรถรถrdeaeg.
Intervallitaimer
Taimeri katkestamine on meetod, mis on tihedalt seotud eelmรผรผgiga. Kui teatud protsess saab CPU jaotuse, vรตidakse taimer seada mรครคratud intervallile. Nii taimeri katkestamine kui ka eelostmine sunnivad protsessi CPU-d tagastama enne, kui selle protsessori sari on lรตppenud.
Enamik mitme programmeerimisega operatsioonisรผsteeme kasutab mingisugust taimerit, et vรคltida protsessi sรผsteemi igaveseks sidumist.
Mis on dispetลกer?
Dispetลกer on moodul, mis annab protsessile juhtimist protsessori รผle. Dispetลกer peaks olema kiire, et see saaks tรถรถtada igal kontekstilรผlitil. Dispetลกi latentsus on aeg, mis kulub protsessori ajasturil รผhe protsessi peatamiseks ja teise kรคivitamiseks.
Dispetลกeri tรคidetavad funktsioonid:
- Konteksti vahetamine.
- Kasutajareลพiimi lรผlitumine.
- Liikumine รคsja laaditud programmis รตigesse kohta.
Protsessori ajastamise tรผรผbid Algorithms
Peamiselt on kuus tรผรผpi protsesside ajastamise algoritmid:
- Serveerimine โkes ees, meesโ (FCFS)
- Lรผhim tรถรถ esimene (SJF) ajakava
- Lรผhim jรคrelejรครคnud aeg
- Prioriteetne ajakava
- Round Robini ajakava
- Mitmetasandiline jรคrjekorra ajastamine
Plaanimine Algorithms
Serveeri โkes ees, see meesโ.
FCFS tรคhistab Serveeri โkes ees, see meesโ.See on lihtsaim ja lihtsam protsessori ajastamisalgoritm. Seda tรผรผpi algoritmis saab protsessorilt pรคringu esitanud protsessori jaotuse esimesena. Seda ajastamismeetodit saab hallata FIFO jรคrjekorra abil.
Kui protsess siseneb valmisolekujรคrjekorda, รผhendatakse selle trรผkkplaat (PCB) jรคrjekorra sabaosaga. Seega, kui protsessor vabaneb, tuleks see mรครคrata jรคrjekorra alguses olevale protsessile.
FCFS-meetodi omadused
- See on mitte-preemptiivne ajastamisalgoritm.
- Tรถรถd tรคidetakse alati "kes ees, see mees" pรตhimรตttel.
- Seda on lihtne rakendada ja kasutada.
- Selle meetodi jรตudlus on aga kehv ja รผldine ooteaeg on รผsna pikk.
Lรผhim jรคrelejรครคnud aeg
SRT tรคielik vorm on lรผhim jรคrelejรครคnud aeg (Shortest Remaining Time). Seda tuntakse ka kui SJF-i ennetavat ajastamist. Selle meetodi puhul eraldatakse protsess รผlesandele, mis on selle lรตpuleviimisele kรตige lรคhemal. See meetod hoiab รคra uuema valmisoleku protsessi poolt vanema protsessi lรตpuleviimise takistamise.
SRT ajastamismeetodi omadused
- Seda meetodit rakendatakse enamasti partiitรถรถtluskeskkondades, kus tuleb eelistada lรผhikesi tรถid.
- See ei ole ideaalne meetod jagatud sรผsteemis rakendamiseks, kus vajalik protsessori aeg pole teada.
- Iga protsess on seotud selle jรคrgmise protsessori koormuse pikkusega, seega kasutab operatsioonisรผsteem neid pikkusi protsessi ajastamiseks vรตimalikult lรผhikese ajaga.
Prioriteedipรตhine ajakava
Prioriteetne ajakava on prioriteedil pรตhineva protsesside ajastamise meetod. Selle meetodi puhul valib ajastaja รผlesanded, millega tรถรถtada, vastavalt nende prioriteedile.
Prioriteetide ajastamine aitab operatsioonisรผsteemil kaasata ka prioriteetide mรครคramist. Kรตrgema prioriteediga protsessid viiakse lรคbi esimesena, samas kui sama prioriteediga tรถรถd viiakse lรคbi ringjada vรตi FCFS-i pรตhimรตttel. Prioriteedi saab mรครคrata mรคluvajaduse, ajavajaduse ja muude tegurite pรตhjal.
Round-Robini ajakava
Round robin on รผks vanimaid ja lihtsamaid ajastamisalgoritme. Selle algoritmi nimi tuleneb ringintervalli pรตhimรตttest, kus iga inimene saab kordamรถรถda millestki vรตrdse osa. Seda kasutatakse enamasti mitme รผlesandega sรผsteemide ajastamiseks. See meetod aitab saavutada protsesside nรคlgimiseta tรคitmist.
Round-Robini ajakava omadused
- Round robin on hรผbriidmudel, mis tรถรถtab kella graafikul.
- Konkreetse รผlesande tรถรถtlemiseks mรครคratud ajaviil peaks olema minimaalne. See vรตib aga eri protsesside puhul erineda.
- See kรคitub nagu ajajagamissรผsteem, mis reageerib igale protsessile kindla aja jooksul.
Esmalt lรผhim tรถรถ
SJF (Shortest Job First) on ajastamisalgoritm, mille puhul jรคrgmisena tรคitmiseks valitakse lรผhima tรคitmisajaga protsess. See ajastamismeetod vรตib olla ennetav vรตi mitte-ennetav. See vรคhendab oluliselt teiste tรคitmist ootavate protsesside keskmist ooteaega.
SJF ajakava omadused
- Iga tรถรถ on seotud ajaรผhikuga, mis selle tรคitmiseks kulub.
- Selle meetodi puhul, kui protsessor on saadaval, kรคivitatakse kรตigepealt jรคrgmine lรผhima valmimisajaga protsess vรตi tรถรถ.
- Seda rakendatakse mitte-ennetava poliitikaga.
- See algoritm on kasulik partiitรผรผpi tรถรถtlemiseks, kus tรถรถde lรตpuleviimise ootamine pole kriitilise tรคhtsusega.
- See parandab tรถรถtulemusi, teostades esmalt lรผhemaid tรถid, millel on enamasti lรผhem teostusaeg.
Mitmetasandiliste jรคrjekordade ajastamine
See algoritm jagab valmisoleku jรคrjekorra mitmeks eraldi jรคrjekorraks. Selle meetodi puhul mรครคratakse protsessid jรคrjekorda protsessi konkreetse omaduse, nรคiteks protsessi prioriteedi, mรคlu suuruse jne alusel.
See ei ole aga iseseisev ajastamisalgoritm, kuna tรถรถde ajastamiseks peab see kasutama teist tรผรผpi algoritme.
Mitmetasandilise jรคrjekordade ajastamise omadused
- รhiste omadustega protsesside jaoks tuleks sรคilitada mitu jรคrjekorda.
- Igal jรคrjekorral vรตib olla oma eraldi ajastamisalgoritm.
- Igale jรคrjekorrale mรครคratakse prioriteedid.
Ajastusalgoritmi eesmรคrk
Siin on ajastamisalgoritmi kasutamise pรตhjused.
- CPU kasutab oma tรตhususe parandamiseks ajastamist.
- See aitab teil ressursse konkureerivate protsesside vahel jaotada.
- Protsessori maksimaalset kasutamist saab saavutada multiprogrammeerimisega.
- Kรคivitatavad protsessid hoitakse valmisoleku jรคrjekorras.




