A hétszintű logikai modell:
|
Magas szintű nyelvek
(Pascal, C) |
Alacsony szintű
nyelvek (Assembly) |
Operációs rendszer
Operációs rendszer |
Hardver (Memória,
busz, perifériák) |
CPU (mikroprogram,
regiszterek) |
Logikai áramkörök (kapuk,
összeadó) |
Kötegelt feldolgozás:
A kártyakötegek utasításait
egymás után hajtotta végre a számítógép.
Az operációs rendszerek
feladat:
1. Eszközkezelők (Device Driver)
2. Megszakításkezelés (Interrupt Handling)
3. Rendszerhívás, válasz (System
Call, Reply)
4. Erőforrás kezelés (Resource
Management)
5. Processzorütemezés (CPU Scheduling)
6. Memóriakezelés (Memory Management)
7. Állomány- és lemezkezelés (File
and Disk Management)
8. Felhasználói felület (User
Interface)
Többprocesszoros rendszerek:
Szimmetrikus
esetben minden processzor egyenértékű, mindegyiken az operációs rendszer egy
másolata fut, minden folyamatot bármelyik processzorra rá lehet bízni.
Aszimmetrikus
rendszereknél az egyes processzorok feladata előre rögzített, például az egyik,
lehet a főnök, a másik végezheti a lebegőpontos számításokat, a harmadik
kezelheti a perifériákat és így tovább.
Elosztott rendszerek: Több processzor szolgálatait úgy is igénybe lehet venni, ha azok
egymással csak laza kapcsolatban vannak (loosely coupled systems). Minden processzornak saját memóriája van,
saját perifériáikkal rendelkezhet, tehát egy önálló számítógép. Az elosztott
rendszerek tipikus példái a számítógép-hálózatok.
Alapfogalmak:
A program egy algoritmust
megvalósító utasítások sorozata, függetlenül attól, hogy azok magas szintű
nyelven, vagy akár bináris gépi kódban van ábrázolva és tárolva.
A folyamat (task,
process) egy éppen végrehajtás alatt
lévő program. Egy program végrehajtása több folyamatot is létrehozhat, ugyanaz
a program több folyamat formájában is megjelenhet.
A folyamat tehát egy “életre kelt” program.
A folyamatleíró blokk (Process Control Block-PCB, Task State Segment-TSS) azonosítja
egyértelműen a folyamatot, tartalmazza a folytatáshoz szükséges adatokat, mint
pl.: a folyamat azonosítóját; a programszámláló állását; a folyamat állapotát;
a regiszterek tartalmát; a használt perifériák és állományok jellemzőit és a
folyamathoz tartozó memóriaterületek adatait.
A Folyamatok, olyan programok, melyeknek van
folyamatleíró blokkja.
A szálak (thread) a folyamatokhoz nagyon hasonlítanak, de
nyilvántartásukhoz sokkal kevesebb adat elegendő, gyakran csak az
utasításszámláló és a regiszterek tartalma szükséges.
Erőforrások:
Erőforrásnak nevezünk minden olyan dolgot, amely egy folyamat
futásához szükséges: (a memóriaterület és a processzoridő, a ki- és bemeneti
eszközök, egy állomány vagy egy postafiók). Két csoportja: elvehető (megszakítható, preemptive):
(processzor és a memória), nem elvehető
(nem megszakítható, non-preemptive): (állományok,
nyomtatók, mágnesszalagos egységek).
Megszakítható (preemptív) erőforrás: A folyamatoktól az erőforrás az folyamat vagy
erőforrás károsodása nélkül elvehető.
Nem megszakítható (non-preemptív)
erőforrás: Az erőforrás használat
félbeszakítása esetén a folyamat vagy erőforrás sérülhet!
Operációs rendszer - Erőforrás szemlélet: a folyamatok egy olyan csoportja, amely a felhasználói
folyamatok között elosztja az erőforrásokat.
Operációs rendszer - Felhasználói
szemlélet: a folyamatok
egy olyan csoportja, amely megkíméli a felhasználókat a hardverkezelés
nehézségeitől és kellemesebb alkalmazói környezetet, biztosít.
A rendszermag folyamatok
sokasága, melyek a rendszer bekapcsolásakor jönnek létre, és futásuk a rendszer
leállításáig tart. A kernel hozza létre a felhasználói folyamatokat, elkészíti
a folyamatleíró blokkot, memóriaterületet biztosít a végrehajtandó kódnak,
gondoskodik a processzor idő elosztásáról, a folyamatok sorrendjének
meghatározásáról.
Rendszerhívások segítségével történik a felhasználói folyamatok és az
operációs rendszer magja között a kommunikáció.
A processzorok üzemmódjai:
Felhasználói üzemmód (user mode), melyet a felhasználói programok használnak.
Rendszer üzemmód (kernel mode, privilegized mode,
system mode, supervisor mode), melyet csak az operációs rendszer használhat.
Megszakítások típusai:
- Megszakítás (Interrupt): Egy
periféria, mely jelezheti így egy régen várt adat megérkezését, de megszakítást
okoz a rendszer órája is.
- Kivétel (Exception): A
kivételeket maga a processzor generálja, ha valamilyen hibát, például nullával
való osztást, kellene végeznie, vagy a címszámításnál tapasztal valamilyen
komoly hibát.
- Nem maszkolható megszakítás (Non Maskable Interrupt): súlyos
hardver hiba, például a memória hibája, vagy a tápfeszültség kimaradás esetén
keletkezik.
- Csapda (Trap): olyan
szoftver eredetű megszakítás, amely akkor keletkezik, ha egy felhasználói
folyamat közvetlenül az operációs rendszerhez fordul (rendszerhívás), vagy
olyan utasítást próbál végrehajtani, amihez nem lenne joga (önálló
hardverkezelés).
Fájl = Állomány:
1) Az adatok egy olyan csoportja, melyre együttesen, egy
névvel hivatkozhatunk.
2) Logikailag összetartozó adatok halmaza névvel ellátva.
Fájltípusok:
I.
1.
Ideiglenes
állományok,
2.
Felhasználói
állományok,
3.
Adminisztratív
állományok
II.
1. Adatfájlok köre,
2. Könyvtárfájlok köre.
A rendszermag azon részét,
amely a fájlokkal kapcsolatos műveleteket végzi, fájlkezelőnek nevezzük.
Közvetlen hivatkozások esetén a teljes elérési
útvonal meg van adva, ez alapján juthatunk el a keresett fájlhoz.
Közvetett hivatkozások:
Közvetett hivatkozásokról (láncolás, link, alias) akkor
beszélünk, ha egy fájlhoz nem csak egy elnevezés segítségével juthatunk el,
tehát például egy programot a különböző felhasználók, különböző neveken
érhetnek el.
A merev
láncolás (hard link) esetén tulajdonképpen
két vagy több független, egyenértékű fájlról beszélhetünk, melyek kizárólag a
fájl fizikai elhelyezkedésére vonatkozó információkban kell, megegyezzenek.
A lágy
láncolás (soft link) a fizikai cím helyett a
hivatkozott fájl nevét tartalmazza, lehetővé téve azt, hogy a fájl akárhol is
előfordulhasson. A lágy láncolás további előnye, hogy az adatállományok
tömörítése, vagy alapvető, fizikai címeket is, érintő átstrukturálása esetén is
működőképes marad.
Katalógus nélkül:
Soros hozzáférésű média, például mágnesszalag esetén,
ahol a blokkok mérete sem állandó, nehéz elképzelni könnyen kezelhető, a fájlok
alapvető adatait tartalmazó katalógus állományt.
Egyszintű katalógus:
Ha egy rendszer csak egyetlen, rendszerszintű
katalógust kezel (manapság ez már kuriózum), egyszintű katalógusról beszélünk.
Kétszintű katalógus:
Egy második szint bevezetése sokkal áttekinthetőbb
rendszert eredményez, a legtöbb feladat így már megoldható. Minden felhasználó
kaphat egy saját katalógust, míg a közösen használt fájlok külön katalógusba
kerülhetnek. Az egyes katalógusokat, a katalógusok katalógusa, a fő (master) vagy más néven gyökér (root) katalógus fogja össze. Mivel ebből eszközönként csak
egyetlen egy van, nem is szükséges neki nevet adni.
A névtelen gyökér katalógust követi az első törtvonal,
következik a katalógus neve, majd újabb törtvonal után a fájl neve.
Többszintű (hierarchikus) fájl rendszer:
A kétszintű rendszerről nem nehéz általánosítani a
többszintű, többnyire fa struktúrát alkalmazó rendszerekre. A hierarchikus
rendszer kiindulópontja a gyökérkönyvtár, mely tartalmazhat fájlokat és
alkatalógusokat (subdirectory), ez utóbbiak szintén
tartalmazhatnak fájlokat és alkatalógusokat és így tovább.
Abszolút
hivatkozás: fájl megadásának az a
módszere, ahol a gyökér katalógustól kezdődően az összes közbülső
katalógus nevének felsorolása után jutunk el a fájlhoz.
Relatív
hivatkozás: A fájl megadásának az a módszere, ahol a gyökér
katalógus (vagy szülő könyvtár) helyett az aktuális katalógus a kiinduló pont.
Jogosultságok típusai:
Olvasás
(Read - R)
Írás
(Write - W)
Létrehozás
(Create - C)
Végrehajtás
(eXecute - X)
Törlés
(Erase - E)
Jellemzők
módosítása (Modify - M)
Hozzáférés
módosítása (Access control - A)
Szabad helyek nyilvántartása:
Folytonos: first, worst, best
Láncolt: FAT
Indexelt: INODE
Folyamatleíró/vezérlő blokk (Process Control Block - PCB):
Fájl leíró táblázatát (file control block - FCB)
Az erőforrás kezelő (resource manager) a
rendszermag azon része, amely az erőforrások elosztásáért és lefoglalásáért
felelős.
Erőforrások:
– Erőforrás foglalási gráf
– Holtpont, Kiéheztetés
Holtpontkezelő stratégiák
– Megelőzés
– Felszámolás
– Közösen használt erőforrások
problémái
HOLTPONT – Deadlock: Több folyamat egy olyan erőforrás felszabadulására
vár, amit csak egy ugyancsak várakozó folyamat tudna előidézni.
KIÉHEZTETÉS – Starvation:
Egy folyamat - az
erőforrás-kezelő stratégiája miatt - beláthatatlan ideig nem jut erőforráshoz.
A I B II
Az „A” folyamat igényli A „B” folyamat birtokolja
az „I” erőforrást a „II” erőforrást
Erőforrás
foglalási gráf
Az erőforrások lefoglalása:
Statikus lefoglalás
– a folyamat indulása előtt
lefoglalja az összes szükséges erőforrást
•
Pazarló
•
Kiéheztetés
•
Ha egyszer elindult, erőforrás korlát miatt nem áll le
Dinamikus lefoglalás
– a folyamat csak akkor
igényel erőforrást, amikor éppen szüksége van rá
•
Hamar elindulhat egy folyamat, de versenyzés miatt lassabban fut(hat)
•
Teljesítőképesség, átbocsátóképesség nő
•
Nagy probléma: holtpont
Holtpont kialkulás
lehetőségének feltételei:
1. Kölcsönös kizárás van
2. Várakozás közben lekötés
történik
3. Rablás nincs
4. Ciklikus várakozás van
I
Igényli Birtokolja
II
Igényli
Birtokolja
Holtpont megelőző stratégiák:
→ Egyetlen foglalási lehetőség:
• Csak az a folyamat foglalhat
erőforrást, amelyik egyetlen egy fölött sem rendelkezik.
→ Rangsor szerinti 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 sorszáma.
→Bankár algoritmus:
A bankár algoritmus úgy kerüli el a
holtpont kialakulásának lehetőségét, hogy a rendszert mindig biztonságos
állapotban tartja.
Közvetlen
memória átvitel (Direct Memory Access -
DMA):
DMA esetén a memória és a
periféria közötti átvitel a processzortól függetlenül, önálló vezérlő
segítségével történik.
Szabad
helyek nyilvántartása:
- Folytonos:
first, worst, best
1 legelső alkalmas (First Fit) – leggyorsabb, de
pazarló.
2 legjobban illeszkedik (Best Fit) – lassú, de
gazdaságos hely kiosztás.
3 legrosszabbul
illeszkedik (Worst Fit) – egyszerű nyilvántartás.
- Láncolt:
FAT
A
táblázatnak ugyanannyi eleme van, mint ahány blokk a lemezen és minden rekesz
tartalma a fájl következő blokkjára mutató sorszám, vagy 0.
- Indexelt:
INODE
Óriási táblázat helyett sok
kicsit használunk, minden állományhoz külön. A katalógus tartalmazza a fájlhoz
tartozó kicsi táblázat címét, a kicsi táblázat pedig a fájl blokkjainak a
címét.
A RAID 0 mindenféle redundancia vagy
paritás nélkül csíkozza az adatokat a meghajtókon.
Az RAID 1-es szint tükrözi (mirror) az
adatokat, azaz az adatok duplikálva vannak.
A RAID 2 ajánlás már használja a csíkozást, emellett külön
meghajtókat használnak paritás információk tárolására Hamming-kód segítségével.
A gyakorlatban nem használják.
A RAID 3-4 szintén csíkozza a
meghajtókat, és egyetlen kitüntetett lemezre írja a paritásadatokat. A két
szint közti különbség, hogy a 3-asnál kisméretű csíkokat használnak, míg a 4-es
szint nagyméretű blokkokkal dolgozik.
A RAID 5 már nem csak az adatokat, hanem a paritás információkat is
csíkozva helyezi el a lemezeken.
A RAID 6 csupán az 5-ös szint kibővítése: nem csak soronként, hanem
oszloponként is kiszámítja a paritást, így kétszeres meghajtó meghibásodás sem
jelent problémát a rendszer egészére nézve.
A RAID
A RAID
Lemezütemezési algoritmusok:
Sorrendi
kiszolgálás (First Come First Served -
FCFS)
Legkisebb
elérési idő módszere: (Shortest Seek
Time First - SSTF)
Pásztázó (Scan, Look)
Egyirányú
pásztázás (Circular Scan, C-Scan)
Összefoglalás:
•
Fizikai lemezkezelés:
– Ütemezés: FCFS, SSTF, Scan változatok
– Logikai-fizikai cím konverzió
– Blokkméret optimalizálás
•
Tömörítés:
– RLE, DE, Huffmann
•
Adatvédelem:
– Szoftver: paritás, CRC
–
Hardver: tükrözés,
RAID
Erőforrások csoportosítása:
1).
-Hardver erőforrások,
-Szoftver erőforrások.
2).
-Hagyományos,
-Operációs rendszer által létrehozott
erőforrások.
3).
-Megosztható (sharable) és megszakítható, elvehető (preemptive).
-Nem megoszthatók (non-sharable) és nem
megszakíthatók, nem elvehetők (non-preemptive).
Az erőforrás
kezelő (resource manager) a rendszermag azon része, amely az erőforrások
elosztásáért és lefoglalásáért felelős.
P és V primitívek:
Primitív:
megszakíthatatlan (oszthatatlan) művelet
P primitív: FOGLALTTÁ ÁLLÍTÁS
–
–
–
–
V primitív: SZABADDÁ ÁLLÍTÁS
– A szemafor szabadra állítása
Bináris
szemaforról beszélünk, akkor, ha a
vezérlés folyamatosan megy le.
Osztatlan
művelet esetén az első négy lépést egyben végzi az operációs rendszer, mert így
egy másik (majdnem ugyanabban az időben érkező) folyamat már a termelő által
beállított tilos jelzést találja.
Folyamatok állapotai:
A
várakozási sorok megfelelnek a folyamatok állapotainak.
•
FUTÁSRA KÉSZ (már csak a CPU hiányzik)
–
Megszakított (pl. kivétel, I/O művelet)
•
FUT
•
VÁRAKOZIK (további erőforrásra)
–
Holtponti (ha reménytelenül vár valamire)
• FELFÜGGESZTETT (erőforrás
nélkül, csak PCB)
Processzorütemezés:
Ütemezési szintek:
1. Várakozási
idő (waiting time, missed
time): megadja, hogy a folyamat mennyi időt töltött tétlen
várakozással.
2. Átfutási
idő (penalty ratio): a folyamat
érkezésétől annak befejezéséig eltelt idő.
3. Válaszidő
(response
time) azaz idő, ami a folyamat rendszerbe
állításától az első futás kezdetéig telik el.
Előbb jött, előbb fut (First Come First
Served - FCFS):
A
folyamatok érkezési sorrendben futhatnak.
Legrövidebb előnyben (Shortest Job First - SJF):
A
folyamatok közül először a legrövidebb fut.
Körben járó algoritmus (Round Robin - RR):
Minden
folyamat egy adott időszeletig futhat, majd újra sorba kell állnia.
Memóriakezelés
A valóságos és a virtuális
tárkezelés.
Rögzített címzés:
Az
operációs rendszer állandó területen, például a memória legelső, legkisebb című
rekeszein helyezkedett el, a felhasználói program használhatta az operációs
rendszer végétől egészen a legnagyobb címig az egész memóriát.
Áthelyezhető címzés:
A bázisregiszter
tartalmazza a program kezdő- vagy más néven báziscímét. A processzor
minden memória műveletnél automatikusan hozzáadja a bázisregiszter tartalmát az
utasításban szereplő címhez és az így kapott összeg lesz az a fizikai
memóriacím, amihez fordul.
Átlapoló (overlay) módszer:
Lényege:
hogy a memóriában állandóan csak a programrészek közötti átkapcsolást végző
modulnak kelljen tartózkodnia, a többiek közül hol az egyik, hol a másik rész
került a memóriába, a többi a háttértáron várakozott.
Tárcsere (swapping):
A memóriatartomány ki-be
másolását tárcserének (swapping) hívjuk,
a másolás eredményeképpen keletkező állományt cserefájlnak (swap file).
Lapozás (paging):
Ha
a rendelkezésre álló operatív memória területet egyforma és viszonylag
kisméretű egységekre osztjuk, úgynevezett lapokra, akkor egy folyamat memóriában
való elhelyezésekor most már nem szükséges az, hogy akkora összefüggő szabad
memóriaterület álljon rendelkezésre, amennyit a folyamat igényel, hanem elég
az, hogy összességében legyen ennyi hely. Az operációs rendszer minden egyes
folyamat betöltésekor létrehoz a folyamat számára egy laptáblát, mely a logikai
lapokhoz hozzárendeli a fizikai lapot.
Összegzés:
Áthelyezhető: nem mindig ugyanoda töltődik
Átlapoló
(overlay): nem minden
rész kell egyszerre
Tárcsere
(swapping): memóriakép
a háttértáron
Lapozás: nem folytonos elhelyezés
Laphiba (page fault)
Ha a folyamat olyan memóriacímre hivatkozik, ami olyan
lapon található, amely nincs betöltve az operatív memóriába.
Nem igazi hiba! Virtuális tárkezelésnél természetes!
Lapkiosztási elvek:
1.
egyenletes
lapkiosztás: minden folyamat ugyanannyi kerettel gazdálkodhat.
2.
arányos
lapkiosztás: egy folyamat minél nagyobb virtuálismemória-területet használ,
annál több keretet kap.
3.
prioritásos
elosztás: magasabb prioritású folyamatok több lapot kapnak.
Lokális elosztás: a rendelkezésre álló lapok száma egy folyamat számára
a futás során állandó.
Globális lapkiosztás: Az operációs rendszer csak a minimálisan szükséges
lapokat osztja ki, a fennmaradó szabad lapokból a folyamatok dinamikus igényeit
elégíti ki.
Vergődésnek (trashing) nevezzük azt a jelenséget, ha egy folyamat olyan
kevés laphoz jut, hogy csaknem mindig laphibát okoz. Fut ugyan, de nagyon
lassan.
Lapcsere stratégiák:
1.
OPT (Optimal) - Optimális
stratégia: azt a lapot kell
lecserélni, amelyre a legkésőbb lesz szükség.
2.
FIFO (First In First Out) - Előbb
jött, előbb megy: azt a lapot kell
lecserélni, amely legrégebben van bent a memóriában.
3.
LRU (Last Recently Used) - Legrégebben használt: azt a lapot kell lecserélni, amelyre legrégebben
hivatkozott a folyamat.
4.
SC (Second Chance) - Második esély: az eljárás a FIFO elven alapul, egy kis kiegészítéssel. A laptáblába
egy paritásbitet helyeznek el, mely jelzi, hogy a lap éppen használatban van-e.
Így elkerülhetjük, hogy olyan lap kerüljön kilapozásra, melyre még a folyamatnak
szüksége volna.
5.
Mostanában nem használt - Not Used Recently (NUR): LRU alapú, jelző bittel kiegészítve, mely jelzi, hogy a lap
használatban van-e. A mostanában kifejezés tehát azt takarja, hogy az előző
lapcsere óta használták, vagy nem használták a kérdéses lapot.
Az asszociatív tárat gyakran
címszámítást kikerülő tárnak (Translation Lookaside Buffer -
TLB) nevezik.
A TLB tetején mindig a
legutoljára használt lap adatai lesznek, míg legalul a legrégebben nem használt
lap adatai találhatók meg.
Szegmentálás:
1.
Védeni kell egy
folyamat különböző logikai egységeit egymástól.
2.
Védeni kell a
felhasználói folyamatokat egymástól, de biztosítani kell közöttük az igényelt
kommunikáció lehetőségét.
3.
Védeni kell az
operációs rendszert a felhasználói folyamatoktól.
A szegmensleíró tábla segítségével
védekezhetünk a verem túlcsordulás (memória túlcsordulás), vagy a véletlen
program felülírás ellen.
A folyamatok védelme egymástól: minden folyamathoz rendeljünk egy-egy szegmensleíró
táblát.
Az
olyan segédprogramokhoz, melyet minden folyamat használ, létrehoznak egy közös,
mindenki által használható, úgynevezett globális leírótáblát (global descriptor table - GDT) a
már említett, minden folyamathoz rendelt saját, lokális leírótáblán (local descriptor table - LDT)
felül.
Az
operációs rendszer védelme – prioritások:
Ahhoz,
hogy egy folyamat ne írhassa felül egy másik folyamat leírótábláját, az egyes
folyamatokhoz jogokat rendelünk – prioritási szint – és meghatározzuk, hogy
legalább milyen prioritási szinttel kell rendelkeznie egy folyamatnak ahhoz,
hogy az adott szegmenst használja.
A szegmensleíró táblát
kiegészítjük egy prioritás mezővel.
Vergődés
Egy
folyamat több időt tölt lapozással, mint hasznos tevékenységgel (kevés lapja
van)
Elkerülése:
Lokális
lapkiosztási algoritmus: Minden
folyamatnak rögzített darabszámú lapja van. Így, ha egy folyamat vergődik, a
többi (majdnem) szabadon futhat.
Munkahalmaz: viszonylag lassan változik; az op. r. olyan lapozási
stratégiát követ, hogy minden folyamatnak igyekszik bent tartani a
munkahalmazát; bonyolult SW és HW igény.
Laphiba-gyakoriság
figyelése: kevés laphibánál a
folyamatnak túl sok kerete van, ezért elveszünk tőle egyet, ill. sok laphibánál
kevés kerete van, tehát adunk neki még egyet.
Gyorsítótár (cache) – elv: A leggyakrabban használt adatok legyenek a leghamarabb
elérhető helyen.
Tárvédelem
Folyamatok
logikai egységeinek
védelme egymástól |
Szegmensleíró
tábla, szegmenshossz
mező |
Folyamatok
védelme egymástól |
Szegmensleíró
tábla létezése |
Operációs
rendszer védelme |
Szegmensleíró
tábla védelmi
(prioritás) mezői |