Operációs rendszerek

Download Report

Transcript Operációs rendszerek

Operációs rendszerek
Az operációs rendszerek feladatai
és funkciói
Az operációs rendszer egy olyan program, amely felügyeli
az alkalmazói programok (alkalmazások) végrehajtását
és interfészként működik a számítógép felhasználója és
a hardver közt.
Az operációs rendszereknek három elvárásnak kell
megfelelniük:
• Számítógép használatát egyszerűbbé kell tenniük
• Biztosítaniuk kell a számítógép erőforrásainak hatékony
kihasználását
• Képesnek kell lenniük a fejlődésre. Új eszközök,
lehetőségek megjelenésekor úgy kell bővíteni, hogy
eredeti funkcióiban változás ne történjen
Operációs rendszer, mint
felhasználó/számítógép interfész
A számítógépes rendszert réteges struktúrában
szemléltetve:
• Felhasználó csak az alkalmazásokkal foglalkozik, miket
programozók készítenek.
• Legfontosabb rendszerprogram az operációs rendszer,
ami elfedi a hardvert a programozók elől, egyszerűbb
felhasználást biztosítva
Operációs rendszer, mint erőforrás
kezelő
Az operációs rendszer ugyanúgy utasításokból áll, mint
bármely program. Alkalmazások szempontjából az
operációs rendszer futtatásával töltött idő, holtidő, mivel
ugyan azokat az erőforrásokat használja, mint az
alkalmazói programok.
Ezért csak az operációs rendszer központ része (mag,
kerner), aminek mindig a memóriában kell lennie! Ez
felelős az erőforrások kezeléséért – így speciális
jogokkal rendelkezik (system mód).
Erőforrások, melyek kezeléséért az
operációs rendszer felelős
Memória:
Megfelelő szabályok szerint kell osztani az
alkalmazói programok közt.
Processzor: Egy időpillanatban a processzor csak
egyetlen programot futtathat. Ennek kiválasztása az
operációs rendszer feladata. Többprocesszoros
rendszer esetén a feladatot tovább bonyolítja a közel
azonos terheltség biztosítása.
I/O eszközök: I/O igények kielégítése, eszközök kezelése.
Fejlődés biztosítása
Az operációs rendszerek továbbfejlesztésének okai:
• Hardverek fejlődése, új technológiák megjelenése
• Felhasználói igények kielégítése
• Hibajavítások (Hibátlan program nem létezik, csak olyan,
amiben még nem találtak hibát!)
Soros feldolgozás
50-es évek közepéig használt módszer.
Operációs rendszerek még nem voltak, a programok
közvetlenül a hardverrel kommunikáltak.
Közvetlen adatbevitel (pl. lyukkártya) eredmény kiadása
(pl. nyomtató).
Egyszerű kötegelet feldolgozású
(batch) rendszerek
A számítógépek holtidejének megszűntetésére
fejlesztették ki az első kötegelt operációsrendszeret.
Központi eleme a monitornak nevezett program, ami
szabályozza a gép működését. A megkapott programok
előkészítését automatikusan megkezdte, amik futásuk
befejeztével visszaadták a vezérlést a monitornak. Ezért
a monitor egy részének mindig a memóriában kellett
lennie. (rezidens monitor) A többi részét
(segédprogramok…) igény szerint tölti be a rendszer.
JCL (Job Control Language): Munkák előkészítését végző
része a monitornak.
Kötegelt rendszerek hatékony működéséhez
szükséges hardver feltételek
Memória védelem: A program nem férhet hozzá a monitor
által használt memóriaterületekhez
Időzítő:
Időzítő használatával egyetlen „job” se
sajátíthatja ki magának a rendszert
Privilegizált utasítások:
Bizonyos utasításokat csak a
monitor hajthat végre, felhasználói programok ilyen
próbálkozása esetén a vezérlés rögtön visszakerül a
monitorhoz.
Megszakítások:
Az aszinkron eseményekre való
reagálás lehetőségének támohatása.
Multiprogramozott kötegelt
rendszerek
A jelentősen lassabb I/O műveletek miatti kihasználatlan
processzoridő csökkentésére hozták létre.
Ha a memória elegendő több program tárolására is,
akkor míg az egyik I/O műveleteket végrehajtása miatt
várakozik, addig a másik futhat. Mikor az I/O művelet
befejeződött, a processzor ismét az első programmal
dolgozik tovább.
Az eljárás neve: multiprograming, vagy multitasking
A kihasználtság mértéke erősen függ a futtatott feladatok
jellegétől, és erőforrásigényétől.
Időosztásos rendszerek
Ha az „egy felhasználó egy gép” elv nem valósul meg,
és egy program futás alatti interaktivitást igényel, akkor a
multiprogramozott kötegelt rendszerek hatékonysága
jelentősen csökken.
Ebben az esetben minden felhasználónak biztosítanak
egy időszeletet, amiben csak az ő programja fut. Így a
rendszer sebessége n-ed része a tényleges
sebességnek.
Multiprogramozott, és időosztásos
rendszerek összehasonlítása
Multiprogramozott
kötegelt rendszerek
Időosztásos
rendszerek
Fő cél
Processzor
kihasználtságának
maximalizálása
Válaszidő
minimalizálása
Operációs rendszer
vezérlő információk
forrása
JCL-ben
megfogalmazott
utasítások
Terminálról bevitt
parancsok
Eszközök, és folyamatok
vezérlése
Processzorok működésének módjai
Bizonyos utasításokat csak a processzor privilegizált
módjában lehet végrehajtani. Ezek a processzor
működését befolyásoló utasítások, az I/O utasítások,
memória-, megszakításkezelést befolyásoló utasítások.
Mivel privilegizált üzemmódban többnyire csak a kernel
működik, ezért az üzemmód neve rendszer-, vagy
kerenelmód.
Felhasználómód sokkal kötöttebb, kevesebb utasítást
engedélyez, és korlátozott hozzáférést engedélyez a
memóriához. Ezt a módot használjuk a felhasználói
programok futtatására.
Két üzemmódot hardver szinten meg kell különböztetni,
hogy megvédhessük az operációs rendszert a
felhasználói programoktól!
A processzor aktuális üzemmódját a státuszregiszterben
tárolja.
Megszakítások hatására a rendszer automatikusan
privilegizált üzemmódba jut.
(Megszakítást kiválthat hardver, illetve egy felhasználói módban,
nem megengedet tevékenységet végrehajtani akaró program is.
Kiválthat egy felhasználói módú program „direkt” megszakítást is, ha
az operációs rendszer egy szolgáltatását szeretné kérni.)
Folyamatok létrehozásának lépései
1.
Egyedi azonosító hozzárendelése az új folyamathoz.
(Új bejegyzés a folyamat táblában)
2.
Folyamat számára szükséges memória lefoglalása.
(Minden program valamilyen módon tartalmazza a futásához szükséges
memória méretét. Ha egy másik folyamat hozza létre, neki kell foglalnia a
memóriát. Végül memóriát kell foglalni a folyamat leíró számára is!)
3.
A folyamat leírót inicializálni kell. (PC-t a program első
utasítására kell állítani, a veremmutatót pedig a folyamathoz tartozó
verem elejére. A folyamat kezdeti állapota várakozó, vagy swap-elt lesz)
4.
További függőségek beállítása (Pl. folyamat hozzáadása a
megfelelő várakozósorhoz)
5.
Lehetnek további adatstruktúrák, amik a folyamathoz
tartoznak
Swaping
Megeshet, hogy pl. I/O műveletek miatt a központi
memóriában levő összes folyamat blokkolt állapotba
kerül. Mivel a memória nem bővíthető korlátlanul más
eljárásra van szükség:
Amennyiben az összes memóriabeli folyamat blokkolt
állapotba kerül, valamelyik folyamatot környezetével
együtt lemezre mentjük, és egy másik futásra kész
programot töltünk a helyére.
Holtpont-deadlock
Mi van akkor, ha az 1. folyamat lefoglalta A erőforrást, 2.
folyamat pedig B erőforrást, és a két folyamat
befejezéséhez kölcsönösen szükség van a másik
erőforrásra? Ekkor lép fel holtpont!
Mivel több folyamat egy erőforrás felszabadulására vár,
amit csak egy másik folyamat tud előidézni, a helyzet
reménytelen!
Megoldás: Ha egy folyamat lefoglal egy erőforrást, akkor
annak az erőforrásnak használatát nem engedélyezzük
más folyamatoknak.
Hátrány: Kihasználatlan erőforrások; erőforráskezelő
stratégiája miatt, egy folyamat nem jut erőforráshoz
belátható időn belül.
Holtpont kialakulásához vezet
• Kölcsönös kizárás: Vannak olyan erőforrások, mik nem
megoszthatók: Egyszerre csak egy folyamat
használhatja.
• Erőforrásokra várakozó folyamatok várakozás közben
erőforrásokat lefoglalva tartanak.
• Erőszakkal el nem vehető (nem rabolható) erőforrások
• Ciklikus várakozás: Erőforrásokra várakozó folyamatok
körkörösen egymásra várnak.
Holtpont megelőző stratégiák
Egyetlen foglalási lehetőség
Csak az a folyamat foglalhat erőforrást, amelyik még
egyetlen egyel se rendelkezik.
Folyamatok csak induláskor foglalhatják le a szükséges
erőforrásokat, mert azt később nem tehetik.
Előnye: Futó folyamatok nem kényszerülnek várakozni,
várakozók nem foglalnak erőforrásokat.
Hátránya: Pazarló. Folyamatok akkor is foglalva tartank
erőforrásokat, ha nincs rá szükségük. Ha egy
folyamatnak sose lesz szabad az összes szükséges
erőforrás, fennáll a kiéheztetés veszélye.
Rangsor szerint foglalás
Egy folyamat csak olyan osztályból igényelhet erőforrást,
melynek sorszáma magasabb, mint a már birtokolt
erőforrások száma.
Holtpont csak akkor alakulhat ki, ha egy folyamat
megsértené a rangsort. Módszer hatékonyságát
befolyásolja a sorszámok kiadása. (Sajnos előre
tökéletesen nem meghatározható)
Ha egy folyamatnak szüksége van egy alacsonyabb
szintű erőforrásra, akkor addig a szintig fel kell
szabadítania az összes általa lekötött erőforrást.
Bankár algoritmus
Sose elégítsünk ki egy igényt, ha az nem biztonságos
állapotot eredményez.
A rendszert mindig úgynevezett biztonságos állapotban
tartja. Egy állapotot akkor tekintünk biztonságosnak, ha
létezik legalább egy olyan sorozat, amely szerint az
összes folyamat erőforrásigénye kielégíthető.
Az algoritmus csak akkor működik, ha induláskor tudják,
hogy az erőforrások közül egyszerre hányat fog egy
folyamat igényelni.
Nem biztonságos helyzet nem vezet feltétlenül holtpont
kialakulásához!
Holtpont felszámolás
Mivel egyik stratégia sem 100%-ig biztonságos, így
kialakulhatnak holtpontok! Így ha kialakul egy, azt meg
kell próbálni megszüntetni.
• Holtpont detektáló algoritmus segítségével először meg
kell keresni a holtpontot.
• Meg kell kísérelni megszüntetni!
– Bezárhatjuk a holtpontban szereplő összes folyamatot (pazarlás)
– Kiválaszthatunk egy folyamatot bezárásra, a holtpontban
szereplők közül
Bezárandó folyamat
kiválasztásának elvei
• Melyikkel hány erőforrást nyerek
• Hány további erőforrást igényel még
• Mennyi processzor, illetve I/O időt vesztek elvesztésével
• Mennyi idő van még hátra a futásból
Az I/O rendszer
Perifériák csatlakozási módja a
géphez
• CPU (I. generációs gépek I/O központuak. I/O a CPU-n
keresztül valósul meg.)
• Csatorna (II. generációs gépeknél, ami az operatív
tárhoz férhet hozzá, munkáját a CPU vezérli. Elég
autonómak)
• DMA
• IOP (Napjainkban)
I/O fajtái – Programozott I/O
Az I/O művelet teljes egészében a CPU által irányítottan
történik, azaz a CPU hajtja végre a programot, amely
kezdeményezi, irányítja és lezárja az I/O műveletet.
Ez szinte valamennyi számítógépben létezik.
Megvalósítása egyszerű, de értékes processzoridőt köt
le minden (akár triviális) I/O vezérlési funkció, pl. I/O port
READY állapotának ellenőrzése.
I/O fajtái – DMA
A hardver komplexitás viszonylag szerény növelésével
az I/O egység kialakítható úgy, hogy a CPU
beavatkozása nélkül adatblokkot tudjon átvinni az
operatív tár, és a memória közt. Ez azt igényli, hogy az
I/O egység legyen egy sin master.
A CPU továbbra is felelős az adatátvitel
kezdeményezéséért, de magát az átvitelt az I/O egység
bonyolítja le a CPU beavatkozása nélkül.
A CPU és az I/O vezérlő (DMA) csak akkor van
kapcsolatban egymással, mikor átadják a rendszersin
vezérlését.
I/O fajtái – IO processzor (IOP)
A DMA csak részben vezérli az I/O műveletet. Az IOP
bevezetésével lehet megvalósítani az I/O műveleteknek
CPU-tól független vezérlését.
IOP képes a memória és az operatív tár közvetlen
elérésére, CPU munkájának megszakítására, illetve
közvetlen programfeldolgozásra.
Az IOP közvetlen adatátvitelt tud megvalósítani a
memória, és egy vagy több operatív tár között úgy, hogy
közben nem fordul a CPU-hoz.
DMA
Direct Memory Access
DMA-t célszerű alkalmazni
• Nagy sebességű eszközök használatánál
• Nagyobb tömegű adat átvitele esetén
DMA lényege
Egyedi
adatforgalom
Operatív memória
Processzor
Nagy tömegű
adatforgalom
DMA-vezérlő
Merevlemez
A szükséges megszakítások száma nagyságrendekkel csökken,
így a processzor ideje jelentős mértékben felszabadul.
DMA megvalósítása
Memória
Adress
Data
MAR
AC
DC
IOAR
IODR
DMA
Request
IR
CPU
Vezérlő
egység
Vezérlő
egység
DMA
Acknowledgement
I/O egység
DMA megvalósítása
• DC (data count): Adatszámláló (még hány adatot kell átvinni)
• IODR:
Regiszter
• IOAR:
Címregiszter (következő adat címe)
DMA vezérléshez szükséges logika könnyen
elhelyezhető egy IC-ben, amit DMA vezérlő IC-nek
hívnak.
DMA felparaméterezése
•
•
•
•
•
•
•
•
Írás vagy olvasási műveletre van szükség
Szükséges I/O egységek címe
Memória-cím kezdő-értéke (honnan olvasunk/írunk)
Átviendő egységek jellege (bájt, félszó, szó…)
Olvasandó/írandó egységek száma
Sínhasználat módja (blok-sínciklusok, cikluslopások)
DMA csatornákhoz hozzárendelhető prioritás értékek
Átviteli kapcsolat választása. (Memóri-I/O, memóriamemória, I/O-I/O)
Ütemezés
Hosszú távú ütemezés
Feladat: Feldolgozandó folyamatok hozzáadása a
rendszerhez. (Ütemező szabályozza a rendszerben
feldolgozandó feladatok számát.)
Hosszú távú ütemezőt kötegelt rendszerekben használunk.
Itt a feldolgozásra átadott munka először egy várakozó
sorba kerül. Minél több folyamat várakozik, annál kisebb
az esélye, hogy egy folyamat processzoridőhöz jusson,
ezért szükséges a folyamatok számának limitálása.
Ha túl kevés a folyamat, akkor a központ egység
kihasználtsága nem lesz megfelelő.
Közép távú ütemező
A középtávú ütemező a swap funkció végrehajtásában
vesz részt.
Feladata: Részt vesz a folyamatok betöltésé a központi
memóriába, illetve azok eltávolításában (swap).
Rövid távú ütemező
Legfinomabb ütemezést végzi. Akkor aktivizálódik, mikor
egy folyamat futása megszakad, és újabb folyamat
futtatás válli lehetségessé.
Ilyen események:
• Időzítő generált megszakítás
• I/O tevékenység befejeződését jelző megszakítás
• Szolgáltatás kérése az operációs rendszertől
• Stb.
Memóriakezelés
Memóriakezeléssel kapcsolatos
elvárások
•
•
•
•
•
Relokáció
Védelem
Megosztás
Logikai szervezés
Fizikai szervezés
Relokáció
Multiprogramozott rendszerekben a memóriát több
folyamat közt osztjuk szét, így a programozó nem
tudhatja előre, hogy programja milyen memóriacímtől
kezdődően fog elhelyezkedni.
Továbbá egy háttértárra kimásolt folyamat image
visszatöltése se biztos, hogy ugyan arra a címre történik,
ahonnan kimásoltuk.
Védelem
A rendszerben futó összes programot meg kell védeni a
többi folyamattól. Mivel a programok dinamikus
memóriakezelési műveleteket végeznek, fordítási időben
a címellenőrzés nem oldható meg.
További gond, hogy a program kódterülete a program
számára csak olvasható, míg az adatterület írható, és
olvasható is.
Megosztás
Célja, hogy a folyamatok hozzáférhessenek egymás
memória területéhez.
Pl. ha egy programot többször futtatunk, felesleges,
hogy a kódterület kétszer is a memóriában legyen. Ekkor
a folyamatok közösen használják a kódterületet.
Ennél még bonyolultabb az írható/olvasható területek
megosztása…
Logikai szervezés
Programok szervezése általában eltér a fizikai memória
szervezéstől. Míg legtöbbször a fizikai memória lineáris
címterületű, addig a programok jól elhatárolható
modulokra oszthatók. (OO) Ezeknek mások a védelmi,
megosztási szabályai.
Fizikai szervezés
A mai rendszerek legalább kétszintű tárolási hierarchiát
használnak. Elsődleges memória a fizikai memória, ami
drága, de gyors, míg a másodlagos sokkal lassabb, de
olcsóbb. A központi egység csak az elsődleges memória
tartalmához tud hozzáférni.
A két szint közti adatmozgatás központi kérdés.
Virtuális memóriakezelés
tervezési szempontjai
•Betöltési politika
•Lapcserélési politika
•Rezidens lapkezelési politika
•Laptisztítási politika
•Terhelésszabályozás
Betöltési (fetch) politika
Meghatározza mikor kell új lapot betölteni a memóriába.
Igény szerinti betöltés:
hivatkozás történik.
Lapot akkor töltjük be, ha arra
Folyamat indításakor azonnal laphiba
lép fel, és az indítás utáni viszonylag rövid időszakban magas lesz a
laphibák száma. Idővel a laphibák száma csökken, és beáll egy
viszonylag alacsony értékre.
Előzetes betöltés:
Azokat a lapokat is betöltjük,
miket a betöltött lap igényel. Lényegesen gyorsabb, mert
egy diszkhez fordulásnál az elérési idő a legnagyobb. Hátránya a
nagyobb memóriaigény.
Lapcserélési (replacement) politika
Meghatározza új lap betöltésénél melyik lapot távolítsuk
el a memóriából.
Minden rendszerben van rezidens lapkészlet. (Pl. kernel)
A memóriaterületnek mit lefoglalnak, a tartalma nem
cserélhető.
Ezek a lapok nem szerepelnek a lapcserélési algoritmus
eldobható lapjai közt. (ezek az úgynevezett zárolt lapok)
Rezidens lapkészlet kezelése
Resident Set Management
Rezidens lapok száma
Operációs rendszernek el kell döntenie hány folyamatot,
mekkora hozzárendelt fizikai memóriaterülettel tölt be a
memóriába. A döntés szempontjai:
• Minél kevesebb memóriát rendelünk egy folyamathoz,
annál több folyamat lehet a memóriába. Nagyobb az
esélye, hogy az operációs rendszer futásra kész
folyamatot talál.
• Kevés lap esetén a laphibák száma túlzottan nagy lesz!
• Egy bizonyos méret után, a lapok száma meghaladhatja
a folyamat által használt memóriaterület méretét, így a
laphibák száma meglehetősen alacsony lesz.
Fix lapfoglalás
Programok betöltésekor meghatározzuk a hozzárendelt
lapok számát, és ez a futás végéig változatlan marad.
Lapszámot a programozó által megadott érték, vagy a
rendszergazda által megadott szabályok határozzák
meg.
Ha program futása során hiba lép fel, a folyamathoz
tartozó lapok valamelyikét el kell dobni, és e helyett új
lapot kell betölteni a memóriába.
Változó lapfoglalás
Egy folyamathoz rendelt lapok száma a folyamat futása
alatt változhat.
Ha egy folyamat rendszeresen produkál laphibákat, a
hozzá rendelt lapok száma viszonylag magas lesz, míg
ha kevés lapot használ, alacsony szinten marad.
Sokkal hatékonyabb megoldás, de használata során,
több tényezőt kell figyelembe venni, mint a fix lapfoglalás
esetén.
Lapcsere hatásköre
Lapcserére akkor van szükség, ha laphiba történik, és
nincs szabad fizikai lapkeret a rendszerünkben.
• Lokális lapcserélési politika:
Eldobandó lapot csak
azon folyamathoz tartozók közül választjuk, amely a
laphibát okozta.
• Globális lapcserélési politika: A rendszerhez tartozó
összes nem zárolt lap közül válsztunk.
Lokális lapfoglalási
politika
Globális lapfoglalási
politika
Fix lapfoglalási
politika
A cserélendő lap csak a Nem lehetséges
folyamathoz tartozók
közül választható
Változó lapfoglalási
politika
A cserélendő lap csak a Cserélendő lap az
folyamathoz tartozók
összes nem zárolt lap
közül választható
egyike lehet
Fix lapfoglalási, lokális lapcserélési
politika
Folyamatokhoz rendelt lapok száma annak
aktivizálásakor eldől, és futás során nem változik.
A nem módosuló döntések komoly hátrányai:
• Ha a lapszámot túl kicsire választjuk, igaz sok folyamat
fér el a memóriában, de azok folyamatosan laphibát
generálnak.
• Túl nagy lapszám esetén kevés folyamat fér el a
memóriában, ami sűrűbb swap folyat aktiválást igényel.
Változó lapfoglalási, globális
lapcserélési politika
Ez a legkönnyebben implementálható, legkisebb
algoritmusidejű megoldás. Több mai operációs
rendszerben is alkalmazzák.
Legnagyobb veszélye, hogy egy sűrűn laphibát generáló
folyamat lerombolhatja a többi folyamat lapjait is, és
könnyen kisajátíthatja a memóriát.
Változó lapfoglalási, lokális
lapcserélési politika
1.
2.
3.
A globális lapcserélés hátrányait szünteti meg. 3 fő
jellemzője:
Új folyamat indításakor adott számú lapot rendelünk
hozzá. A kezdő lapszámot a program fajtája, és a
rendszergazda döntései befolyásolják.
Laphiba esetén csak a folyamathoz tartozó lapok közül
választhatunk.
Az operációs rendszer időről időre átvizsgálja a
folyamatokat, és meghatározza, hogy a hozzájuk
rendelt lapok száma kevés, sok, vagy megfelelő.
Laptisztítási politika
A betöltés ellentéte. Feladata eldönteni, mikor kell a
megváltozott lapot visszaírni a másodlagos tárra.
Igény szerinti tisztítás: Csak akkor írunk ki lapot, ha a
lapcserélési algoritmus kiválasztotta eldobásra.
Előzetes laptisztítás: Lapcserélési igén előtt is visszaírjuk a
lapokat, így lehetséges kötegelt visszaírás.
Önmagában komoly hátrányaik:
• Előzetes laptisztításnál olyankor is visszaírunk lapot,
mikor az még változik. Így a műveletek egy része
felesleges
• Igény szerinti laptisztítás esetén két I/O műveletet
igényel, így hosszúra nyúlik.
Megoldás a kettő kombinálása!
Terhelésszabályozás
Memóriában tárolt folyamatok számával függ össze,
mely a multiprogramozás fokára is kihatással van.
Szabályozása a memóriakezelés szempontjából kritikus.
Kevés folyamatnál előbb-utóbb mind blokkolt állapotba
kerül
Túl sok folyamatnál alacsony az egyes folyamatok által
birtokolt lapok száma, amiért sok lesz a laphiba.
(trashing)
Lapozás és swap folyamat
összehasonlítása
A lapozás csak később terjedt el a memóriakezelési
technikákban.
Swap minden esetben egy teljes folyamatot másol, a hozzá
tartozó adatokkal nagy részével együtt.
Lapozás csak egy lapot távolít el, így kisebb az
erőforrásigénye.
Mai rendszerekben a lapozás az elterjedt, de használják
a swapot is kevés szabad lap esetén, mert azzal sokkal
több lapot lehet egyszerre felszabadítani.
Fájlkezelés
Alapfogalmak
Mező:
Az adat alapvető kezelési egysége. Egyetlen
értéket tartalmaz, ami típusával, és tárolási hosszával
jellemezhető. Sok fájlrendszer nem támogatja a változó
hosszú mezőket
Rekord:
Egymással összefüggő mezők összessége,
melyek a program számára összefüggő adategység
Fájl:
Azonos felépítésű rekordok összessége.
Egyedi azonosítóval rendelkeznek. Létrehozhatjuk,
törölhetjük, és a hozzáférési kötöttségek is ezen a szinte
érvényesülnek.
Adatbázis: Összefüggő adatok gyűjteménye. (fájlok
gyűjteménye) Néhány operációs rendszer támogatja az
adatbázisok kezelését.
Fájlkezelő rendszerekkel
kapcsolatos elvárások
• Felhasználók adatkezelési igényinek kielégítése
• Fájltartalom érvényességének biztosítása
• Fájlműveletek teljesítményének optimalizálása
• Különféle I/O eszközök kezelése
• Adatvesztés és sérülés veszélyének minimalizálása
• Egységes I/O interfész rutinok nyújtása
• Több felhasználó egyidejű kiszolgálása
Általános rendszer esetén:
• Fájlok létrehozása, törlése, tartalmának változtatása
• Fájlokhoz való kontrollált hozzáférés
• Tulajdonos, és jogok kezelése
• Hozzáférés szimbolikus nevek segítségével
Fájlkezelő rendszerek felépítése
•
•
•
•
Egyaránt kell foglalkozniuk a magas absztrakciós szintű
fájlokkal, és az alacsony szintű lemezblokkokkal.
Legcélszerűbb megoldás a rétegelt felépítés, ahol a
különböző rétegek más-más absztrakciós szinten látják
el a fájlkezelést:
Eszközmeghajtó programok (Legalsó szinten
helyezkednek el, és a perifériákat kezelik)
Adatblokkok kezelés (Következő szint, itt még nem
foglalkozunk a tartalmával)
Fájlrendszer kezelő réteg (A fájlrendszer felépítését
ismeri)
Különböző tárolási módszer kezelő modulok
Fájlszervezés
A fájlszervezés a fájl és a rekordok kapcsolatát
határozza meg. Logika a felhasználó hozzáférésének
módját, fizikai a tárolás módját határozza meg.
Szervezési mód meghatározásának szempontjai:
• Gyors hozzáférés a hatékony adatelérés érdekében.
• Fájlok könnyű aktualizálásának lehetősége
• Hatékony tárolási mód, alacsony költségekért
• Egyszerű karbantarthatóság
• Megbízhatóság
Könyvtárak
Fájlrendszerekhez minden esetben tartozik
könyvtárrendszer. A könyvtárak információkat tárolnak a
bennük található fájlokról. Ezeket az operációs rendszer
fájlokként tárolja, de ezekhez csak a rendszernek van
hozzáférési joga.
Könyvtárakban tárolt információ a
fájlokról
Alapvető információk
• Fájl neve:
Könyvtáron belül egyedinek kell lennie
• Fájl típusa:
pl. szöveges, könyvtár…
• Fájl szervezése: Különböző szervezési módoknál
Címzési információk
• Eszköz:
Az eszközt azonosítja, amin a fájl van
• Kezdőcím:
Kezdőcím a másodlagos tárolón
• Használt terület: Aktuális mérete
• Lefoglalt terület: Legnagyobb lehetséges terület
Könyvtárakban tárolt információ a
fájlokról
Hozzáférést szabályozó információk
• Tulajdonos:
Ő hatásköre a hozzáférés beállítása
• Hozzáférési információk: pl. jogosult felhasználók azon.
• Engedélyezett tevékenység: Végezhető műveletek
Használati információk
• Létrehozás dátuma
• A létrehozó felhasználó azonosítója
• Utolsó olvasás ideje, ki „tette”
• Utolsó módosítás ideje, azonosító
• Utolsó backup ideje
• Aktuális használat: Van-e része csak a diszk cache-ben..
Könyvtárak struktúrája
Fájlok egyszerű tárolása: Könyvtár fizikailag szekvenciális
fájlként jelenik meg, ahol a fájlok neve a kulcs. Régi, egy
felhasználós rendszereknél használják
Kétszintű könyvtárrendszer: Felső szinten a felhasználók
helyezkednek el, míg egyel lejjebb a felhasználókhoz
tatozó fájlok. Ez a rendszer se segíti a felhasználókat
fájljaik szervezésében.
Fa struktúrába szervezett könyvtárrendszer: Tárolhat
fájlokat, és újabb könyvtárakat is. Minden könyvtárhoz
egy saját szekvenciális fájlt rendelünk.
Névkezelés
Az egyszerűség érdekében a felhasználók, a fájlokat
szimbolikus nevükön keresztül érik el.
Fa struktúrájú könyvtárszerkezeteknél ez jelentősen
leegyszerűsödik.
Hogy ne kelljen minden hivatkozáskor leírnunk a teljes
fájl nevet, bevezették a munkakönyvtárat, és az abszolút
illetve relatív hívás fogalmát.
Hozzáférési jogok
Fájl – felhasználó kapcsolat lehetséges viszonya:
• Nincs:
Nem szerez róla tudomást
• Tudás:
Nincs hozzáférési joga, de látja
• Végrehajtás: Futtathat belőle programot
• Olvasás: Tetszőleges módon olvashatja a tartalmát
• Hozzáfűzés: Nem változtathat, de hozzáadhat
• Változtatás: Adatokat változtathat
• Védelem változtatása: Hozzáférési jogok változtatása
• Törlés:
Törölheti a fájlrendszerből
Jogok megadhatók: Adott felhasználónak, felhasználói
csoportnak, minden felhasználónak
Másodlagos tároló kezelése
Lemezterület hozzárendelése
fájlokhoz
A lemezterület fájlokhoz való hozzárendelése többféle
kérdést vet fel:
1.
2.
3.
A fájl létrehozásakor lefoglaljuk-e a fájl által igényelt
maximum adatblokk méretét?
A fájlokhoz rendelt adatterület egy vagy több
összefüggő területből áll. Területek mérete,
darabszáma mind eldöntendő kérdés.
Milyen módon tároljuk a fájlok és adatblokkok
összerendelését leíró adatokat?
Előzetes helyfoglalás vs. dinamikus
helyfoglalás
Előzetes helyfoglalás esetén a fájl létrehozásakor meg
kell adni annak maximum méretét. Ez sok esetben igen
nehéz, vagy éppen lehetetlen feladat, ezért a dinamikus
helyfoglalás mindenképpen egy sokkal rugalmasabb
megoldást jelent.
A fájlokhoz rendelt adatterület(ek)
mérete
Adatterület hozzárendelés vizsgálatakor fontos szempont:
1. Összefüggő blokkok lefoglalása jelentősen növeli a
teljesítményt, kifejezetten soros feldolgozás esetén.
2. Sok kis darab esetén a nyilvántartólista meglehetősen
terjedelmes lesz.
3. Fix méretű darabok használata jelentősen egyszerűsíti
a területfoglalási algoritmust.
4. Változó méretű, vagy kis méretű darabok használata
csökkenti a lemezterület kihasználatlan részeinek
számát.
A fájlokhoz rendelt adatterület(ek)
mérete
Előző szempontokat figyelembe véve, következő
megoldások lehetségesek:
• Változó, nagy méretű, összefüggő darabok: Ez a
megoldás nyújtja a legjobb teljesítményt. A változó méret
a kihasználatlan lemezterületek minimumon tartására
szolgál. Lefoglalt terület újrahasznosítása körülményes.
• Blokkok: A kicsi fix méretű darabok biztosítják a
legflexibilisebb megoldást. Ez a fajta tárolási mód nagy,
összetett nyilvántartási listát igényel.
Fájlfoglalási metódusok
Szükség van egy fájlfoglalási algoritmusra, amely
meghatásozza, hogy konkrét esetben melyik blokkokat
foglaljuk le.
Folyamatos foglalási algoritmus: Egyetlen összefüggő
blokk készletet rendelünk a fájlhoz, változó méretű
foglalási darabok alkalmazásával. Bővítés esetén a
teljes területet újra lefoglaljuk. (folyamatos bővítés, felszabadítás)
Láncolt helyfoglalási algoritmus: Helyfoglalás blokk szinten
történik. Minden egyes blokk a következőre mutat.
Támogatja a dinamikusan növekvő fájlokat, de blokkon
belüli keresés nehéz.
Indexelt helyfoglalás: Címeket független index táblázat
tartalmazza. Fix tábla hátrányinak kiküszöbölésére
többszintű táblákat használunk.
Üres terület kezelése
Üres blokkok nyilvántartása elengedhetetlen a rendszer
működésének szempontjából.
A lemezfoglalási algoritmusok számára nélkülözhetetlen
ennek ismerete.
Lemezfoglalási táblák kezelésére háromféle technikát
ismerünk:
• bit táblák (bitvektor minden bitje egy lemezblokkhoz tartozik. tömör
táblát biztosít)
• láncolt tárolás (helyfoglalási módszerekhez hasonlít)
• indexek (helyfoglalási módszerekhez hasonlít)
Folyamatközti szinkronizáció
és kommunikáció
Versenyhelyzetek
Sok operációs rendszer lehetővé teszi együtt dolgozó
folyamatoknak erőforrások (fájl, memória) egymás közti
megosztását.
Klasszikus probléma: Printer spooler működése. A egy
folyamat ki szeretne nyomtatni egy fájlt, akkor annak
nevét elhelyezi a printer spooler következő üres
sorában. A spooler bejegyzéseit szinonimákkal
azonosítjuk. A rendszer továbbá két osztott változót
használ:
• out: következő nyomtatandó fájl helye
• in: következő szabad bejegyzés helye
Példa: Printer spooler
Feltételezésünk szerint a 0-3 hely üres (rendszer
kinyomtatta), 4-6 viszont kinyomtatandó fájl nevét
tartalmazza. Ebben a helyzetben A és B folyamat egy
időben új bejegyzést szeretne adni a rendszernek.
Spooler bejegyzések
A folyamat
B folyamat
4
5
6
7
8
fájl.a
fájl.r
fájl.x
in: 7
out: 4
Legrosszabb esetre gondolva a következő történhet:
Az A folyamat kiolvassa az in változó értékét, és mielőtt
még megváltoztathatná, az ütemező átadja a vezérlést B
folyamatnak, ami szintén ugyan azt az értéket olvassa ki.
Természetesen utána megnöveli in értékét. Mikor a
vezérlés visszakerül A-hoz, az in értékét a saját
változójából veszi, ahova azt eltárolta kiolvasáskor.
Ekkor mind a két program a spoolernek ugyan abba a
sorába helyezi el a fájl nevét.
Az ehhez hasonló problémákat, ahol a folyamatok
eredménye az ágymáshoz képesti ütemezéstől is függ,
versenyhelyzetnek nevzzük.
Kritikus programrészek
•
•
•
•
Versenyhelyzet kialakulásának megakadályozásához
szükséges feltételek:
Egy időben csak egy folyamat futtathat a kritikus
régiókhoz tartozó kódot.
A processzorok száma vagy sebessége nem
befolyásolhatja a működés végeredményét.
A kritikus szekcióján kívül futó program nem blokkolhatja
más folyamatok végrehajtását.
Egyetlen folyamatnak sem kell örökre várakoznia, hogy
végrehajthassa a kritikus szekcióhoz tartozó utasításait.
Megszakítások tiltása
A legegyszerűbb megoldást jelenti, ha a kritikus
szekcióba belépő folyamat első utasítása a megszakítás
tiltása. Ha a megszakításokat letiltjuk, a rendszeróra se
jut érvényre, így az ütemező se.
Ez a megoldás a gyakorlatban használhatatlan, ugyanis
egyetlen hibás felhasználói folyamat is lebénítaná a
rendszert!
Az operációs rendszer kódjában azonban gyakran
használják, bár jelentősége mára erősen csökkent.
Szemaforok
Megoldás lényege egy számláló változó, melyet két
művelet segítségével változtatunk. Down művelet eggyel
csökkenti, míg az up eggyel növeli az értékét. Down
művelet mindaddig várakozik, míg a számláló értéke 0.
Az up és down műveletek autonómak, tehát futásuk nem
szakítható meg.
A szemaforokat kizárólagos hozzáférés megvalósításán
túl, szinkronizációs célokra is felhasználhatjuk.
Üzenet továbbítás
Folyamatok közti kommunikáció elterjedt formája.
Két primitív műveletet használ:
SEND:
Üzeneteket továbbít
RECIVE:
Üzeneteket fogad
Valós idejű rendszerek
Feladatainak sikeressége nem csak a végeredménytől
függ, hanem attól is, hogy az egy adott időkorláton belül
érkezett-e meg.
Hard real time rendszerek: Az időkorlát túllépése
semmilyen körülmények közt sem engedhető meg.
Soft real time rendszerek: Bizonyos mértékű túllépés
engedélyezett.
Ez utóbbit már a modern általános operációs rendszerek
közt is találni.
Probléma: Kernel kód klasszikusan nem szakítható meg.
Ez real time rendszer esetén nem járható. Folyamatok
prioritása általában magas, és állandó.
Kernelek fajtái
A klasszikus kernelek egyetlen állományból álló statikus,
monolitikus képződmények voltak, a teljes kód kernel
módban futott. Idővel két irányba történt előrelépés:
• Továbbra is kernel módban futó kód nem egyetlen fájlból
áll, hanem egy konfigurációs állomány alapján a boot
során dinamikusan áll össze.
• A döntést és végrehajtást külön választjuk, kis méretű
mikrokernel feladata a végrehajtás lesz, a döntés user
módban futó modulokra bízzuk.
Párhuzamos és elosztott
rendszerek
Gazdaságosság
Elterjedt processzorok ár/teljesítmény aránya jobb, mint
a csúcsprocesszoroknak.
Sebesség
Az összekapcsolt részek össz. teljesítménye sokszorosa
lehet egy egyedi nagyteljesítményű rendszernek
Belső
elosztottság
Bizonyos alkalmazások magukban tartalmazzák a
párhuzamosság lehetőségét.
Rendelkezésre
állás
Ha egy részegység összeomlik a rendszer
működőképes marad
Növekedés
lehetősége
A bővítés kis lépésekben végezhető el
Kialakítás lehetőségei
Párhuzamos és elosztott
rendszrek
Multiprocesszor
(osztott memória)
BUS alapú
kapcsolt
Multicomputers
(privát memória)
BUS alapú
kapcsolt
• Multiprocesszor: Könnyű programozni, de nehezen
implementálható (nagyteljesítményű cache esetén is
max. 64 processzor)
• Multicomputer: Nehéz programozni (nincs rá igazán
metódus), de könnyen implementálható.
Multiprocesszoros rendszerek
Jelentős sebességnövekedést jelent, hogy a látszólagos
párhuzamosságot valós váltja fel.
A nagy gonddal megtervezett hardveren kívül az
operációs rendszernek is alkalmasnak kell lennie a
multiprocesszoros rendszer kezelésére.
• Egyszerre csak egyetlen processzoron futhat kernel
mód, a többin csak felhasználói folyamatok.
• Egyszerre csak egyetlen processzor hajthat végre
bizonyos operációs rendszeri funkciót (pl diszkművelet)
• Egyszerre több processzor is futtathatja ugyan az a
kódot, de csak különböző adatterülettel. Különböző
lemezeken egyszerre több diszkművelet is futhat.
Multicomputerek
Több független számítógép összekapcsolásával jön
létre. Szűk keresztmetszet a hálózat, ami sokszor
lassabb, mint a belső buszok.
Implementáció egyik fontos kérdése, hogy centralizált,
vagy elosztott rendszer legyen. Centralizált rendszerek
sokkal hatékonyabbak, de egy központi gép létezése
pont a rendelkezésre állásra van rossz hatással