< Operációs rendszerek elmélet
Operációs rendszerek elmélet tananyag
Szerző: Sallai András
Copyright © Sallai András, 2009, 2010, 2011, 2012, 2014
Licenc: GNU Free Documentation License 1.3
-
Bevezetés
Kevés jó könyv található a magyar irodalomban az operációs rendszerek témakörében.
Galambos Gábor, Operációs rendszerek című könyve azon kevesek közzé tartozik, amely
szakmailag megalapozott és kiváló. Ez a leírás az ő könyvének követi a tematikáját,
nagyon nagy segítség volt az elkészítésben.
Alapfogalmak
Egy számítógépes rendszer a következő elemekből épülhet fel
hardver
felhasználó
folyamatok
a hálózat gépei
Az operációs rendszerek határait nehéz meghatározni. Egy számítógép hardverből és szoftverből épül fel.
Az operációs rendszer leginkább szoftver, de vannak a hardvernek olyan részei, amelyek közel állnak
az operációs rendszerhez. Ilyenek lehet a BIOS.
Az operációs rendszer felfogható a hardver kiterjesztéseként is.
Erőforrások
A számítógép egyes komponenseit erőforrásnak nevezzük, akár a hardver, akár a szoftver része.
Erőforrások csoportosítása
fizikai | logikai |
operatív memória, CPU, háttértárolók, időzítők, órák | adatok, programok |
Rendszerprogramok
fordítók
szerkesztők
ellenőrzőprogramok
Mit tekintünk operációs rendszernek?
Három féle megközelítés ismert:
A hardver és a szoftver
A hardver és a szoftver közötti határvonalat nehéz meghúzni. A szorzás művelet például nem huzalozott,
szoftveresen van megvalósítva. De szoftveres funkciókat is hardver szokott ellátni. Például
memóriakiosztás vagy közvetlen művelet az adatstruktúrákon.
Az operációs rendszer helye
Az operációs rendszerek feladatai
Operációs rendszerek feladatai
felület biztosítása
memóriakezelés
folyamatok szervezése
perifériakezelés
állománykezelés
hibakezelés és védelem
könyvelés
Felület biztosítása
parancs interfész
program interfész
állomány hozzáférés
IO műveletek
eljáráshívások
Memóriakezelés
Az operációs rendszer elfoglalja a memória egy részét, a többi a programé.
Kezdetben az operációs rendszernek csak magát kell védenie.
Ma egyszerre több program is fut az operációs rendszer mellett, így
az operációs rendszernek nem csak önmagát kell megvédenie, hanem a futó
programokat is.
Folyamatok szervezése
A folyamat egy elindított, vagyis a memóriába töltött program. Néha futó programként hivatkozunk rá, bár a valóságban az elindított programok nem futnak folyamatosan. Angolosan processz. Egy processzoros rendszerben
minden program kap egy időszeletet, majd a következő program jön. Ha minden
program elég gyorsan kap egy-egy időszeletet a felhasználó észre sem veszi,
hogy a program valójában nem folyamatosan fut.
Perifériakezelés
Háttértárak, nyomtatók, szkennerek, stb. kezelése.
Állománykezelés
létrehozás
törlés
olvasás
írás
hozzáférés
Hibakezelés, védelem
Kezelni kell a hardver és a szoftver problémákat.
Rendszerkönyvelés
Naplózzuk az igénybe vett erőforrásokat, az előforduló hibákat és a költségeket.
Történet
Kezdet
Kezdetben nem is volt operációs rendszer. A felhasználó egy vezérlőpulton keresztül órákon keresztül
binárisan adta meg az adatokat. A beviteli felület kapcsolókból, a kiviteli felület
felvillanó lámpákból állt. A sok futtatandó program, és nagy mennyiségű adat egy idő
után maga után vonta egy operátor alkalmazását.
Később megjelennek a következő eszközök:
I/O eszközök
Assembly
lyukszalag
több program
Felügyelő programok
Megjelenik a supervisor program, amely helyettesíti az operátor munkáját.
Ezek még nem voltak valódi operációs rendszerek. Ezek az egyszerű szupervisor programok, ha
egy hibához értek a számítógép megállt. Nem volt hibakezelés.
Szalagos operációs rendszer
Megjelennek az szalagos rendszerek.
A szalagos egységek eredményeként nagyon sok program vár a
végrehajtásra, így válogatni kell a fontos és nem fontos
programok között.
Mágnesdob
Egy hengeren egy mágneses palást van. Az író-olvasó fej ezen a paláston mozog.
Egy körülfordulással az összes információ elérhető. A mágnesdobozok csak
rövid ideig vannak jelen a számítógépeken, mivel nagyon hamar megjelennek a
lemezes adattárolók.
Mágneslemezek
A jóval nagyobb gyorsaság egész más kezelési technikát igényel. Megjelennek a LOADER-ek, amelyek
folyamatosan (rezidensek) a memóriában várják a betöltendő újabb programot.
JCL vezérlő nyelv
A hatékonyabb használathoz egy új vezérlő nyelvet találnak ki, ez a JCL (Job Control Language).
I/O ellenőrző részek javítása
Az egyre növekvő igények miatt javítják az I/O eszközöket kezelő részeket:
Input Output Control System (IOCS)
Rezidens, tranziens
Megjelenek a rezidens és a tranziens részei az operációs rendszernek.
Az operációs rendszer egy része állandóan a tárban marad, a másik része csak akkor ha
arra szükség van.
Operációs rendszerek jellemzői
Ebben az időben senki nem gondol az operációs rendszerek hordozhatóságára. A hardvergyártók maguk
készítik az operációs rendszert. A cél a hardver hatékony kihasználása.
DOS operációs rendszerek
Hardver | Operációs rendszer |
Honeywell 800/1800 | ADMIRAL |
UNIVAC 1107 | EXEC 1 |
CDC 6000 | SCOPE |
Burroghs 5000 | Master Control |
IBM 7090 | IBSYS |
Megjelenik a BATCH programozás
A futtatandó programok egy csomagban vannak összegyűjtve
Egy időben egy ilyen csomag van a memóriában
Ez az ún. soros kötegelt feldolgozási rendszer
Serial Batch Processing System
Jelenségek
Gyorsabb CPU → I/O lassú
A CPU gyakran vár
Ötlet
Több programos kötegelt rendszer
Batch Multiprogramming System
Az első ilyen OS
MCP
Virtuális memória
Prioritások alkalmazása
Virtuális memória
Kihasználjuk a CPU által nyújtott memória címzési lehetőséget.
Amikor egy program betöltődik nem biztos, hogy van elég memória számára amit megcímezhetünk.
A program, így olyan címet tartalmaz amely fizikailag nem létezik.
Az
OS úgy viselkedik mintha lenne elég hely.
Prioritások alkalmazása
A programhoz hozzárendelünk egy prioritást a sürgősség alapján
OS/360
OS/360 két változata
OS/MFT
Multiprogramming with Fix Tasks
A memória szegmentált (partíciók)
ahány partíció annyi program tud futni
I/O készülék lassúak
OS/MVT
Multiprogramming with Variable Tasks
Akkor osztott a memória ha szükséges
A kiosztott terület a Task
Interaktív feldolgozás
A programozó nem látja mit csinál a program, mert az operátortól sok függ
Az operátornak leadni a csomagot → holt idő
Gyors mágneslemezek miatt
Terminál ill. interaktív I/O eszköz a javításhoz
Batch programok újra
egy időben több program is van a memóriában
de vezérlés átadás csak akkor történik, ha egy program megállási ponthoz ér
Egy program percekig, vagy akár órákig is futhat
Ezen változtat az interaktív technika
Időosztás
Első időosztásos OS-ek
Az interaktivitás következményei
MULTICS
Kutatások kezdődtek a szupervizorok terültén az újabb problémák megoldására három intézményben:
Munkájuk eredményeképpen létrejött a MULTICS.
Jellemzői
Technikai jellemzők
szegmentált virtuális memória
„gyűrűs” erőforrásvédelem
hierarchikus fájlrendszer
készülékfüggetlen
I/O átirányítás más készülékre
UNIX
1970-ben a MULTICS két kutatója
Ken Thompson
Dennis Ritchie másik szoftvercsoportba kerül
Egyfelhasználós
OS-t fejlesztenek PDP-re
A Bell Laboratóriumban népszerű
Jellemzői
Első UNIX
Assembly-ben írodott
Akarták PL/1-ben
De a PL/1 PDP-re nem honosítható
C nyelv (B kísérleti nyelvből)
C fordító PDP-11
A UNIX-ot átírják teljesen C-re
Szokatlan lépések
Jelentősége
Az első OS amely hardvertől függetlenül terjedhet, azaz hordozható
Absztrakt és virtuális gépek
Vissza megyünk a '60-as évek végéhez – Európa
Eindhovenni Egyetem – Edger Dijsktra
új több felhasználós rendszer T.H.E
T.H.E – Technische Hogesschool Eindhoven
nagy hatással van a későbbi
OS-re
T.H.E Multiprogramming System
Újdonságok
TENEX
Minden felhasználó több folyamatot és virtuális memóriát használhat → Virtuális gép
A megközelítés az IBM-től van: CP/
CMS
Miden felhasználó úgy látja, hogy saját CPU-ja és memóriája van
DEC PDP-10 gépen
1960
Kis számítógépek
Eddig a hardver és szoftver egységesen fejlődött
A hardver árak rohamos csökkenése: különböző kategóriák jöttek létre.
Létrejött kategóriák
Szerkezet
Az operációs rendszer programok gyűjteménye.
Ezek a programok speciális szerepet töltenek be más programokkal szemben.
Az operációs rendszerek tervezése során a következőket kell figyelembe venni:
hardver
felhasználók száma
I/O készülékek
Kezdetben élt az a tévhit, hogy egy operációs rendszert csak Assembly nyelven lehet készíteni.
Hogyan változhatott akkor ez meg? A változásban a következő események jártak közre:
Társzervezés
Rezidens
Tranziens
Több folyamat használhatja váltakozva. A tranziens rész dinamikus könyvtárakba van szervezve: DLL, SHL
Felületei
Az operációs rendszeren belül kétfajta kapcsolat lehetsége:
Felhasználói interfész
parancs interfész
A felhasználó kommunikál az
OS-el
program interész
A program és az erőforrások kommunikálnak az
OS-el
Parancs interfész
Parancsnyelv
Job-control
Interaktív
parancssor
menüvezérelt
ikonvezérelt
Parancsállományok
Parancsállományok csoportosítása
Parancsállományok jellemzői
paraméterezhető
egymásbaágyazható
megjegyzés lehet benne
van hibakezelés
Memóriakezelés
A memóriakezelés három részproblémára osztható fel:
memória-allokáció
áthelyezés
memóriavédelem
Allokáció
Memória foglaltság nyilvántartás módjai
Allokációs stratégiák
Következő illesztés (Next Fit)
Első illesztés (First Fit)
Legjobb illesztés (Best Fit)
Legrosszabb illesztés (Worst Fit)
Következő illesztés (Next Fit)
Az első szabad blokktól megvizsgálunk minden szabad blokkot. Az első (méretnek) megfelelőt választjuk.
Új keresést ott folytatjuk, ahol az előzőt abba hagyjuk.
Első illesztés (First Fit)
Mindig az első FMCB-ből kiindulva keressük az első alkalmas blokkot.
A kiválasztott FMCB rész két részre oszlik.
Egyikben elhelyezzük programot, maradék rész FMCB lesz.
Legjobb illesztés (Best Fit)
Bejárjuk az összes blokkot, méretüket megvizsgáljuk.
Megjegyzi a hozzá legközelebb állót
Legrosszabb illesztés (Worst Fit)
Ahhoz a szabad helyhez allokáljuk a programot, ahol legtöbb szabad hely marad.
Azt reméljük a nagyobb szabad blokkok később használhatóbbak.
MEMÓRIAVÉDELEM
Virtuálismemória
Virtuális memóriát akkor használjuk, ha egy újabb programot szeretnénk futtatni és már nincs számára elég
szabad memória terület.
Memóriaáthelyezési technikák
áthelyezési táblázat
leképezési regiszterek
laprabontás
Laphiba
Az elérni kívánt lap, nincs a fizikai memóriában.
Normális működés, nem valódi hiba!
Kettős laphiba
A laphibát kezelő rutin is laphibát okoz.
Négy alap probléma
Lokalitás elve
Az aktuális - és az ezek közvetlen közelében elhelyezkedő – címekre a közeljövőben nagy valószínűséggel ismét hivatkozunk.
Bélády László - 1966
Betöltési probléma
Egyszerű:
Akkor kell lapot betölteni, ha nincs a főtárban
Finomíthatjuk, ha megvizsgáljuk mikor van szükség az adott lapra
Lokalitás elve:
Néhány szomszédos lapot is betöltünk
Elhelyezési probléma
Mivel ugyan olyan méretű lapokkal dolgozunk, ezért nincs a memóriának kitüntetett része.
Ha van valahol szabad hely, akkor oda betöltjük a kívánt lapot.
Helyettesítési probléma
Cél: olyan lapot távolítsunk el, amelyet nem kell visszatölteni (feltehetőleg)
stratégiák:
Módosított lapok kezelése
nem módosított lapok
módosított lapok
Szegmentált virtuális memória
A lapokrabontás mellett a programokat logikai egységek szerint feldaraboljuk, és szegmensekre osztjuk.
Egy szegmensre, egységes egészként hivatkozunk.
Minden folyamathoz szegmenstáblát készítünk a főtárban, vagy a
a hardveren szegmenstábla regiszterek használata.
OS-ek virt. mem. szokásai
Linux
Csak akkor ír a swapra, ha már betelt a memória
Windows
Akkor helyezi a programot a memóriába, ha használjuk (a tálcáról előtérbe hozzuk)
Folyamatok
Azokat a tevékenységeket , amelyeket egy program végrehajt, folyamatnak (processznek) nevezzük.
Végrehajtás alatt lévő program.
A folyamatok váltakozva hajtódnak végre.
Egy időpontban a CPU-t csak egyetlen folyamat használja!
Folyamatszervezés módjai
PCB
Precess Control Block
Folyamatellenőrző blokk
Amit eltárolunk egy folyamatról:
folyamat neve
felhasznált memória
állapot
környezet
prioritás
szükséges erőforrások
összefüggések
elszámolási információk
Folyamat neve
Külső név
karakter sorozat
felhasználók számára
Belső név
Folyamat állapot
Környezet
Környezet alatt a regiszterek tartalmát és egyéb információkat értünk.
Prioritás
Prioritás alatt a folyamat relatív fontosságát értjük a többihez viszonyítva.
Akkor használjuk, ha több folyamat vár egy erőforrásra.
Szükséges erőforrások
Összefüggések
időparaméterek
felhasznált erőforrások
folyamat tulajdonos neve
stb.
Folyamatok és erőforrások kapcsolata
Erőforrás másként
Erőforrás (más szempont szerint)
Speciális erőforrás
Azért speciális, mert közvetlenül, rendszerhívások nélkül érjük el őket.
Olyan két erőforrás, amit nem kell igényelnünk meg mindig szükség van rá.
Egyéb erőforrások
Más erőforrásokhoz rendszerhívásokon keresztül jut a folyamat
igénybejelentést előzi meg a használatot
pl. állományok, I/O készülékek
Erőforrások használata
Környezetváltás
Multitaskos rendszerben a folyamatnak mindig más folyamatnak engedi át a CPU-t.
Folyamathoz tartozó információ megőrzése történhet:
regiszterekben
státusz-flagekben
státusz szavakban
vermekben
címterületeken
Környezet
A megőrzött információ adja a környezetet
Ennek cseréje a környezetátállás
Folyamatvezérlő műveletek
Folyamatvezérlő műveletek:
Létrehozás
Megszüntetés
Attribútumok olvasása, megváltoztatása
Felfüggesztés, újraindítás
Folyamatok létrehozása
Ha a rendszerben dinamikus folyamatkezelés van!
Folyamat előállítás műveletei
PCB előállítása
rögzített terület tartunk fent
külön kulcsolási területet (system queue area) tartunk fent
vagy keverjük az előző két technikát
Memória terület allokálása
Betöltés
betöltő végzi (relocating loader)
végrehajtható formában tárolt állományokat olvas be
bonyolult lehet mert a kezdő címek csak akkor válnak ismerté, ha betöltjük az ugró utasítások címeit
Kezdeti paraméterek
UNIX alatt a létrehozott gyermek folyamatok mindig öröklik a szülő által már allokált erőforrásokat
UNIX – új folyamat előállítása
Folyamatok megszüntetése
Folyamat megszüntetése
Destroy process rendszerhívással
Megszüntetendő folyamat gyermekei
Lehet olyan gyermek folyamat amelyet kifejezetten azért hoztunk létre,
hogy túlélje a szülő folyamatot (pl. nyomtatás) vagy hozzárendeljük őket
egy másikhoz vagy árvának tekintjük
UNIX-ban az árva folyamatot a init folyamathoz rendeljük
Attribútumok olvasása, változtatása
Felfüggesztés és újraindítás
felfüggesztés (suspend)
újraindítás (waku up)
Ütemezés
Az a művelet amely meghatározza a sorrendet az újrafelhasználható erőforrások igénybevételére.
Kiemelt erőforrások
Memória
CPU
Csak egy van belőle
Így kiélezett verseny folyik értük
nehézség, hogy a folyamatok sosem fordulnak ezekért az erőforrásokért mégegyszer
Folyamatok osztályozása
Batch folyamatok
Interaktív folyamatok
Real-time folyamatok
Ütemezési stratégiák
hosszú távú
Középtávú
rövid távú
Ütemezési célok 1
áteresztés
konzisztencia
válasz
korrektség
átfutás
források kezelése
A célokról
A célok részben ellentmondanak egymásnak. Ezért kompromisszum szükséges.
Megoldásként kategóriákba soroljuk a folyamatokat.
Kategóriába soroláshoz alapadatok:
prioritás
kategória
becsült futási idő és a szükséges erőforrások
I/O igények és azok gyakorisága
kapcsolat egy interaktív terminállal
kiszolgálásra mennyi ideje vár
Stratégia alkalmasságának megítélése
Fontos jellemzők
Prioritás osztályozása
Önköltség
A folyamat kicserélésre használt idő
Megszakíthatóság
nem megengedett
megengedett
Batch folyamatok ütemezése
Hosszú távú ütemezés
A jobok közbülső tárolási területen
Input sorokba rendezve
Az initator nevű program vizsgálja az input sorokat
Kezdéskor időzítőt állítunk be
Középtávú ütemezés
Batch esetén nem külön feladat
Mivel a jobokat akkor engedjük futni, amikor minden erőforrás rendelkezésre áll.
Rövid távú ütemezés
Rövid távú ütemezési stratégiák
SJN
FIFO
Dinamikus prioritású
SRTN
Shortest Job Next (SJN)
First-In First-Out – FIFO
Dinamikus prioritású
Shortest Remaining Time Next – SRTN
Interaktív folyamatok ütemezése
interaktív terminál ↔ felhasználó
tevékenységek hosszúak lehetnek
indításkor semmit nem tudunk az igényelt erőforrásokról
azonos módon kezelt folyamatok
múltbeli viselkedésből következtetünk jövőben viselkedésére
felhasználónak gyors válasz kell
Hosszú távú ütemezés
Középtávú ütemezés
Rövid távú ütemezés
CPU időszeletének kiosztása
ha lejár a rendelkezésre álló idő → környezetváltás
A CPU általában 100 millisecundum és néhány másodpercig használható
Prioritás alapján választunk vagy sorbarendezünk
Nincs teljes futásiidő túllépés (batchnál van)
Alacsonyabb prioritású foly. néha megszakítható
Stratégiák rövid távú ütemezés esetén
prioritásos ütemezés
prioritás alapján választunk
csoporton belül körkörösen ütemezünk
különböző prioritáshoz, különböző időszelet
alacsony prioritás → nagyobb időszelet
körkörös ütemezés
sorba rendezünk
rögzített időszelet
sor elejéről választunk
nincs CPU idő → sorvége
újak a sorvégére
Prioritás-kezelés
Öregítési technika
időnként felülvizsgáljuk a folyamatokat
ha nem került a folyamatra vezérlés, akkor növeljük a prioritást
Visszacsatolás
Kleinrock
Kleinrock – önző ütemezési technika
„tisztességes kiosztás”
a folyamatok különálló csoportokba azaz halmazokba szervezettek
a CPU időt a csoportokhoz rendeljük
kevés CPU idővel bíró csoport magas prioritást kap
Hardver támogatás
Folyamatok interakciói
A folyamatok között a következő két esetben szokott interakció létrejönni:
Interakciók típusai
Lehetséges probléma: holtpont
Holtpont
Folyamat leköt egy erőforrást, egyúttal várakozik egy másik lekötött erőforrásra. A másik erőforrást másik folyamat lefoglalta.
Folyamatok kommunikálnak. Egymás információira várnak.
Holpont létrejöttének feltételei
A feltételeiknek egyszerre kell megfelelni!
Holtpontmegelőzés
A cél, hogy úgy ütemezzünk az erőforrásokat, hogy a holtpont bekövetkezésének feltételei közül legalább egy ne teljesüljön.
Kölcsönös kizárás
néhány forrás esetén elkerülhetetlen
könnyen elkerülhető pl.: csak olvasásra megnyitott fájloknál
I/O készülékeknél spoolingolunk
Erőforrások lefoglalása
Folyamatot úgy programozzuk, hogy egy időben csak egy erőforrást használjon.
Megszakíthatóság
Ciklikusan láncolható igények
Havendar által fejlesztett hierarchikus rendezés
A forrásokat kategóriákba osztjuk
A kategóriákhoz prioritást rendelünk
Egy adott prioritási szinten levő forrást csak akkor kaphat meg a folyamat, ha vele azonos vagy nála magasabb szinten nem használ forrást.
Holtpontelkerülés
dinamikus módszer, amely megkísérli elérni, hogy sohase allokáljunk a forrásokat oly módon, hogy a rendszer „bizonytalan” állapotba kerüljön
Bizonytalan az állapot, ha megnő a holtpont bekövetkezésének a veszélye
Általános stratégiát erre javasolni nagyon nehéz!
Az interakcióba került folyamatok erőforrásigényeit ellenőrizni kell
Egy módszer lehet, ha a nagyobb igényű erőforrásokat külön ellenőrizzük.
nem javasolt
növeli az önköltséget
Habermann bankár algoritmus
bankár zárt csoportnak biztosít hitelt
feltételezi egyszerre nem veszik igénybe az egész hitelkeretet
így a teljes hitelkeretnek csak egy részét tartalékolja
hitel = erőforrás használat
Ha egyszerre több igény van, fokozatosan elégíti ki
Adott hitelezési állapot rendszerállapot
R1 rendszerállapot biztonságos, ha ebből létrehozható az állapotoknak egy olyan sorozata, amely a maximális igények egymás utáni kielégítésével eljuthat az összes maximális hitelkérelem kifizetéséhez.
A = aktuálisan igénybe vett hitel
M = Maximálisan igénybe vehető hitel
Név | A | M | | Név | A | M | | Név | A | M |
Nagy | 0 | 9 | | Nagy | 2 | 9 | | Nagy | 1 | 9 |
Kovács | 0 | 5 | | Kovács | 1 | 5 | | Kovács | 3 | 5 |
Szabó | 0 | 4 | | Szabó | 2 | 4 | | Szabó | 2 | 4 |
Takács | 0 | 7 | | Takács | 4 | 7 | | Takács | 4 | 7 |
Szabad keret | 11 | | | Szabad keret | 2 | | | Szabad keret | 1 | |
Biztonságos | | Biztonságos | | Bizonytalan |
Holtpont érzékelés
Lehetséges stratégia
Futó folyamatok közül erőforrást igénylők kiválasztása
ezek vesznek részt a holtpont kialakításában
Keressünk egy olyan folyamatot amely erőforrásigénye kielégíthető. Jelöljük meg
Minden olyan forrást, amelyet most kijelölt tevékenységünk használ, tekintsünk szabadnak
Ismételjük meg az eljárást a 2. ponttól mindaddig, amíg nem jutunk el egy olyan állapotba, amikor már nincs kiszolgálható tevékenység
Következtetés
Ha az eljárás végén marad nem kiszolgálható folyamat, akkor létezik a rendszerben holtpont
A megmarad folyamatok éppen azok, amelyek a holtpont kialakításában részt vesznek
Holtpont megszüntetése
Feladat: várakozási kör lebontása
Drasztikus:
néha elég néhány tevékenységet kiemelni és azt megszakítani
néha elég az előbb kiemelt tevékenységeket egy korábbi állapotba visszaállítani
Megszakítások, IO kezelés
Megszakítás típusok
Irodalom