1. operációs rendszerek helye

124
1. Operációs rendszerek helye - számítógépes rendszer (hardver, szoftver, hálózat) + felhasználók = Egységes Tervezési Egység (a felhasználók is fontos részei a tervezésnek) - szoftver: rendszerprogramok (alapszoftver) és felhasználói programok - az OS a legalapvetőbb rendszerprogram, kernel módban fut - egyéb rendszerprogramok: nem az OS részei, lehetnek hardver közeliek, hálózat közeliek, segédprogramok (pl.: fordítók, szövegszerkesztők), felhasználói módban futnak - felhasználói programok - általános applikációk (web böngészők,

Upload: truly

Post on 15-Jan-2016

49 views

Category:

Documents


0 download

DESCRIPTION

1. Operációs rendszerek helye. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 1. Operációs rendszerek helye

1. Operációs rendszerek helye

- számítógépes rendszer (hardver, szoftver, hálózat) + felhasználók = Egységes Tervezési Egység (a felhasználók is fontos részei a tervezésnek)- szoftver: rendszerprogramok (alapszoftver) és felhasználói programok- az OS a legalapvetőbb rendszerprogram, kernel módban fut- egyéb rendszerprogramok: nem az OS részei, lehetnek hardver közeliek, hálózat közeliek, segédprogramok (pl.: fordítók, szövegszerkesztők), felhasználói módban futnak- felhasználói programok - általános applikációk (web böngészők, táblázatkezelők, stb.) - célrendszerek (banki alkalmazások, ETR, stb.)

Page 2: 1. Operációs rendszerek helye

2. OS alapvető feladatai

1. kiterjesztett, virtuális gép – „felülről lefelé nézőpont” - megvédi a felhasználót a hardver kezelésétől - állományorientált kapcsolatot biztosít - elrejt sok alacsony szintű tulajdonságot, pl. megszakítások,

időzítések, memóriaszervezés, stb. ► a felhasználónak egy egyenértékű, egyszerűbben kezelhető virtuális gépet nyújt2. erőforrás-kezelő – „alulról felfelé nézőpont” - nyilvántartja az erőforrásokat (hardver és szoftver erőforrások) - kielégíti az erőforrás-kéréseket - maximalizálja a rendszer hatékonyságát, teljesítményét ► az OS az a hely, ahol az összetett rendszer minden egyes részét kezelik

Page 3: 1. Operációs rendszerek helye

3. OS alapvető tulajdonságai

1. processzusok (folyamatok) az alapvető aktív alkotóelemek - processzus: egy végrehajtás alatt lévő program, ami létrejön (programbetöltés vagy végrehajtás indítása során), létezik (fut), majd megszűnik2. egyidejűleg több processzus létezik - a CPU-t fel kell osztani az aktuális futó processzusok között, ezt nevezzük time sharing-nek3. erőforrások centralizált kezelése - a processzusok kérés esetén kapják meg az erőforrásokat az operációs rendszertől4. eseményvezérelt - esemény megszakítás esemény feldolgozása esemény kiszolgálása visszatérés a megszakítás helyére

Page 4: 1. Operációs rendszerek helye

4. OS generációi – 1-2. generáció

1. generáció (1945-55) - nem léteztek operációs rendszerek - hatalmas, vákuumcsöves, 1 felhasználós gépek - gépi nyelvű programozás - gépek vezérlése kapcsolótáblával, később lyukkártyákkal - külön csapat tervezte, programozta, kezelte, stb. a gépeket2. generáció (1955-65) - tranzisztorok megjelenése → megbízhatóbb gépek → gyárthatóak, eladhatóak (több millió dolláros ár) - fortran és assembly programozás - az OS állandó a memóriában (pl. FMS, IBSYS) - elkülönültek a tervezők, gyártók, kezelők, programozók, karbantartók - kötegelt rendszerek → az elvesztegetett idő csökken - megjelent az eszközvezérlők, a verem-memória, a hívható OS

eljárások, a relatív címezhetőség

Page 5: 1. Operációs rendszerek helye

5. OS generációi – 3. generáció

- kis méretű integrált áramkörök (IC-k) alkalmazása, csökken az ár/teljesítmény hányados- IBM bevezeti a System/360 rendszert, egymással kompatibilis gépek családja → megszűnik a két független gyártósor- a sorozat minden gépén OS/360 operációs rendszer- multiprogramozás: CPU és I/O átfedően képes dolgozni, az OS a CPU üresjárati idejét tölti ki több belső memóriában tárolt processzus egyidejű futtatásával- memória szeletelés: az OS a memóriát szeletekre particionálja, minden partícióban egy-egy független job fut, ezeket speciális hardver védi meg más feladatok beavatkozásától- háttértárolás: az OS a feladatokat közvetlenül lemezről tudta olvasni, egy futó program befejezésekor egy új feladatot töltött a lemezről az immár üres partícióba, és elindította azt → a szalagok alkalmazásainak többsége megszűnt- COBOL, ADA, PASCAL nyelvű programozás

Page 6: 1. Operációs rendszerek helye

6. Időosztás – time slicing

- a multiprogramozás egy variációja- minden felhasználónak saját on-line terminálja van- a felhasználó processzusai egy adott maximális időtartamig birtokolhatták a CPU-t → a processzus-ütemező alrendszer átadta a CPU használatának jogát egy másik processzusnak- így a kiszolgálást igénylő feladatokhoz rendelhető a CPU → nagyszámú felhasználót képes gyorsan, interaktív módon kiszolgálni a számítógép- az első időosztásos rendszer a CTSS volt, az M.I.T. fejlesztette ki egy speciálisan átalakított IBM 7094-esen

Page 7: 1. Operációs rendszerek helye

7. Átmeneti tárolás – spooling

- a 3. generációs operációs rendszereknél jelent meg- SPOOL = Simultaneous Peripheral Operation On Line - az OS a feladatokat a számítógépteremben való megjelenésükkor lemezre (disk-spool terület) tudta olvasni, valahányszor egy futó program befejeződött, az OS egy új feladatot tudott a lemezről az immár üres partícióba tölteni és elindítani, a processzus is innen kapja és ide írja adatait- ezt a technikát háttértárolásnak is hívják, és a kimentre is alkalmazták- segítségével a szalagok alkalmazásainak többsége megszűnt

Page 8: 1. Operációs rendszerek helye

8. Memória-partíciók

- az OS a memóriát szeletekre particionálta, és minden partícióhoz egy-egy független job rendelődött- a multiprogramozást tette lehetővé- partíciók fajtái: - statikus: az operációs rendszer indulásakor fix darabszámú és fix méretű partíció képződött, egy feladat végrehajtásához az OS keresett egy szabad és elegendő méretű partíciót, amelyben a programnak megkezdhette a végrehajtását - dinamikus: az OS egy program végrehajtásához a szabad memóriaterületből készített egy elegendő méretű partíciót, így a partíciók száma változó

Page 9: 1. Operációs rendszerek helye

9. OS generációi – 4+ generáció

- LSI (Large Scale Integration) áramkörök megjelenése → PC-k, munkaállomások (üzleti életben, hivatalokban használt nagy teljesítményű, hálózatba kötött nagyobb PC-k)- PC, Workstation operációs rendszerek: - egy felhasználós, több feladatos operációs rendszerek - felhasználóbarátok - pl.: MS-DOS, Windows verziók, stb.- hálózati operációs rendszerek: - több felhasználós, több feladatos operációs rendszerek - lényegében nem különböznek az egyprocesszoros OS-ektől - pl.: UNIX, Linux, Windows NT, stb.- osztott operációs rendszerek: - egy feladatot egy időben több processzor is végezhet - az állományok tárolását automatikusan az OS végzi - a párhuzamosításhoz bonyolult processzorütemező algoritmus szükséges

Page 10: 1. Operációs rendszerek helye

10. OS felületei

- az OS-nek lehet felhasználói felülete és program felülete- felhasználói felület: - felhasználó – OS kapcsolati alrendszer - ezek egy parancsértelmezőn (command interface, shell), vagy egy grafikus felületen keresztül kommunikálnak egymással - a felhasználó parancsait értelmezi- program felület: - processzus – OS kapcsolati alrendszer - ezek rendszerhívások, könyvtári eljárások, ill. egyéb OS szolgáltatások útján kommunikálnak egymással

Page 11: 1. Operációs rendszerek helye

11. Rendszerhívások – system calls

- rendszerhívások (kiterjesztett utasítások) készlete: - OS – felhasználói programok közötti kapcsolatot alkotják - meghatározzák az OS tényleges tevékenységét - interpretáció kérdése, mi alkot rendszerhívást, pl. a POSIX szabvány csak a biztosítandó eljárásokat sorolja fel- a MINIX 53 rendszerhívásának 6 kategóriája: - processzusok létrehozása és megszüntetése - szignálok kezelése - fájlok írása és olvasása - katalóguskezelés - adatvédelem - időkezelés- ezeken kívül létezhetnek további kategóriák: - eseménykezelés - memóriakezelés - üzenetkezelés

Page 12: 1. Operációs rendszerek helye

12. OS szerkezete – rétegelt 1.

- az operációs rendszer rétegek hierarchiája, minden réteg az alatta lévőre épül,- minden réteg egy „virtuális gép”, a rétegbeli függvények által nyújtott funkciók összessége- az első ilyen rendszer a E. W. Dijkstra által tervezett THE volt, az alábbi 6 réteggel rendelkezett:

5. rendszert kezelő processzus4. felhasználói programok3. bemenet/kimenet2. processzus kommunikáció, gépkezelő konzol1. memóriakezelés0. processzor-hozzárendelés, multiprogramozás

- eljárások, függvények rétegekbe csoportosulnak → felügyelt eljáráshívások valósíthatóak meg- bármely n. rétegbeli eljárás csak a közvetlenül alatta lévő n-1. réteg eljárásait hívhatja → áttekinthető eljárásrendszer

Page 13: 1. Operációs rendszerek helye

12. OS szerkezete – rétegelt 2.

- minden réteg saját adatterülettel rendelkezhet → áttekinthető adatáramlás- program-végrehajtási szinteket különböztetünk meg: - normál mód: - felhasználói programok - OS eljárásainak meghatározott részhalmaza - kitüntetett mód: - speciális OS eljárások ill. rendszerprogramok is- a rétegelt szerkezet könnyen konfigurálható, például az eszközvezérlők egy rétegbe csoportosíthatóak

Page 14: 1. Operációs rendszerek helye

13. OS szerkezete – kliens/szerver 1.

- A korszerű operációs rendszerek egyre több programot helyeznek magasabb rétegekbe, azok kikerülnek az OS-ből → egy minimális kernel marad- egymással kommunikáló processzusok rendszere – üzenetek adása ill. vétele értendő kommunikáció alatt- az OS feladata az üzenetek közvetítése a processzusok között- szolgáltatást kérünk az OS-től → a kliensprocesszus kérést küld a szerverprocesszusnak → ez elvégzi a munkát és választ küld- az üzenet felépítése: - fejléc (header), az üzenet továbbításához szükséges információkat tartalmazza (pl. címzett, feladó, hossz, kódolás...) - tartalom (body), a címzett állítja össze, a feladó értelmezi, szerkezete a kommunikációs protokoll által definiált- a kliens- és szerverprocesszus felhasználói módban fut- a kernel felügyelt módban fut, a kliens és a szerver közötti kommunikációt kell kezelnie

Page 15: 1. Operációs rendszerek helye

13. OS szerkezete – kliens/szerver 2.

- az operációs rendszer felhasználói módban nem végrehajtható funkcióinak kezelése: - speciális, kernel módban futó szerverprocesszusokkal - a kernelbe beépített minimális kezelőkészlettel- a kliens/szerver struktúra előnyei: - újabb szerverprocesszusokkal az operációs rendszer szolgáltatásai bármikor bővíthetők - a szerverprocesszusok egymástól teljesen függetlenül programozhatóak - hálózatok esetén is alkalmazható, ekkor a szerver- és kliensprocesszus külön OS-en fut, és ezek a hálózaton keresztül cserélnek üzeneteket

Page 16: 1. Operációs rendszerek helye

14. Kliens/szerver programozás

- két ill. három rétegű alkalmazás-szerkezeten alapul- a kliens számítógépen futó kliens processzus a szükséges szolgáltatásokat a hálózaton üzenetek formájában kéri a szerver gépen futó szerver alkalmazástól- a kliens gép feladatai: - a képernyő kezelése - a felhasználó akcióinak megfelelő kérések összegyűjtése és továbbítása - a válaszok fogadása

Page 17: 1. Operációs rendszerek helye

15. OS alrendszerek

- az operációs rendszerekben egy-egy összetartozó funkció- csoport egy alrendszert alkothat, ilyen alrendszerek lehetnek: - processzuskezelő – process handling

pl. gondoskodik a CPU időosztásáról - erőforrás-kezelő – resource handling

pl. kölcsönös kizárás, szinkronizáció, stb. - memóriakezelő – memory management - bevitel/kiviteli – input/output - fájlkezelő – file, directory and file system management - időkezelő – time management

pl. maximális végrehajtási idő meghatározása - védelmi, biztonsági – protection, security - jelkezelő – signal handling - eseménykezelő – event handling - felhasználói felületet kezelő

pl. a parancsértelmező (shell)

Page 18: 1. Operációs rendszerek helye

16. Processzusok, fonalak 1.

- processzus: - végrehajtás alatt lévő program - tartozik hozzá egy saját címtartomány, a memória egy szelete, amelyen belül az olvashat és írhat - címtartományának tartalmát memóriatérképnek nevezik, ez a program szövegéből, adataiból és verméből áll - a memóriatérképen kívüli információit az OS processzus- táblázata tárolja (regiszterkészlet: utasításszámláló, verem- mutató, egyéb hardver regiszterek, futáshoz szükséges egyéb információk) - állapota lehet futó, futáskész vagy blokkolt- egy processzus létrehozhat egy vagy több gyermekprocesszust, ezek újra sajátjaikat → fastruktúra jön létre- közös feladat végrehajtásában együttműködő processzusok kommunikálhatnak is egymással- erőforrásokat kizárólagosan ill. osztottan használhatnak

Page 19: 1. Operációs rendszerek helye

16. Processzusok, fonalak 2.

- több processzus között is megoszthatjuk a processzort egy processzusütemezési algoritmussal, mellyel meghatározzuk, hogy mikor fejezzük be a munkát az egyik processzuson és szolgáljunk ki egy másikat- fonal: - szekvenciálisan végrehajtódó program - a processzus hozza létre - osztozik a létrehozó erőforrásain, címtartományán, jogosultságain - saját állapota és verme van - kezelése jelentős részben a programozó felelőssége

Page 20: 1. Operációs rendszerek helye

17. Kontextus csere

- egy modern számítógép több dolgot képes egy időben elvégezni- multiprogramozható rendszerben a CPU váltakozva hajtja végre a processzusok programjait, futtatva azokat néhány 10 vagy 100 ezredmásodpercig- a processzor minden időpillanatban csak egy programot futtat, de a párhuzamosság illúzióját kelti → látszatpárhuzamosság

↨ többprocesszoros rendszerekben hardver-párhuzamosság- kontextus csere – context switching: - a CPU át akar váltani a P1 processzusról a P2 processzusra - a P1 állapotát kimenti a CPU a hardver regisztereiből az erre a célra fenntartott memóriaterületre - a P2 korábban memóriába mentett állapotát helyreállítja a CPU a regisztereiben

Page 21: 1. Operációs rendszerek helye

18. Memóriatérkép

- minden processzushoz tartozik egy saját címtartomány, azaz a memória egy minimális és maximális című helye közötti szelet, amelyen belül az olvashat és írhat- a címtartomány tartalmát memóriatérképnek nevezzük, amely a következőkből áll: - szövegszegmens – a program kódja - adatszegmens – konstansokat és változókat tartalmazhat - veremszegmens – adatot (pl. lokális változók),

információkat (pl. Last-In-First-Out kezelés,Push/Pop utasítások, stb.)tartalmazhat

- dinamikus változók (pl. heap)

Page 22: 1. Operációs rendszerek helye

19. Processzus állapotai, állapotátmenetek 1.

- bár minden processzus önálló egység saját utasításszámlálóval és belső állapottal, gyakran szükségük van arra, hogy más processzusokkal kölcsönhatásba lépjenek

↓ ha az egyik processzus végrehajt egy kommunikációs lépést,

akkor megváltozhat a másik processzus állapota- egy processzus egy adott pillanatban 3-féle állapotban lehet: - futó – az adott pillanatban használja a CPU-t - futáskész – készen áll a futásra, de ideiglenesen leállította a

processzorütemező, és átadta a CPU használati jogát egy másik processzusnak, hogy az futhasson

- blokkolt – bizonyos külső esemény bekövetkezéséig logikailag nem képes futni, tipikusan azért, mert

olyan bemenetre vár, mely még nem elérhető - segédállapotok – iniciális, terminális

Page 23: 1. Operációs rendszerek helye

19. Processzus állapotai, állapotátmenetek 2.

- léteznek átmenetek is az állapotok között: - futó→blokkolt:

- automatikus - futó→futáskész:

- a processzusütemező feladata - futáskész→futó:

- a processzusütemező feladata - blokkolt→futáskész:

- akkor fordul elő, ha a processzus által várt külső esemény bekövetkezik- ha egy processzus sem fut az adott pillanatban, akkor a processzus egyből futó állapotba megy át, ellenkező esetben várakoznia kell, míg a CPU elérhető nem lesz.

Page 24: 1. Operációs rendszerek helye

20. Processzus leírása 1.

- a processzusok nyilvántartására, tulajdonságainak leírására szolgáló memóriaterület a Process Table, illetve a Process Control Block (PCB)- minden processzus leírása a következőket tartalmazza: - processzus azonosító – process ID: egyértelmű hivatkozási sorszám, a processzus létrejöttekor kapja meg - létrehozó processzus azonosító: a szülő processzus azonosítója - memóriatérkép: a processzus címtartományának tartalma, idővel változik - processzus állapota: futó, futáskész, blokkolt - jogosultságok: read, write, execute – létrehozó állítja be - birtokolt erőforrások: kizárólagosan ill. osztottan használt erőforrások nyilvántartása - meg nem kapott erőforrások: a processzus által kért, de meg nem kapott erőforrások

Page 25: 1. Operációs rendszerek helye

20. Processzus leírása 2.

- CPU-állapot mentési terület: kontextus cseréhez; utasítás- számláló, verempointerek, regiszterek tárolására - egyéb számlázási, statisztikai információk- egyidejűleg létező processzusok leírásai láncra vannak fűzve- processzus létrejön → leírására szolgáló memóriaterület (PCB)

hozzá csatolódik a lánchoz- processzus megszűnik → a PCB láncszem törlődik a láncról- a processzusleírások láncán műveleteket is végre lehet hajtani, ilyenek lehetnek például a következők: - processzus gyermekeinek keresése – pl. szülőprocesszus megszűnésekor, - futáskész processzusok keresése – pl. CPU kiosztásakor, - erőforrást igénylő processzusok keresése – pl. erőforrás odaítélésekor, stb.

Page 26: 1. Operációs rendszerek helye

21. Processzus létrehozása

- egy processzus létrehozásának lépései az alábbiak: 1. memóriaterület foglalása a processzus PCB számára 2. a PCB feltöltése iniciális adatokkal: - memóriatérkép kezdeti adatai - kizárólagosan birtokolt erőforrások - a processzor állapota - indítási cím ► utasításszámláló - létrehozó jogosultságai ► jogosultságok 3. memória foglalása a program szövege, adatai és verme számára, és ezek betöltése, a legtöbb OS-ben ez a létrehozó feladata 4. a processzus PCB hozzáfűzése a processzusleírások láncára 5. a processzus állapotának futáskészre állítása

Page 27: 1. Operációs rendszerek helye

22. Processzus megszüntetése

- egy processzus megszüntetésének lépései az alábbiak: 1. gyermekprocesszusok megszüntetése rekurzívan, vagy más szülőprocesszushoz csatolása 2. processzus állapotának terminálisra történő állítása 3. processzus PCB lecsatolása a processzusleírások láncáról, a processzus ezután már nem osztozik a CPU-n 4. a processzus birtokában lévő erőforrások felszabadítása 5. a memóriatérképnek megfelelő memóriaterületek felszabadítása 6. processzus PCB memóriaterületének felszabadítása- egy processzus a következő módokon szűnhet meg: - önmagát megszüntetheti az exit() paranccsal → jelet küld a létrehozó processzusnak a megszüntetés sikerességéről - a létrehozója vagy annak ősei megszüntethetik - a „kill” szignál megszüntetheti, ha az nincsen lekezelve

Page 28: 1. Operációs rendszerek helye

23. Processzus ütemezés feladata, céljai

- amikor egyidejűleg több futáskész állapotú processzus létezik, az OS-nek el kell döntenie, hogy melyik fusson először → ütemezője hozza meg ezt a döntést, ütemezési algoritmus- az ütemező által elérni próbált célok: - pártatlanság – egy adott processzus indokolatlanul a többi

processzus kárára ne részesüljön előnyben - hatékonyság – a CPU kihasználtsága 100% legyen - válaszidő – csökkenteni az interaktív felhasználók válaszidejét - átfutási idő – egy processzus létrejöttétől a megszűnéséig tartó időtartam minél rövidebb legyen - áteresztőképesség – egy egységnyi idő alatt végrehajtott processzusok száma minél nagyobb legyen - erőforrás-kihasználtság minél jobb legyen - költség alacsony legyen, az algoritmus nem lehet túl bonyolult - megbízhatóság – az átfutási idő nem függhet az egyidejűleg létező processzusoktól

Page 29: 1. Operációs rendszerek helye

24. Processzus ütemezés paraméterei 1.

Az ütemezési algoritmus ezek alapján dolgozik; a processzusokazon tulajdonságai, melyeket figyelembe vesz az ütemező: - processzus létrejöttekor besorolódhat processzus osztályokba: - batch – a processzus futtatása „ráér” - interaktív – a shell-ben kiadott parancs hatására jön létre

a processzus, mely a felhasználókkal is kommunikálhat

- real-time – időre érzékeny processzusok, ezek eseményeket szolgálnak ki

- processzus rendelkezhet prioritással, mely lehet: - rögzített – létrehozás után nem változik - változó – az ütemező változtatja az algoritmusától függően - processzusnak lehet típusa is: - CPU-intenzív - erőforrás-igényes

Page 30: 1. Operációs rendszerek helye

24. Processzus ütemezés paraméterei 2.

- real-time (eseményeket kiszolgáló) rendszerekben feltételek tartozhatnak egy processzushoz - dinamikus információk, ezeket az ütemező gyűjti: - eddig használt összes CPU idő, - maximális memória, - erőforráskérések gyakorisága, - adott processzus „elhanyagoltsága”, stb.

Page 31: 1. Operációs rendszerek helye

- round robin ütemezés: - egyik legrégebbi, legegyszerűbb, legszélesebb körben használt - minden processzusnak ki van osztva egy időszelet, amely alatt engedélyezett a futása - időszelet végen a processzus fut → előjegyzett processzus kapja meg a CPU használati jogát - időszelet vége előtt véget ér a processzus → a CPU- átkapcsolás a processzus blokkolásakor megtörténik - az ütemező egy listát tart nyilván a futtatandó processzusokról, ha a processzus felhasználta a saját időszeletét, a végére kerül - az átkapcsolás folyamata bizonyos adminisztrációs időt igényel, ezt a folyamatot nevezik processzusátkapcsolásnak

↓ - ha az időszelet túl kicsi, az csökkenti a CPU hatékonyságát, ha túl nagy, akkor az interaktív kérdésekre lassú a válaszadás

25. Processzus ütemező algoritmusok –round robin, tiszta prioritásos 1.

Page 32: 1. Operációs rendszerek helye

- tiszta prioritásos ütemezés: - minden processzushoz rendelünk egy prioritást és csak a legmagasabb prioritású, futásra kész processzusnak engedjük meg, hogy fusson - a magas prioritású processzusok végtelen ideig tartó futásának megelőzésére a következő módszerek alkalmazhatók: - minden óraütemben csökkentjük a futó processzus prioritását - minden processzushoz hozzárendelünk egy max. időszeletet - a prioritások hozzárendelése lehet statikus vagy dinamikus - a processzusokat sorolhatjuk prioritási osztályokba, ekkor az osztályok között prioritásos algoritmus érvényesül, az osztályon belül viszont más szempont alapján születik döntés (pl. round robin ütemezés)

25. Processzus ütemező algoritmusok –round robin, tiszta prioritásos 2.

Page 33: 1. Operációs rendszerek helye

- aging – növekvő prioritásos – ütemezés: - minden processzushoz rendelünk egy prioritást és csak a legmagasabb prioritású, futásra kész processzusnak engedjük meg, hogy fusson - a magas prioritású processzusok végtelen ideig tartó futásának megelőzésére minden óraütemben csökkentjük a futó processzus prioritását - ha egy processzus nem választódik ki, akkor nő a prioritása - a prioritások hozzárendelése lehet statikus vagy dinamikus - a processzusokat sorolhatjuk prioritási osztályokba, ekkor az osztályok között prioritásos algoritmus érvényesül, az osztályon belül viszont más szempont alapján születik döntés (pl. round robin ütemezés)

26. Processzus ütemező algoritmusok –aging, feedback 1.

Page 34: 1. Operációs rendszerek helye

- feedback – visszacsatolási prioritásos – ütemezés: - minden processzushoz rendelünk egy prioritást és csak a legmagasabb prioritású, futásra kész processzus futhat - a magas prioritású processzusok végtelen ideig tartó futásának megelőzésére minden processzushoz hozzárendelünk egy maximális időszeletet - ha a processzus időszeletének lejárta miatt veszti el a CPU használati jogát, akkor csökken a prioritása, ha erőforráskérés miatt, akkor marad → a CPU-intenzív és erőforrás-igényes processzusok kiegyenlítődnek - a prioritások hozzárendelése lehet statikus vagy dinamikus - a processzusokat sorolhatjuk prioritási osztályokba, ekkor az osztályok között prioritásos algoritmus érvényesül, az osztályon belül viszont más szempont alapján születik döntés (pl. round robin ütemezés)

26. Processzus ütemező algoritmusok –aging, feedback 2.

Page 35: 1. Operációs rendszerek helye

- a CPU-t a processzusok között „igazságosan elosztó” ütemezés- a processzusok osztályokba sorolódnak- az osztályok meghatározott arányban részesülnek az összes CPU-időből- az ütemező méri az egyes osztályokbeli processzusokra fordított összes CPU-időt- ha egy osztály elmarad az őt megillető aránytól, akkor abból az osztályból választ az ütemező processzust- osztályon belül a választás más szempont alapján történik

27. Processzus ütemező algoritmusok –fair share

Page 36: 1. Operációs rendszerek helye

- a „legrövidebb feladatot először” algoritmus - olyan rendszerekben alkalmazzák, melyek speciálisan kötegelt feladatok feldolgozására alkalmasak, és ezen feladatok futási ideje előre ismert - mindig a legkisebb összes CPU-időt igénylő processzus kapja meg a processzor használati jogát - az algoritmus bizonyíthatóan optimális, legyen 4 feladatunk: a, b, c és d futásidőkkel, ekkor az első befejezi a időpontban, a második a+b időpontban, stb. → az átlagos áthaladási idő: (4a+3b+2c+d)/4, tehát a többszörösen járult hozzá az átlaghoz → neki kell a legrövidebb feladatnak lennie

28. Processzus ütemező algoritmusok –előrelátó algoritmusok

Page 37: 1. Operációs rendszerek helye

29. Processzus ütemezés elmélete

- az ütemezéshez létezik egy szelekciós függvény: int f (p,w,e,s), ahol - p: a processzus prioritása - w: a processzus eddig rendszerben eltöltött összideje - e: a processzus által eddig használt összes CPU-idő - s: a processzus által igényelt összes CPU-idő- a függvény által visszaadott f értékét minden aktív processzusra kiszámoljuk, és az érték szerint döntünk - f ~ max(w) → FIFO algoritmus - f ~ állandó → round robin, prioritásos, stb. - f ~ min(s) → „legrövidebb feladatot először” algoritmus- normalizált átfutási időnek a w/s hányadost nevezzük, 1 ≤ w/s = 1/(1-r), ahol 0≤r<1 ► az ütemezési algoritmus hatékonyságát r jellemzi, minél ez az érték, annál jobb az algoritmus

Page 38: 1. Operációs rendszerek helye

30. Processzus ütemezés szimulációja

- a processzus ütemező algoritmust mesterséges körülmények között szimulálhatjuk, hogy elemezni tudjuk a hatékonyságát- a szimulációhoz szükséges paraméterek: - l: egységnyi (1) idő alatt átlagosan létrejövő processzusok száma - s: egy processzus átlagos össz CPU időszükséglete (s•l ≤ 1)- minden létrehozott processzushoz hozzárendelődnek a szimulálandó ütemezési algoritmusban használt paraméterek (pl. prioritás)- futtatjuk a szimulált algoritmust a fenti paraméterekkel véletlenszerűen létrehozott processzusokra, mérjük a normalizált átfutási időket- hisztogramot rajzolunk az s szerint csoportosított átlagos normalizált átfutási időknek megfelelő r értékekből, és ezt értelmezzük

Page 39: 1. Operációs rendszerek helye

31. Kölcsönös kizárás

- az együtt dolgozó processzusok közös tárolóterületen (memória, fájl) osztozhatnak, amelyből mindegyik olvashat és írhat- versenyhelyzet: kettő vagy több processzus olvas vagy ír megosztott adatokat, és a végeredmény attól függ, hogy ki és pontosan mikor fut- a kölcsönös kizárás valamilyen módszer, mely biztosítja, hogy ha egy processzus használ megosztott változót, fájlt, stb., akkor a többi processzus tartózkodjon ettől a tevékenységtől- kritikus szekció: a processzus programjának az a része, mely megosztott memóriához vagy fájlokhoz nyúl, vagy más kritikus tevékenységet végez, mely versenyhelyzetekhez vezethet- a megfelelő kölcsönös kizárás szabályai: - legfeljebb egy processzus lehet a kritikus szekciójában - véges időn belül bármely proc. beléphessen a krit. szekciójába - krit. sz. kívüli proc. nem befolyásolhatja más krit. sz.-ba lépését - nem lehet feltétel a CPU-k száma vagy a proc.-ok lefutási ideje

Page 40: 1. Operációs rendszerek helye

- a kölcsönös kizárás szabályainak megfelelő Entry-Exit módszerek struktúrája a következő:

- a processzus az entry eljárással belép a kritikus szekciójába - itt már használhatja a processzus a megosztott fájlokat, memóriát, stb. - a processzus az exit eljárással kilép a kritikus szekciójából - ezután a következő processzus beléphet saját kritikus szekciójába

32. Entry – Exit módszerek struktúrájaa kölcsönös kizárásra

Page 41: 1. Operációs rendszerek helye

33. Entry – Exit módszerek – hardver módszerek 1.

- megszakítások tiltása: - a legegyszerűbb megoldás, mihelyt egy processzus belép saját kritikus szekciójába letiltja az összes megszakítást, és újraengedélyezi, mielőtt elhagyja azt - problémák ezzel a módszerrel: - ütemező-, esemény-kiszolgáló processzusok nem jutnak CPU-hoz → veszélyes - többprocesszoros rendszerben a tiltás csak egy adott CPU-ra vonatkozik - nem megfelelő a felhasználói processzusok számára- a TSL (Test and Set Lock) utasítás - beolvassa a memóriaszó tartalmát egy regiszterbe, és ezután egy nemnulla értéket ír erre a memóriacímre - az utasítás végrehajtásával a CPU zárolja a memóriabuszt, a művelet befejezéséig megtiltva ezzel más CPU-knak a memória elérését

Page 42: 1. Operációs rendszerek helye

33. Entry – Exit módszerek – hardver módszerek 2.

- ha a lock megosztott változó értéke 0, bármelyik processzus beállíthatja 1-re a TSL használatával, és ezután olvashatja, írhatja a megosztott memóriát - miután ezt megtette, visszaállítja lock értékét 0-ra - tevékeny várakozást követel meg

enter_region;TSL register, lockCMP register, #0JNE enter_regionRET

leave_region;MOVE lock, #0RET

Page 43: 1. Operációs rendszerek helye

34. Entry – Exit módszerek –Peterson „udvariassági” módszer 1.

#define FALSE 0#define TRUE 1#define N 2

int turn;int interested[N];

void enter_region (int process) {int other;other = 1 - process;interested[process] = TRUE;turn = process;while (turn == process && interested[other] == TRUE { }

}

Page 44: 1. Operációs rendszerek helye

34. Entry – Exit módszerek –Peterson „udvariassági” módszer 2.

void leave_region (int process) {interested[process] = FALSE;

}

- csak két processzusra működik- mielőtt a kritikus szekcióba lép, minden processzus meghívja az enter_region-t, paraméterként átadva a saját processzus sorszámát, 0-t vagy 1-et- ha szükséges várakozik a biztonságos belépésig- miután végzett meghívja a leave_region-t, hogy ezt jelezze, és megengedje egy másik processzusnak a belépést- tevékeny várakozást követel meg

Page 45: 1. Operációs rendszerek helye

35. Entry – Exit módszerek –Lamport „sorszám” módszer

int N; // sorszám-tömbint MyNoi = 0; // saját sorszám-változó

Entryi: MyNoi = N++; //pi egyedi belépési sorszámot kapwait while(MyNoi != minj(MyNoj, MyNoj != 0)); ki: …

Exiti: MyNoi = 0; // pi kilépett

- ez a módszer akárhány processzusra működik- mindegyik processzus olvassa a többi processzus sorszám- változóját- tevékeny várakozást követel meg → elpazarolt CPU-idő

Page 46: 1. Operációs rendszerek helye

36. Entry – Exit módszerek –Dijkstra féle bináris szemafor

int S = N; // globális szemafor változó (itt nem bináris)Entry: // i-től független!

DOWN(S): wait while (S == 0); S = S - 1;ki: …

Exit: // i-től független!UP(S): S = S + 1; // pi kilépett

- E. W. Dijkstra javasolta, hogy egy új, globális, egész változótípus létrehozását, melyet minden processzus lát → szemafor- két művelet van, a DOWN és az UP, ezek rendszerhívásokként vannak megvalósítva → az OS tilt bennük minden megszakítást- a DOWN művelet megvizsgálja, hogy a szemafor értéke nagyobb-e, mint nulla, ha igen, akkor csökkenti az értékét- az UP a megadott szemafor értékét növeli, végrehajtását semmilyen processzus nem blokkolhatja

Page 47: 1. Operációs rendszerek helye

37. Hoare monitor a kölcsönös kizárásra 1.

- Hoare és Brinch Hansen egy magasabb szintű szinkronizációs primitívet javasoltak, amit monitornak neveztek el- a monitor több processzusból hívható, közös állapot- és globális változókkal rendelkező eljárások, változók és adatszerkezetek együttese, és mindezek egy speciális csomagba vannak összegyűjtve- a processzusok bármikor hívhatják monitorban lévő eljárásokat, de nem érhetik el közvetlenül a monitor belső adatszerkezeteit a monitoron kívül deklarált eljárásokból- minden időpillanatban csak egy processzus lehet aktív egy monitorban- processzus meghív egy monitoreljárást → az eljárás ellenőrzi, hogy más aktív-e a monitoron belül, ha igen, akkor a hívó felfüggesztődik, ha nem, akkor a hívó processzus beléphet- minden kritikus szekciót monitoreljárássá alakítva soha lesz két processzus egy időben a saját kritikus szekciójában

Page 48: 1. Operációs rendszerek helye

37. Hoare monitor a kölcsönös kizárásra 2.

- szükség van egy módszerre, mellyel blokkolhatunk egy processzust, ha az nem tud tovább haladni → állapotváltozók, és műveleteik (WAIT, SIGNAL) bevezetése

monitor exampleint i; // globális minden eljárásracondition c; // állapot-változó

procedure producer(x) { . . . WAIT(c); … // a monitoreljárás nem tudja folytatni, blokkolja a } // hívót, más processzus beléphet a monitorba

procedure consumer(x) {. . . SIGNAL(c); // a processzus felébreszti alvó „partnerét” azon} // az állapotváltozón, amelyre az éppen vár end monitor;

Page 49: 1. Operációs rendszerek helye

38. Szinkronizáció alapproblémái

- legyenek p1, p2, … ,pn processzusok és a1, a2, … ,am akciók- ha a pi processzus csak feltételhez szabva hajthatja végre az aj akciót (pl. az a feltétel, hogy egyetlen másik processzus sem hajthatja végre az adott akciót = kölcsönös kizárás), akkor a feltétel bekövetkeztéig a pi processzus blokkolt állapotban lesz- a szinkronizációs probléma tulajdonképpen általánosítása a kölcsönös kizárás problémájának (pl. legyen v globális változó, amíg p1 ír v-be, p2 nem írhatja/olvashatja v-t)- holtpont (deadlock) : processzusok egy csoportja blokkolt és egyetlen csoportbeli processzus sem képes futáskésszé válni, „örökre” blokkoltak maradnak- éheztetés (starvation): olyan helyzet, melyben minden program korlátlan ideig folytatja a futást, de nem tesz semmit a fejlődés érdekében

Page 50: 1. Operációs rendszerek helye

39. Étkező filozófusok szinkronizációs probléma 1.

- E. W. Dijkstra vetette fel és oldotta meg- 5 filozófus ül egy kerek asztal körül, mindegyik előtt van egy tányér spagetti, és az egymás melletti tányérok között van 1 villa- a filozófusok élete evésből és gondolkodásból áll- a filozófusoknak két villára van szükségük, hogy ehessenek- ha egyikük éhes lesz, megpróbálja megszerezni a bal és jobb oldalán lévő villát – egyszerre egyet – tetszőleges sorrendben- ha ez sikerült, akkor eszik egy ideig, majd leteszi a villákat és gondolkodással folytatja- a feladat az, hogy úgy szinkronizáljuk a filozófusokat, hogy véges időn belül mindegyikük kapjon 2 villát és ne haljon éhen egyikük sem- a megoldás lépései a következők: 1. a filozófusok gondolkodnak egy ideig, majd megpróbálják megszerezni mindkét villát egyszerre. 2. mindegyikük az állapotát éhesre állítja

Page 51: 1. Operációs rendszerek helye

39. Étkező filozófusok szinkronizációs probléma 2.

3. ha a filozófusnak sikerül megszereznie mindkét villát, akkor eszik, közben kizárja a többi filozófust 4. amennyiben a filozófus nem tudja megszerezni a villákat, akkor blokkolódik 5. az evés befejező filozófusok állapotukat gondolkodóra állítják, majd megnézik a bal és a jobb szomszédjukat, hogy ők így már tudnak-e enni – az állapotuk éhes kell legyen és blokkolva kell lenniük 6. ha igen, akkor felébresztik őket, hogy ők is tudjanak enni- holtpont nem alakulhat ki- ez olyan processzusok modellezésére hasznos, amelyek korlátozott számú erőforrások (pl. I/O eszközök) kizárólagos eléréséért versenyeznek

Page 52: 1. Operációs rendszerek helye

40. Gyártók – Fogyasztókszinkronizációs probléma 1.

- két processzus osztozik egy közös, rögzített méretű tárolón- az gyártó adatokat helyez el benne, a fogyasztó kiveszi azokat- a megoldás szemaforok felhasználásával:#define N 100int mutex = 1;int empty = N;int full = 0;

void producer() {int item;while (TRUE) {

produce_item(&item);down(&empty);down(&mutex);enter_item(item);

Page 53: 1. Operációs rendszerek helye

40. Gyártók – Fogyasztókszinkronizációs probléma 2.

up(&mutex);up(&full);

}}

void consumer(void) {int item;while (TRUE) {

down(&full);down(&mutex);remove_item(item);up(&mutex);up(&empty);

}}

Page 54: 1. Operációs rendszerek helye

41. Olvasók – Írók szinkronizációs probléma

- Courtois és mások vetették fel- adatbázis elérését modellezi (pl. egy légitársaság helyfoglalási rendszere sok versengő processzussal, melyek mind olvasni vagy írni szeretnének- több processzus egyidejű olvasása elfogadható ↔ ha egy proc. írja az adatbázist, akkor más processzusoknak nem szabad azt elérniük- amíg legalább egy olvasó aktív, további olvasók jöhetnek- mivel az írónak kizárólagos hozzáférésre van szüksége, mindaddig fel lesz függesztve, amíg van olvasó- másik megoldás: ha egy író már vár, akkor az utána jövő olvasók fel lesznek függesztve, így az írónak csak azt kell megvárnia, hogy az érkezése előtti aktív olvasók befejezzék ► kevesebb egyidejűséget valósít meg, a hatékonyság csökken

Page 55: 1. Operációs rendszerek helye

42. Petri séma 1.

- processzusok szinkronizációjának leírási, ábrázolási módja- akció: szekvenciálisan végrehajtódó programrészletek bemenetekkel és kimenetekkel- az akciók csak bizonyos feltételekkel hajtódnak végre, ezt a bemenetek határozzák meg- Petri-féle szinkronizációs séma: akciók bemeneteiken és kimeneteiken keresztül összekötött hálózata, vagy gráfja; olyan programot ábrázoló diagram, melynek több processzussal történő végrehajtására is van lehetőség- indítási feltétel: legalább egy feltételpont az akció bemenetén- egy akció végrehajtható, ha minden bemenetén van pont- akció végrehajtása: minden bemenetéről 1 pont levonódik, és minden kimenetéhez 1 pont hozzáadódik- kezdőállapot – a sémában a be- és kimeneteken a kezdő-pontok el vannak helyezve

Page 56: 1. Operációs rendszerek helye

42. Petri séma 2.

- végállapot – a sémában nincs végrehajtható akció- végrehajtás – az akciók lehetséges végrehajtásaival kapott sémasorozat a kezdőállapottól a végállapotig

Page 57: 1. Operációs rendszerek helye

43. Processzusok kommunikációja

Processzusok együttműködéséhez szükséges azok közötti kommunikáció, ennek módszerei a következők: - adatok cseréje csővezetéken keresztül – konfliktushelyzet itt is előállhat, ha a csőben nincs adat, akkor a pipe-ból olvasó processzus blokkolódik → olyan módszer, mint a versenyző processzusok esetében - üzenetek adás-vétele: két processzus vagy egy operációs rendszeren belül, vagy hálózaton keresztül két külön operációs rendszeren beszélget egymással - közös adatterület – osztott memória: a UNIX-ban, Linux-ban lehet definiálni osztott memóriaterületet - kliens/szerver modell segítségével

Page 58: 1. Operációs rendszerek helye

44. Csővezeték – pipe 1.

#define STD_IN 0 / * standard bemenet fájlleírója* / #define STD_OUT 1 /* standard kimenet fájlleírója*/pipeline(char *process1, char *process2) { int fd[2]; pipe(&fd[0]); / * pipe létrehozása * / if (fork() != 0) {

/ * ezeket a szülőprocesszus hajtja végre * /close(fd[0]); / * a pipe-ból nem kell olvasnia * /close(STD_OUT ); / * új standard kimenet előkészítése * /dup(fd[1]); / * standard kimenetet az fd[1]-hez rendeljük * / close(fd[1]); / * ez a fájlleíró már nem kell * /execl(process1, process1, 0);

} else {/ * ezeket a gyermekprocesszus hajtja végre * /close(fd[1]); / * a pipe-ba nem kell írnia * /close(STD_IN ); / * új standard bemenet előkészítése * /

Page 59: 1. Operációs rendszerek helye

44. Csővezeték – pipe 2.

dup(fd[0]); / * standard bemenetet az fd[0]-hoz rendeljük * / close(fd[0]); / * ez a fájlleíró már nem kell * /execl(process2, process2, 0);

} }

Page 60: 1. Operációs rendszerek helye

45. Üzenetportok 1.

- a Unix-ban, Windows NT-ben, egyéb hálózatokban alkalmazzák a processzusok kommunikációjára- két processzus üzeneteket cserél egy porton keresztül- az üzenetporton az üzenetek egy láncra vannak felfűzve- a lánc feje – üzenetport: typedef struct {

Message *head; // első üzenetre mutató pointerint type; // a port típusachar *name; // üzenetport neveMsgPort *reply_port; // esetleg a válasz-port címe

} MsgPort;- a láncszem – üzenet: typedef struct {

Message *next; // a láncon következő üzenet címeint lenght; // az üzenet (teljes) hosszachar message_text[1]; // az üzenet (tényleges) szövege

Page 61: 1. Operációs rendszerek helye

45. Üzenetportok 2.

} Message;- az üzenetportokkal kapcsolatos műveletek: MsgPort *CreatePort (char *name, int type = 0, MsgPort

*reply_port = 0); MsgPort *FindPort (char *name); void SendMessage (MsgPort *p, Message *m); Message * ReceiveMessage (MsgPort *p); // blokkol, ha p üres int TestPort (MsgPort *p); // nullát ad vissza, ha p-n nincs üzenet- az üzenetportnak és magának az üzenetnek is memóriát kell foglalni, az üzenet számára általában az adó foglalja le, a vevő szabadítja fel a memóriaterületet

Page 62: 1. Operációs rendszerek helye

46. Ciklikus üzenetbufferek

- processzusok kommunikációjának egy megvalósítási módszere- egy FIFO módszerrel működő vektorként képzelhető el- a B buffer n darab, azonos méretű cellára van osztva, melyekben egy üzenet fér el- a c1, c2, … ,cn-1 cellák lehetnek foglaltak vagy szabadok üzenet tárolására- végrehajtható műveletek: - send(B, m): az m üzenetet a legkisebb indexű üres cellába helyezi, ez foglalt lesz – ezt végrehajtó processzus blokkolódik, ha nincs üres cella - m = receive(B): a legelőször lefoglalt cellából az üzenetet kiadja, az adott cella szabad lesz – ezt végrehajtó processzus blokkolódik, ha nincs foglalt cella- például a csővezeték implementálható ciklikus üzenetbufferel

Page 63: 1. Operációs rendszerek helye

47. Processzusok kommunikációja:Windows NT LPC 1.

- a Windows NT üzenetváltásos és üzenetportokat alkalmazó processzus-kommunikációra is képes- az NT subsystem egy szerverprocesszusként működik, mely feladata a kliens processzusok közötti üzenetközvetítés- felhasználói programok → kliensprocesszusok- az LPC (Local Procedure Call Facility) kliens-szerver közvetítő, portokon keresztül valósítja meg az üzenetek továbbítását- kétféle port létezik: - kapcsoló – connection – port - kommunikációs – communication – port- két kliens processzus kommunikációja: - kliens kér egy hozzáférést – handle – a subsystem kapcsoló portjához → ezt jelöljük hc-vel - kliens a hc segítségével kapcsolódási kérést küld a szerver- processzusnak

Page 64: 1. Operációs rendszerek helye

47. Processzusok kommunikációja:Windows NT LPC 2.

- a szerverprocesszus két privát kommunikációs portot hoz létre a hk és hs hozzáférésekkel, hk → kliensé, hs → szerveré - a kliens a hk, a szerver a hs segítségével küld a másiknak üzeneteket, ill. kér a másiktól üzeneteket- az NT subsystem üzenetkezelési módjai: 1. a rövid üzenetek a port üzenetláncára kerülnek 2. a klienstől jövő üzenetek egy osztott memóriába kerülnek 3. a szerver fonalat hoz létre a kliensek üzeneteinek kezelésére- grafikus felületű applikációk esetén: - egy esemény (command) bekövetkezését az NT kezeli le - az eseményből üzenet készül - az üzenet a szerver portjára kerül - a szerver meghívja az esemény kezelésére kijelölt felhasználói eljárásokat (nevezik callback eljárásoknak is)

Page 65: 1. Operációs rendszerek helye

48. Processzusok kommunikációja:Unix IPC 1.

- processzusok kommunikációja (Interprocess Communication) háromféleképpen valósulhat meg: - osztott memória segítségével: két processzus az OS-től közös memóriát kér - csővezeték segítségével: C-ben, shell-ben lehet programozni - csatolópont – socket – segítségével: ezen a ponton keresztül kommunikál a két processzus, ez mindig egy tartományon (domain) belül érvényes- tartományok lehetnek a következők: - Unix tartomány: az egy OS alatt futó processzusok közötti kommunikációra alkalmas, a csatolópont ekkor egy elérési úttal megjelölt fájl vagy könyvtár - Internet tartomány: a külön OS-en futó processzusok közötti kommunikációra alkalmas, a csatolópont egy 32 bites IP-cím

Page 66: 1. Operációs rendszerek helye

48. Processzusok kommunikációja:Unix IPC 2.

- kommunikáció módja háromféle lehet: - stream – bájt sorozat - packet – csomag sorozat - datagram – üzenetek küldése történik, melyek sorrendje helyreállítható, minden helyesen megkapott üzenet után a vevőnek nyugtát kell küldenie- protokoll: a szerver- és kliensprocesszus közötti üzenetek formájának szabványa- kliens C eljárások IPC megvalósítására: - int socket (int domain, int type, int protocol); // csatolópont

// létrehozására, - bind (int socket_id, char *adress, …); // hozzácsatolásra, - connect (int socket_id, …); // kapcsolat élővé tételére, - listen (int socket_id, …); // üzenetre várására, - accept (int socket_id, …); // üzenetet nyugtázására, stb.

Page 67: 1. Operációs rendszerek helye

49. Erőforrás osztályok 1.

- sorosan osztott erőforrások: olyan erőforrások, melyeket egyidejűleg csak egy processzus használat- osztott erőforrások kérésének folyamata: - a processzus az OS erőforrás-kezelő alrendszerétől kéri az erőforrást - ha az biztosítja neki, akkor használja azt - véges időn belül felszabadítja az erőforrást, értesítve erről az OS erőforrás-kezelő alrendszerét- Request-Release pár formailag olyan, mint az Entry-Exit- megszakítható erőforrás: több processzus használhatja, de egyidejűleg csak egy, használatát kérni kell az OS-től- megszakíthatatlan erőforrás: a processzus létezése során végig annak rendelkezésére áll- hardver erőforrás – memória, I/O eszközök, stb.- szoftver erőforrás – közös változók, fájlok, stb.

Page 68: 1. Operációs rendszerek helye

49. Erőforrás osztályok 2.

- erőforrás osztály: hasonló tulajdonságú, hasonlóan kezelendő erőforrások együttese- készlet: erőforrás osztály elemei és az elemek leírásai- várakozó sor: blokkolt állapotú processzusok sora, melyek erőforrást kértek, de még nem kapták meg- allokátor: erőforrás osztálybeli erőforrás kérést/felszabadítást végző OS eljárások- erőforrás osztályra jó példa a memóriaszeletek osztálya

Page 69: 1. Operációs rendszerek helye

50. Erőforrás osztályok leírása

- erőforrás osztály azonosító – resource id- erőforrás osztályt is egy processzus hozza létre, ennek a processzus azonosítója – process id- készlet listája (lánc vagy vektor): - egyes láncszemek (erőforrások) leírása, pl. memóriaszeletek esetén a kezdőcím és a hossz - szabad vagy foglalt, mely processzus számára foglalt - készlet-elem beléptető ill. törlő eljárás- várakozó lista - a listán lévő processzusok azonosítója - erőforrás-kérés paraméterei, pl. a kért memóriaszelet hossza - belépési időpont, stb.- allokátor eljárások: Request-Release eljárások

Page 70: 1. Operációs rendszerek helye

51. Erőforrás kérés/felszabadítás 1.

- allokátor működése erőforrás kérés esetén: - az utasítás a Request (res_id, e-specification, &e-id) vagyis meg kell mondani, melyik erőforrás osztályból kérünk erőforrást, milyen tulajdonsággal rendelkező erőforrást kérünk, majd a harmadik paraméteren megkapjuk a kért erőforrás címét - a kérő processzust blokkolt állapotba hozza - a kérő processzust várakozó listába helyezi - a várakozó listát végig vizsgálja, és ha egy korábbi processzus kérése teljesíthető, akkor: - válaszváltozóba behelyezi az erőforrás azonosítóját - a kiadott erőforrást foglaltnak jegyzi be a készletben - a processzust futáskész állapotba hozza - a processzust kitörli a várakozó listából - a vezérlést átadja a processzus-ütemezőnek

Page 71: 1. Operációs rendszerek helye

51. Erőforrás kérés/felszabadítás 2.

- allokátor működése erőforrás felszabadítás esetén: - az utasítás a Release (res_id, e-id), vagyis meg kell mondani, hogy melyik erőforrás osztályból szabadítunk fel erőforrást, majd a második paraméteren megadjuk az erőforrás címét - az erőforrást szabadnak jegyzi be a készletben - végigmegy a várokozó listán, és megpróbálja a kielégítetlen kéréseket teljesíteni - a hívó processzusnak visszaadja a vezérlést- speciális erőforrások: - hardver erőforrások: memória, bemeneti/kimeneti erőforrások (pl. I/O eszközök, fájlok, könyvtárak) - szoftver erőforrások: adatok (közös adatok, üzenetek), eljáráscsoportok (OS eljárások, stb.)

Page 72: 1. Operációs rendszerek helye

52. Holtpont kialakulás feltételei

- holtpont: processzusok egy halmaza az egymás birtokában lévő erőforrásokra várakozik örökké, vagyis egymást akadályozzák abban, hogy futáskésszé váljanak- holtpont kialakulásának feltételei: 1. sorosan osztott erőforrások léteznek az OS-ben 2. csak a birtokló processzus szabadíthatja fel a birtokában lévő erőforrásokat 3. Hold and Wait: legalább egy processzus birtokol erőforrást és blokkolt, vagyis erőforrás kérése van 4. cirkuláris Wait: létezik processzusok egy <p0, p1,…,pn-1> sorozata, amelyre igaz, hogy minden pi blokkolt és a pi a pi+1 birtokában lévő erőforrást kéri, ez egy elegendő feltétel- az 1. és 2. feltétel a legtöbb OS-ben teljesül, a 3. speciális esete

a 4.-nek → holtpont kialakulását a 3. vagy 4. feltétel létrejöttének megakadályozásával érhetjük el

Page 73: 1. Operációs rendszerek helye

53. Holtpont kezelés módszerei

- feltételezzük, hogy nem alakul ki ilyen szituáció (strucc politika) → ekkor a rendszergazda feladata a „gyanúsan öreg” processzusok megszüntetése, Unix-ban alkalmazzák- feltámasztás – recovery: az OS észreveszi és megszünteti, erre „durva” módszerek vannak: - erőforrás elvétele erőszakkal, majd átadása egy másiknak → csökken eggyel a holtpontban lévő processzusok száma - processzus megszüntetése- megelőzés – prevention: megakadályozzuk a holtpont létrejöttét, korlátozzuk a processzusok erőforráshoz jutását → erőforrás kihasználtság romlik, a processzusok átfutási ideje romlik, stb.

Page 74: 1. Operációs rendszerek helye

54. Holtpont megelőzése – prevention

- Hold and Wait megakadályozásával jár, a triviális szabály az, hogy egy processzus nem kérhet erőforrást, ha már birtokol erőforrást (memóriára nem, de I/O egységekre pl. értelmezhető)- a szabály enyhítése az, hogy egyszerre több erőforrást kérhet egy Request utasítással egy processzus → bonyolult allokátor, éheztetés, rossz erőforrás kihasználtság- cirkularitás megakadályozása (elegendő feltétel, ez is korlátozás a processzusok erőforrás használatára) – erőforrások sorba rendezésének módszere: - <e0,e1,…,eN-1> az erőforrás osztály készletének ismert sora - szabály: ha pi az ej-t kéri, nem birtokolhatja ek-t (k>j) - szabály: ha pi az ej-ről lemond, nem birtokolhatja ek-t (k>j)- előrelátó algoritmusok (nem kérhet minden proc. minden ef-t): - bankár algoritmus egy homogén erőforrásosztályra - erőforrás pályagörbék - pre-allokációs gráf

Page 75: 1. Operációs rendszerek helye

55. Holtpont megelőzése – bankár algoritmus

- egy kisvárosi bankár tevékenységét utánozza- a bankár rendelkezik bizonyos hitelkerettel (erőforrások) az ügyfelek (proceszusok) pedig kölcsönt kérnek- az ügyfelek összes kérése nagyobb lehet a bankár hitelkereténél- biztonságosnak nevezünk egy állapotot, ha van elegendő erőforrás ahhoz, hogy a bankár eleget tegyen annak az ügyfélnek, aki legközelebb van a maximumához - az algoritmus minden kérésre megnézi, hogy ha azt engedélyezi, akkor biztonságos állapot keletkezik-e- ha igen, teljesíti a kérést, egyébként a későbbre halasztja- ha ez megtörténik, akkor a feltevés szerint ez a kölcsön visszafizetődik és újra következhet az ügyfél vizsgálata- ha végül minden kölcsön visszafizetődik, akkor a kezdeti kéréseket ki lehetett elégíteni- egy erőforrás osztály erőforrásaira alkalmazható, de van több erőforrás osztályt kezelő változata is

Page 76: 1. Operációs rendszerek helye

56. Holtpont megelőzése – pre-allokációs gráf

- minden állapothoz egy gráfot rendel, ezt az allokátor tárolja- a gráfban jelzések szolgálnak arra, hogy egy processzus kéri az erőforrást (szaggatott vonal), ill. birtokolja azt (folytonos vonal)- egy gráf akkor biztonságos, ha nincs benne kör, ebből az állapotból ugyanis nem jöhet létre holpont- ha egy processzus olyan erőforrást kér, mely hozzárendelésével a pre-allokációs gráfban kör alakulna ki, akkor a processzus nem kapja meg az erőforrást, blokkolódik → romlik az erőforrás- kihasználtság

Page 77: 1. Operációs rendszerek helye

57. Memóriakezelés feladatai 1.

- a processzus memóriája két részből áll: - szöveg – változatlan: program, konstansok - adat – változó: statikus változók, verem, heap- a memóriakezelés feladatai: - szabad/foglalt területek nyilvántartása - memória-igények kielégítése (dinamikus memória) - csere (swap): memória – háttértár közötti csere (a UNIX operációs rendszerek alap memóriakezelő tevékenysége) - memória-védelem (csak 1 processzus kezeljen egy memória- területet, kivéve osztott memória esetén)- a memóriakezelés többszintű is lehet, többféle memória állhat rendelkezésre, ezek hierarchikusan szerveződnek: - cache memória: a memória és a CPU közti adatcsere gyorsítására, létezik adat ill. program cache - RAM központi memória - állandó lemezes tároló

Page 78: 1. Operációs rendszerek helye

57. Memóriakezelés feladatai 2.

- processzus létrehozásakor: - induló fizikai memória biztosítása, a 3. generációs OS-eknél maximálisan elegendő memóriaterület biztosítása (dinamikus partíció esetén is) ↔ UNIX memória foglalása nem így történik - relokáció: a betöltési címnek megfelelően át kell címezni a program utasításainak a címrészeit - bázis-relatív címzés esetén nincs átcímzés, a processzus létrehozásakor kell meghatározni a kezdőcímet ahova a program betöltődik- processzus futása közben: - logikai → fizikai cím transzformáció, sikertelen esetben lép közbe a memóriakezelő - dinamikus memóriakérések/felszabadítások elvégzése - csere végrehajtása - védelem (pl. nem létező memóriacímre hivatkozás tiltása)

Page 79: 1. Operációs rendszerek helye

57. Memóriakezelés feladatai 3.

- a memóriaszervezést meg lehet valósítani rögzített méretű partíciókkal, ennek két fajtája is van: - rögzített memóriaszeletek külön-külön várakozási sorral - rögzített memóriaszeletek egyetlen várakozási sorral- másik fajtája a memóriaszervezésnek a dinamikusan változó partíciók módszere

Page 80: 1. Operációs rendszerek helye

58. Memória allokáció – alapfeladatok és módszerek 1.

- futás közben nyilván kell tartani a memória szabad ill. foglalt memória-szeleteit- a szeletek lehetnek fix vagy változó hosszúságúak- memória-kérés eljárása: void *requmem (int size)- memória-felszabadítás eljárása: void freemem (void *base)- dinamikus memóriafoglalás esetén két módszer van a memóriahasználat nyilvántartására: - fix memóriaszeletekre osztás, és bitsorozat használata a foglaltság ellenőrzésére: 0 – szabad, 1 – foglalt - a szeletek egy láncstruktúrán vannak láncszemekként: - szabad szeletek lánca: {(hi,ki) | hi kezdőcím, ki hossz} - foglalt szeletek lánca: {(gj,lj) | gj kezdőcím, lj hossz} - void *c = requmem(s) – kiad egy legalább s hosszúságú szabad szelet kezdőcímet, a szeletet átrakja a foglalt szeletek láncra – blokkol, ha nincs ilyen szabad szelet

Page 81: 1. Operációs rendszerek helye

58. Memória allokáció – alapfeladatok és módszerek 2.

- freemem(c) – a c kezdőcímű foglalt szeletet átrakja a szabad szeletek láncára, egyes allokátorok ellenőrzik, hogy jogos-e a kérés- példák memória allokációra egyes programozási nyelvekben: - C: allok/free - C++: new/delete - Pascal: new/dispose- szemétgyűjtés – garbage collection: a szomszédos szabad szeletek egyesítése, ez egy időigényes folyamat

Page 82: 1. Operációs rendszerek helye

59. Memória allokáció – illesztési algoritmusok

- első illesztés: a legkisebb indexű láncszem megkeresése, amely elegendő hosszú a kérés kielégítésére → gyors módszer, de elaprózza a memóriát- legjobb illesztés: megkeresi a láncon azt a szeletet, melynek hossza a legkevésbé tér el a kért hossztól → lassú, mert a teljes láncon végig kell futni, de nem apróz el- legrosszabb illesztés: megkeresi a láncon azt a leghosszabb szeletet, melyen az s hosszúságú kérés kielégíthető → lassú, és még el is aprózza a memóriát- kerekített illesztés: kettő-hatvány hosszúságú szeletekből áll a foglalt és a szabad szeletek lánca, az allokátor ezekből a szeletekből valahányat ad ki → gyors, és nem is apróz el- Fibonacci illesztés: ki = ki -1 + ki -2, k1 = k2 = 1, a Fibonacci számok szerinti hosszt vesznek fel a szeletek, ekkor az első illesztés = legjobb illesztés

Page 83: 1. Operációs rendszerek helye

60. Virtuális memória 1.

- a programok túl nagyok és nem férnek bele a rendelkezésre álló memóriába → virtuális memória alkalmazása, az OS csak a program éppen használt részét tartja a memóriában, a többit a lemezen tárolja- logikai címek (utasítás-címrészek) transzformálása fizikai (memória) címekre A: logikai címtartomány; pl. 0 – N M: fizikai címtartomány f: A → M leképezés futás közben- a CPU minden utasítás végrehajtása közben annak címét átküldi a memóriakezelő alegységbe, amely érvényesíti az f leképezést, vagyis átváltja a logikai címet fizikai címmé, majd ráküldi a címbuszra- logikai címzések, ezek mind hardverfüggők: - báziscímzés: a logikai címek 0-tól N-ig állnak rendelkezésre, a fizikai cím meghatározásához hozzáadjuk a B báziscímet,

Page 84: 1. Operációs rendszerek helye

60. Virtuális memória 2.

hardverben egy bázisregiszter segítségével valósítják meg - lapcímzés – egyszintű (a memória lapokra van osztva): - a logikai cím lapsorszámból és lapon belüli címből áll, az f függvény ezt a két paramétert kapja meg → az Lp lap fizikai címéhez hozzáadja a lapon belüli címet - laptáblát kell létrehozni ennek megvalósításához - ha Lp nem definiált → a memóriakezelő keres egy szabad fizikai lapot, és a laptábla p. sorát kitölti annak címével - szegmenscímzés – többszintű (szegmensekre és lapokra): - a logikai címek szegmens- és lapsorszámból valamint a lapon belüli címből állnak - minden egyes szegmenshez egy laptábla rendelődik hozzá, a z. laptábla p. elemének tartalmát az Lz

p + d jelöli - ha Lz

p nem definiált → új laptábla és új fizikai lap foglalandó a processzusnak

Page 85: 1. Operációs rendszerek helye

61. Lapcsere algoritmusok – swap 1.

- ha egy logikai laphoz még fizikai lap nincsen hozzárendelve, akkor a következő lépéseket kell végrehajtani: - keresünk egy szabad fizikai lapot, vagy felszabadítunk egy foglaltat, ekkor elmentjük annak tartalmát - új laptartalom betöltése - a laptábla (Lp) címének kitöltése - a nem definiált címet adó utasítás újrakezdése- a probléma igazából a felszabadítandó lap kiválasztása, erre a „legkésőbb fogunk rá hivatkozni” módszer is alkalmazható- ha a laptáblába bejegyzi, hogy történt-e írás/olvasás egy lapra egy időintervallumra vizsgálva, akkor optimális kiválasztási sorrend valósítható meg, ez a következő: - nem írt, nem olvasott - írt, nem olvasott - nem írt, olvasott - írt, olvasott

Page 86: 1. Operációs rendszerek helye

61. Lapcsere algoritmusok – swap 2.

- létezik a FIFO (First-In-First-Out) módszer, a legrégebben behozott lap kiválasztása- választhatunk a nem olvasottak közül a FIFO módszerrel is- másik megoldás a hivatkozások számlálása egy adott lapra- problémák a lapcserékkel kapcsolatban: - vergődés – állandó lapcsere- programozási technikák az OS segítésére: - a processzus szöveg mentése szükségtelen - összefogott változó-kezelés - intenzív veremhasználat

Page 87: 1. Operációs rendszerek helye

62. Bevitel/Kivitel – megvalósítási lehetőségek 1.

- kétféle beviteli/kiviteli eszközt szokás megkülönböztetni: - blokkos eszközök - minden adatcsoport címmel rendelkezik, ez lehet sorszám vagy összetett cím is - a bevitel/kivitel blokkonként történik, méretük meghatározott

- ilyen eszközök a floppy, winchester, DAT, stb. - karakteres eszközök - ilyen eszközökön nincs cím („soron következőtől elv”) - az átvitel egy bájtonként vagy soronként történik - ilyen eszközök a terminál, nyomtató, stb.- I/O egységek összetevői: - eszköz (device) – mechanikus, valamilyen elv alapján tárolja az adatokat - eszközvezérlő (adapter, device controller) – részben szoftver, az OS külsőbb rétegeivel képes kommunikálni- a mai I/O eszközök közvetlen memória-elérésűek

Page 88: 1. Operációs rendszerek helye

62. Bevitel/Kivitel – megvalósítási lehetőségek 2.

- a klasszikus eszközvezérlők a I/O csatornák (channel): az eszközök egy csatornán vannak, melyen megy az adatáramlás, a csatorna lehet: blokk multiplex ill. byte multiplex (bájtonként keverhetők az egyes bementi és kimeneti tevékenységek)- a PC-k, workstation-ök esetén a legalsó I/O eszköz a sín (bus), jellemző a memória-leképezett (memory mapped) I/O, amikor az eszközt úgy kezeljük, mintha memória egy adott címtartományába be lenne építve- kapcsoló (switch) technológia, a 4+ generációs szervereknél jelent meg, az eszközök közötti adatcsere kapcsolón keresztül történik, a kapcsoló adatátviteli sebessége nagyobb a sínnél (virtuális sínek létrehozása történik)

Page 89: 1. Operációs rendszerek helye

63. Bevitel/Kivitel – közvetlen memóriaelérés (DMA)

- a DMA csökkenti az elpazarolt CPU időt- a CPU-nak csak az adatátvitel kezdeményezése a feladata, a következő paramétereket adja át az eszközvezérlőnek: - adatátvitel iránya (be/ki) - adatok memóriabeli kezdőcíme - átviteli adatmennyiség (bájtszám)- az eszközvezérlő a feladata, hogy a megkapott feladatot végrehajtsa, a CPU-tól függetlenül az adatátvitelt megvalósítsa

- ha a programnak információra van szüksége az adatátvitelről → az adatátvitel során/végén az átviteli állapot lekérdezhető- hiba vagy befejezés esetén megszakítás történik, ekkor lehet állapotinformációkat közölni a kezdeményező processzussal

Page 90: 1. Operációs rendszerek helye

64. Bevitel/Kivitel – memória-leképezett I/O

- az eszközvezérlőnek úgy adunk át paramétereket, mintha egy memóriacímre írnánk, és úgy kapunk információkat, mintha egy adott memóriacímről olvasnánk- ha párosul a DMA-val, akkor általában paraméterek átadására használatos, nem az adatokra vonatkozik (blokkos eszközök)- eszközvezérlési információk átadása memóriacímekre való írással (cím-bus, adat-bus), állapotinformációk lekérdezése memóriacímekről való olvasással- eszközvezérlők fix címkiosztására egy példa: clock 040 – 043

keyboard 060 – 063hard disk 1F0 – 1F7secondary RS-232 2F8 – 2FFprinter 378 – 37Ffloppy disk 3F0 – 3F7

Page 91: 1. Operációs rendszerek helye

65. Bevitel/Kivitel – kapcsoló rendszer

- egy viszonylag új, modern technológia- a CPU, a memória és az eszközvezérlők egy kapcsolón keresztül kapcsolódnak egymáshoz- ha a memóriától DMA módon az eszközvezérlő adatot kér, akkor létrejön egy virtuális sín a memória csatlakozási pontja és az eszközvezérlő között, amelyen keresztül valósul meg a kérésnek megfelelő adatáramlás – ugyanígy történik a CPU és a memória esetén is- a switch hozza létre ezt a virtuális kapcsolást- ütközések lehetségesek, a memóriától függ (nem a síntől), hogy képes-e az eszközök egyidejű kiszolgálására

Page 92: 1. Operációs rendszerek helye

66. Bevitel/Kivitel – végrehajtási szintek 1.

- az I/O szoftverek céljai: - egységes felhasználói programozási felület biztosítása: a felhasználó ne függjön a a szektorok számától, a blokkmérettől, stb. - az eszközökre való hivatkozás egyszerű legyen → a UNIX-ban, LINUX-ban már nincs eszközfüggőség - blokkmérettől, fizikai felépítéstől, pufferezéstől való függetlenség - egységes hibakezelés, C-ben az error változó lekérdezése - osztott használat adminisztrációjától való függetlenség biztosítása, ezeket osztottan használható erőforrás osztályokként kezeli- az I/O szintekre való felosztása: - felhasználói szint - eszközfüggetlen programozási felület szint - eszközvezérlő szint

Page 93: 1. Operációs rendszerek helye

66. Bevitel/Kivitel – végrehajtási szintek 2.

- megszakítási rendszer szint - hardver szint (ami végrehajtja a feladatot)- egy felhasználói processzus I/O kérést küld → ezt egy eszközfüggetlen szoftver dolgozza fel → ez átadja a részfeladatokat az eszközvezérlőnek → az eszközvezérlő a utasítja a hardvert a kérés végrehajtására → a hardver egy megszakítást produkál → a megszakítás értesíti az eszközvezérlőt a kérés állapotáról → ez az eszközfüggetlen szoftvernek továbbítja az információkat → majd megkapja a felhasználói processzus az I/O választ

Page 94: 1. Operációs rendszerek helye

67. Bevitel/Kivitel – lemez egységek

- a lemez egység egy blokkos eszköz, a címet három rész adja: - henger (cilinder): egymás alatt elhelyezkedő lapok sorozata - pálya (track): egy lap egy köre - szektor (sector): egy pálya egy negyed, nyolcad, stb. része → ez tartalmaz egy fizikai adatblokkot- az adatátviteli idő három részből áll: - keresési (seek) idő: cilinderek és pályák közötti mozgás ideje - fordulási (rotation) idő: szektorok közötti fordulás ideje - átviteli (transfer) idő: adatírási/olvasási idő- a lemez egység hatékony kihasználása az OS célja, itt ez az adatátvitel optimalizálása- a fordulási és átviteli idők adottak- átlapolt keresés: több keresés folytatása egyidejűleg- a keresési idő viszont befolyásolható az átviteli kérések kiszolgálási sorrendjének meghatározásával ► olvasófej ütemezési stratégia

Page 95: 1. Operációs rendszerek helye

68. Lemez olvasófej ütemezés

- olvasófej ütemezési stratégiák: - FCFS (First-Come-First-Served) módszer: érkezési sorrendben teljesítjük az I/O kéréseket → nincs optimalizálás - SSF (Shortest Seek First) – „legközelebbi kérés először” módszer: annak az I/O kérésnek a végrehajtása, amely az előzőleg végrehajtott kéréshez legközelebbi cilinderre esik - liftes algoritmus módszere: az író/olvasó fejek befelé és kifelé mozognak váltakozva, az útba eső kérések elégítik ki - pályánkénti pufferolás módszere: az adott pályára író vagy olvasó fej megvár egy teljes körbefordulást, és mindent leolvas az adott pályavonalról → gyorsítótárban raktározza - amennyiben az adatok nem fizikailag egymást követő szektorokban helyezkednek el, akkor nem sokat ér - ha van egy processzus, mely olvas/módosít rekordokat, akkor azok a rekordok a pufferen lehetnek annak telítődéséig, a fizikai írás/olvasás addig ráér → módosítottak elveszhetnek

Page 96: 1. Operációs rendszerek helye

69. Intervallum-timer 1.

- olyan szolgáltatás, mely szükség esetén biztosítja egy adott eljárás végrehajtódását meghatározott időnként- processzuskezelő alrendszer időszeletelésére, real-time (időfüggő) feladatoknál, közönséges applikációk esetén is (pl. időigényes számolásokat végző program esetén felhasználói akciók figyelésére, stb.) alkalmazzák- példa C program-struktúra, Unix-ban használható: #include <signal.h> struct itimerval itv; // időt tartalmazó struktúra void itimer_catcher (…); // a végrehajtandó eljárás sigset (SIGALRM, itimer_catcher); // az eljárás közlése sighold (SIGALRM); // óra megszakítás felfüggesztése // időintervallum beállítása itv.it_interval.tv_sec = 4; // 4 szekundum iItv.it_interval.tv_usec = 0; // 0 mikroszekundum itv.it_value = itv.it_interval;

Page 97: 1. Operációs rendszerek helye

69. Intervallum-timer 2.

setitimer(ITIMER_REAL, &itv); // óra indul (valós idővel) sigrelse(SIGALRM); // óra megszakítás engedélyezve … sighold(SIGALRM); // óra megszakítás felfüggesztve … // a 4 szekundumonként végrehajtódó eljárás void itimer_catcher(…) { … }

Page 98: 1. Operációs rendszerek helye

70. Terminálok 1.

- karakteres és grafikus terminálokat szoktunk megkülönböztetni- a karakteres terminálok 8 ill. 16 bites kódokkal dolgoznak, vagyis a bemeneti és a kimeneti egység ekkora- a grafikus terminálok feladata digitálisan megfogalmazott grafikus alakzatok megjelenítése- szinkron ill. aszinkron átvitel történhet- szinkron átvitel: az adó bizonyos ideig tartja vehetőként az adatot a vevő számára, az adó és a vevő szinkronban van- aszinkron átvitel: az adó a vevőtől teljesen függetlenül adja az adatokat és a vevőnek bizonyos időintervallumra van szüksége az adatok átvételére (többnyire pufferolással jár)- terminálok fajtái: - memory-mapped interface (ezen belül karakter és bit orientált) - RS-232 interface (szinkron átviteli módú, karaktersorozatok adása/vétele) - network interface (az X termináloknak van ilyen)

Page 99: 1. Operációs rendszerek helye

70. Terminálok 2.

- egy sínre kapcsolódik a CPU, a memória és a videó RAM- a CPU a megjeleníteni kívánt karaktereket a videó RAM-ba küldi át a sínen keresztül- ezeket a jeleket analóggá alakítják, ezeket jeleníti meg a monitor- a terminál egy klaviatúra és egy monitor együttese, előbbi az utóbbitól teljesen függetlenül csatlakozik a rendszerhez

Page 100: 1. Operációs rendszerek helye

71. Karakter-átvitel 1.

- a karakterbevitelnek többféle módja lehetséges: - nyers (raw) mód: egy billentyűt leütve az annak megfelelő kód fut át a kérő processzushoz, feldolgozás nélküli átvitel (az eszköz és az eszközvezérlő szint között) - sor mód (kanonikus mód): soronkénti átvitel, soron belüli javításokra van lehetőség, ezeknek megfelelő műveleteket az eszközvezérlő végzi el (az eszközvezérlő szint és az eszközfüggetlen szint között van ilyen átvitel) - termios eljárások a UNIX operációs rendszerekben: sor módú átvitelt valósítanak meg, de látszólagosan megengedik a sorok közti mozgást (C szabvány, pl. menü jeleníthető meg)- a karakterkivitel estén megemlíthetők az ESC szekvenciák, a nem látható karaktereket ezekkel valósítják meg a szoftverek- karakterkonverzió: sor mód esetén az eszközvezérlő és a billentyűzet között (az eszközvezérlő intézi)

Page 101: 1. Operációs rendszerek helye

71. Karakter-átvitel 2.

- pufferezés: sor módú átvitel esetén kell, az eszközvezérlőbe van beépítve- grafikus terminálok legtipikusabb módja az X-terminál- Windows terminál-szerver szisztémája: a terminál-szerver processzus egy grafikus szerverprocesszus, amely a terminálon futó kliensprocesszusnak egy grafikus felületet biztosít

Page 102: 1. Operációs rendszerek helye

72. X terminálok 1.

- M.I.T. szabvány grafikus terminálkezelésre- lokálisan és hálózaton keresztül is kliens/szerver modellel van megvalósítva- a display a szerver, a program – amelyik a display szervert használja – a kliens- a szerver X protokoll szerinti üzeneteket fogad, a parancsok tartalma szerint grafikus objektumokat megjelenít ill. kezel, ezek lehetnek: screen, window, color, font, stb.- a kliens X protokoll szerinti üzeneteket küld, a displaytől eseményekre készült üzeneteket fogad- a display része a window manager, ennek feladatai: - főablakok létrehozása - window hierarchia kezelése: méret, átfedés, ikonizálás, stb. - erőforrások (itt képességeket jelent) adatbázis kezelése: font-készlet, color-készlet, stb. - események (event) kezelése (üzenetek formájában átküldi)

Page 103: 1. Operációs rendszerek helye

72. X terminálok 2.

- grafika: az M.I.T. szabványtól teljesen független szoftverileg is (2D és 3D grafikus szoftverek)- ezek egy display által adott erőforráson, egy fehér ablakon dolgoznak- grafikus objektumok: - image, bitmap, … - point, line, box, vector, … - text, font, …

Page 104: 1. Operációs rendszerek helye

73. Fájlrendszerek

- az OS fájlkezelő alrendszerének céljai: - olyan nagyméretű adathalmazok tárolása, melyek várhatóan nem férnek be a memóriába - hosszútávon szükséges, processzusokat „túlélő” adatok tárolása, egyszerű elérhetősége - több processzus „egyidejű” hozzáférhetősége az adatokhoz- fájlrendszerek szerkezetük szerint kétfélék lehetnek: - a fájl egy bájtsorozat: az adatátvitel során mindig van egy aktuális pozíció, melytől kezdődően hajtódik végre az írás és olvasás, bájtonként és bájtcsoportonként is lehet írni/olvasni (általában egy meghatározott határoló jelig) - a fájl egy rekordsorozat: a rekordoknak vannak mezői, kulcsmezői, fájlrendszerben egy rekord írását/olvasását kérjük- a tartalmuk szerint a fájlok csoportosítása: - adatokat tartalmazó fájlok - programok – forrásnyelvi, lefordított és betölthető programok

Page 105: 1. Operációs rendszerek helye

74. Fájlattribútumok

- típus → a fájlkiterjesztésben – suffix (Windows-ban)- létrehozó, tulajdonos neve- a tulajdonosra / csoportra / egyébre vonatkozó jogok, ilyenek az írási / olvasási / láthatósági / végrehajthatási jogok- utolsó létesítés / hozzáfordulás / módosítás időpontja- tartalom: bináris, szöveg vagy végrehajtható program- méret, rekordszám és rekordméret is tárolható- rendszer-, rejtett-, esetleg archív fájl- zároltság: ez egy dinamikus tulajdonság, ha több processzus férhet hozzá a fájlhoz, akkor a hozzáféréseket koordinálni kell, (C nyelvben a sys/locking.h header-ben vannak erre struktúrák) a zárolt intervallum kezdetét és végét is meg kell adni- C fájlkezelés – stdio.h: egy pointert kapunk, és minden olvasási és írási eljárásnak egyik paramétere ez a pointer- C fájlkezelés – fcntl.h: egy integert kapunk, és minden olvasási és írási eljárás hívásakor ezt az integert kell megadni

Page 106: 1. Operációs rendszerek helye

75. Fájlműveletek 1.

- itt felsorolt fájlműveletek C szintű műveletek: - létrehozás: kétféle szisztéma van erre, a pointerrel hivatkozásos – fopen (…, „w…”) utasítás, írásra nyitjuk meg – és az integerrel hivatkozásos – create (…) utasítás (UNIX-ra ez jellemző), ideiglenes (processzus létéhez kötött) fájl létrehozása pedig a FILE *tmpfile() művelettel történik - törlés: mindkét szisztémában a remove (…) utasítással - megnyitás: írásra, olvasásra, folytatásra, az előbbi szisztémában FILE *fopen (…) utasítással, másikban pedig az int open (…) utasítással - lezárás: fclose (…) ill. a close (…) műveletekkel, pufferelés esetén, ha írás történt, akkor az adatok beíródnak, egyébként csak olvasáskor a puffer kiürül - írás: az fprintf (…) – formázott karaktersorozat, fputs (…) – egyszerű karaktersorozat, és a write (…) – egyszerű karakter- sorozat műveletekkel történhet

Page 107: 1. Operációs rendszerek helye

75. Fájlműveletek 2.

- olvasás: fscanf (…) – formázott bemenet, fread (…) – egyszerű olvasás, read (…) – egyszerű olvasás műveletekkel - pozicionálás: megmondhatjuk, hogy a fájl hányadik bájtjára álljon a „fej”, és az ez utáni műveletek mind innen történnek, az fseek (…) és seek (…) műveletek szolgálnak erre, a rewind (…) művelettel pedig visszaállhatunk a fájl elejére - hibakezelés: C-ben is állandóan ellenőrizni kell a műveletek sikerességét, az ferror (…) művelettel le tudjuk kérdezni a hiba eseményeket - állapot / tulajdonság lekérdezése: léteznek bonyolultabb, részletesebb függvények, az fstat (…) ill. a stat (…) a másik szisztémabeli művelet, ezekkel sokféle tulajdonságot lekérdezhetünk (pl. összesített hossz, keletkezés ideje, módosítás ideje, stb.)- rengeteg további fájlművelet létezik még, ilyenek lehetnek pl. az átnevezés, hozzátoldás, attribútum-beállítás, stb.

Page 108: 1. Operációs rendszerek helye

76. Fájlrendszerek megvalósítása 1.

- fájlok megvalósításai – fizikai blokkokat rendelünk hozzá a fájl adatainak egyes részeihez – a következők lehetnek: - folytonos blokksorozat: a fájl tárolása fizikailag összefüggő lemezterületen, folytonos blokksorozattal történik - láncolt blokksorozat: a fájl kezdő adatai egy adott fizikai blokkon vannak elhelyezve, ez pedig mutatja, hogy hol van az adott fájl következő blokkja, ilyen esetben szükség van a fájl első blokkjára mutató pointerre - i-csomópont – i-node: a UNIX alkalmazza, egy ilyen csomópont vagy egy könyvtárra, vagy egy fájl részblokkjára vonatkozó információt tartalmaz, a logikai adatblokkjaink láncszerűen vannak felfűzve a fizikai blokkokra- a fájlrendszerek hatékonyságát befolyásoló tényezők: - blokkméret: nagyon apró blokkok esetén az OS feladata ezek összepakolása a pufferben, a fizikai átvitel így a fizikai blokkok méretét megközelítő méretű darabokban történhet,

Page 109: 1. Operációs rendszerek helye

76. Fájlrendszerek megvalósítása 2.

nagyon hosszú blokkok esetén pedig az I/O alrendszernek az a dolga, hogy szétszedje ezeket, és ezek már megfelelnek a fizikai blokkok méreteinek az átvitel szempontjából - szabad/foglalt blokkok nyilvántartása: bittérképes módszer és a szabad/foglalt blokkok láncának módszere létezik - pufferolás: ezzel lehet a hatékonyságot növelni- a fájlrendszerek megbízhatóságát befolyásoló tényezők: - magunk gondoskodhatunk erről időnkénti mentésekkel - tükrözés: fontos adatok esetén menetközben több példányban tároljuk az adatainkat, és ha az egyik helyen elveszik adat, akkor azt helyre lehet állítani – RAID szisztéma - konzisztencia-ellenőrzés elvégzése akkor szükséges, ha nem állítottuk le megfelelően a rendszert – ekkor pl. a szabad/foglalt bejegyzések, adattartalom hitelesség, stb. ellenőrzése kell, hogy megtörténjen - tranzakció-naplózással növelhető a megbízhatóság, minden

Page 110: 1. Operációs rendszerek helye

76. Fájlrendszerek megvalósítása 3.

módosítást naplózunk, hibás adatok esetén egy biztos ponttól kezdve a tranzakciókat újra végre tudjuk hajtani → így újra naprakész állapotba kerülhetnek az adataink

Page 111: 1. Operációs rendszerek helye

77. Könyvtárak

- a könyvtárak egy gyökérből elágazó fastruktúrába vannak szervezve, egy könyvtár fájlokat és újabb könyvtárakat is tartalmazhat- ezt a fastruktúrát sértik a UNIX operációs rendszerben létező linkek, a link egy másik könyvtárban lévő állományra ill. könyvtárra egy mutató (hard és soft linkek vannak)- megfelelő ez a struktúra arra, hogy logikailag szortírozzuk az adatainkat - minden egyes alkönyvtárnak útvonala (path) van, a gyökér könyvtártól (root) kezdődő könyvtársorozat az abszolút útvonal, létezik a munkakönyvtárból vezető relatív útvonal is- olyan fájlműveletek esetén, ahol szükséges a fájlnév megadása, elegendő megadni a munkakönyvtárból kiinduló fát- műveletek könyvtárakkal: mkdir, rmdir, rename, link, unlink, …

Page 112: 1. Operációs rendszerek helye

78. Könyvtárak nyilvántartása

- a Windows rendszerekben létezik korlátozás az egy könyvtárban tartható állományok és könyvtárak számára → fix struktúrájú rekord tartozik minden egyes fájlhoz illetve alkönyvtárhoz, és ezek számára egy formázáskor meghatározott terület van fenntartva a merevlemezen ► egy fájlra ill. alkönyvtárra mutató rekordban bizonyos mezők mutatják bizonyos tulajdonságait az adott állománynak- i-csomópont módszer a UNIX-ban: egy könyvtárhoz tartozó rekord (bejegyzés) tartalmazza az alábbiakat: - a könyvtár nevét - a benne található fájlok, ill. alkönyvtárak i-csomópontjainak sorszámát ► az i-csomópontok tartalmaznak minden információt (típus, méret, tulajdonos, stb.), ez a szisztéma homogén a fájlokra, könyvtárakra ill. alkönyvtárakra vonatkozóan

Page 113: 1. Operációs rendszerek helye

79. Osztott fájlrendszerek 1.

- fájlok lehetnek helyi (local) és távoli (remote) fájlok, utóbbiakat valamilyen módon el lehet érni az adott OS alól- osztott fájlrendszerek azok az adott OS alatt létező fájlrendszerek, melyek más operációs rendszer alól is elérhetők (lehetnek egy távoli, hálózaton elérhető gépen, vagy pl. az adott gép merevlemezének egy részén)- követelmények a távolról elérhető fájlrendszerekre: - a fájlok kezelése legyen azonos a lokális fájlok kezelésével (pl. írás/olvasás ugyanazokkal az eljárásokkal történjen) → ez UNIX-ban megvalósul a mount módszer segítségével - hatékonyság – az OS kezelje a remote fájlokat is olyan hatékonyan, mint a lokális fájlokat (bizonyos korlátok között) - áttetszőség (transparency): - helyfüggetlenség a hivatkozásban – ne kelljen tudni, hogy a távoli fájlrendszeren hol található a fájl - fizikai tárolás-függetlenség – legyen mindegy, hogy milyen

Page 114: 1. Operációs rendszerek helye

79. Osztott fájlrendszerek 2.

fizikailag a távoli fájlrendszer - helyváltozástól való függetlenség – egy távoli fájl elérhetősége a helyváltoztatástól legyen független - többszörös hozzáférhetőség legyen egy fájlhoz → az adatok konzisztenciájának védelmére szükség van valamilyen szisztémára, pl. automatikus lock/unlock- távoli fájlrendszerek elérési módszerei: - hoszt (hálózati pont) és egy hoszton létező útvonal megadásával érjük el a fájlt (az áttetszőség helyfüggetlenségét nem biztosítja) - NFS (Network File System), a SUN UNIX operációs rendszerekre – mount szisztémával be lehet ágyazni a távoli fájlrendszert a lokális fájlrendszerbe - RPC (Remote Procedure Call), az I/O tevékenység processzusok közötti kommunikációra redukálódik (ez a módszer az áttetszőségből semmit nem teljesít)

Page 115: 1. Operációs rendszerek helye

79. Osztott fájlrendszerek 3.

- cache biztosíthatja a hatékonyságot – nem csak az adott adatcsoportot olvassuk be, hanem a környékén lévő adatokat is egy lokális tárolóba → probléma az, hogy a cache tartalma nem biztosan hiteles- kétféle módon használhatunk egy távoli fájlt: - állapotfüggő – megnyitáskor leolvassuk a fájl-információkat, és ezeket tároljuk a lokális OS-en → veszélyes módszer - állapotfüggetlen – minden hozzáféréskor lekérdezzük az aktuális állapotot a távoli OS-től → megbízható módszer- fájl replikáció: nagyobb osztott adatmennyiség esetén, hogy ne legyen túlterhelt a hálózat, a lokális OS másolatokat kap a távoli fájlrendszer egy részéről, és egy ideig ezzel dolgozik, majd a a módosításokat visszaküldi a hálózaton keresztül → az adatok több helyen tárolódnak, nem lehet biztosítani, hogy mindkét helyen ugyanaz a tartalom legyen, szükség van frissítésre, melynek gyakorisága viszont kicsi

Page 116: 1. Operációs rendszerek helye

80. OS védelem, biztonság 1.

- az OS védelmének (protection) ill. biztonságának (security) megvalósítása valójában nem alrendszerrel történik → az OS minden komponensébe be kell épülnie, alkalmazási feladatok esetén is biztosítani egy fajta biztonságot, védelmet- biztonsági követelmények: - titkosság: személyi, üzleti adatok bizalmas kezelése, emberi jogok, verseny jogok igénye miatti titkosság magvalósítása - integritás: - konzisztencia – megbízható, kompatíbilis adathalmazok biztosítása - módosítások csak jogosultság szerint történjenek - jogosultak számára rendelkezésre állás- az OS részei, ahol ezeknek a feltételeknek teljesülniük kell: - hardver - szoftver - adat

Page 117: 1. Operációs rendszerek helye

80. OS védelem, biztonság 2.

- hálózat- OS védelem és biztonság tervezési elvei: - minimális jogokat adjunk a felhasználóknak a feladat elvégzéséhez - gazdaságos legyen a megvalósítás – vagyis – beépített, ne kelljen a biztonsági rendszert utólag ráépíteni - a felhasználó számára elfogadható legyen, ne legyen túl sok többletmunkája a felhasználónak a biztonság betartása miatt - teljesnek kell lennie, az OS minden biztonsági pontjára, hozzáférésre terjedjen ki - nyíltnak kell lennie, nem lehet arra számítani, hogy a beépített biztonsági védelmet nem derítik majd fel

Page 118: 1. Operációs rendszerek helye

81. Védelmi, biztonsági sérülések

titkosság integritás rendelkezésre állás

hardver tűzfalon átjutás, routing választás

ellopás,leállítás

szoftver másolás program- módosítás,vírus támadás

programtörlés,login- módosítás

adat illegális olvasás fájl módosítása,új fájl létrehozása

fájl törlése,eléréséneklehetetlenítése

hálózat forgalom figyelés,üzenet-leolvasás

hamis üzenetekküldése,üzenet-módosítás

üzenet-rombolás,struktúraátalakítása

Page 119: 1. Operációs rendszerek helye

82. Felhasználó-orientált védelem 1.

- felhasználói védelem: a felhasználóval követtetünk el olyan cselekedeteket, amelyekből nyilvánvalóvá válik, hogy ő az, aki a megfelelő jogokkal bír- felhasználói védelem megvalósításai: - jelszó (password) módszer: - nagy számú lehetőséget kell biztosítani jelszóként - a belépéseket naplózni lehet, le kell tiltani valahány sikertelen (illegális) próbálkozás után a felhasználót - aszimmetrikus kódolás alkalmazása, a jelszó kódoltan tárolódik az OS-en, a dekódoló algoritmus nem tárolt → dekódolás lehetetlenné tétele - speciális jelszó módszerek: - egyszer használatos jelszavak használata (pl. jelszósorozat – mindegyikkel egyszeri bejelentkezés) - lejárati időintervallumok beállítása a jelszavakra

Page 120: 1. Operációs rendszerek helye

82. Felhasználó-orientált védelem 2.

- azonosító kártya módszer, az OS beolvassa a kártyát, majd a felhasználót ez alapján azonosítja - legmodernebb módszerek: gépelési minta, hang, írisz alapján történő azonosítás

Page 121: 1. Operációs rendszerek helye

83. Adat-orientált védelem

- komolyabb védelmi módszer, mint a felhasználói-orientált- objektumok (pl. memória, fájl, stb.) → ezeket kell védeni- szubjektumok (pl. felhasználók, eljárások, stb.) → akciókat hajtanak végre - az objektumokon hajtunk végre bizonyos akciókat, ekkor kell a jogosultságokat vizsgálni- létezik egy elérési (access) mátrix: - a szubjektumokat ebben tartományokba soroljuk be - minden szubjektumtartomány rendelkezik jogosultságokkal - oszlopai az objektumok - sorai a tartományok - elemei az adott sor tartományának jogosultságai az adott oszlop objektumára nézve- egy ilyen védelmi rendszer egy adott akció végrehajtási kérése esetén megnézi az milyen objektumra vonatkozik, a szubjektum milyen tartományba tartozik, és ellenőrzi a jogosultságot

Page 122: 1. Operációs rendszerek helye

84. Hálózat-orientált védelem 1.

- legegyszerűbb módja az üzenetek kódolása ill. dekódolása- a kódolás történhet az üzenet fejére (header): - az üzenet fejével a hálózati elemek is foglalkoznak - minden hálózatra lépéskor kódolódik, kilépéskor dekódolódik - a vonali utakat rögzítik a hálózati elemek, mindegyik ráteszi a saját bélyegzőjét a fejre - még szigorúbb az ellenőrzés, ha egy megérkezett üzenet esetén visszakérdez a vevő a feladóra- a kódolás történhet az üzenet tartalmára (body): - csak az adó és a vevő foglalkozik vele, ezek megegyeznek a kódolási szisztémában - az adó kódolja, a vevő dekódolja- az üzenetek kódolásához kódolási kulcsra van szükség, a vevőnek ismernie kell ezt a kulcsot a dekódoláshoz

Page 123: 1. Operációs rendszerek helye

84. Hálózat-orientált védelem 2.

- A és B processzusok üzenetváltása → kulcs szükséges hozzá: - lehet úgy, hogy A választ, majd elküldi B-nek - egy C központi processzus választ, és elküldi A-nak és B-nek- a kulcs sem lehet kódolatlan → egy korábbi kulccsal kell kódolni és dekódolni- a kulcsok megkülönböztetése: - állandó kulcs (permanent key) – több kapcsolatfelvétel (session) idejére érvényes - egy ülésre szóló kulcs (session key) – egy kapcsolatfelvétel (session) idejére érvényes- forgalom-fenntartás (traffic pending): sűrű üzenetküldés, üres üzenetekkel 100%-os sávszélesség-kihasználás két hoszt között → a „kémek” figyelmét felkeltik és elterelik ezzel

Page 124: 1. Operációs rendszerek helye

85. Program-orientált védelem

- program-orientált védelemre klasszikus példa a vírusvédelem - vírusok → megváltoztatják a program funkcionalitását, pótcselekvéseket építenek be a programba, az

eredeti feladatra képtelenné teszik azt - trójai faló: becsempészve a processzusunk olyan melléktevékenységeket végez, mint pl. jogok osztása illegális felhasználóknak, bizonyos védelmek megszüntetése, stb.- magába a programba is lehet kódolni az egyes részekre vonatkozó jogosultsági információkat → az ellenőrzés ilyenkor is az OS feladata futás közben- dinamikus jogosultságok: olyan jogosultságok, melyek nem állandóak az időben, ezeket kérés estén osztják ki (pl. a fájlok zárolása – az adatok konzisztenciáját szolgálja elsősorban)