Professional Documents
Culture Documents
• Erőforrásokat
• Hozzárendelhetünk processzekhez (allokáció);
• A használatukat időben beoszthatjuk (időkiosztás, scheduling);
• Kapcsoljuk azokat a kiosztott időpillanatokban (dispatching és switch).
• Most a processzor „ütemezéséről” lesz szó
• (Az egyéb erőforrás ütemezés kérdéskör a „kölcsönös kizárás” probléma
kezelésénél előjön majd …)
• A CPU meglehetősen fontos (és jellegzetes) erőforrás. Érdemes ütemezését
külön tárgyalni.
• Long-term-scheduling (hosszútávú)
• JOB ütemezés: JOB/taszk pool-ból melyiket válasszuk ki futásra. A
multiprogramozási szintet befolyásolja.
• Medium-term-scheduling (középtávú)
• suspended (futásra nem kész, partially executed, outswapped) processzek közül
melyeket helyezzük futásra késszé (memória igény is érdekes)
• Short-term-scheduling (rövidtávú)
• futásra kész processzek közül melyik kapja a CPU-t.
• A továbbiakban ezzel foglalkozunk. (Ezzel ismét szűkítünk.)
• Egy számláló (64 bites) a napi időt (time-of-day) nyilvántartja óra ütésekben
(clock-tick), vagy 2 számláló: sec-ben + „ütésszám a kurrens sec-ben” (32 bit a
sec-nak, 16 bit tickeknek)
• egy fix időhöz képest (Unix: 1970. jan 1. 12:00-tól)
• a bootolási időtől (32 bit a tick-számlálónak, 32 bit a sec-ben mért betöltési
időnek).
• A rendszergazda által adott dátum-idő átszámítódik clock-tick-ekbe, és beíródik a
számlálóba.
• Az óra kezelő (clock driver, clock IT handler) ütésenként növeli ezt a számlálót
(számlálókat)
4200 3
• A futó processz ideje lejárt (egy logikai óra, számláló lejárt, ütésére egy IT
kezelő működésbe lép), vagy a futó processz blokkolt állapotba menne;
• A kezelő (a scheduler) kiértékel, és kiválasztja a futásra kész processzekből a
„nyertest” (ez egy prioritás számítás, optimum számítás);
• Majd megtörténik a „kapcsolás” …
Fut Fut
• Mi (milyen) a prioritásfüggvény?
• Az igény-bejelentési sorrend (First Come, First Served) (Long- és Medium-term
ütemezéshez)
• A legkisebb igény (Shortest Job First) (Long- és Medium-term ütemezéshez)
• Valamilyen ígéret (ígéret-vezérelt időkiosztás) (Policy Driven Scheduling)
• Körkörös sorrend (Round-Robin Scheduling)
• Több összetevőtől függő (Többszintes prioritás-sorokon alapuló visszacsatolásos)
(Multilevel Feedback Queue Scheduling)
• Régi, egyszerű.
• A nyomtató kiszolgálási sorokból ütemezésre még ma is használják.
• Az átlagos fordulási idő a legkisebb.
• CPU ütemezéshez: hogyan lehetne megmondani előre a várható időigényt?
• Idősorozatokkal jellemezhető munkákhoz az aging (öregedés) algoritmus.
Ti 6 4 6 4 13 13
Bi 10 8 6 6 5 9 11
• Reális ígéret: n számú processz esetén 1/n-ed részét kapja egy processz a
CPU-nak.
• Mérni kell
• élet-idő-t (a rendszerben eddig eltöltött idejét), és
• cpu-idő-t (eddig felhasznált CPU időt), számítandó a
• jogosultsági-idő = élet-idő / n;
• prioritás = jogosultsági-idő / cpu-idő;
• Más ígéretek is lehetnek.
• Az ígérelt-vezérelt időkiosztás speciális esete a valós idejű (Real Time)
időkiosztás.
Lehetne
• A Process Table sorába (PCB-be). Hátrány: nagy lesz a tábla, a
lementés/felvétel hardveresen nem támogatott.
• Veremtábla. Előny: hardveres push/pop is van.
• Felhasználói szintű verembe? Nem.
• Közös kernel verembe?
• Processzenkénti kernel verembe?
• Egyes CPU-kban többszörös regiszterkészlet!
• Egyes CPU-knak van védett módú processz kapcsolás gépi instrukciójuk!
• Lás a Unix processz kontetus ábrát (előző dia): keretek a processz kernel
veremben a dinamikus kontextus részére.
• Hány keret kell? Mikor keletkezik új réteg?
• rendszerhívással (trap) belépünk a kernelbe;
• megszakítással belépünk a kernelbe;
• preemption következett be.
• Megszűnik egy réteg, ha
• rendszerhívásból visszatérünk user szintre;
• megszakítás kiszolgálásból visszatérünk;
• schedule átmenet következett be.
…
if (save:context()) {
Ütemezz másk processz, ennek pid-je = new_pid;
resume_context(new_pud);
/* ide a vezérlés nem juthat el */
} … /* Innen futhat a visszavett kontextusú processz */
/* Ne feledjük, a save_context-ből két visszatérés is van: az if-nek
először nem-nulla értéket ad (és belefut a schedulingba),
másodszor 0-val visszatérve kikerüli azt.
*/
2022. 10. 29. Operációs Rendszerek előadás - Dr. Megyesi Zoltán 43
A vezérlés menete …
Dönt:
if(save_context()) {
npid = Ütemez;
Resume_context(npid));
}
2nd;
g() {
longjmp(env,1);
/*NOTREACHED*/
}
• Foglalkoztunk az
• Alapokkal, stratégiákkal
• Időkiosztási algoritmusokkal
• VAV/VMS, NT, Unix időkiosztással
• A Context Switch implementációval