A mai program OPERÁCIÓS RENDSZEREK. A probléma. Fogalmak. Mit várunk el? Tágítjuk a problémát: ütemezési szintek



Hasonló dokumentumok
OPERÁCIÓS RENDSZEREK. A mai program. Fogalmak. Ütemezés és a Context Switch

Operációs rendszerek. 3. előadás Ütemezés

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Operációs rendszerek előadás Multiprogramozott operációs rendszerek

Operációs rendszerek

Operációs rendszerek II. Folyamatok ütemezése

Az informatika alapjai. 10. elıadás. Operációs rendszer

Operációs rendszerek. 1. Bevezetö. Operációs rendszer: nincs jó definíció

Ütemezés (Scheduling),

Operációs rendszerek. Folyamatok kezelése a UNIX-ban

OPERÁCIÓS RENDSZEREK. Célkitűzések, tárgyfelépítés. Módszerek. OS fogalom, struktúrák. 2005/2006. tanév II. félév Dr. Vadász Dénes

Operációs rendszerek II. jegyzet

Dr. Illés Zoltán

Matematikai és Informatikai Intézet. 4. Folyamatok

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

Ütemezés (Scheduling),

Operációsrendszerek. 2. elıadás. Standard ismeretek II.

Operációs rendszerek Memóriakezelés 1.1

Virtualizációs Technológiák Bevezetés Kovács Ákos Forrás, BME-VIK Virtualizációs technológiák

Tartalom. Operációs rendszerek Bevezetés CPU ütemezés. Középtávú ütemezés. Hosszútávú ütemezés

Operációs rendszerek 1. kidolgozott tételsor Verzió: 1.0 (Build: )

OPERÁCIÓS RENDSZEREK 1. PROCESSZKEZELÉS

Bevitel-Kivitel. Eddig a számítógép agyáról volt szó. Szükség van eszközökre. Processzusok, memória, stb

A program SZÁMÍTÓGÉP ARCHITEKTÚRÁK. Legáltalánosabb architektúra. Eszközök szerepe. A vezérlők programozása. A vezérlők (adapterek, kontrollerek)

Az időhöz kötődő parancsok

(kernel3d vizualizáció: kernel245_graph.mpg)

OPERÁCIÓS RENDSZEREK. A mai program. A CPU által végrehajtott instrukciófolyam. A folyamat kontextus, processz menedzsment, processz állapotok

MIKRO MÉRETŰ PILÓTA NÉLKÜLI REPÜLŐK REPÜLÉSBIZTONSÁGI KÉRDÉSEI ELEKTROMOS TÁPELLÁTÁS BIZTONSÁGA

A számítógép alapfelépítése

Processzus. Operációs rendszerek MINB240. Memória gazdálkodás. Operációs rendszer néhány célja előadás Memóriakezelés

OPERÁCIÓS RENDSZEREK. A mai program. Hiba és eseménykezelés. Alapfogalmak. Eseménykezelés, szignálozás

Az MSP430 energiatakarékos használata

OPERÁCIÓS RENDSZEREK, PROGRAMOZÁSI ALAPISMERETEK. Répási Tibor dr. Vadász Dénes - Wagner György Miskolci Egyetem HEFOP-3.3.

A Számítógépek felépítése, mőködési módjai

II. év. Adatbázisok és számítógépek programozása

Operációs rendszerek

2016 UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Máté: Számítógép architektúrák

Előadás_#03. Előadás_03-1 -

Operációs Rendszerek II.

Programozás alapjai 1. (BMEVIEEA100)

1. Az utasítás beolvasása a processzorba

12. tétel. Lemezkezelés

DUNAÚJVÁROSI FŐISKOLA

Elosztott rendszerek

Fájl rendszer. Fájl koncepció Elérési módok Könyvtár szerkezet Védelem Konzisztencia szemantika

KETTŐS KÖNYVELÉS PROGRAM CIVIL SZERVEZETEK RÉSZÉRE

Feladatok (task) kezelése multiprogramozott operációs rendszerekben

Uniprogramozás. várakozás. várakozás. Program A. Idő. A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna

Elosztott rendszerek

Előadás_#06. Előadás_06-1 -

Feladatok (task) kezelése multiprogramozott operációs rendszerekben

Bevezetés a programozásba. 12. Előadás: 8 királynő

VIII. Szálak és animáció

Mérési útmutató. A/D konverteres mérés. // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait.

Használati útmutató. Felhasználói felület

3. Az univerzális szabályozó algoritmusai.

Számítógépek felépítése, alapfogalmak

FPGA áramkörök alkalmazásainak vizsgálata

UNIX folyamatok kommunikációja

8. Mohó algoritmusok Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete

EUROFLEX-33 ESEMÉNY NYOMTATÓ. -felhasználói és telepítői leírás-

Ezeket a kiemelkedı sebességő számítógépeket nevezzük szuperszámítógépeknek.

Fenntartói társulások a szabályozásban

Egyszerű RISC CPU tervezése

Operációs rendszerek MINB240

Novák Nándor. Készletezés. A követelménymodul megnevezése: A logisztikai ügyintéző speciális feladatai

Átrendezések és leszámlálások ÚTMUTATÓ Hegedüs Pál június 30.

Digitális technika II., 2009/2010 tavasz 1. vizsga A csoport

Operációs rendszerek MINB240

Operációs rendszerek MINB240. Bevitel-Kivitel. 6. előadás Input és Output. Perifériák csoportosításá, használat szerint

6. Tárkezelés. Operációs rendszerek. Bevezetés A program címeinek kötése. A címleképzés. A címek kötésének lehetőségei

Welcome3 Bele pteto rendszer

Nyíregyházi Főiskola Matematika és Informatika Intézete. Holtpont (Deadlock) Alapfogalmak, példák, ábrázolás. Biztonságos és nem biztonságos állapot

Dr. Schuster György október 3.

2) A közbeszerzési eljárás fajtája (tárgyalásos és gyorsított eljárás esetén annak indokolása)

Operációs rendszerek II. kidolgozott tételsor Verzió 1.0 (Build: )

VLIW processzorok (Működési elvük, jellemzőik, előnyeik, hátrányaik, kereskedelmi rendszerek)

- láda- vagy játékleírásból láda/játéklistába visszatérve nem a lista elejére ugrik, hanem ugyanoda, ahol voltunk a listában

A PC története. Informatika alapjai-9 Személyi számítógép (PC) 1/12. (Personal computer - From Wikipedia, the free encyclopedia)

FELHASZNÁLÓI ÚTMUTATÓ

Országzászlók (2015. május 27., Sz14)

Mérő- és vezérlőberendezés megvalósítása ARM alapú mikrovezérlővel és Linux-szal

Condor rendszer röviden. IKTA NI-2000/0008 munkaszkasz zárókonferencia

KÖZTERÜLETEK HASZNÁLATA ÉS MEGÍTÉLÉSE BUDAPESTEN. Közvélemény-kutatási jelentés december


Máté: Számítógép architektúrák

Párhuzamos és Grid rendszerek. Hol tartunk? Klaszter. Megismerkedtünk az alapfogalmakkal,

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

Számítógép Architektúrák

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

Számítógép Architektúrák

1. oldal, összesen: 29 oldal

0 0 1 Dekódolás. Az órajel hatására a beolvasott utasítás kód tárolódik az IC regiszterben, valamint a PC értéke növekszik.

Kapcsolás. Áramkörkapcsolás, virtuális áramkörkapcsolás, hullámhosszkapcsolás,

Operációs rendszerek. A Windows NT

ProCOM GPRS ADAPTER TELEPÍTÉSI ÉS ALKALMAZÁSI ÚTMUTATÓ. v1.0 és újabb modul verziókhoz Rev

Számítógépvezérelt rendszerek mérnöki tervezése

Átírás:

A mai program OPERÁCIÓS RENDSZEREK A CPU ütemezéshez fogalmak, alapok, stratégiák Id kiosztási algoritmusok VAX/VMS, NT, Unix id kiosztás A Context Switch implementáció Ütemezés és a Context Switch Operációs rendszerek 1 Operációs rendszerek 2 Fogalmak Er forrásokat Hozzárendelünk processzekhez (allokáció); A használatukat id ben beosztjuk (id kiosztás, scheduling); Kapcsoljuk azokat a kiosztott id pillanatban (dipatching és switch). Most a processzor üzemezésr 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. A probléma Több processz van, mint processzor A processzek osztozzanak egy CPU idején. (Tegyük fel: minden processzhez rendeltek (ez az allokáció) egy CPU-t.) Emlékezz a processz állapotokra: ha letelt az id szelete a futó processznek, Vagy ha maga blokkolt állapotba megy (ezzel lemond a CPU-ról), akkor a futásra kész processzekb l válasszunk ki egyet (ez a scheduling), és kapcsoljuk neki a CPU-t (ez a dispathing és a Context Switch második fele). Operációs rendszerek 3 Operációs rendszerek 4 Tágítjuk a problémát: ütemezési szintek 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.) Operációs rendszerek 5 Mit várunk el? Pártatlanság: minden processz (taszk) korrekt módon, de nem feltétlenül egyenrangúan kapja meg a processzort Hatékonyság: a CPU lehet leg legnagyobb százalékban legyen kihasználva Válaszid (interaktív felhasználóknak): elfogadható legyen (valósidej eseményekre: korlátos legyen) Fordulási id (kötegelt munkák): elfogadható legyen Teljesítmény: id egységre es JOB, taszk, processz feldolgozás (más, mint a CPU kihasználás!) jó legyen Látható ellentmondások! Operációs rendszerek 6

Technikai alapok Óraeszköz periodikusan megszakításokat generál Az id t szeletekre (time slice, quantum) bonthatjuk A CPU felhasználás idejét, a processzek életidejét stb. számon tarthatjuk Bizonyos id nként az állapotokat kiértékelhetjük, és CPU kapcsolást valósíthatunk meg Operációs rendszerek 7 Az óraeszköz A programozható óra 3 komponensb l áll: oszcillátor kristály: nagy pontossággal periodikusan jeleket generál (tipikusan 5-100MHz). Számláló (counter): ami dekrementálja az értékét minden a kristály által generált jelre. Mikor a számláló eléri a 0 értéket, IT generálódik. Tartó regiszter (holding register): az óra indulásakor (oneshot mode) vagy a counter 0-vá válásakor (square-wavemode) tartalma betölt dik a számlálóba, ezzel szabályozhatjuk, milyen gyakran keletkezzen IT (clock tick rate). Pl. egy 1MHz-es kristály (1μs-ként ad jelet), 16 bites regiszterekkel programozható 1μs-t l 65535 μs-ig tartó óra ütés (clock-tick) tartományba. Operációs rendszerek 8 Az óraeszköz IT kezel jének feladatai A napi id karbantartása, a futó processz által felhasznált CPU id számolására, a processz id kvantuma lejártának megállapítására, ütemez meghívására, alarm szignál generálására (amikorra azt egy processz igényelte), "watchdog timer"-t biztosíthat (pl. floppy kezelésnél: felpörgetés, lehet I/O; ugyanekkor indul a wd-timer, ami leállítja a pörgetést, ha nem jön újabb i/o kérés) Segíti a profiling-ot, monitoring-ot, statisztikáz. Napi id karbantartás 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. 00:00:00 UTC) a bootolási id t l (32 bit a tick-számlálónak, 32 bit a secben mért betöltési id nek). A rendszergazda által adott dátum-id átszámítódik clocktick-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) Operációs rendszerek 9 Operációs rendszerek 10 CPU id nyilvántartás A processzhez tartozó számláló ütésenként inkrementálódik, ha a processz futó állapotú. Megoldható, hogy külön számláljuk a felhasználói módú és a kernel módú CPU használatot (persze, kis hibák itt lehetnek). Az id -szelet nyilvántartása A quantum, time-slice nyilvántartáshoz a context switch esetén egy számlálót (akár processzenkénti számlálót) feltöltünk óra-ütésekben mért id szelet értékkel, majd ezt ütésenként dekrementáljuk. A számláló 0-vá válása jelzi a quantum lejártát Id zít (alarm, watchdog-timer) Id k lejártát ütésekben (tickek-ben) adott számlálók 0- vá válása jelezheti. Számlálók (órák) id ben rendezett láncolt listáját tartjuk fel, a számlálókban a következ szignál ideje (tick-ben). A lista elején lév számlálót dekrementáljuk. Pl. Kurrens id : 4200, S1:4203, S2:4207, S3:4213 Kurrens id 4200 Következ szignál 3 Clock header 3 S1 4 S2 6 S3 Operációs rendszerek 11 Operációs rendszerek 12

Vissza az ütemezéshez: technikai alapok Óraeszköz periodikusan megszakításokat generál Az id t szeletekre (time slice, quantum) bonthatjuk A CPU felhasználás idejét, a processzek életidejét stb. számon tarthatjuk Bizonyos id nként az állapotokat kiértékelhetjük, és CPU kapcsolást valósíthatunk meg Döntési stratégiák Nem beavatkozó (non-preemptive) run-to-completion jelleg együttm köd (kooperative) Szelektív beavatkozó Beavatkozó (preemptive): akkor is elveszik a CPU-t egy processzt l, ha az nem akar lemondani róla Operációs rendszerek 13 Operációs rendszerek 14 Ütemezési döntési helyzetek 1 Egy processz wait állapotátmenete. 2 Egy processz preemption állapotátmenete (pl. megszakítás bekövetkezése miatt). 3 Egy processz signal állapotátmenete. 4 Egy processz terminálódása. (4) exit running (1) sleep/wait/request (2) preempt (3) signal/assign blocked waiting schedule/run ready Operációs rendszerek Ütemezési döntési helyzetek 1 Egy processz wait állapotátmenete. 2 Egy processz preemption állapotátmenete (pl. megszakítás bekövetkezése miatt). 3 Egy processz signal állapotátmenete. 4 Egy processz terminálódása. A processz szempontjából az 1. és 4. helyzet nem döntési helyzet. Az viszont a 2. és a 3. számú. Ha ütemezési döntések csak az 1., 4. helyzetekben lehetségesek: nem beavatkozó az ütemezés. Operációs rendszerek 16 A leegyszer sített forgatókönyv 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 sheduler) 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 Operációs rendszerek 17 Mi befolyásolhatja a kiválasztást? Prioritás = fontosság. Mi befolyásolhatja? A processzek memóriaigénye A processzek érkezési ideje vagy érkezési sorrendje Az eddigi CPU felhasználási id * Vö.: CPU lázas processzek szemben I/O lázas processzek A várható CPU felhasználási id * Vö.: Számolásigényes processzek szemben I/O igényes processzek. Vajon lehet-e id t becsülni? A processz id szer sége ** Vö.: interaktív processzek szemben kötegelt munkák, CPU lázas szakaszok szemben az I/O lázas szakaszok. Rendszer terhelés befolyása. Valós idej processzek problémája kezelend. Operációs rendszerek 18

Egy kis fogalom magyarázat A processz életében lehetnek CPU lázas id szakaszok (CPU burst) I/O lázas id szakaszok (I/O burst) Vannak Számolásigényes (CPU bound) processzek (hosszú CPU lázas szakaszokkal); I/O igényes (I/O bound) processzek (rövid CPU lázas szakaszok, sok I/O lázas szakasz). Melyik ütemezési prioritása legyen magasabb? Egy processz állapotátmenetei CPU lázas id szakában Blokkolt Fut Ready Egy processz állapotátmenetei I/O lázas id szakában Blokkolt Fut Ready Operációs rendszerek 19 Operációs rendszerek 20 Az ütemezési algoritmusok 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 Mediumterm ü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) First Come, First Served A processzek készletében (Process Pool) lév processzek a beérkezési sorrendjük szerint kapnak CPU-t. Egyszer a megvalósítás. Kialakulhat a convoy effect : korábban érkezett CPU lázas szakaszú processz lefogja a CPU-t. (Országúton lassú járm mögött sorban a gyorsabbak) Operációs rendszerek 21 Operációs rendszerek 22 Shortest Job First 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. Aging algoritmus 0, 1, 2,,i,.. CPU lázas szakaszok ismétl dnek (nem egyforma id t igényelve). Becsülhetjük a következ idejét (T i : tényleges, mért; B i : becsült): B i+1 = a * T i + (1 - a) * B i ; ahol 0 <= a <= 1. Legyen a = 1/2, ekkor (a: súlyozó faktor) B i+1 = (T i + B i ) / 2 i i +1 i + 2 i + 3 T i B i 6 10 4 8 6 6 4 6 13 5 i + 4 13 9 i + 5 11 Operációs rendszerek 23 Operációs rendszerek 24

Policy Driven Scheduling 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 az é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éret-vezérelt id kiosztás speciális esete a valós idej (Real Time) id kiosztás. Round Robin Egyszer, elég régi algoritmus. Id szeleteket (quantum) rendelünk a processzekhez. A kész állapotú processzek egy soron nyilvántartottak. Egy processz futhat, amíg a id szelete tart (ha blokkolódik, akkor addig sem fut). Lejárt szelet (preempted) processz a sor végére kerül. A sor elején álló kapja a CPU-t. A listán a processzek körben járnak. Operációs rendszerek 25 Operációs rendszerek 26 Multilevel Feedback Queue Scheduling Több ready sor van, a különböz prioritási szintekhez Elvileg lehet minden sorhoz más-más scheduling/prioritás algoritmus Pl. interaktív processzekhez preemptív FCFS, vagy MLFQ Batch processzekhez SJF Valós idej (Real Time) processzekhez fix prioritás Minden sorhoz rendelhetünk id szeletet Kell egy módszer: mikor, mennyivel csökkentsük a prioritást Kell egy módszer (algoritmus), mikor mennyivel növeljük a prioritást (visszacsatolás) Preempted/blocked/signaled processz a neki megfelel sor végére kerüljön Kell egy módszer, melyik sorról "kapcsoljunk" Pl. a legegyszer bb: a legmagasabb sorról az els t. Operációs rendszerek 27 VAX VMS scheduling Multilevel feedback jelleg, alkalmas real time-ra is. 32 prioritási szint. Nagyobb szám: nagyobb prioritás. 16-32: a valós idej processzek számára. Nem dinamikus! 0-: reguláris processzeknek, dinamikusan számítódik. A processz bázis-prioritása: minimális prioritása. Rendszerhívásokhoz rögzített prioritás növekmény. Mikor a processz futásra késszé válik, a növekmény hozzáadódik a bázis-prioritáshoz, és a megfelel sorra kerül processz. Scheduled processz prioritása egy szinttel csökken (határ a bázis-prioritás). Ha elveszik t le a CPU-t, erre az új sorra kerül. Sokáig várakozókat eggyel följebb emelik (no starvation). A scheduler a legmagasabb prioritás sor elejér l választ. Operációs rendszerek 28 0 Kernel mód prioritástartomány Küszöb prioritás User mód prioritástartomány n Unix id kiosztás Nem megszakítható Megszakítható Swapper Diszk I/O várakozás Várakozás bufferre Várakozás i-bögre Karakter I várakozás Karakter O várakozás Gyermek exitre várakozás U k szint U k +1 szint U k + 2 szint U k + 3 szint U k + 4 szint U n szint Operációs rendszerek 29 A Unix id kiosztása A processzeknek user-mode vagy kernel-mode prioritásértéke lehet. Az el z dinamikus, ezek lehetnek preempted processzek. Utóbbi fix érték. Ezekre nincs preempció. Küszöb prioritás szint elválaszt. A user-mode prioritások (p_usrpri) dinamikusan igazítódnak. A p_cpu mez a futó processznél a CPU használattal arányosan n. A p_cpu mez t quantumonkként öregbítik (aging): p_cpu = p_cpu / const1; (rendszerint const1 = 2). Operációs rendszerek

A Unix id kiosztása 2 Egy példa Quant um A processz p_uspri p_cpu B processz p_uspri p_cpu C processz p_uspri p_cpu 1 0 0 63 7 A prioritás kiszámítódik (kisebb érték jelenti a nagyobb prioritást!): p_usrpri=puser+p_cpu/const2 + p_nice/const3; (Rendszerint const2=const3=2;). A PUSER a processz bázis prioritása, küls prioritás. A p_nice a nice() rendszerhívással (felhasználói kontrollt lehet vé tev ) beállított érték. A p_usrpri a küszöb érték alá, egy beállított érték fölé nem mehet. Egy rendszerben a PUSER=. Ha egy processz megkapja a CPU-t és quantumában végig használja, a p_cpu növekmény legyen. Legyen 3 processz (A, B, C), induláskor a C p_cpu-ja 7, a másik kett é 0. Induláskor a p_uspri C-nél 63, a másik kett nél. Mindhárom processznél a p_nice érték 0 legyen. Követhetjük, hogyan változnak a prioritások, melyik processz kap CPU-t. 2 3 4 5 75 67 63 76 1 2 7 67 33 75 67 63 0 1. 7 8 61 75 67 7 3 3 1 2 61 Operációs rendszerek 31 Operációs rendszerek 32 BSD 4.3 Scheduling Quantum=0.1 sec; const2=4; const3=2; const1 dinamikusan számítódik: const1=(2*load+1)/(2*load); ahol load a run queue álagos hossza az utóbbi 1 percben Ugyanekkor a p_cpu öregbítés nem quantumonként, hanem 1 sec-enként történik csak! Az 1 sec-nél hosszabb ideig blokkolt processzeknél const1 a blokkolási id t l is függ! NT Scheduling a fonalakra Van standby állapot is: a legnagyobb prioritású futásra kész. A standby-t ütemezik ki. 32 prioritási szint, 16-31: valósidej, 0-: normál, változó (mint a VAX/VMS-nél) Lejárt quantumú fonál prioritás 1-gyel csökken (a bázisig). Kész állapotba jutó fonál prioritása növekszik, a blokkolódása típusától függ en A legmagasabb kész sor els fonala standby állapotúra változik. Ha nincs ilyen, az idle fonál lesz standby. Operációs rendszerek 33 Operációs rendszerek 34 Linux scheduling A POSIX 1003.4-nek megfelel en több ütemezési osztály van (processzenként beállítható) SCHED_FIFO, SCHED_RR, SCHED_OTHER A schedule( ) függvény hívódik ha processz blokkolt állapotba megy, Minden syscall és "slow" IT után, ha egy flag beállított. A schedule( ) függvény 3 dolgot csinál "szokásos" teend ket (miknek az óra IT kezel ben kellene lenniük, de "hatékonyság" miatt itt vannak) Legmagasabb prioritású processz meghatározása Context Switch A CPU allokálás: Context Switch A futó processz hardver kontextusát (dinamikus részét) lementjük valahová, a kiválasztott processz kontextusát felvesszük. Legfontosabb a programszámláló (PC, IP) lementése, felvétele. Lementés történhet wait (blokkolódás) állapot-átmenetnél, vagy preemption állapot-átmenetnél is. A felvétel schedule átmenetet okoz. Operációs rendszerek 35 Operációs rendszerek 36

Hova mentsük le a dinamikus kontextust? 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árba. 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! Operációs rendszerek 37 Unix processz kontextus komponensek A kontextus statikus része Felhasználói szint kontextus Program szöveg Adatok Veremtár Osztott adatok Rendszer szint kontextus statikus része Process Table bejegyzése U Area Processzenkénti Region Table A kontextus dinamikus (volatile)része Keret a 3. rétegnek Keret a 2. rétegnek Keret az 1. rétegnek Felhasználói szint Operációs rendszerek 38 Egy lehetséges mechanizmus Lásd a Unix processz kontextus á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 vissztérünk; schedule átment következett be. A kapcsolás lépései Döntés, legyen Context Switch. A save-context() algoritmussal a kurrens processz dinamikus kontextusának lementése; A legjobb processz kiválasztása (scheduling algoritmusok!) A resume-context() algoritmussal a kiválasztott processz kontextusának felvétele. Tételezzük fel: R0 regiszterben van a függvények visszatérési értéke, PC a programszámláló, PSW a státus regiszter. Ezekre van hardveres push/pop. Operációs rendszerek 39 Operációs rendszerek 40 Pszeudókódok 1 int save_context() { R0 0; SWIT { HW-PUSH(PC,PSW); PUSH (altalanos regiszterek); /* lement dött a keret, R0=0-val */ R0 (-1); JUMP Return-re; Return(R0); /* A HW-PUSH-nál a PC a Return-re mutat. Látjuk majd, két visszatérés van ebb l. El ször a JUMP Return miatt (R0=-1-gyel), másodszor a PC felvétele miatt (de akkor el tte az R0- t is felveszik, az meg 0 lesz, tehát R0=0-val). */ Operációs rendszerek 41 Pszeudókódok 2 int resume_context(pid_t pid) { A pid-del azonosított processz vermér l vedd vissza az általanos regisztereket; POP PSW; POP PC; /* ide a vezérlés nem juthat el */ /* Miért nem jut oda a vezérlés? Mert a visszavett PC a save_context Return-jére mutat! */ Operációs rendszerek 42

A Context Switch pszeudókódja if (save_context()){ Ütemezz másik processzt, ennek pid-je = new_pid; resume_context(new_pid); /* 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 ifnek el ször nem-nulla értéket ad (és belefut a schedulingba), másodszor 0-val visszatérve kikerüli azt. */ Operációs rendszerek 43 A vezérlés menete Dönt; if(save_context( )) { npid = Ütemez; A B Resume_context(npid); IT 2nd; D S Ü 2nd R IRET rendszerek Operációs 44 Volt már ilyen, emlékezzünk #include <setjmp.h> jmp_buf env; int i = 0; main () { if (setjmp(env)!= 0) { (void) printf("2nd from setjmp: i=%d\n", i); exit(0); (void) printf("1st from setjmp: i=%d\n", i); i = 1; g(); /*NOTREACHED*/ g() { longjmp(env, 1); /*NOTREACHED*/ Összefoglalás Foglakoztunk az Alapokkal, stratégiákkal Id kiosztási algoritmusokkal VAX/VMS, NT, Unix id kiosztással A Context Switch implementációval Operációs rendszerek 45 Operációs rendszerek 46 OPERÁCIÓS RENDSZEREK Ütemezés és a Context Switch Vége Operációs rendszerek 47