- Az operációs rendszerekről általában
Operációs rendszer fogalmának meghatározása.
Az operációs rendszerek funkciója:
- kényelmes és hatékony programvégrehajtási környezet biztosítása,
- hatékony HW kihasználás.
Az operációs rendszerek feladatai:
- végrehajtási környezet biztosítása,
- program fejlesztési környezet biztosítása,
erőforrás gazdálkodás,
vezérlő program.
Alternatívák az operációs rendszer részének tekintett programok meghatározására:
a számítógépen állandóan futó vezérlő program (kernel),
minden a gép általános felhasználásához szükséges program.
- Az operációs rendszerek típusai a történetük tükrében
Az operációs rendszerek fejlődése párhuzamos a HW fejlődésével.
A HW hatékony kihasználásának alapvető eszközei:
program váltás gyorsítása
az I/O műveletek és a feldolgozás (CPU használat) átlapolása.
Batch típusú rendszerek:
- nincs operációs rendszer (open shop),
- operátor alkalmazása (closed shop)
- kötegelt feldolgozás (batch),
egyszerű monitor.
Megoldások I/O műveletek gyorsítására:
off-line feldolgozás,
pufferelés,
spooling.
Multiprogramozott rendszerek:
hatékony megoldás különböző programok CPU és a perifériás műveleteinek átlapolására, vagyis a HW hatékony kihasználására.
Felvetődő problémák:
job ütemezés
tárgazdálkodás,
CPU ütemezés,
erőforrás allokáció,
védelmi mechanizmusok.
Időosztásos rendszerek (
time sharing):
gyors job váltás
Interaktív rendszerek:
rövid válaszidők, on-line file rendszer
Napjaink rendszerei:
- multiprogramozott "kötegelt" rendszerek,
időosztásos multiprogramozott rendszerek.
Személyi számítógépes rendszerek
Eredetileg kiskapacitású, egyfelhasználós rendszerek, mára kapacitásuk közelít a nagygépes rendszerek teljesítményéhez.
Párhuzamos rendszerek
szorosan csatolt (közös tárral, órajellel rendelkező) hardware, ill.
lazán csatolt rendszerek
Csoportosításuk alapja:
- szimmetrikus ill. aszimmetrikus, valamint
- homogén ill. inhomogén rendszerek.
Elosztott rendszerek
Lazán csatolt rendszerek.
Elosztott operációs rendszerek előnyei:
resource sharing),
nyílt és méretezhető rendszer (open system)
konkurens működés (concurrency),
hibatűrés, megbízhatóság (fault tolerance, reliability),
kommunikáció (communication).
- Valósidejű (real time) rendszerek
külső események bekövetkezésére garantált válaszidő.
Számítógépek felépítése
Busz struktúra: CPU, memória, vezérlők.
Interrupt-ok, rendszerhívások és végrehajtásuk.
ROM program rendszer betöltéséhez.
Be- és kivitel (I/O):
- megszakítások (szinkron és aszinkron perifériakezelés),
- Megszakítások kezelése: megszakítás kiszolgálásainak lépései.
- adatátvitel közvetlen tárhozzáféréssel (DMA).
Védelmi mechanizmusok:
- két módú programfuttatás (felhasználói- és rendszermód), privilegizált utasítások, TRAP utasítás a módváltáshoz,
- tár címtartományok védelme,
- óra periféria, rendszeres megszakítások.
Számítógépek adattároló eszközeinek hierarchiája.
Operációs rendszerek részei és szolgáltatásai
Rendszerkomponensek
folyamat kezelő:
programok végrehajtása, folyamatok vezérlése,
központi tár kezelő:
memória kiosztás, programok betöltése, kirakása,
állomány kezelő:
file-ok létrehozása, kezelése,
I/O kezelő:
driverek, I/O eszközök kezelése,
másodlagos tárolók kezelői:
mágnes lemezek, szalagok kezelése,
védelmi rendszer:
a folyamatok egymástól és külső behatástól történő védelme,
hálózat kezelő:
kommunikációs hálózati összeköttetés kezelése,
kezelői felület:
parancsértelmező.
Operációs rendszerek legfontosabb szolgáltatásai
programok végrehajtása
I/O műveletek,
File kezelés
kommunikáció,
hiba detektálás, lokalizálás,
erőforrás foglalás,
rendszerinformációk gyűjtése, elszámolás biztosítása,
védelmi és biztonsági mechanizmusok biztosítása.
Az operációs rendszerek felépítése
Komplex, nagyméretű szoftver rendszer. Alapvető felépítés:
Moduláris szerkezet:
példa: "klasszikus" UNIX szerkezet.
Rétegszerkezet:
interface-ek használata, adatok elrejtése; nehéz tiszta rétegszerkezetben a funkciók egymásra építése.
Virtuális gép (virtual machine, VM):
HW teljeskörű emulációja (védett utasítások is),
konkrét HW erőforrások osztott kezelése,
különböző operációs rendszerek akár egyidejűleg is, változtatás nélkül futtathatók.
Folyamatok
A folyamat (process) a multiprogramozott rendszerek alapfogalma.
Folyamatok definíciója
Általános meghatározás: műveletek meghatározott sorrendben történő végrehajtása. Sorrend az ún. vezérlési szál által definiált.
Logikai modell
processzor
memória (folytonos)
Oszthatatlan utasítások:
zikai processzor utasításainak egy része és néhány operációs rendszer szolgáltatás (pl. I/O műveletek)
a folyamat utasításait program kód definiálja
Folyamat állapotának jellemzői:
processzor állapota,
memória tartalom (kód, változók, veremtár)
Gyakorlati modell
Végrehajtás alatt álló "életre kelt" program, kód és adatterületeivel együtt.
Folyamat memóriaterületének részei:
- a program kódja,
- adatterületek: inicializált (DATA) és nem inicializált (BSS),
veremtár, dinamikusan növelhető terület.
Multiprogramozott rendszer:
- több végrehajtás alatt álló folyamat,
- egy fizikai processzor,
- folyamatok közötti átkapcsolás, virtuális párhuzamos végrehajtás.
Szükséges egy folyamat végrehajtásának leállítása, ill. újraindítása.
Folyamatok állapota
Folyamat környezet (context) fogalma: program és végrehajtó gép állapota. Azon információ összessége, amit szükséges elmenteni egy folyamat k
ésőbbi újraindításához.
Környezetváltás definíciója: a CPU-t birtokló futó folyamat váltása.
Egy folyamat környezetének részei:
- program számláló
- CPU regiszterei
- operációs rendszer által használt folyamat környezet leíró adatok
- vezérlési információk (folyamat állapota, azonosítója, stb.)
- ütemezési információ
- folyamat jogosultságai (futási, állomány-elérési jogok a védelemhez)
folyamat által használt erőforrások
a felhasználó által definiált környezeti változók
- memória területek tartalma
- a használt memóriatartalom
Folyamat memóriaterületének részei:
- a program kódja,
- adatterületek: inicializált (DATA) és nem inicializált (BSS),
veremtár, dinamikusan növelhető terület.
Szálak (thread, lightweight process)
A szálak olyan együttműködő folyamatok, melyek környezete részben (a program számláló, a CPU regiszterek tartalma és a veremtár kivételével minden) közös. Azonos erőforrásokat használnak így a szálak között történő környezetváltás összehasonlíthatatlanul
gyorsabb, mint a folyamatok között.
Folyamatok ill. szálak használatának előnyei
hatékony erőforrás kihasználás
végrehajtás gyorsítása (több CPU esetén)
többféle folyamat egyidejű végrehajtása
áttekinthető rendszerstruktúra, a feladat particionálásának lehetősége (kisebb, egymáshoz viszonylag lazán kapcsolódó részekre osztása)
Párhuzamos folyamatok viszonya
Független folyamatok:
egymás futását semmilyen módon nem befolyásolják,
aszinkron futnak, egymáshoz viszonyított sebességükről nincs információ.
Csatolt folyamatok:
versengő folyamatok:
logikailag független de közös erőforrásokat használó folyamatok.
Együttműködő folyamatok:
közös cél végrehajtásán munkálkodó folyamatok.
Folyamatok együttműködése
Alapfogalmak:
szinkronizáció: folyamatok futásának időbeli összehangolása
kommunikáció: információcsere a folyamatok között
holtpont
éheztetés
Folyamatok közötti információcsere (kommunikáció)
Információcsere formái:
- közös tárterületen keresztül
kommunikációs csatornán keresztül történő üzenetváltás
mechanizmus:
küldő SEND(üzenet),
vevő RECIEVE(üzenet)
Közös tárterületen történő kommunikáció
PRAM (Pipelined/Parallel Random Access Memory) modell:
oszthatatlan atomi műveletek: olvas, ír
műveletek ütközésének kezelése: az ütköző műveletek sorrendjének megadása
valós használat: szinkronizáció, kölcsönös kizárás biztosítása szükséges
Kommunikációs csatornán keresztül történő üzenetváltás
Séma:
műveletek:
SEND(címzett folyamat, üzenet),
RECIEVE(küldő folyamat, üzenet)
az "üzenet" üzenetküldésnél az üzenetet tároló puffer memóriacímét (hossz információval kiegészítve) jelenti, míg vételnél a feltöltendő puffer címét
nincs egységes modell, a műveletek hatása, paraméterei az alkalmazott megoldástól függ
A rendszerezés szempontjai: (részben önkényes választás)
- Partner megnevezés alapján
Üzenetküldési műveletek a folyamat működésére gyakorolt hatása alapján (műveletek szemantikája alapján)
Kommunikáló partner megnevezése
A kommunikáló partner megnevezése alapján az üzenetváltás lehet
- Közvetlen kommunikáció
- Közvetett kommunikáció
- Aszimmetrikus kommunikáció
- Csoport kommunikáció
Közvetlen kommunikáció:
- szinkronizáció a folyamatok között
- SEND(címzett folyamat, üzenet)
RECIEVE(küldő folyamat, üzenet)
Közvetett kommunikáció:
Postaláda (FIFO tároló) használata
- SEND(postaláda, üzenet)
- RECIEVE(postaláda, üzenet)
Aszimmetrikus kommunikáció
Csatorna használata (közvetlen FIFO összeköttetés két folyamat között)
Csatorna jellemzői:
átviteli közeg
kapcsolat iránya
- Szimplex (egyirányú) csatorna
- Fél duplex (osztottan kétirányú) csatorna
- Duplex (kétirányú) csatorna
csatornát használó folyamatok száma (kettő v. több)
üzenetek tárolása a csatornán csatorna kapacitása (bufferelés, explicit automatikus)
- Nincs tárolás (közvetlen kommunikáció)
szinkronizáció (randevú) szükséges
- Véges tárolás
kölcsönös kizárás, ill. várakoztatás szükséges
Végtelen tárolás
virtuális lehetőség, nincs várakozás
csatorna megbízhatósága
Csatorna használatának szintaxisa:
- SEND(csatorna, üzenet), SEND(címzett folyamat, üzenet)
- RECIEVE(csatorna, üzenet), RE
CIEVE(küldő folyamat, üzenet)
Ki vagy bemeneti (port) kapu használata:
Vevő oldali bemeneti port használata (vevő nem ismeri a küldőt, pl. szerver szolgáltató várja a kliens kéréseket, kliens szerver modell)
SEND(címzett folyamat bemeneti portja, üzenet)
RECIEVE(üzenet) (implicit a port-ra)
Adó oldali kimeneti port használata (adó nem ismeri a címzettet, pl. a munkát szétosztó manager folyamat várja a munkáért versengő feldolgozó folyamatokat, farmer – worker modell)
SEND (üzenet)
RECIEVE (adó folyamat kimeneti portja, üzenet)
Csoport kommunikáció
- A kijelölt folyamatcsoport minden tagja megkapja az üzenetet
- broadcasting üzenet: minden folyamat megkapja az üzenetet
Üzenetküldő műveletek szemantikája
Csatorna megbízhatatlan lehet tá
voli kommunikáció esetén. Kezelendő hiba események:
Adó meghal
Vevő meghal
- Felismerés lehetséges módja
Időkorlát (timeout) használatával
Üzenetvesztés, sérülés
- OR jelzi és kezeli
- OR jelzi, felhasználó kezeli
- Felhasználó veszi észre
Üzenetek sérülésének megakadályozása az üzenet kódolásával
- Hiba detektálása
- Hiba javítása
Hibakezelés technikája:
hibakód visszatérési érték az üzenetküldő utasításnál
Üzenetváltás módja:
időkorlát használata: 0 – végtelen
Műveletek általános paramét
erei:
SEND(címzett folyamat , üzenet, időkorlát, hibakód)
RECIEVE(küldő folyamat , üzenet, időkorlát, hibakód)
Szinkronizáció
A szinkronizáció formái
előidejűség (precedencia):
az egyik folyamat adott utasításának mindig meg kell előznie egy másik folyamat megfelelő utasítását, a második folyamat bevárja az elsőt.
egyidejűség (randevú):
"azonos időben" hajtódnak végre, vagy 1 processzoros rendszer esetén egyik utasítás sem kezdődhet el, amíg a másik folyamat egyidejűleg végrehajtandó utasítását megelőző összes utasítás végre nem hajtódott;
gyakran előfordul az ún. meghosszabbított (extended) randevú, amikor az egymást bevárt 2 folyamat közül az egyik (ügyfél, client)) csak akkor mehet tovább, ha a másik (kiszolgáló, server) befejezett egy bizonyos tevékenységet.
- kölcsönös kizárás (mutual exclusion):
a két utasítás sorrendje közömbös, az egyedüli követelmény, hogy azok ne egyidejűleg hajtódjanak végre.
A kölcsönös kizárás a leggyakrabban használt szinkronizációs eszköz. Szükségességes olyan erőforrás (hardver vagy szoftver) használata esetén, amelyet egyidejűleg csak egy folyamat használhat, különben hibásan működik, ill. egyes esetekben lehet egy magas szintű utasítássorozaton belül is követelmény a kölcsönös kizárás.
- Gyakorlati példa
Egy nyomtatót has
ználó folyamat példáján keresztül megvizsgáljuk egy tipikus termelő-fogyasztó (felhasználó) szituációban előforduló feladatokat és azok egy lehetséges megoldását.
Termelő
- repeat
- [Készít egy új kinyomtatandó adatot a
következőKész változóban.]
- while
teliElemekSzáma >= n do üresUtasítás;
- buffer[következőÜres]:= következőKész;
- következőÜres:= (következőÜres + 1) mod n;
- teliElemekSzáma := teliElemekSzáma + 1;
- until
false;
Fogyasztó
- repeat
- while
teliElemekSzáma <= 0 do üresUtasítás;
- következőFeldolgozandó := buffer[következőTeli];
- következőTeli := (következőTeli + 1) mod n;
- teliElemekSzáma := teliElemekSzáma - 1;
- [Kinyomtatja a
következőFeldolgozandó változóban tárolt adatot.]
- until
false;
Probléma
A teliElemekSzáma inkrementálásának ill. dekrementálásának gépi utasításai párhuzamosan (átlapolódva) hajtódnak végre, az eredmény a végrehajtás sorrendjétől függ.
Inkrementálás
- MOV AX, teliElemekSzáma
- INC AX
- MOV teliElemekSzáma, AX
Dekrementálás
- MOV AX, teliElemekSzáma
- DEC AX
- MOV teliElemekSzáma, AX
Kritikus szakasz
A
kritikus szakasz olyan utasítássorozat a programban, amelyen belül egyidejűleg csak egyetlen folyamat tartózkodhat, a kritikus szakaszt a belépő (entry) és kilépő (exit) utasítások határolják.
A kritikus szakasz helyes implementálásának kritériumai:
- biztosítsa a kölcsönös kizárást:
a kritikus szakaszban (az egymáshoz tartozó kritikus szakaszokban) mindig legfeljebb egyetlen folyamat tartózkodhat.
- haladás:
ha a kritikus szakasz szabad és van olyan folyamat, amelyik be akar lépni a kritikus szakaszba, akkor ezek közül egyet engedjen be.
- korlátozott várakozás:
elkerüli a várakozó folyamatok kiéheztetését.
- A kritikus szakasz implementálása
Tisztán programozott megoldások
Két folyamat esetén:
- A két folyamat P(1) ill. P(2).
- A P(i) folyamathoz tartozó belépő (
entry) és kilépő (exit)szakaszok:
- entry:
- flag [i] := IGAZ;
- következő := j;
- while
( flag[j]==IGAZ and következő == j )
do { üres utasítás };
- exit:
- flag [i] := HAMIS;
Mind a három kritikus szakaszra vonatkozó feltételt teljesíti a fenti megoldás.
Tetszőleges n folyamat esetén használható megoldások jóval bonyolultabbak.
Kritikus szakasz megvalósítása HW támogatással
Speciális, megszakíthatatlan, egyidejűleg több tárműveletet végző hardver utasítások:
TestAndSet
- entry:
- while
TestAndSet(lakat) do { üres utasítás };
- exit:
- lakat:= false;
Swap
- entry:
- kulcs := IGAZ;
- repeat
- swap(lakat, kulcs);
- until (kulcs == HAMIS);
- exit:
- lakat:= HAMIS;
A fenti megoldások csak az első kettő kritikus szakaszra vonatkozó feltételt teljesítik. A harmadik feltétel is kielégíthető, azonban annak megoldása bonyolultabb.
Szemafor
Speciális adatszerkezet és rajta értelmezett oszthatatlan utasítások;
init(s, v):
s := v;
P(s):
while s <= 0 do { üres utasítás };
s := s - 1;
V(s):
s := s + 1
- bináris szemaforok: csak 0 vagy 1 (true és false) érték;
- kritikus szakasz megvalósítása:
init(s,1)
entry: P(s)
exit: V(s)
- univerzális eszköz, a többi szinkronizálás is megvalósítható;
Pl. előidejűség
- init(s,O);
1. folyamat:
Utasítás1;
V(s);
2. folyamat:
P(s);
Utasítás2;
- a folyamatok állapotátmenet diagrammja és a szemafor implementáció:
P(s):
if s <= 0
then tedd a várakozó listára és altasd el;
else s := s - 1;
V(s):
if várnak rá és a várakozó lista nem üres
then leveszi és felébreszti az elsőt a várakozók közül;
else s := s + 1;
- korrekt megoldás, a szemafort nem lehet a felébresztett folyamattól ellopni.
- problémája: túl alacsonyszintű eszköz.
Kritikus szakasz megvalósítása magas szintű programnyelvekben
Erőforrások ill. változók és a rajta műveleteket végző, kritikus szakaszba tartozó utasítások magas szintű nyelvi szerkezetben.
Kritikus szakasz
- region
változó do utasítások end
Feltételes kritikus szakasz
region
változó when feltétel
do utasítások end
A megvalósítás problémái:
az azonos erőforráshoz tartozó kritikus szakaszok a program szövegben szétszórtan fordulnak elő,
az erőforrásra várakozó össze folyamatot fel kell ébreszteni, mert a kernel nem tudja kiértékelni a belépési feltételeket.
Monitor
A közösen használandó erőforrás és az összes rajta végezhető művelet egyetlen szintaktikus egységbe (monitor) zárva;
Felépítése:
- megosztott változók,
- elérési pontok (eljárások),
- inicializáló utasítások,
- várakozó folyamatok listája
A monitor olyan program modul (önálló fordítási egység), amely automatikusan kölcsönös kizárást biztosít a belépési pontja (entry point) eljárásaira.
Csak kölcsönös kizárást valósít meg, egyéb szinkronizáláshoz más eszköz kell.
Ez az eszköz az ún. feltételes változó (conditional variable), ami bináris szemaforhoz hasonló adattípus, két speciális belépési ponttal:
- wait mindig blokkol, elhagyja a monitort;
- signal csak akkor van hatása, ha várakozik valaki;
- problémája: a feltételes változók újra alacsonyszint
ű eszközt jelentenek.
Folyamatok modellezése az operációs rendszerekben
Folyamatok állapotátmenet diagrammja
Folyamatok állapotai:
- futásra kész
- fut és
- várakozik.
felfüggesztett állapotok, jelentőségük.
Állapotátmeneti diagramm:
- állapotátmenetek,
- környezetváltás helye az állapotátmenet diagrammban,
- preemptív és nem preemtív operációs rendszerek
- tárcsere (swap) hatása az állapotátmenet diagrammban.
Folyamatok sorbanállási modellje
Hatékony rendszermodell, ha feltételezzük, hogy egyid
őben egy folyamat csak egy erőforrást foglal, ill. használ.
CPU ütemezés
Az ütemezés (scheduling
) fogalma: az azonos erőforrásra igényt tartó folyamatok közül választás, az erőforrások allokálása.
A CPU ütemezés kategóriái:
- Hosszú távú:
kötegelt rendszer
ben a következő elindítandó program kiválasztása,
középtávú:
felfüggesztendő és újra aktiválandó folyamatok kiválasztása,
rövidtávú:
a futásra kész folyamatok közül a következő futó kiválasztása, esetleg a futó folyamat megszakítása.
A rövidtávú CPU ütemezési algoritmusok alapjai:
- CPU és I/O löket fogalma,
- CPU löket eloszlása,
I/O löketidőt más folyamatok kihasználhatják.
ütemezés helye az állapotátmenet diagrammban:
nem preemtív: befejeződik, fut -> vár; (önként mond le a futási jogról)
preemptív: fut -> futásra kész (nem önként), vár -> futásra kész.
Az ütemezési algoritmusok összehasonlítására lehetőséget adó paraméterek:
CPU kihasználtság (CPU utilization),
átbocsátó képesség (throughput),
körülfordulási idő (turnaround time),
várakozási idő (waiting time),
válaszidő (response time)
Követelmények (néha ellentmondó példák):
- valamelyik fenti paraméter szempontjából optimális;
- korrekt: minden folyamatot azonos módon kezeljen,
- biztosítson prioritásokat,
- kerülje a kiéheztetést,
- legyen megj
ósolható viselkedésű, minimalizálja a paraméterek szórását,
részesítse előnyben a kihasználatlan erőforrást igénylő folyamatokat,
részesítsen előnyben fontos erőforrásokat használó folyamatokat,
növekvő terhelés hatására a rendszer teljesítőképessége fokozatosan csökkenjen (graceful degradation), ne omoljon össze.
Egyszerű ütemezési algoritmusok
legrégebben várakozó (First Come, First Served, FCFS)
nem preemptív,
nagy átlagos várakozási idő (konvoj hatás).
körbeforgó (Round Robin) preemptív algoritmus, időosztásos rendszerek alapja.
Fontos az időszelet hosszának helyes megválasztása (ideális: kb. 80%-a az átlagos CPU löketidőnek).
Prioritásos ütemezési algoritmusok
A prioritás típusai:
belső vagy külső prioritás,
statikus vagy dinamikus prioritás,
Az ütemezés lehet preemptív és nem preemptív is. Általában fennáll a kiéheztetés (starvation, indefinit postponement) veszélye. Elkerülése az ún. öregítés (aging) használatával.
Prioritás meghatározása a CPU löketidő alapján
Löketidő meghatározása:
(átlagos) löketidő "bevallása",
löketidő becslése (exponenciális) átlagolással.
Algoritmusok:
legrövidebb löketidejű (Shortest Job First, SJF)
optimális átlagos várakozási idő (körbefordulási idő), nincs konvojhatás.
legrövidebb hátralévő löketidejű (Shortest Remaining Time First, )
SJF preemptív változata, döntés, ha új futásra kész folyamat van.
legjobb válaszarány (Highest Response Ratio, HRR)
prioritás módosítása a várakozási idővel (öregítés).
Többszintű ütemezési algoritmusok
Alternatívák:
időosztás a sorok között
prioritás sorrendjében ellenőrzi a sorokat
Algoritmusok:
Statikus többszintű sorok (Static Multilevel Queues),
Dinamikus többszintű sorok (Dynamic Multilevel Queues),
Visszacsatolt többszintű sorok (Multilevel Feedback Queues).
Többprocesszoros ütemezés
Többprocesszoros ütemezés megvalósításának feltételei:
- szorosan csatolt homogén rendszer
- közös várakozási sor
lehet szimmetrikus vagy aszimmetrikus ütemezés, kölcsönös kizárás biztosítása szükséges
Ütemezési algoritmusok hatékonyságának meghatározása
analitikus kiértékelés:
- determinisztikus modellezés
- sztochasztikus modellezés
- szimuláció: mérés modellezett környezetben
- implementáció: mérés valós környezetben
Holtpont
A holtpont (deadlock) fogalma: töb
b folyamat olyan eseményre, erőforrás felszabadulására vár, amelyet másik, ugyancsak várakozó folyamat tud előidézni.
Fontos, hogy a kiéheztetés és a holtpont különböző fogalmak!
Az erőforrások modellje:
- véges számú erőforrás,
- erőforrás osztályok,
elvehető (preemptable) és nem elvehető (non-preemptable) erőforrások,
erőforrás használat lépései:
- igénylés, ha az igény nem teljesíthető, a folyamat várakozik,
- az erőforrás kizárólagos használata,
- az erőforrás felszabadítása, valamelyik várakozó továbben
gedése.
a rendszer állapota leírható az erőforrás-használati gráffal (resource allocation graph)
- A holtpont kialakulásának feltételei
A holtpont kialakulásának szükséges feltételei:
- kölcsönös kizárás,
- foglalva várakozás,
nem elvehető erőforrások,
körkörös várakozás.
A holtpont kialakulásának elégséges
feltétele:
A fenti 4 szükséges feltétel, valamint minden erőforrás osztályban csak egyetlen erőforrás van.
Holtpont kezelési stratégiák
Holtpont kezelési stratégiák:
erőforrás használati szabályokkal biztosítani, hogy holtpont ne alakuljon ki:
holtpont megelőzés (deadlock prevention),
holtpont elkerülés (deadlock avoidance).
- csak a holtpont kialakulásánál avatkozunk be:
- holtpont felismerés (deadlock recognition),
- holtpont felszámolása (deadlock recovery).
A holtpont megelőzése
A holtpont kialakulásának valamelyik szükséges feltételének kizárása.
- kölcsönös kizárást nem lehet kiküszöbölni,
- foglalva várakozás kizárása
: egy folyamat csak akkor kérhet új erőforrást, ha nem tart lefoglalva másikat,
- futás elején lefoglalja az összes erőforrást vagy
- erőforrás-foglalás előtt a foglalt erőforrásokat felszabadítja,
- nem elvehető erőforrások: erőforrások elvétele egyes folyamatoktól,
körkörös várakozás kizárása: erőforrások megszámozása, az erőforrások csak sorrendben igényelhetők.
A holtpont elkerülése
Az erőforrások óvatos allokálásával elkerülhető a holtpont kialakulása; de a folyamatok erőforrás-igényéről kiegészítő információval kell rendelkezni:
- a folyamatok erőforrás-osztályonkénti maximális igé
nye.
Feltététezzük, hogy a folyamat erőforrás igényének kielégítése után véges időn belül visszaadja az összes erőforrást.
Módszer:
az erőforrás igényt csak akkor teljesítjük, ha az így kialakult rendszer biztonságos állapotban marad.
biztonságos állapot, ha található olyan folyamat-sorrend, hogy az aktuálisan futó folyamat maximális igénye kielégíthető.
megvalósítása: bankár algoritmus.
A holtpont felismerése
az erőforrás-használati gráf elemzése alapján,
gráf redukciós algoritmus:
yamat kiválasztása, amelynek a jelenlegi igényei a szabad erőforrásokkal kielégíthető,
a folyamat által lefoglalt erőforrásokat visszaadjuk (optimista algoritmus),
újra keresünk kielégíthető folyamatot, ha nincs ilyen, de maradtak kielégítetlen folyamatok, akkor holtpont van.
- az algoritmus viszonylag lassú, kérdés, hogy mikor futtassuk:
minden erőforrás igény teljesítésekor,
bizonyos időközönként.
A holtpont felszámolása
folyamatok megszűntetésével:
- minden holtpontban lévő folyamatot megszűntetünk,
csak néhány folyamatot szűntetünk meg.
A megszüntetendő folyamat kiválasztásához paraméterek pl.:
hány holtpont hurokban szerepel,
mekkora a prioritása,
mennyi ideje fut (várhatóan mennyi ideig futna még),
milyen erőforrásokat tart lefoglalva,
milyen erőforrásokat igényelne még.
- erőforrások elvételével
probléma: melyik folyamattól és milyen erőforrásokat vegyük el.
- A futási eredmény megőrzéséhez szükséges ellenőrzési pontok (
checkpoint) definiálása és a visszaállítás (rollback) használata.
- Kombinált holtpont-kezelő stratégiák
Különböző erőforrás-típusokhoz más-más stratégiát használhatunk, pl.:
- belső rendszer-erőforrások: sorrendi foglalás,
- központi tár: erőforrás elvétele,
- kötegelt rendszerekben, előre megadott erőforrás szükséglet: holtpont el
kerülés,
tárcsere terület a háttértáron: előzetes foglalás.
------------------------------------------------------------------------------------
Megszakítások kezelése: megszakítás kiszolgálásainak lépései.
Alapvető módszerek:
kiszolgáló rutin (nincs környezetváltás),
kiszolgáló folyamat (mindig környezetváltás),
köztes megoldás, kiszolgáló rutin, a várakozó folyamatok átütemezésének kezdeményezése.
-------------------------------------------------------------------------------------
Tárkezelés
Adattároló eszközök hierarchiája
Számítógépek adattároló eszközeit hierarchiába rendezhetjük.
- CPU regiszterek
- operatív tár (memória)
- háttértár (másodlagos tár)
külső tárak (harmadlagos tárak)
A hierarchiában lefelé nő az adatok elérési ideje, de csökken az egységnyi tárolókapacitás ára, így a tárolók kapacitása.
A számítógépek működése során szükséges a tárolók közötti adatmozgatás.
Az adatmozgatás meggyorsítására gyorsító tárakat (cache) alkalmaznak a hierarchia minden szintjén.
A gyorsító tárak alkalmazásának lehetőségét, ill. a hatékonyságuk magyarázatát a programok működésének lokális volta biztosítja.
Központi tár kezelése
A tárkezelés szerepe az operációs rendszerekben:
multiprogramozás igényli, hogy egyidejűleg több folyamat tartózkodjon a központi tárban.
Klasszikus tárkezelés fő kérdései:
címek kötése,
tár allokáció.
Programok címeinek kötése
A logikai-fizikai cím hozzárendelés történhet:
szerkesztéskor: kapcsolatszerkesztő (linker) program,
betöltéskor: áthelyező betöltő program (relocating loader),
futás közben:
hardver támogatással: pl. bázisregiszter, szegmens- és lapszervezésű tárkezelő hardver,
pozíció-független kód (Position Independent Code, PIC)
Gazdaságos memóriakihasználás megvalósítása
Három megközelítés:
- Program memóriaigényének csökkentése
- dinamikus (késleltetett) betöltés (dynamic loading);
egymást átfedő programrészletek (overlay).
dinamikus linkelhető könyvtárak (dynamicaly linked library, DLL):
operációs rendszer támogatás, közös könyvtárak, betöltés név és verzió alapján;
- Memória hézagmentes kitöltése
- tárkiosztási algoritmusok
- Háttértár használata memória kiváltására
- tárcsere (swap)
- virtuális memóriakezelés
Társzervezési elvek
egy partíciós rendszerek:
- operációs rendszer és egyetlen alkalmazói folyamat,
- operációs rendszer védelme határregiszterrel,
- probléma: operációs rendszer terület növekedése;
- több partíciós rendszerek, fi
x- és változó méretű partíciók:
- operációs rendszer és a többi folyamat védelme partíciónként alsó és felső határregiszterrel,
- fix partíciók: belső tördelődés (internal fragmentation),
- változó partíciók: külső tördelődés (external fragmentation).
tárallokációs stratégiák változó méretű partícióknál:
- első illeszkedő (first fit),
- következő illeszkedő (next fit),
- legjobban illeszkedő (best fit),
- legrosszabban illeszkedő (worst fit),
50%-os szabály: átlagosan a használt tár 50%-ának megfelelő memória (vagyis a teljes tár egyharmada) kihasználatlanul marad a tördelődés miatt.
Programok címeinek kötése futási időben
Hardver támogatás szükséges:
- címtranszformációs tábla használata
lapszervezésű memória kiosztás
fix lapméret
egyszerű címtranszformáció
egyszerű memóriavédelem
- szegmensszervezésű memóriakiosztás
változó lapméret
rugalmas memóriagazdálkodás
memóriavédelemhez szegmensméret tárolása a címtranszformációs táblában
Tárcsere (swap)
(középtávú) ütemezés: kevés szabad központi tár esetén folyamatok felfüggesztése,
folyamat teljes tárterületének háttértárra mentése és visszaállítása,
felfüggesztendő és újra aktiválandó folyamatok kiválasztásának kritériuma.
Logikai címek fizikai címmé való transzformálásának módszerei:
- Állandó blokkméret: lapszervezés
- Változó blokkméret: szegmensszervezés
- Kombinált szegmens és lapszervezés
Különböző módszerek által használt adatszerkezetek, a módszerek összehasonlítása.
Virtuális memóriakezelés
A hardver támogatta címtranszformáció lehetővé teszi az időlegesen nem használt memórialapok háttértárra történő mentését.
Feladatok:
laphiba (háttértáron tárolt memórialapra történő hivatkozás) esetén az utasítás visszagörgetése
laphibák számának csökkentése:
- lapok mentésének és
- behozatalának megszervezése
Állományrendszer
Alapfogalmak:
Állománykezelő feladatai:
információátvitel az állományok és a folyamatok tárterülete között,
műveletek állományokon és könyvtárakon.
osztott állománykezelés vezérlése,
állományokhoz hozzáférés szabályozása,
tárolt információ védelme.
Az állományrendszer réteges implementációja:
- periféria meghajtó (device driver),
- elemi átvitelek,
- fizikai állományszervezés,
- logikai állományszervezés.
Adatszerkezetek a lemezen:
- blokkok,
- kötet,
- szabad helyek nyilvántartása,
- állományokhoz tartozó blokkok nyilvántartása,
- katalógusok ábrázolása.
Szabad helyek nyilvántartása
bittérkép,
szabad blokkok láncolt listája,
szabad blokkok csoportjának láncolt listája,
egybefüggő szabad területek leírása.
Állományokhoz tartozó blokkok nyilvántartása
egyetlen egybefüggő terület,
láncolt lista,
láncolt lista központi láncelem-táblával (File Allocation Table, FAT),
indexelt tárolás,
többszintű indexelés.
Állományok elérése
Ál
lományok belső szerkezete:
nincs szerkezet: Byte - esetleg bit - sorozat
logikai szerkezet:
mező
rekord
Állomány hozzáférési módok:
- soros (sequential),
- közvetlen (direct, random access),
- indexelt, index-szekvenciális (index sequential access method, ISAM).
Műveletek az állományokon:
átvitel: írás vagy olvasás,
hozzáírás, bővítés,
pozicionálás,
állomány megnyitása, lezárása,
programállomány végrehajtása,
állomány létrehozása,
állomány törlése.
Állománykezelés során használt adatszerkezetek:
- soros hozzáférés pozíciója.
- aktuális jogosultságok.
- Osztott elérés támogatása:
- használók száma,
- kölcsönös kizárás támogató adatszerkezet
- várakozók listája.
Könyvtárak
nyilvántartás bejegyzés:
- az állomány neve;
- az állomány fizikai elhelyezkedését leíró információk:
- hossza,
- hozzá tartozó háttértár blokkok leírása,
- a hozzáférés módja;
- az állománykezeléssel kapcsolatos logikai információk:
- típusa (ha van ilyen),
- tulajdonosának, létrehozójának azonosítója,
- különböz
ő időpontok,
hozzáférés jogosultságok,
hivatkozás számláló.
műveletek a könyvtárakon
állomány attribútumainak módosítása,
könyvtár létrehozása, törlése,
keresés a könyvtárban,
új bejegyzés létrehozása, törlése.
Könyvtárak hierarchiája:
- aktuális könyvtár (current directory),
- gyökér könyvtár (root directory),
- elérési út (path),
- keresési út (search path).
kétszintű könyvtárak,
körmentes irányított gráf,
általános gráf.
Hozzáférés szabályozása:
- állomány létrehozója, tulajdonosa definiálhatja;
- tipikus jogosultságok: olvasás, írás, hozzáírás, végrehajtás, törlés;
- jogosultságok állományokra, könyvtárakra
- jogosultságok engedélyezése: felhasználónként, felhasználói csoportonként, alapértelmezés (bárki).
Háttértár (mágneslemez) kezelés
Háttértár tulajdonságai:
kedvező ár/kapacitás arány
nagy tárolókapacitás
állandó (passzív) tárolás
Háttértár típusok:
- mágnes szalag
- mágnes dob
- merev ill. floppy lemez
- CD-ROM
- EEPROM kártya....
A lemezek fizikai szerkezete
alapfogalmak:
- cilinder (i),
- felület (j)
- sáv,
- szektor sávon belül (k).
- szektor címzés: b = S* (i * T+ j) + k
(S=szektor/sáv, T=sáv(felület)/cilinder)
kiszolgálási idő felbontása:
- fejmozgási idő (seek time),
- elfordulási idő (rotation latency time),
- átviteli idő (transfer time).
Lemezműveletek ütemezése
A lemezműveletek ütemezésénél a fejmozgásra koncentráló algoritmusokkal foglalkozunk.
algoritmusok értékelésének paraméterei:
átlagos válaszidő,
válaszidő szórása.
ütemezési algoritmusok:
- sorrendi kiszolgálás (First Come First Served, FCFS),
legrövidebb fejmozgási idő (Shortest Seek Time First, SSTF),
pásztázó (SCAN),
N lépéses pásztázó (N-SCAN),
Körbeforgó (egyirányú) pásztázó (Circular SCAN, C-SCAN),
elfordulási idő optimalizálása:
szektor sorba rendezés
Egyéb gyor
sítási lehetőségek:
lemezterület tömörítése (disk compaction),
ütemezési algoritmusok sajátosságainak figyelembe vétele,
információ többszörözése a lemez különböző területein,
több blokk egyidejű átvitele,
átmeneti, gyorsító tár alkalmazása,
adattömörítés (compression).
Megbízhatóság növelésének lehetősége: rendszeres mentés, redundáns tárolás, elosztott tárolás