Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
1. Ideálny (a nepraktický) scenár:poznanie budúcnosti
* V perfektnom svete by ste vedeli, že presný čas CPU praskne každý proces bude potrebovať * skôr, ako * spustí. To by umožnilo optimálne plánovanie (napr. Najskôr najskôr).
* Realita: Poznanie budúcnosti je nemožné! Procesy môžu byť závislé od údajov, závislé od vstupov a ovplyvnené vonkajšími udalosťami, vďaka čomu je ich CPU veľmi nepredvídateľný.
2. Praktický prístup:odhad pomocou exponenciálneho priemerovania
Pretože nemôžeme poznať presný čas na prasknutie, operačné systémy používajú algoritmy predikcie Odhadnúť to. Najbežnejšou a efektívnejšou technikou je exponenciálne priemerovanie (tiež známe ako starnutie).
* vzorec:
`τ_ (n + 1) =α * t_n + (1 - α) * τ_n`
Kde:
* `τ_ (n+1)`:Predpovedaný čas prebiehajúceho * ďalšieho * CPU Burst.
* `t_n`:* skutočný * nameraný výbuch čas * najnovšieho * CPU Burst.
* `τ_n`:* predchádzajúci * predpovedaný čas prasknutia. Toto je odhad, ktorý sme urobili pred posledným výbuchom.
* `α`: vyhladzovací faktor (0 ≤ α ≤ 1). To určuje hmotnosť pridelená najnovšiemu výbuchu oproti predchádzajúcej predikcii.
* Vysvetlenie:
* Vzorec vypočíta vážený priemer predchádzajúcej predikcie (τ_n`) a posledný skutočný čas na prasknutie (`t_n`).
* `α` riadi, ako rýchlo sa predpoveď prispôsobuje zmenám v správaní procesu.
* vysoký a (takmer 1): Dáva väčšiu váhu nedávnemu výbuchu. Predpoveď rýchlo reaguje na náhle zmeny požiadaviek CPU. Vhodný pre procesy s krátkymi variabilnými výbuchmi.
* nízko a (takmer 0): Dáva väčšiu váhu minulosti. Predpoveď je stabilnejšia a menej ovplyvnená občasnými výkyvmi. Vhodné pre procesy s relatívne konzistentnými požiadavkami CPU.
* Keď príde nový proces, jeho počiatočný odhad náradia (`τ_0`) je zvyčajne nastavený na malú predvolenú hodnotu (napr. 0 alebo priemerný čas prasknutia iných procesov).
* Príklad:
Povedzme:
* `α =0,5`
* `τ_n =10` ms (predchádzajúca predpoveď)
* `t_n =20` ms (skutočný čas na prasknutie práve dokončený)
Potom:
`τ_ (n + 1) =0,5 * 20 + (1 - 0,5) * 10 =10 + 5 =15` ms
Predpovedaný čas na ďalší výbuch je 15 ms.
3. Ako to funguje v praxi (zjednodušené)
1. Inicializácia: Keď sa proces spustí, nastavte počiatočný odhad (`τ_0`).
2. vykonávanie: Proces beží a zmeráme jeho skutočný čas Burst CPU (`t_n`).
3. Odhad: Po dokončení prasknutia použite exponenciálny priemerný vzorec na výpočet nového predpovedaného času Burst (`τ_ (n+1)`).
4. Opakujte: Proces pokračuje v behu a po každom výbuchu opakujeme kroky 2 a 3. Predpoveď sa neustále aktualizuje.
4. Úvahy a výzvy
* Výber α: Výber správneho `α` hodnota je kritický. Neexistuje žiadna „najlepšia“ hodnota. Závisí to od charakteristík procesov bežiacich na systéme. Niektoré operačné systémy môžu dynamicky upravovať `α` na základe pozorovaného procesného správania.
* Presnosť: Exponenciálne spriemerovanie je *odhad *, nie dokonalý prediktor. Presnosť predikcie závisí od správania procesu a výberu `α`.
* Kontextové prepínanie režijných nákladov: Je potrebné zvážiť režijné náklady na meranie časov prasknutia a aktualizácie odhadov, najmä ak sú časté prepínače kontextov.
* Iné techniky predikcie: Zatiaľ čo exponenciálne spriemerovanie je najbežnejšie, existujú ďalšie techniky, napríklad použitie zložitejších historických priemerov alebo modelov strojového učenia. Tieto sa však používajú menej často kvôli pridanej zložitosti a potenciálu režijných nákladov.
V súhrne je výpočet času na burst CPU o * odhadovaní * pomocou minulého správania. Exponenciálne spriemerovanie je jednoduchá, ale účinná metóda, ktorá umožňuje operačnému systému prispôsobiť sa meniacim sa požiadavkám CPU procesu, čo umožňuje lepšie rozhodnutia o plánovaní.