Operációs rendszerek I.
Alapismeretek Az operációs rendszerek meghatározása Az operációs rendszer fogalmát nehéz meghatározni. Röviden a számítógépen állandóan futó program, mely közvetlenül vezérli a gép működését, biztosítja a gép és a felhasználó közötti kommunikációt, elosztja az erőforrásokat. Közvetítő szerepet tölt be a számítógép hardvere és a felhasználó között. Operációs rendszerek osztályozási szempontjai 1. 2. 3. 4. 5. 6.
Felhasználók száma (egyfelhasználós, többfelhasználós) A multiprogramozás foka (nem multiprogramozott/multiprogramozott) Az elérés módja (kötegelt, interaktív (idõosztásos), valós idejû) A hardver mérete (nagygépes, kisgépes, mikrogépes) A rendszer struktúrája (centralizált, elosztott, hálózati) A felhasználás jellege (ügyviteli, adatfeldolgozó, tranzakciós rendszerek, folyamatvezérlõ, ipari és tervezõi programfejlesztõi környezet, személyi számítógépes rendszerek stb.).
és lekérdezõ munkaállomások,
Az operációs rendszerek feladatai Erőforrás-szervezés Két fő cél: kényelmes használat ellenőrzött kiosztás A felhasználói felület Egy operációs rendszernek alkalmasnak kell lenni arra, hogy kommunikálni tudjon a felhasználókkal és azok programjaival, Az ezt megvalósító felhasználói felület két részből áll: parancs interface, amely biztosítja a felhasználónak, hogy parancsokat adjon közvetlenül a számítógépnek. program interface, amely biztosítja azokat a szolgáltatásokat, amelyekre az éppen futó programoknak szükségük van. Programok szervezése A (futó) programok szervezése az operációs rendszer egyik legfontosabb feladata. Ha az operációs rendszer részére csak egy CPU áll rendelkezésre, akkor két lehetőség közül választhat: vagy egy program fut egy adott időben, a memóriában a befejezésig, vagy ha több program futásáról kell gondoskodni, akkor ezek sorban kapnak lehetőséget egy-egy rövid időre a CPU használatára. Készülék-kezelés A számítógépek az I/O készülékek széles választékával rendelkeznek. Nyomtatók, terminálok, plotterek, mágneslemezek, mágnesszalagok és egyéb kommunikációs készülékek találhatók az ilyen rendszerekben. Fontos a készülékek kezelését, ellenőrzését egy jól szervezett rendszerre bízni. A készülékek kezeléséhez szorosan hozzátartoznak a megszakítások. Sok esetben ugyanis az adatátvitel a készülékek között akkor is folytatódik, ha a CPU mással van elfoglalva. Ha egy I/O egység készen áll adatok továbbítására vagy fogadására, akkor egy megszakítás jellel ezt közli az operációs rendszerrel. Memória-kezelés A központi tár egy számítógép legkritikusabb erőforrása. A korai operációs rendszerek esetében a memóriakezelés viszonylag egyszerű volt: Az operációs rendszer elfoglalta a memória egy részét, és az éppen futó program rendelkezett a memória megmaradt részével. A többprogramos rendszereknél azonban a memória egyidejűleg több program között kerül felosztásra és ezek védelme egymás ellen már sokkal összetettebb feladat.
1.
Operációs rendszerek I. Állomány-kezelés Egy számítógépes rendszeren az információk tárolását többnyire állományokba (fájlokba) szervezéssel oldjuk meg. Az állományok kezelésén értjük azok olvasását, írását, szervezését és a tárolt információk elérésének ellenőrzését is Job and Session Management Néha előfordul, hogy egy feladat teljes körű végrehajtásához programok sorozatát kell végrehajtani. A sorozat egy tagját elemnek (jobnak) nevezzük. Az elemek összekapcsolt sorozata a csomag (session). Néha kívánatos, hogy az elemeket ill. a csoportokat egy komplett egységként kezeljük. Hiba-kezelés Az operációs rendszernek kell foglalkozni minden olyan hibával, amely a számítógépes rendszerben előfordulhat. A hibák lehetnek hardware hibák (készülékekben, memóriában, átviteli vonalakban) és software hibák (rendszerprogramokban vagy felhasználói programokban). A hiba kezelésének az a feladata, hogy érzékelje és felfedje ezeket a hibákat. A hibák megoldása azonban (extrém eseteket kivéve) a felhasználó feladata. Megbízhatóság és védelem Az operációs rendszer kiemelt feladatai közé tartozik az, hogy biztosítsa a számítógépes rendszer korrekt működését, továbbá az, hogy védje mind az adatokat, mind a programokat a sérüléstől és az illetéktelen hozzáféréstől. Felügyelet és elszámolás A legjobban felkészített operációs rendszerek rendelkeznek egy olyan lehetőséggel, amelynek segítségével a felhasználók által igénybe vett erőforrások felhasználása mérhető. Erre azért van szükség, mert a rendszer egyes részei olyan költségekkel rendelkezhetnek, amelyeket a felhasználókra kívánunk terhelni. Operációs rendszerek története Operációs rendszer nélkül mérnökpult open shop rendszer mágnesszalagos egységek megjelenése – fontos programok (compiler, linker) operátor – closed shop rendszer Supervisor programok és I/O rendszerek IBM 701 – Share Operating System Fortran Monitor System IBM 705 - Input/Output Control System - BIOS Szalagos és lemezes operációs rendszerek IBM/360 – TOS/360 mágneslemez megjelenése – DOS JOB Control Language Multiprogramozott kötegelt rendszerek Burroughs Large System (B5000) – Master Control Program virtuális memória priorizálás Időosztásos rendszerek Interaktív operációs rendszerek Multics (Multiplexed Information and Computing Service) Unix
2.
Operációs rendszerek I.
Operációs rendszerek típusai Kötegelt rendszerek Elosztott rendszerek Fontosabb szervezési elvek: homogén (azonos típusú processzorok) vagy inhomogén rendszer szimmetrikus (nincs kitüntetett processzor) vagy aszimmetrikus rendszer Időosztásos rendszerek Prioritásos (real-time) rendszerek T.H.E. architektúra rétegszerkezet absztrakt (virtuális) gépek PDP10/11 – Tenex Az operációs rendszerek szerkezete
Rendszermodulok A folyamatok kezelése program betöltése, végrehajtása, folyamatok létrehozása, megszüntetése, attribútumainak beállítása, folyamatok közötti kommunikáció, folyamatok egymáshoz illetve külső eseményekhez - vagy órához- szinkronizálása, nyomkövetés hibakereséshez. A központi tár kezelése központi tár igénylése, felszabadítása, védett memóriaterületek kialakítása rendszer és felhasználói programterület szétválasztása Perifériakezelés igénylése, lefoglalása, felszabadítása, átvitel a program és a periféria között. Az állományok kezelése állományok létrehozása, törlése, attribútumainak beállítása, könyvtárak létrehozása, módosítása, állományok megnyitása, lezárása, szekvenciális és véletlen elérésű átvitel. Védelmi mechanizmusok (Protection system) hardveres hibajelzések kezelése, szoftveres hibajelzések, védelem A hálózatok kezelése kommunikációs csatornák létrehozása, megszüntetése, üzenetek, állapotinformációk küldése és fogadása,
3.
Operációs rendszerek I. -
műveletek távoli erőforrásokon.
4.
Operációs rendszerek I.
Kezelői felületek közvetlen kapcsolattartás során egy interaktív terminálon gépeljük le a parancsot, közvetett igény során a programokból adjuk ki a szolgáltatást igénylő utasítást. Az OR-nek azt a komponensét, amely a kommunikáció kezeléséért felelős felhasználói interface-nek nevezzük, és két fő részre osztható: A parancs interface azáltal, hogy magas szintű kommunikációt biztosít a felhasználó és az OR között, irányítja a programok futását. A program interface kezeli a futó programokat. Az OR ezen a részrendszeren keresztül tartja a kapcsolatot a programok és a rendszer által ellenőrzött erőforrások és szolgáltatások között. Perifériás műveletek gyorsítása Pufferelés A CPU és az autonóm perifériavezérlők egyidejűleg működnek. A beolvasás egy pufferbe történik, a következő adat beolvasása rögtön megkezdődhet, ha a CPU elvette innen az adatot. Egy munkán belül az adat feldolgozása és a következő I/O művelet egymással átlapoltan történik (átlapolt feldolgozás). Spooling (Simultaneous Peripheral Operations On-Line) Az egyfelhasználós rendszereknél bevezették a spooling technikát, amely egy lassú perifériára (nyomtató) való kivitelnél úgy küszöböli ki a központi egység állandó tétlenségét, hogy a kivitel először egy gyorsabb háttértárra történik viszonylag rövid idő alatt, majd a főprogram tovább fut, és maga a nyomtatás más feladatokkal párhuzamosan, a központi egység hulladék idejében hajtódik végre.
Folyamatkezelés A folyamat fogalma A folyamat (process) a multiprogramozott operációs rendszerek alapfogalma. Legtömörebb megfogalmazása: végrehajtás alatt álló ("életre kelt") program. Valójában a folyamat, a legtöbb esetben, több mint a program, mivel a folyamat fogalma nem csak a programot, hanem a futás közben lefoglalt erőforrásokat is takarja. Természetesen vannak olyan programok-programrendszerek, melyek több folyamatból állnak, ilyen esetben a folyamat nem fedi le a program fogalmát. Folyamatkezelés multiprogramozott rendszerekben Folyamatállapotok - Fut (running): A központi egység a folyamathoz tartozó utasításokat hajtja végre. CPU-nként egyetlen ilyen folyamat lehet. - Várakozik, blokkolt (blocked): A folyamat várakozni kényszerül, működését csak valamilyen külső vagy belső esemény bekövetkezésekor tudja folytatni. Például a folyamat elindított egy perifériás átvitelt és be kell várnia annak lezajlását. A rendszerben több várakozó folyamat is lehet. - Futásra kész (ready): A folyamat futásához minden feltétel adott, de a multiprogramozott rendszer központi egysége éppen foglalt, egy másik folyamat utasítását hajtja végre. A rendszerben több futásra kész folyamat is lehet.
5.
Operációs rendszerek I.
Állapotátmeneti gráf
Folyamatok felfüggesztése Az operációs rendszer felfüggeszthet (suspend) bizonyos folyamatokat, azaz időlegesen kiveheti azokat a fenti három állapot körforgásából, ha a rendszer túl van terhelve, túl sok folyamat vetélkedik a futás jogáért, a rendszer fontosabb erőforrásai túlzottan foglaltak, ha a rendszer "gyanúsan" működik vagy valamilyen vészhelyzet következik be (áramszünet), ha a felhasználó fel akarja függeszteni valamelyik folyamat, mert annak futására pillanatnyilag nincs szükség.
Környezetváltás Az átkapcsolások megvalósításához minden olyan információt meg kell őrizni, ami az egyes folyamatok zökkenőmentes folytatásához szükséges. Ez egyrészt a folyamat saját, másrészt az őt végrehajtó gép állapotjellemzőinek megőrzését jelenti.
6.
Operációs rendszerek I.
Saját állapotjellemzők: a folyamathoz tartozó programkód, változók aktuális értéke. beleértve a verem tartalmát is, hol tart a program végrehajtása (programszámláló). Folyamatok közötti kommunikáció (IPC – InterProcess Communication) Szinkronizálás: 1 bit (flag) v. változó, közös memóriaterület Közvetlen kommunikáció üzenetek küldésével és fogadásával Közvetlen kommunikáció csatorna használattal: közös file analógia Közvetett kommunikáció: mailbox analógia Folyamatok párhuzamosítása fork/join parbeign/parend Folyamatleírók a folyamat állapota, a folyamat azonosítója, a folyamat szülőjének és gyerekeinek azonosítója, a folyamathoz tartozó összes tárterület leírása, mutatók, illetve a virtuális tárkezeléshez szükséges összes adat (címtranszformációs táblák, lemezblokkok leírása, stb.), a folyamat által használt egyéb erőforrások leírása (pl. a nyitott állományok leírása), a regiszterek tartalma, várakozó folyamatoknál a várt esemény leírása ütemezéshez szükséges információk (prioritás, várakozási idő), számlázási információk és egyéb statisztikák. Szálak A szál (thread) a folyamtokhoz hasonló aktív entitás, a folyamatoktól az különbözteti meg, hogy az operációs rendszernek a szálak kezeléséhez kevesebb adatot kell nyilvántartania, általában csak saját regiszterei, és verme van, a kód- és az adatterületén és egyéb erőforrásokon más szálakkal osztozik. A szálak futási környezete a tradicionális folyamat, amely a szálak által közösen használt erőforrások tulajdonosa. Megszakítások Megszakításnak nevezünk - a számítógép részéről kezdeményezett - minden olyan “akciót”, amely az éppen feldolgozás alatt álló folyamatot - külsőleg v. belsőleg - megszakítva, (annak állapotát esetlegesen a folytatáshoz szükséges állapotban megőrizve) egy másik folyamatnak - az ún. megszakítási rutinnak - adja át a vezérlést. A megszakítási rutin ezután dönthet újabb akció(k) végrehajtásáról és/vagy a vezérlés visszaadásáról a megszakított folyamatnak. Kiváltó mechanizmus alapján megkülönböztetünk hardver- ill. szoftvermegszakításokat. Előbbieket mindig valamilyen - a számítógéphez csatlakoztatott - külső (tehát nem a végrehajtó egységen belüli) egység váltja ki (pl. bővítőkártya, DMA vezérlő) jelezvén valamilyen tevékenység befejezését (pl. adat küldése) vagy megkezdésének szükségességét (pl. adat fogadása). Megszakításosztályok - perifériák megszakításai, amelyek perifériás berendezések állapotának változását, átvitel befejeztét jelzik, - belső hardver megszakítások, pl. programozható óra, - utasítás-végrehajtási hibák, például nullával való osztás, vagy pl. a (virtuális) tárkezelés védelmi mechanizmusai válthatják ki, - komoly hardver meghibásodások, tápfeszültség kimaradás, - szoftver megszakítások, speciális gépi utasítások (csapda), például a rendszerhívások.
7.
Operációs rendszerek I. Megszakítások kiszolgálása
Konkurens folyamatok A folyamatokat függetleneknek tekintjük, ha egymás működését semmilyen módon nem befolyásolják. Független folyamatok végrehajtása általában aszinkron, azaz egymással párhuzamosan is végrehajtódhatnak, a végrehajtás egymáshoz viszonyított sebességéről semmilyen feltételezést nem tehetünk. A folyamatok között csatolást (függőséget) idézhet elő, ha - logikailag független folyamatok megosztottan használnak erőforrásokat (pl. egymást nem ismerő felhasználók folyamatainak végrehajtása ugyanazon a számítógép-konfiguráción, multiprogramozott operációs rendszer felügyelete alatt). - a folyamatok logikailag is függenek egymástól, együttműködnek valamely feladat megoldásán, közös változóik vannak, kommunikálnak egymással (pl. irányító rendszerek különböző funkcióit ellátó programok) Szinkronizáció A szinkronizáció a folyamat végrehajtásának olyan időbeli korlátozása, ahol az egy másik folyamat futásától, esetleg egy külső esemény bekövetkezésétől függ. Alapesetei: - Precedencia: A precedencia meghatározott sorrend biztosítása. Egy Pi folyamat Si és egy Pj folyamat Sj utasításainál a precedencia akkor áll fenn, ha Sj végrehajtása csak akkor kezdődhet el, ha Si már befejeződött. Természetesen itt és a későbbi definíciókban az "utasítás" nem egy gépi utasítást, hanem a programozó által összekapcsolt utasítássorozatot jelent. - Egyidejűség: Az egyidejűségnél két vagy több folyamat bizonyos utasításának végrehajtását - az előbbi példában Si-t és Sj-t - egy időben kell elkezdeni. Az ilyen szinkronizáció két folyamatnak egy találkozási pontját, randevúját valósítja meg, a két folyamat bevárja egymást, mielőtt a meghatározott utasítást megkezdené. - Kölcsönös kizárás (mutual exclusion): Kölcsönös kizárás esetén a résztvevő folyamatok utasításainak futási sorrendjére nincs korlátozás, de biztosítani kell, hogy a folyamatokban kijelölt utasítások (Si , Sj , ...) közül egy időben csak az egyik futhat.
-
A szinkronizációhoz kapcsolódó egyéb fogalmak: Holtpont (deadlock): A holtpont több folyamatra, esetleg az egész rendszerre vonatkozó fogalom. Holtpont akkor következik be, ha a folyamatok egy csoportja olyan feltételre, olyan esemény bekövetkezésére vár, amelyet csak a csoport egy másik várakozó folyamata képes előállítani. Nem beszélünk holtpontról, ha valamelyik folyamat egy külső eseményre várakozik, hiszen ez az esemény - legalábbis az operációs rendszer szemszögéből, a környezetet nem vizsgálva - még bekövetkezhet.
8.
Operációs rendszerek I.
-
-
Holtpont kezelése - Az erőforrások használatánál bevezetett szabályokkal biztosítjuk, hogy holtpont ne alakulhasson ki: holtpont megelőzése ( deadlock prevention ) holtpont elkerülése ( deadlock avoidance ) - Hagyjuk, hogy esetleg kialakuljon a holtpont és csak ekkor avatkozunk be: holtpont felismerése ( deadlock recognition ) holtpont megszüntetése ( deadlock recovery ) Éhezés (starvation, indefinite postponement): Az éhezés egyes folyamatokra vonatkozó fogalom. Egy folyamat akkor éhezik, ha a továbbfutásához szükséges erőforrásokhoz véges időn belül nem jut hozzá, mert más folyamatok mindig megelőzik. (Rögzített folyamatprioritások, tisztességtelen ütemezés.) Kölcsönös kizárás Mivel az operációs rendszerek legfontosabb feladata az erőforrások kezelése, azok osztott használatának biztosítása, ezért az operációs rendszerek belsejében a különböző szinkronizálási esetekből leggyakrabban a kölcsönös kizárás fordul elő. Egy erőforrás használatát valamelyik folyamatnak be kell fejeznie, mielőtt egy másik folyamat elkezdené, különben az erőforrást a második folyamat nem definiált, inkonzisztens állapotban találja. A kritikus szakasz Azon programrészletet, amelynek működése közben a folyamat az erőforrásra vonatkozó tevékenységét nem lehet megszakítani, pontosabban, amíg a felhasznált erőforráshoz más folyamat nem férhet hozzá, kritikus szakasznak nevezzük.
Megvalósítása: - Tisztán programozott megoldások: Ezek közösen használt változókon alapulnak, több processzoron párhuzamosan futó folyamatokat tételeznek fel, a mindhárom kritériumot teljesítő eljárások bonyolultak. A megoldásokban az erőforrásokon végzett műveletekről csak azt tételezzük fel, hogy azok nem interferálnak, hatásuk egyértelmű. - Hardvertámogatás: Speciális megszakíthatatlan gépi utasítások, amelyek egy utasítás alatt összevontan több műveletet is elvégeznek. - Szemafor (semaphore): A szemafor egy speciális adattípus, amely 0-t illetve pozitív egész számokat tartalmazhat és két művelet, a P (proberen - vizsgál vagy wait), illetve a V (verhogen - növel vagy signal) van értelmezve rajta. Mindkét művelet elemi, megszakíthatatlan. - Feltételes kritikus szakasz: Ha valamelyik folyamat az s utasítást hajtja végre, más folyamat közben nem férhet hozzá a v változóhoz - nem hajthat végre más v-hez tartozó kritikus szakaszt. A kritikus szakaszhoz hozzárendelünk egy logikai feltételt. Ha egy folyamat beléphet a kritikus szakaszba, akkor kiértékelődik a b feltétel és a folyamat csak akkor haladhat tovább, hajthatja végre az s utasítást, ha a feltétel igaz. Ha hamis, a folyamat felszabadítja a kritikus szakaszt és addig várakozik, amíg a feltétel igazzá nem válik. - Monitor: A monitor egy olyan programszerkezet, amelybe a programozó programrészleteket, eljárásokat zárhat. A monitor biztosítja, hogy egy időben csak egy folyamat lehet aktív a monitorban, csak egy folyamat hajthat végre valamelyik monitorbéli programrészletet. Ha már van aktív folyamat a monitorban, a többi folyamatnak a monitorba lépésnél várakozniuk kell.
9.
Operációs rendszerek I.
Ütemezés Az operációs rendszer egyik legfontosabb feladata, hogy a rendszer erőforrásait kezelje, azaz meghatározott gazdálkodási, védelmi, stb. szempontok betartásával ellássa a folyamatokat futásukhoz szükséges erőforrásokkal. Az ütemezés (scheduling) az a tevékenység, amelynek eredményeként eldől, hogy egy adott erőforrást vagy erőforráscsoportot a következő pillanatban mely folyamat használhat. Szintek Az ütemezés három különböző szintjét különböztetjük meg: 1. Hosszútávú (long-term) vagy munka ütemezés A hosszú távú ütemezés határozza meg, hogy a véletlen elérésű háttértáron várakozó, még meg nem kezdett munkák közül melyek kezdjenek el futni. Az ütemező algoritmusnak viszonylag ritkán kell futnia, ha közel azonos terhelést akarunk biztosítani, akkor egy futó munka befejeződésekor választunk ki egy új elindítandót. Mivel ritkán fut, ezért a következő munka kiválasztása viszonylag hosszú ideig tarthat, az algoritmusnak nem kell gyorsnak lennie. Az algoritmusnak olyan munka-halmazt (job-mix) kell összeállítania, ami a rendszer erőforrásait kiegyensúlyozottan használja, nem indít el olyan munkát, amely egy már úgyis túlterhelt erőforrásra tart igényt. A CPU kihasználtságát szem előtt tartva biztosítja, hogy CPU-korlátozott és periféria-korlátozott munkák egyenletesen forduljanak elő. 2. Középtávú (medium-term) ütemezés A középtávú ütemezés a rendszer időszakos terhelésingadozásait egyes folyamatok felfüggesztésével illetve újraaktiválásával próbálja kiegyenlíteni. Egy folyamat felfüggesztésekor a folyamat környezetét háttértáron tárolják és megfosztják az elvehető erőforrásaitól (pl. memóriától). A felfüggesztett folyamatok nem versengenek tovább az erőforrásokért, csak aktiválásuk után válhatnak futásra késszé. 3. Rövidtávú (short-term) ütemezés A rövidtávú ütemezés dönti el, hogy a processzort melyik futásra kész folyamat kapja meg. A rövidtávú ütemezés gyakran fut, ezért gyorsnak kell lennie, különben a rendszer túl sok időt töltene az ütemezéssel, elvéve a processzort a folyamatoktól. Az ütemező mindig a tárban van, része az operációs rendszer magjának. Az ütemező algoritmusok alapjai Az ütemezés alapját az képezi, hogy egy folyamat futása során két különböző jellegű tevékenységet hajt végre: a CPU löket (CPU burst) ideje alatt a folyamatnak csak a processzorra - és az operatív tárra - van szüksége, a periféria löket (I/O burst) alatt a folyamat egy perifériás átvitelt hajt végre, annak lezajlására várakozik. Ütemezés a folyamatok következő állapotátmeneteinél következhet be: a futó folyamat várakozni kényszerül, a futó folyamat vagy lemond a processzorról vagy elveszik tőle, egy folyamat felébred, futásra késszé válik, a futó folyamat befejeződik. Az ütemezési algoritmusok teljesítményét a következő paraméterek alapján szokták összehasonlítani: - CPU kihasználtság: A központi egység az idő hány százalékában foglalkozik a folyamatok utasításainak végrehajtásával. A kihasználtságot csökkenti, ha a CPU henyél (idle), azaz nincs olyan folyamat, amelyik futhat, illetve a rendszeradminisztrációra, ütemezésre, stb. fordított idő (rezsi, overhead). Tipikus értékei 40-90 % közöttiek. - Átbocsátó képesség (throughput): Az operációs rendszer egy időegység alatt hány munkát futtat le. - Körülfordulási idő (turnaround time): Egy munka a rendszerbe helyezésétől számítva mennyi idő alatt fejeződik be.
10.
Operációs rendszerek I.
-
-
Várakozási idő (waiting time): Egy munka vagy folyamat mennyi időt tölt várakozással. Ide tartozik a várakozó és futásra kész állapotokban eltöltött időn felül a felfüggesztett állapotok ideje és munkák esetén a hosszútávú ütemezés által okozott előzetes várakozás is. A körülfordulási idő a várakozási idő és a folyamat utasításának végrehajtásához szükséges idő összege, ám ez utóbbi idő természetesen nem függ az ütemezési algoritmusoktól. Válaszidő (response time): Időosztásos rendszerekben a felhasználók számára nagyon fontos, hogy érezzék, a rendszer reagál parancsaikra. A válaszidő az az idő, amely az operációs rendszer kezelői felületének esetleg egy felhasználóval kommunikáló folyamatnak- adott kezelői parancs után a rendszer első látható reakciójáig telik el, amennyi idő alatt a rendszer válaszolni kezd.
Típusok Az ütemező algoritmus: - PREEMPTÍV, ha az operációs rendszer elveheti a futás jogát egy folyamattól, azt futásra késszé teszi és egy másik folyamatot indít el. - NEM PREEMPTÍV, ha egy folyamattól, miután egyszer megkapta a központi egységet, azt nem lehet elvenni, azaz a folyamat csak általa kiadott utasítások (erőforrásra, eseményre várakozás, befejeződés vagy a CPUról önként lemondás) hatására válthat állapotot. Egyszerű algoritmusok - Legrégebben várakozó (FCFS, First Come, First Served): A futásra kész folyamatok a várakozási sor végére kerülnek, az ütemező mindig a sor elején álló folyamatot kezdi futtatni. Nem preemptív algoritmus. az algoritmus egyszerűen megvalósítható, de a folyamatok átlagos várakozási ideje meglehetősen nagy lehet, egy-egy hosszú CPU löketű folyamat feltartja a mögötte várakozókat (konvoj hatás). - Körbeforgó (RR, Round-Robin): Preemptív algoritmus, az időosztásos rendszerek valamennyi ütemező algoritmusának alapja. Minden folyamat, amikor futni kezd, kap egy időszeletet (time slice), ha a CPU lökete nagyobb lenne, mint az időszelet, akkor az időszelet végén a folyamattól az ütemező elveszi a processzort, a folyamat futásra kész állapotú lesz és beáll a várakozó sor végére. Ha a CPU löket rövidebb, a löket végén a rendszer folyamatait újraütemezzük, a futó folyamat időszelete újraindul. Az időszelet helyes méretének meghatározása igen nehéz. Az átlagos CPU lökethez képest túl nagy időszelet esetén az algoritmus az FCFSnek felel meg (hiszen az időszelet nem szakítja meg a folyamatot), túl kicsi választásánál a folyamatok úgy érzik, hogy a CPU-t egyenlő arányban használják (minden CPU löket sokszor megszakad), de a környezetváltás gyakorisága a rendszer hasznos teljesítményét nagyon lerontja. Alapszabály, hogy a CPU löketek 80 %-a legyen rövidebb az időszeletnél. Prioritásos algoritmusok A prioritásos algoritmusok közös sajátossága, hogy a futásra kész folyamatok mindegyikéhez egy számot prioritást rendelünk, a következő futtatandó folyamat a várakozók közül a legnagyobb prioritású lesz. A prioritás lehet belső, amikor az operációs rendszer rendel a folyamatokhoz prioritást külső, amikor a folyamatok prioritását az operációs rendszeren kívüli tényezők - pl. a folyamat saját kérése vagy operátori beavatkozás - határozza meg. A folyamat prioritása futása során lehet statikus, végig azonos dinamikus, az operációs rendszer által változtatott Az összes prioritásos algoritmusnál fellép a kiéheztetés veszélye. Ennek kivédésére általában a régóta várakozó folyamatok prioritását a rendszer fokozatosan növeli, a folyamatokat öregíti (aging). A folyamatok prioritását különböző tényezők határozhatják meg. A következő algoritmusokban a prioritást a várakozó folyamat CPU löketidő-szükséglete határozza meg. Az egyes folyamatok következő löketidejének hossza nem ismert, ezért azt becsülni kell vagy a folyamat illetve a folyamatot elindító felhasználó "bevallása" alapján (a felhasználók hajlamosak hazudni), illetve
11.
Operációs rendszerek I. -
a folyamat előző viselkedése alapján, a korábbi löketidők általában exponenciális átlaga alapján.
Az algoritmusok: - Legrövidebb (löket)idejű (SJF, Shortest Job First): Nem preemptív algoritmus, az algoritmus a futásra kész folyamatok közül a legrövidebb CPU löketidejűt indítja el. Az algoritmus kiküszöböli az FCFS-nél előforduló konvoj-hatást, a folyamatok átlagos várakozási és körülfordulási ideje bizonyíthatóan optimális. - Legrövidebb hátralevő idejű (SRTF, Shortest Remaining Time First): Az SJF algoritmus preemptív változata: ha egy új folyamat válik futásra késszé, akkor az ütemező újra megvizsgálja a futásra kész folyamatok, illetve az éppen futó folyamat hátralevő löketidejét, és a legrövidebbet indítja tovább. Mivel egy futó folyamat megszakításához és egy másik elindításához szükséges környezet-váltáshoz idő szükséges, ezt az időt is figyelembe kell venni, ha úgy döntünk, hogy egy futó folyamatot megszakítunk.
Tárkezelés
Címkötési módszerek - Fordítás közben (compile time): A fordítóprogram a program és adatterület elemeihez abszolút címet rendel. Ezt a technikát merevsége miatt elsősorban csak a ROM memóriába kerülő programok esetén használják. - Szerkesztés közben (link time): A program több egymástól függetlenül lefordított modulból áll, amelyek más-más modulban definiált logikai címekre is hivatkoznak. A kapcsolatszerkesztő (linker) program feladata, hogy az összes modult egymás mögé elhelyezze a fizikai tárban, valamint feloldja a modulok közötti hivatkozást, konkrét fizikai címeket helyettesítve. - Betöltés közben (load time): A fordítás eredményeképpen előállott áthelyezhető kód címhivatkozásait a betöltő program az aktuális címkiosztás szerint módosítja. - Futás közben (run time): A program memóriaképe logikai címeket tartalmaz, speciális hardverelemek a konkrét fizikai címet csak az utasítás végrehajtásakor határozzák meg. Ismertek olyan eljárások, amikor a program indításakor nem a teljes programot, hanem csak egyes részeit töltjük a tárba, más részek csak a futás közbe, szükség esetén töltődnek be. Ilyenek: - Dinamikus betöltés (dynamic loading): A programhoz tartozó egyes eljárások - áthelyezhető formában- a háttértáron vannak, ha valamelyikre szükség van, akkor egy speciális programrészlet ezt betölti. A program így lényegesen kisebb tárterületet foglal el, a ritkán használt (pl. hibakezelő) eljárások nem foglalják a tárat. A dinamikus betöltést a programozó szervezi meg, az operációs rendszer ehhez nem nyújt támogatást. - Dinamikusan betöltött könyvtárak (dynamic linking): A módszer a dinamikus betöltés módosított, az operációs rendszer által támogatott változata. A programban használt rendszerkönyvtárak eljárásai helyett csak egy csonk (stub) kerül a programba, amely tartalmaz valamilyen hivatkozást egy könyvtárra és a könyvtáron belüli eljárásra. A csonk első meghívásakor a rendszer a kívánt eljárást betölti a tárba és a következő hívások már az eljárást fogják időveszteség nélkül meghívni. A módszer előnye a csökkentett tárfelhasználáson felül az, hogy a könyvtárban lévő hibákat egy helyen kell módosítani, nem kell újrafordítani az összes, könyvtárat használó programot.
12.
Operációs rendszerek I.
-
Átfedő programrészek (overlay): A programot olyan részekre bontjuk, amelyek közül egy időben csak az egyik dolgozik, majd ezeket a részeket - a közösen használt adat- és programrészleteket változatlanul hagyva - egyesével töltjük be. Az átfedő programrészletek technikájához nincs szükség az operációs rendszer támogatására. Az átfedés számára fenntartott tárterület a legnagyobb programrészlet hosszával egyezik meg. Az egyes ágak a háttértáron tartalmazhatnak abszolút címeket, hiszen mindig ugyanoda töltődnek be. A helyes overlay-szerkezet megvalósításához a program szerkezetének, futás közbeni viselkedésének alapos ismerete szükséges.
Társzervezési elvek Egy partíciós rendszer Az operációs rendszeren felüli folytonos címtartományt teljes egészében egy folyamat használhatja. A betöltő program indításakor azt az első szabad címre hozza be. Ha a program futása során az operációs rendszernek több tárra van szüksége, akkor azt vagy a program által nem használt területről lopja el, vagy a programot át kell helyezni, ami hardvertámogatás nélkül nehézkes. Az operációs rendszer területének védelmére elegendő egy regiszter, amely a program legkisebb címét tartalmazza. A folyamat futása közben - felhasználói módban - a tárkezelő hardver figyeli, hogy minden hivatkozás a tárolt cím felett legyen. Rendszerhíváskor a processzor átkerül olyan működési módba, ahol ez a védelem kikapcsol, az operációs rendszer a teljes tárat elérheti. Több partíciós rendszer A multiprogramozás megkövetelte, hogy egy időben több folyamat tartózkodjon a tárban. Korai rendszerekben az operációs rendszeren felüli tárterületet részekre (partíciókra) osztották, ám ezeknek a partícióknak a határa a rendszer futása alatt nem változhatott (rögzített partíciók).
13.
Operációs rendszerek I.
Tipikus volt, hogy különböző méretű partíciókat definiáltak, egy programot a neki megfelelő méretű partícióban futtatták, sőt esetleg már eleve ebbe a partícióba fordították le. Bár ez a tárkezelés nagyon egyszerű volt, de merevsége miatt a tárat rosszul használta ki. A szervezés a tár belső tördelődéséhez (internal fragmentation) vezet, azaz a folyamatok nem használják ki teljesen a partícióban rendelkezésükre álló tárterületet. Fejlettebb operációs rendszerekben a folyamatok változó - az igényeiknek megfelelő méretű partíciót kapnak. Terület lefoglalási stratégiák Az operációs rendszer a betöltendő program számára a szabad területek közül a következő kritériumok szerint választhat: - A legjobban megfelelő (best fit): a legkisebb, még elegendő méretű területet foglaljuk le, - Az első megfelelő (first fit): a kereséssel a tár elejéről indulva az első megfelelő méretű területet foglaljuk le - A következő megfelelő (next fit): a kereséssel az utoljára lefoglalt tartomány végétől indulunk, az első megfelelő méretű területet foglaljuk le - A legrosszabbul illeszkedő (worst fit): a legnagyobb szabad területből foglalunk le, abban bízva, hogy a nagy darabból szabadon maradó terület más folyamat számára még elegendően nagy lesz. Memóriacímzési módszerek Rögzített címzés Amíg egy számítógépen csak egy felhasználó dolgozhatott és ő is csak egyetlen programot futtathatott, a memóriakezelés különösebb gondot nem okozott. Az operációs rendszer állandó területen, például a memória legelső, legkisebb című rekeszein helyezkedett el, a felhasználói program használhatta az operációs rendszer végétől egészen a legnagyobb címig az egész memóriát. A program változóinak, ill. vezérlésátadásainak címe így már fordítás közben meghatározható volt. Áthelyezhető címzés Az első korlát, amibe a rögzített címzésű rendszerek beleütköztek, hogy az operációs rendszer mérete nem bizonyult állandónak, mivel megjelentek olyan operációs rendszerek, melyek tranziens részekkel rendelkeztek, vagyis bizonyos részeik csak akkor töltődtek be a memóriába, amikor arra szükség volt. A megoldás viszonylag egyszerű: a programok fordításánál a fordító már nem fizikai vagyis abszolút, hanem a program elejéhez képest relatív címeket használ. Ezeket a címeket logikai címeknek nevezzük. Most már csak azt kell tudni, hogy a program hol kezdődik a memóriában. Erre találták ki a bázisregisztert, mely a program báziscímét tartalmazza. A legegyszerűbb megoldásoknál a báziscím és a logikai cím összeadásából megkapjuk a fizikai címet.
Szegmensszervezés A logikai címtartományban a program memóriája nem egyetlen egybefüggő területnek képzelik, hanem olyan önmagukban folytonos blokkok halmazának, amely a blokkok tárbeli elhelyezkedése közömbös (pl. program kódja, veremterülete, nagyobb tömbjei). A szegmens-szervezésnél a címtranszformáció ezt a szemléletet tükrözi. a folyamat memóriája különböző méretű blokkokból (szegmens) áll, a blokkok önmagukban folytonos címtartományt foglalnak le.
14.
Operációs rendszerek I.
Lapszervezés A különböző méretű blokkok használatánál óhatatlanul fellép a külső tördelődés jelensége. Ezen úgy segíthetünk, ha mindig azonos méretű blokkokat (lap, page) használunk, a folyamatoknak szükséges tárat ilyen egységekben allokáljuk. Az elkerülhetetlen belső tördelődés okozta veszteséget a lap megfelelően kis méretűre választásával csökkenthetjük. A lap mérete gyakorlati szempontok miatt mindig 2 hatványa.
Címtranszformáció lapszervezés esetén A címtranszformáció mechanizmusában a legnagyobb különbség, hogy a 2 egész hatványainak megfelelő, azonos méretű lapok használata miatt a fizikai lapcímhez nem kell hozzáadni a lapon belüli címet, hanem ennél kevésbé költséges módon a lapon belüli cím a fizikai cím kisebb helyi értékű bitjeit alkotja. A címtranszformáció a laptérkép tábla szerkezete szerint lehet: - Közvetlen leképezés: A folyamathoz tartozó minden lap fizikai címe egy laptérkép táblában van, a transzformáció mindig innen veszi elő a fizikai lapcímet. Mivel a lapok mérete viszonylag kicsi, így a laptábla meglehetősen nagy lehet, nehéz speciális, elkülönített, gyors hozzáférésű tárban tartani. - Asszociatív leképezés: A címtranszformációt egy speciális szervezésű, gyors asszociatív tár segíti, ahol a folyamat lapjainak logikai és fizikai címei találhatók. Az asszociatív tár egy művelettel kiadja a bemenetére juttatott logikai címhez tartozó fizikai címet. Problémát jelent, hogy az asszociatív tár nagyon drága, ezért mérete általában meglehetősen kicsi. - Kombinált technika: A fizikai lapcím keresése először az asszociatív tárban történik, a címtranszformációs hardver csak akkor fordul a direkt laptáblához, ha a lapról szóló bejegyzés az asszociatív tárban nem található. A programok általában futásuk egyes időszakaiban a teljes címtartományuk csak kis részét használják, így kis méretű asszociatív tárral is magas találati arányt lehet elérni, ha a hardver a laptáblából elővett címeket az asszociatív tárba is beírja
15.
Operációs rendszerek I.
Modern tárkezelési elvek Tárcsere (swap) A tárcsere (swap) során az operációs rendszer egy folyamat teljes tárterületét a háttértárra másolja, így szabadítva fel területet egyéb folyamatok számára. Persze az operációs rendszernek pontosan ismernie kell a folyamat aktuális tárigényét. A tárcsere a perifériás átvitel miatt időigényes - egyszerre nagy tárterületeket kell mozgatni -, jóval hosszabb időt vesz igénybe, mint egy környezetváltás. Ezért az ütemezőnek célszerű a tárban lévő futásra kész folyamatok közül - ha van ilyen- választani. A tárterület elmentésénél (ha a hardver támogatja) figyelhetünk arra, hogy egy változatlan, a háttértáron is meglévő tartományt nem kell újra kiírni. Virtuális tárkezelés A virtuális tárkezelés olyan szervezési elvek, operációs rendszer algoritmusok összessége, amely biztosítja, hogy a rendszer folyamatai logikai címtartományának csak egy - a folyamat futásához szükséges- része legyen a központi tárban, de ennek ellenére bármelyik folyamat a virtuális tartománybeli tetszőleges címre hivatkozik. Motiváció: A programok -
nem használják ki a teljes címtartományukat:, tartalmaznak ritkán használt kódrészleteket (pl. hibakezelés), a statikus adatszerkezetek általában nincsenek teljesen kihasználva, a program futásához egy időben nem kell minden részlet (ld. overlay).
Ha nem tartjuk a tárban a teljes programot, akkor, a program nagyobb lehet, mint a számítógépben ténylegesen meglevő tárterület, több folyamat fér el a tárban, a multiprogramozás növelhető, a programok betöltéséhez, a folyamatok háttértárra mentéséhez kevesebb B/K művelet kell, a betöltés gyorsabb lesz. Megvalósítás: Amikor a folyamat egy érvénytelen, a valós memóriában nem levő címre hivatkozik, a hardver megszakítást okoz, amelyet az operációs rendszer kezel, behozva a háttértárról a szükséges blokkot. Lépései: 1. Az operációs rendszer megszakítást kiszolgáló programrészlete kapja meg a vezérlést: elmenti a folyamat környezetét elágazik a megfelelő kiszolgáló rutinra eldönti, hogy a megszakítás nem programhibát jelent-e, 2. Behozza a kívánt blokkot a központi tárba a blokknak helyet keres a tárban, ha nincs szabad terület, fel kell szabadítania egy megfelelő méretűt beolvassa a kívánt blokkot Az egy vagy esetleg két perifériás művelet sok időt vesz igénybe, hiszen a rendszernek meg kell várnia, amíg a perifériás eszköz felszabadul, ki kell várnia az átvitelt előkészítő műveleteket (pl. fejmozgás), át kell vinnie egy blokkot a periféria és a tár között. A központi egység jobb kihasználása érdekében az operációs rendszer a megszakított folyamatot várakozó állapotba helyezi és a várakozások alatt folyamatokat indít el. Amikor a kívánt tartomány bekerül a tárba, az igénylő folyamat futásra kész állapotú lesz, amíg az ütemező elindítja.
16.
Operációs rendszerek I.
Alapvető kérdések A betöltendő blokk lap kiválasztása (fetch strategy): - Igény szerinti lapozás (demand paging) Előretekintő lapozás (anticipatory paging) A behozott blokk a valós tárban hova kerüljön (placement strategy): ez lapszervezés esetén triviális, azonban szegmensek mozgatása esetén a multipartíciós valós tárkezelésnél megismert stratégiák közül kell választani. Ha nincs szabad hely a tárban, melyik blokkot cseréljük le (replacement strategy). - Véletlen kiválasztás - Legrégebbi lap (FIFO) Legrégebben nem használt (Least Recently Used, LRU) lap Újabb esély (Second Chance) Legkevésbé használt (Least Frequently Used, LFU Mostanában nem használt (Not Used Recently) Hogyan gazdálkodjunk a fizikai tárral, melyik folyamat számára hány lapot biztosítsunk? - Vergődés (Trashing): Ha valamelyik folyamat következő utasításának végrehajtásához nincs(enek) a tárban szükséges lap(ok), akkor az(oka)t be kell tölteni. Akkor beszélünk vergődésről, ha egy folyamat vagy egy egész rendszer több időt tölt a laphibák kiszolgálásával, mint hasznos futással. Oka: folyamatnál: kevés lapja van a tárban, gyakran hivatkozik a háttértáron lévőre. rendszernél: túlzottan megnöveljük a multiprogramozás fokát, így a túl sok folyamat egymás elől lopkodja el a lapokat, mindegyik folyamat vergődni kezd. - Lokalitás: A folyamatok statisztikailag megfigyelhető tulajdonsága, hogy egy időintervallumban a címtartományuk csak egy szűk részét használják. A lokalitás lehet: időbeli: a hivatkozott címet a közeljövőben nagy valószínűséggel újra használni fogják (ciklusok, eljárások, verem, globális változók). térbeli: a hivatkozások tipikusan egymás melletti címekre történnek (sorosan végrehajtott kódrészletek, tömbkezelés). - Munkahalmaz: A munkahalmaz a folyamatok lokalitásán alapuló fogalom. Egy folyamat munkahalmaza az elmúlt w időintervallumban (munkahalmaz-ablak) a folyamat által hivatkozott lapokból áll. A lokalitás tulajdonsága miatt a folyamatnak valószínűleg erre a laphalmazra lesz a közeljövőben szüksége. -
Háttértár kezelés A hardver fejlődésével a következő típusú háttértárak jelentek meg: mágnesszalag, mágnesdob, mágneslemez, optikai adatrögzítés (lemez szervezésű, csak olvasható pl. CD-ROM, egyszer írható (WORM), illetve írható-olvasható lemezek), egyéb, kísérleti jellegű megoldások: mágnesbuborék tár, félvezető tárak (EEPROM, memóriakártya), holografikus tárolás. A jelenlegi rendszerek legelterjedtebb háttértára a mágneslemezes tár (magnetic disc), ezen tárak szervezési kérdéseivel foglalkozunk a továbbiakban. Háttértárak fizikai szervezése A mágneslemezes egység működésének lényege, hogy a tárcsaszerű, forgó mágneses hordozó felett oldalanként egy - író-olvasó fej mozog, a fejek mozgatását közös mechanika végzi. Általában a lemezek mindkét oldalát használják, a lemez felett és alatt is található fej.
17.
Operációs rendszerek I. A sáv (track) egy-egy lemezfelület azon területe, amelyet a fej elmozdulás nélkül, a lemez egyetlen körülfordulása alatt elér. Cilindernek (cylinder) nevezik az összes fej alatti sávokat. Egy-egy sávot - általában sávonként azonos méretű, gyakorta az összes sávon azonos számú, azonos szövegtartományt elfoglaló - szektorra (sector) osztják. Az információtárolás a szektoron belül bitsoros. A szektor az információátvitel legkisebb egysége, a lemezvezérlő egyszerre egy teljes szektort olvas vagy ír. A modern lemezeken a szektorok elhelyezkedését a vezérlő a sávra felírt speciális mágneses jelekből (szektorjelölők, angolul mark) ismeri fel. A mágneslemez egységek lemezei lehetnek fixek, de cserélhető lemezek (pl. hajlékony lemez, floppy disc) is használatosak.
Háttértárak címzése Szektorok címzése A lemez szektorait az operációs rendszer lineárisan címzi, a lemezillesztő viszont több komponensű - több dimenziós - címet igényel. A kettő között az összefüggés: b = s * ( i + ( t * j) ) + k ahol s a sávon levő szektorok száma, t a cilindereken lévő sávok száma, i a kijelölt cilinder, j a fej (lemez felület) száma, k pedig a sávon belüli szektorok száma (i, j, és k értékei 0-tól indulnak). A b eredmény a szektor lineáris, 0-tól induló sorszáma. Szektorcsoportok kialakítása A legtöbb operációs rendszer a merevlemezt nem szektor szinten kezeli, hisz akkor a legnagyobb kezelhető egység 512 byte lenne. Így rengeteg helyet kellene arra áldozni, hogy beazonosítsuk, hogy az adott fájl melyik szektorban található. Így a DOS és minden hasonló OP rendszer több szektort nevez ki egy alapegységnek melyet cluster-nek nevezünk. Egy cluster állhat egy szektorból (pl. a floppy-k esetében) de 2, 4, 8, 16, 32, vagy esetleg 64 szektorból is (64-nél több szektorból nem állhat egy cluster MS-DOS alatt). Ha egy adatra hivatkozunk, akkor az operációs rendszer alatti legkisebb írható-olvasható egységre a cluster-re hivatkozunk. Háttértárak kezelése Particionálás Merevlemezes egységeken maximálisan négy, akár különböző méretű logikai köteg, partíció kialakítására van lehetőség. Minden egyes partíció külön logikai egységet képez és általában külön logikai meghajtóként is jelenik meg. A rendszer indításkor a ROM-BIOS a partíciós táblát tartalmazó szektort betölti és átadja neki a vezérlést. A rutin megvizsgálja a partíciós táblát, majd az aktív partíció boot rekordjának betöltése után átadja annak a vezérlést, ezáltal az operációs rendszert elindítva. Ha az aktív partíció boot-szektora nem operációs rendszert betöltő
18.
Operációs rendszerek I. kódot tartalmaz, hanem például a jól ismert “Non system disk...” üzenetet megjelenítő programot, akkor a rendszerindítás csak külső egységről lehetséges. A partíciós táblában elhelyezett speciális program segítségével lehetőség nyílik ún. multi-bootos rendszer létrehozására, melyben az aktív partíciótól függetlenül lehetőség nyílik bármely partíción elhelyezkedő operációs rendszer indítására. Ezen programok a partíciós táblában az aktív jelölést figyelmen kívül hagyják és a felhasználó által megadott (vagy kiválasztott) partíció boot-szektorát töltik be. Míg a partíciós tábla kezelése minden operációs rendszer alatt egységes módon történik, addig a partíción belüli logikai lemezfelépítés és kezelés az operációs rendszertől függ. Lemezműveletek ütemezése A multiprogramozott rendszerekben egyszerre több folyamat verseng a mágneslemezes perifériákért, egy átvitel lezajlása után több újabb kérés várakozhat kiszolgálásra. Az ütemezési algoritmusok a kérések megfelelő sorrendbe állításával az egyes folyamatok rovására próbálják a várakozási idők csökkentésével a rendszer teljesítményét növelni. Az algoritmusok célja a fejmozgás optimalizálása, vagy az elfordulási várakozás csökkentése. Az algoritmusok értékelésének szempontjai: - Átbocsátó képesség: időegység alatt lebonyolított átvitelek száma. - Átlagos válaszidő: egy átvitel kérésétől a végrehajtásáig eltelt átlagidő. - Válaszidő szórása: elsősorban interaktív rendszerekben fontos szempont, hogy a folyamatok előre látható sebességgel fussanak, a futásuk ne ingadozzon nagyon rajtuk kívülálló okok miatt. A fejmozgás optimalizálása Sok algoritmus képzelhető el, az itt következő felsorolás csak néhány ismertebb alaptípust vizsgál. Ezek: - Sorrendi kiszolgálás (First Come First Served, FCFS): Az átviteli kéréseket érkezésük sorrendjében szolgáljuk ki. Az algoritmus nem törődik a fej mozgásával, kicsi az átbocsátó képessége, nagy az átlagos válaszideje, de ennek szórása viszonylag kicsi. - Legrövidebb fejmozgási idő (Shortest Seek Time First, SSTF): Az algoritmus következőként azt a kérést szolgálja ki, amelyik az aktuálishoz legközelebb levő cilinderre hivatkozik - ennek az eléréséhez szükséges a legkisebb fejmozgási idő. Bár teljesítménye az FCFS-nél jobb, de a válaszidők szórása nagy, sőt fennáll a kiéheztetés veszélye: egy távoli cilinderre vonatkozó kérést az újra és újra érkező közeli kérések nem meghatározható ideig késleltethetik. - Pásztázó (SCAN): Az algoritmus a következő kérés kiválasztásánál csak azokat a kéréseket veszi figyelembe, amelyekhez szükséges fejmozgás az aktuális mozgási iránynak megfelelő. A mozgási irány akkor fordul meg, ha az aktuális irányban már nincs több kiszolgálatlan kérés. Az algoritmus teljesítménye jobb, mint az SSTF, a válaszidő szórása is kisebb. A pásztázásból következő sajátossága, hogy a középső cilindereket gyakrabban látogatja, mint a szélsőket. - N lépéses pásztázó (N-SCAN): Egy irányba mozogva csak azokat a kéréseket- közülük is csak N-et - szolgálunk ki, amelyek a pásztázás elején már megvoltak. A pásztázás közben érkező kérésekre csak a következő irányváltás után kerül sor. Az algoritmus válaszidejének szórása kisebb a SCAN-nél is, a válaszidő akkor sem nő meg, ha az aktuális cilinderre sok kérés érkezik. - Egyirányú (körforgó) pásztázó (Circular-SCAN, C-SCAN): A kérések kiszolgálása mindig csak az egyik irányú fejmozgásnál történik, a másik irányban a fej közvetlenül a legtávolabbi kérés cilinderére ugrik. Implementálható a pásztázás közben beérkezett kérése mind menet közbeni, mind a következő pásztázásra halasztott kiszolgálásával. Az algoritmus elkerüli a külső sávoknak a belsőkhöz viszonyított alacsonyabb fokú kiszolgálását. Az elfordulási idő optimalizálása Az egy cilinderen belüli kérések a lemezek aktuális pozíciójának, valamint a szektorok sorrendjének - ami nem mindig növekvő (szektor közbeékelődés, sector interleave) - ismeretében kiszolgálás előtt sorba állíthatók.
19.
Operációs rendszerek I.
Egyéb szervezési elvek a teljesítmény növelésére -
-
-
-
-
Lemezterület tömörítése (disk compaction): Az egymáshoz tartozó blokkokat lefoglaláskor a lemezen fizikailag is egymás mellé igyekszünk elhelyezni, illetve ezt az állapotot egy időnként futtatott rendezőprogrammal elérni. A lemezműveleteknél is megfigyelhető lokalitás következményeként egy folyamat várhatóan az egymáshoz közeli - egymást követő - blokkokat fogja olvasni, így a fejmozgás minimális lesz. A tömörítés nem mindig vezet teljesítményjavuláshoz, hiszen egy multiprogramozott rendszerben egy időben sok folyamat használja a lemezt. Lemezadatok elhelyezése: A gyakran szükséges adatokat SCAN típusú üzemeltetésnél érdemes a lemez középső sávjain elhelyezni. Redundáns tárolás: A gyakran szükséges adatokat a lemezen több példányban, különböző sávokon helyezzük el, így minden fejállásnál kiválaszthatunk egy viszonylag közel lévő cilindert, ahol a kívánt adat megtalálható. A módszer elsősorban nem - vagy csak nagyon ritkán - változó adatoknál használható, hiszen a módosítások minden másolatba bevezetése hosszú időt jelentene és módosítás közben az adatok konzisztenciájának biztosítása kölcsönös kizárási problémák kezelését jelenti. Több blokk egyidejű átvitele: Mivel a kérések kiszolgálásának jelentős része a fejmozgásból eredő várakozással telik, ha már a megfelelő pozíción vagyunk, igyekezzünk minél több blokkot egyszerre átvinni és azokat a memóriában tárolni. Blokkok átmeneti tárolása: A gyakran vagy a közeljövőben várhatóan szükséges blokkokat igyekezzünk a központ-, esetleg a perifériaillesztőben levő tárban tartani (disk cache). Az átmeneti tárolás közben foglalkozni kell a megváltozott tartalmú szektorokkal: a tárban változással egyidejűleg a lemezre is felírjuk (write through cache), vagy csak akkor írjuk ki, ha a tárra szükség lesz. Ez utóbbi a nagyobb teljesítményű módszer, hiszen egy gyakran változó szektor kiírás előtt újra megváltozhat, viszont kevésbé biztonságos, hiszen a rendszer meghibásodása esetén a szükséges módosítások nem kerülnek a lemezre. Adattömörítési (data compression) eljárások használata: A lemezen az információt tömörített (compressed) formában tároljuk, visszaállítása - a programozó számára láthatatlanul - csak a beolvasásakor történik meg. Ily módon csökkenthető a szükséges perifériás átvitelek száma. A tömörítést és visszaállítást a perifériakezelő program vagy célhardver végezheti.
Az adattárolás megbízhatósága -
-
Adatok mentése (backup): A lemez teljes vagy az előző mentés óta megváltozott tartalmát (incremental backup) időnként más - általában mágnesszalagos, optikai lemezes - háttértárra kell kimásolni, ahonnan a lemez sérülése, a tárolt adatok véletlen törlése esetén az egész illetve a szükséges részek visszaállíthatók. Átmeneti tár és a háttértár tartalmának szinkronizálása: Az átmeneti tárban levő "fontosabb" változásokat, esetleg időnként az összes változást a lemezre kell írni. Lemezegységek többszörözése (RAID Redundant Array of Inexpensive Disks vagy Redundant Array of Independent Disks): napjaink egyik fontos technológiája. A RAID technológia alapja az adatok elosztása vagy replikálása több fizikailag független merevlemezen, egy logikai lemezt hozva létre. Minden RAID szint alapjában véve vagy az adatbiztonság növelését vagy az adatátviteli sebesség növelését szolgálja. RAID szintek: - A RAID 0 az egyes lemezek egyszerű összefűzését jelenti, viszont semmilyen redundanciát nem ad, így nem biztosít hibatűrést, azaz egyetlen meghajtó meghibásodása az egész tömb hibáját okozza. Mind az írási, mind az olvasási műveletek párhuzamosítva történnek, ideális esetben a sebesség az egyes lemezek sebességének összege lesz, így a módszer a RAID szintek közül a legjobb teljesítményt nyújtja (a többi módszernél a redundancia kezelése lassítja a rendszert). - A RAID 1 eljárás alapja az adatok tükrözése (disk mirroring), azaz az információk egyidejű tárolása a tömb minden elemén. A kapott logikai lemez a tömb legkisebb elemével lesz egyenlő méretű. Az adatok olvasása párhuzamosan történik a diszkekről, felgyorsítván az olvasás sebességét; az írás normál sebességgel, párhuzamosan történik a meghajtókon. Az eljárás igen jó hibavédelmet biztosít, bármely meghajtó meghibásodása esetén folytatódhat a működés.
20.
Operációs rendszerek I.
-
-
A RAID 2 használja a csíkokra bontás módszerét, emellett egyes meghajtókat hibajavító kód (ECC: Error Correcting Code) tárolására tartanak fenn. A hibajavító kód lényege, hogy az adatbitekből valamilyen matematikai művelet segítségével redundáns biteket képeznek. A használt eljárástól függően a kapott kód akár több bithiba észlelésére, illetve javítására (ez utóbbi persze több redundanciát igényel) alkalmas. A védelem ára a megnövekedett adatmennyiség. Ezen meghajtók egy-egy csíkjában a különböző lemezeken azonos pozícióban elhelyezkedő csíkokból képzett hibajavító kódot tárolnak. A módszer esetleges lemezhiba esetén képes annak detektálására, illetve kijavítására. Manapság már nem használják. - A RAID 3 felépítése hasonlít a RAID 2-re, viszont nem a teljes hibajavító kód, hanem csak egy lemeznyi paritásinformáció tárolódik. Egy adott paritáscsík a különböző lemezeken azonos pozícióban elhelyezkedő csíkokból XOR művelet segítségével kapható meg. A rendszerben egy meghajtó kiesése nem okoz problémát, mivel a rajta lévő információ a többi meghajtó (a paritást tároló meghajtót is beleértve) XOR-aként megkapható. - A RAID 4 felépítése a RAID 3-mal megegyezik. Az egyetlen különbség, hogy itt nagyméretű csíkokat definiálnak, így egy rekord egy meghajtón helyezkedik el, lehetővé téve egyszerre több (különböző meghajtókon elhelyezkedő) rekord párhuzamos írását, illetve olvasását (multi-user mode). - A RAID 5 a paritás információt nem egy kitüntetett meghajtón, hanem „körbeforgó paritás” (rotating parity) használatával, egyenletesen az összes meghajtón elosztva tárolja, kiküszöbölvén a paritásmeghajtó jelentette szűk keresztmetszetet. Minimális meghajtószám: 3. Mind az írási, mind az olvasási műveletek párhuzamosan végezhetőek. Egy meghajtó meghibásodása esetén az adatok sértetlenül visszaolvashatóak, a hibás meghajtó adatait a vezérlő a többi meghajtóról ki tudja számolni. A csíkméret változtatható; kis méretű csíkok esetén a RAID 3-hoz hasonló működést, míg nagy méretű csíkok alkalmazása esetén a RAID 4-hez hasonló működést kapunk. A hibás meghajtót ajánlott azonnal cserélni, mert két meghajtó meghibásodása esetén az adatok elvesznek! - A RAID 6 tekinthető a RAID 5 kibővítésének. Itt nemcsak soronként, hanem oszloponként is kiszámítják a paritást. A módszer segítségével kétszeres meghajtómeghibásodás is kiküszöbölhetővé válik. A paritáscsíkokat itt is az egyes meghajtók között, egyenletesen elosztva tárolják, de ezek természetesen kétszer annyi helyet foglalnak el, mint a RAID 5 esetében. Hibajavítás: A háttértárolásban (pl. fájlok tárolásakor), fontos lehet a hibás adatok felismerése és esetleges javítása. Ezekre több különböző módszert dolgoztak ki az idők folyamán (ECC, paritásvizsgálat, stb.), a ma legismertebb hibafelismerő eljárás a CRC (Cyclic redundancy check – ciklikus redundancia ellenőrzés). Lényege, hogy az ellenőrzés az adatblokkot egy polinom együtthatóinak tekinti, amelyet eloszt egy előre meghatározott, állandó polinommal. Az osztás eredményének együtthatói alkotják a redundáns adatbiteket, a CRC-t. A vett adat ellenőrzéséhez elegendő megszorozni a CRC-t az előre meghatározott polinommal. Ha a szorzás eredménye a hasznos adat, akkor az adatok hiba nélkül olvashatóak. Másik lehetséges ellenőrzési mód a CRC újbóli kiszámítása a hasznos bitekből, és a vett CRC-vel való összehasonlítása.
Lemezterület allokáció és állománykezelés A szabad blokkok nyilvántartása - Bittérkép - Láncolt lista - Szabad helyek csoportjainak listája - Egybefüggő szabad területek nyilvántartása A lemez blokkjainak allokációja - Folytonos terület allokációja - Láncolt tárolás - Indexelt tárolás Állományelhelyezkedési táblázatok - FAT (FAT12/16/32) - i-Node (UFS)
21.
Operációs rendszerek I. -
MFT (NTFS)
22.
Operációs rendszerek I.
Állományhozzáférési módok -
-
-
Soros (sequential): Az állomány fogalma az operációs rendszerekben a mágnesszalag analógiájára alakult ki, a szalagon tárolt információt csak a tárolt byte-ok sorrendjében lehetett olvasni vagy írni. Sok információfeldolgozási feladathoz a soros hozzáférés elegendő. A soros hozzáférés közvetlen elérési módú háttértáron történő implementálásához az operációs rendszer átvitel közben tárolja, kezeli az állományon belüli pozíciót. Közvetlen (direct): A tárolt információ-elemek (byte, mező, rekord) bármelyikét közvetlenül el lehet érni. Az átviteli eljárásoknak paraméterként meg kell adni az információ-elem állományon belüli címét. Mivel az indextábla rendezett, a kívánt kulcshoz tartozó rekord címét gyorsan (pl. bináris kereséssel) megtalálhatjuk, a cím alapján a rekord közvetlenül elérhető. Az állományban tárolt információ módosítása során az indextáblát is módosítani kell, hogy a kereséshez szükséges rendezettséget mindig megtartsuk, ez nagy állományok esetén sok időt vehet igénybe. Partícionált: Az állományt soros részállományok alkotják, az állomány tartalmaz egy nyilvántartást arról, hogy az egyes partíciók az állományon belül hol kezdődnek.
Könyvtárkezelés A könyvtárak hierarchiája Az összes állomány egy könyvtárban tárolása az állományok nagy száma miatt nem célszerű. A könyvtárakat az operációs rendszer hierarchiába szervezi. Kétszintű könyvtárszerkezet A kétszintű könyvtárszerkezetben az egyes felhasználók állományai kerülnek egy könyvtárba. Problémát jelent, hogy a felhasználók - más felhasználók állományait is használni akarják, ezeket az állományokat a felhasználó és az állomány neve együtt azonosítja, - az operációs rendszerhez tartozó állományokat, például rendszerprogramokat akarnak használni. A rendszerprogramokat egy speciális "felhasználói" könyvtárban helyezik el. Egy program indításánál az operációs rendszer parancsértelmezője a felhasználói könyvtáron felül a rendszerkönyvtárban is keres. Faszerkezet Az egyes könyvtárak nem csak állományokat, hanem más könyvtárakat is tartalmaznak.
Körmentes irányított gráf Az előbbi faszerkezet is irányított gráf volt, hiszen mindig egy könyvtártól lehetett eljutni annak tartalmához, az állományokhoz vagy más könyvtárakhoz. A körmentes irányított gráfban egy állományra - vagy könyvtárra - a hierarchia több pontjáról, több könyvtárból is hivatkozhatunk, de a hivatkozások irányítását követve a gráfban nincsenek körök. Egyes állományokat, könyvtárakat a gyökértől több útvonalon lehet elérni. Az állományokra való hivatkozás (link) lehet: - Fizikai (hard): az állományt leíró információkat megismétlik, illetve pl. UNIX-nál ugyanarra a kötet nyilvántartás bejegyzésre hivatkoznak. - Szimbolikus (szoft): a nyilvántartás bejegyzésben az állományt elérő, létező útvonalat tárolunk.
23.
Operációs rendszerek I.
24.
Operációs rendszerek I.
Problémát jelent: - hogy az állományokra több elérési úton lehet hivatkozni, de egyes esetekben - például az állományok mentésénél, hozzáférési statisztikák készítésénél osztott elérés megvalósításánál - csak egy útvonalat kell figyelembe venni. - annak meghatározása, hogy mikor kell egy állományt törölni: bármelyik útvonalon hivatkozott törlésnél, vagy csak akkor, ha ez az utolsó hivatkozás. - hogy szimbolikus hivatkozásoknál az állományokra hivatkozások számát nehéz meghatározni. Általános gráf Az általános gráf kört is tartalmazhat, ami csak bajjal jár, mert - a gráfban keresésnél el kell kerülni a végtelen ciklusokat, - egy ág törlésével teljes hurkok a "levegőben lógva" maradhatnak, azaz tartalmukat (állományokat, könyvtárakat) nem töröltük, de azok a gyökérből indulva többé nem érhetők el. A kezelés problémái miatt általános gráf szerkezetű könyvtárakat az operációs rendszerek nem használnak, de körmentes irányított gráfokból "véletlenül" könnyen létrejöhetnek, amit pl. a UNIX rendszerek nem ellenőriznek. A hozzáférés szabályozása Mivel az operációs rendszer több felhasználó állományait tárolja, kezeli, felvetődik az igény, hogy jogosulatlan felhasználók ne férhessenek hozzá minden állomány tartalmáéhoz, illetve ne végezhessenek rajtuk bizonyos műveleteket. A hozzáférési jogokat az állomány létrehozója vagy az állomány felett speciális jogokkal rendelkező felhasználó definiálja. Tipikus jogosultságok:
A hozzáférési jogosultságok - az állományhoz vagy - az elérési útvonalhoz tartoznak, ebben az esetben a különböző elérési útvonalakhoz különböző jogosultságok tartozhatnak. A jogosultságokat - felhasználónként definiáljuk(túl sok lehet!)vagy - felhasználó-csoportonként adjuk meg , ilyen csoportok például: - operációs rendszer, - tulajdonos, - adott csoport tagjai, - bárki.
25.
Operációs rendszerek I.
Példa állomány és könyvtárkezelésre – a FAT A láncolt tárolás módosított változata az ún. állomány allokációs tábla (file allocation table, FAT), ahol az összes láncelemet az állományoktól elkülönítve, lemezenként egy helyen tároljuk. Ennek a táblázatnak minden eleme egy lemez blokkhoz tartozik, amelyben ha használt, tárolhatjuk a következő blokk címét. Az egyes állományokhoz csak a lánc első blokkját kell tárolni, a következő blokkok a FAT-ből megtalálhatók. Ezt az allokációs táblát egyidejűleg a szabad blokkok tárolására is fel lehet használni. Minden fájlhoz a FAT-ben egy bejegyzés-láncolat tartozik, melynek első elemét a katalógus-bejegyzés egyik mezője tartalmazza. A FAT egy önindexelt tömb, melynek minden mezője a lánc következő elemének megfelelő indexet tartalmazza, azaz megmutatja, hogy melyik logikai szektorban helyezkedik el a fájl következő része, honnan lehet megtudni a rá következő szektor sorszámát. A FAT elemei a 12, 16 ill. 28-bites sorszámok. A FAT-ban az adatok bitfolytonosan vannak tárolva, tehát 12-bites bejegyzések esetén 3 bájton tárol két elemet. A FAT táblában az első néhány bejegyzés helyén speciális adatok találhatók. A táblázat nulladik bájtja egy, a lemez formátumát azonosító, ún. média-leíró (media descriptor) bájt, míg a következő - a bejegyzések bitszámától függően - 5 ill. 7 bájton mindig FFh érték található. A FAT bejegyzések értékük szerint négy csoportba oszthatók: (0)000h (0)002h-(F)FEFh (F)FF0h-(F)FF7h (F)FF8h-(F)FFFh
a bejegyzés (cluster) nem használt a file-t tartalmazó következő cluster sorszáma fenntartott terület fizikailag hibás terület jelölése ((F)FF7h ) a cluster a lánc utolsó eleme (a file vége)
Az operációs rendszer a könyvtárbejegyzésekben tárolja, hogy az adott állomány mely clusteren kezdődik. Innen egyszerű felépíteni az állománydarabokat tartalmazó cluster-láncot.
26.
Operációs rendszerek I.
A főkatalógus (gyökér-könyvtár) A főkatalógus - vagy más néven gyökér-könyvtár - minden meghajtó legfelső könyvtára. E könyvtárnak nincs tulajdonos könyvtára és nem is lehet törölni. Azonban míg más könyvtárak mérete dinamikusan változik és a bennük tárolható fájlok és könyvtárak (azaz katalógus bejegyzések) számának csak a lemez kapacitása szab határt, addig a főkatalógus mérete már a formattáláskor determinált (ez a méret a boot-szektorból kiolvasható) és utólag - a lemezen lévő adatok mozgatása nélkül - nem változtatható. Ezen kívül a gyökér-könyvtár nem tartalmaz két speciális, - más könyvtárakban azonban megtalálható - az aktuális könyvtárat jelentő ‘.’ ill. a tulajdonos-könyvtárat jelentő ‘..’ bejegyzést. Emellett a főkatalógus szigorúan egymás után következő szektorokon (a FAT-ok után) foglal helyet, míg más könyvtárak - a fájlokhoz hasonlóan - akár széttöredezve (nem egymást követő szektorokon) is elhelyezkedhetnek. Könyvtárnyilvántartás bejegyzések Minden könyvtár elemei 32 bájtos katalógus-bejegyzések. Ezen bejegyzések fájlokat vagy újabb - a könyvtáron belüli - (al)könyvtárakat definiálhatnak. A katalógus bejegyzések rekordképe a következő: Offset Méret (byte) Leírás 00h 8 a file/könyvtár neve 08h 3 a file/könyvtár kiterjesztése 0Bh 1 a bejegyzés attribútumai 0Ch 10 fenntartott 16h 2 a fájl utolsó módosításának ideje 18h 2 a fájl utolsó módosításának dátuma 1Ah 2 a fájl/könyvtár első clusterének sorszáma 1Ch 4 a fájl hossza bájtban (könyvtárak esetén mindig 0) A fájl nevének első karaktere speciális jelentéssel bír, ugyanis ez határozza meg a fájl-bejegyzés érvényességét. Értékei és értelmezésük a következő: Érték 00h 2Eh E5h 05h egyéb
Jelentés a bejegyzés még sosem lett használva a bejegyzés az említett két speciális bejegyzés (‘.’,’..’) egyike (a kérdést a második karakter vizsgálata dönti el) a bejegyzésnek megfelelő fájl/könyvtár törlésre került, így az már nem valós a fájl nevének első karaktere E5h (a 32 alatti ASCII kódú karakterek ugyanis nem jeleníthetőek meg, míg az E5h igen) a bejegyzés érvényes, valós fájlt/könyvtárat definiál és ez a nevének első karaktere
A főkatalógusok kivételével minden könyvtár legalább két bejegyzést tartalmaz: az aktuális könyvtárat reprezentáló ‘.’ és a tulajdonos-könyvtárat meghatározó ‘..’ nevű könyvtárakat. A bejegyzés nevének ill. kiterjesztésének fel nem használt karakterei 32-es ASCII kódú (szóköz) karaktereket tartalmaznak. A bejegyzés-attribútumok bitjeinek jelentése a következő: Érték 0. 1. 2. 3. 4. 5. 6.-7.
Jelentés a fájl csak olvasható (read-only) (nem módosítható/törölhető) a fájl rejtett (hidden) a fájl rendszer-file (system) a bejegyzés kötet-név (volume label) a bejegyzés könyvtár (directory) a fájl még nem került archíválásra (archive) Fenntartott
27.
Operációs rendszerek I. Az könyvtár-bejegyzéseket a fájloktól az attribútum 4. bitje különbözteti meg. Az alkönyvtárak gyakorlatilag katalógusbejegyezések sokaságából álló fájloknak tekinthetők. Elhelyezkedésük - csakúgy mint a fájloké - a FAT alapján határozható meg. A 3. bitet bekapcsolva tartalmazó bejegyzésből általában az egész lemezen csak egyetlen egy található, mégpedig a gyökérkönyvtárban. Ez a bejegyzés a lemez kötet-azonosítóját definiálja, melynek lekérdezése és állítása a DOS LABEL parancsa segítségével lehetséges. A fájl utolsó módosításának ideje és dátuma a következő bitkiosztás szerinti formátumban található: Bit 15.-11. 10.-5. 4.-0. 15.-9. 8.-5. 4.-0.
Jelentés óra perc másodperc/2 év (1980-hoz képest relatív) hónap nap
28.
Operációs rendszerek I.
Tartalom Alapismeretek .................................................................................................................................................. 1 Az operációs rendszerek meghatározása ..................................................................................................... 1 Operációs rendszerek osztályozási szempontjai .......................................................................................... 1 Az operációs rendszerek feladatai ............................................................................................................... 1 Erőforrás-szervezés ................................................................................................................................. 1 A felhasználói felület ............................................................................................................................... 1 Programok szervezése ............................................................................................................................. 1 Készülék-kezelés ..................................................................................................................................... 1 Memória-kezelés .................................................................................................................................... 1 Állomány-kezelés .................................................................................................................................... 2 Job and Session Management ................................................................................................................. 2 Hiba-kezelés ............................................................................................................................................ 2 Megbízhatóság és védelem ..................................................................................................................... 2 Felügyelet és elszámolás ......................................................................................................................... 2 Operációs rendszerek története .................................................................................................................. 2 Operációs rendszer nélkül ....................................................................................................................... 2 Supervisor programok és I/O rendszerek ................................................................................................ 2 Szalagos és lemezes operációs rendszerek .............................................................................................. 2 Multiprogramozott kötegelt rendszerek ................................................................................................. 2 Interaktív operációs rendszerek .............................................................................................................. 2 Operációs rendszerek típusai ....................................................................................................................... 3 Az operációs rendszerek szerkezete ............................................................................................................. 3 Rendszermodulok ........................................................................................................................................ 3 Perifériás műveletek gyorsítása ................................................................................................................... 5 Pufferelés ................................................................................................................................................ 5 Spooling (Simultaneous Peripheral Operations On-Line) ......................................................................... 5 Folyamatkezelés............................................................................................................................................... 5 A folyamat fogalma ..................................................................................................................................... 5 Folyamatkezelés multiprogramozott rendszerekben ................................................................................... 5 Folyamatállapotok .................................................................................................................................. 5 Állapotátmeneti gráf ............................................................................................................................... 6 Folyamatok felfüggesztése ...................................................................................................................... 6 Környezetváltás ...................................................................................................................................... 6 Folyamatok közötti kommunikáció (IPC – InterProcess Communication) ................................................ 7 Folyamtok párhuzamosítása ................................................................................................................... 7
29.
Operációs rendszerek I. Folyamatleírók ........................................................................................................................................ 7 Szálak .......................................................................................................................................................... 7 Megszakítások ............................................................................................................................................. 7 Megszakításosztályok ............................................................................................................................. 7 Megszakítások kiszolgálása ..................................................................................................................... 8 Konkurens folyamatok................................................................................................................................. 8 Szinkronizáció .............................................................................................................................................. 8 Kölcsönös kizárás .................................................................................................................................... 9 A kritikus szakasz .................................................................................................................................... 9 Ütemezés ....................................................................................................................................................... 10 Szintek .................................................................................................................................................. 10 Az ütemező algoritmusok alapjai .......................................................................................................... 10 Típusok ................................................................................................................................................. 11 Egyszerű algoritmusok .......................................................................................................................... 11 Prioritásos algoritmusok ....................................................................................................................... 11 Tárkezelés ...................................................................................................................................................... 12 Címkötési módszerek ............................................................................................................................ 12 Társzervezési elvek .................................................................................................................................... 13 Egy partíciós rendszer ........................................................................................................................... 13 Több partíciós rendszer ......................................................................................................................... 13 Terület lefoglalási stratégiák ................................................................................................................. 14 Memóriacímzési módszerek ...................................................................................................................... 14 Rögzített címzés .................................................................................................................................... 14 Áthelyezhető címzés ............................................................................................................................. 14 Szegmensszervezés ............................................................................................................................... 14 Lapszervezés ......................................................................................................................................... 15 Címtranszformáció lapszervezés esetén ................................................................................................ 15 Modern tárkezelési elvek .......................................................................................................................... 16 Tárcsere (swap) ..................................................................................................................................... 16 Virtuális tárkezelés ................................................................................................................................ 16 Háttértár kezelés ............................................................................................................................................ 17 Háttértárak fizikai szervezése .................................................................................................................... 17 Háttértárak címzése................................................................................................................................... 18 Szektorok címzése ................................................................................................................................. 18 Szektorcsoportok kialakítása ................................................................................................................. 18 Háttértárak kezelése.................................................................................................................................. 18 Particionálás ......................................................................................................................................... 18 Lemezműveletek ütemezése...................................................................................................................... 19 A fejmozgás optimalizálása ................................................................................................................... 19 Az elfordulási idő optimalizálása ........................................................................................................... 19
30.
Operációs rendszerek I. Egyéb szervezési elvek a teljesítmény növelésére ...................................................................................... 20 Az adattárolás megbízhatósága ................................................................................................................. 20 Lemezterület allokáció és állománykezelés .................................................................................................... 21 A szabad blokkok nyilvántartása ........................................................................................................... 21 A lemez blokkjainak allokációja ............................................................................................................ 21 Állományelhelyezkedési táblázatok ...................................................................................................... 21 Könyvtárkezelés ........................................................................................................................................ 23 A könyvtárak hierarchiája ..................................................................................................................... 23 Kétszintű könyvtárszerkezet ................................................................................................................. 23 Faszerkezet ........................................................................................................................................... 23 Körmentes irányított gráf ...................................................................................................................... 23 Általános gráf ........................................................................................................................................ 25 A hozzáférés szabályozása ......................................................................................................................... 25 Példa állomány és könyvtárkezelésre – a FAT ............................................................................................ 26 A főkatalógus (gyökér-könyvtár) ........................................................................................................... 27 Könyvtárnyilvántartás bejegyzések ....................................................................................................... 27
31.