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โ€œ.

  • ๐Ÿ”„ Mรครคratlus: Protsessori ajastamine valib valmisoleku jรคrjekorrast protsessi alati, kui protsessor muidu jรตude seisaks.
  • ๐Ÿ‡ง๐Ÿ‡ท tรผรผbid: Ennetav ajastamine vรตib tรถรถtava รผlesande katkestada, samas kui mitte-ennetav ajastamine ootab, kuni see vabastab protsessori.
  • ๐Ÿ“Š Kriteeriumid: Head algoritmid maksimeerivad protsessori kasutamist ja lรคbilaskevรตimet, minimeerides samal ajal ooteaega, reageerimisaega ja tรถรถtlusaega.
  • ๐Ÿงฎ Algorithms: FCFS, SJF, lรผhim jรคrelejรครคnud aeg, prioriteet, ringjรคrjekord ja mitmetasandiline jรคrjekord sobivad igaรผks erinevatele tรถรถkoormustele.
  • ๐Ÿšฆ Dispetลกer: Dispetลกer teostab kontekstivahetuse, mis annab protsessori juhtimise valitud protsessile รผle.
  • ๐Ÿค– AI nurk: Masinรตpe aitab ajastamisotsuseid tรคpsustada ja Copilot aitab kodeerida ja testida ajastamisalgoritme.

CPU ajakava Algorithms in Operating Systems

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:

Protsessori ajastamise tรผรผbid

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:

  1. Protsess lรผlitub tรถรถtavast olekust ooteolekusse.
  2. Konkreetne protsess lรผlitub tรถรถtavast olekust valmisolekusse.
  3. Konkreetne protsess lรผlitub ooteolekust valmisolekusse.
  4. 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:

CPU ajastamise kriteeriumid

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:

  1. Serveerimine โ€žkes ees, meesโ€ (FCFS)
  2. Lรผhim tรถรถ esimene (SJF) ajakava
  3. Lรผhim jรคrelejรครคnud aeg
  4. Prioriteetne ajakava
  5. Round Robini ajakava
  6. Mitmetasandiline jรคrjekorra ajastamine

Plaanimine Algorithms

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.

KKK

รœhte ja ainukest parimat algoritmi pole olemas. Lรผhim tรถรถ esimesena annab madalaima keskmise ooteaja ja on tรตestatavalt optimaalne, kuid see vajab teadaolevaid purskeaegu ja vรตib pikki tรถid nรคljutada. Round Robin on รตiglasem ajajagamissรผsteemide puhul.

Nรคlgimine toimub siis, kui protsess ootab lรตputult, kuna kรตrgema prioriteediga vรตi lรผhemad tรถรถd saavad protsessori esimesena. See on tavaline prioriteetse ja lรผhima tรถรถ esmalt ajastamisel, kus pikad vรตi madala prioriteediga protsessid ei pruugi kunagi kรคivituda.

Vananemine on tehnika, mis tรตstab jรคrk-jรคrgult kaua oodanud protsesside prioriteeti. See hoiab รคra prioriteedipรตhise ajastamise nรคlgimise, kuna isegi madala prioriteediga protsess saavutab lรตpuks piisavalt kรตrge prioriteedi, et see kรคivituks.

Konteksti vahetamine salvestab praeguse protsessi oleku ja laadib teise protsessi oleku selle trรผkkplaadilt, nii et tรคitmist saab hiljem jรคtkata. See on puhas ajastamiskulu, millega tegeleb dispetลกer iga protsessidevahelise lรผlituse korral.

Pikaajaline (tรถรถ) planeerija kontrollib, kui palju protsesse valmisolekujรคrjekorda siseneb, ja mรครคrab mitme programmeerimise astme. Lรผhiajaline (protsessori) planeerija valib, milline valmisoleku protsess jรคrgmisena kรคivitub, ja tรถรถtab palju sagedamini.

Linux kasutab EEVDF-ajastajat, mis asendas kernelis 6.6 tรคiesti รตiglase ajastaja (CFS). Windows kasutab ennetavat, prioriteedipรตhist ajastajat, millel on iga prioriteeditaseme piires ringjaotuse ajaviilutamine.

Masinรตppe mudelid ennustavad protsesside purskeaegu ning hรครคlestavad vรตi valivad ajastamispoliitikaid ooteaja ja energiatarbimise vรคhendamiseks. Neid tehisintellektil pรตhinevaid ajastajaid uuritakse andmekeskuste, pilveserverite ja reaalajas sรผsteemide jaoks.

Jah. GitHub Copilot saab genereerida FCFS-, SJF-, prioriteedi- ja ringkoodi koos Gantti diagrammi ja ooteaja arvutustega. Enne vรคljundile tuginemist kontrollige alati รครคrmusjuhtumeid, viigimurdmisreegleid ja keskmise aja valemeid.

Vรตta see postitus kokku jรคrgmiselt: