Tartalomjegyzék

< Operációs rendszerek elmélet

Operációs rendszerek elmélet tananyag

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

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

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

Felhasználói környezet
Operációs rendszer
Hardver

Az operációs rendszerek feladatai

Operációs rendszerek feladatai

Felület biztosítása

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

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:

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

Jelenségek

Több programos kötegelt rendszer

Batch Multiprogramming System

Az első ilyen OS

MCP

Virtuális memória

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

OS/MVT

Interaktív feldolgozás

Batch programok újra

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

UNIX

Jellemzői

Első UNIX

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

T.H.E Multiprogramming System

Újdonságok

TENEX

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:

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

Parancsnyelv

Parancsállományok

Parancsállományok csoportosítása

Parancsállományok jellemzői

Memóriakezelés

A memóriakezelés három részproblémára osztható fel:

Allokáció

Memória foglaltság nyilvántartás módjai

Allokációs stratégiák

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

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

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

PCB – folyamat információk

Amit eltárolunk egy folyamatról:

Folyamat neve

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

Elszámolási információk

Folyamatok és erőforrások kapcsolata

Az erőforrás lehet:

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

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:

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:

Folyamatok létrehozása

Ha a rendszerben dinamikus folyamatkezelés van!

Folyamat előállítás műveletei

PCB előállítása

Memória terület allokálása

Betöltés

betöltő végzi (relocating loader)

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

Okok

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

Ü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

Folyamatok osztályozása

Ütemezési stratégiák

Ütemezési célok 1

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:

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

Batch folyamatok ütemezése

Hosszú távú ütemezés

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

Shortest Job Next (SJN)

First-In First-Out – FIFO

Dinamikus prioritású

Shortest Remaining Time Next – SRTN

Interaktív folyamatok ütemezése

Hosszú távú ütemezés

Középtávú ütemezés

Rövid távú ütemezés

Stratégiák rövid távú ütemezés esetén

Prioritás-kezelés

Öregítési technika

Visszacsatolás

Kleinrock

Kleinrock – önző ütemezési technika

„tisztességes kiosztás”

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

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

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

Holtpontelkerülés

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.

Habermann bankár algoritmus

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

  1. Futó folyamatok közül erőforrást igénylők kiválasztása
    1. ezek vesznek részt a holtpont kialakításában
  2. Keressünk egy olyan folyamatot amely erőforrásigénye kielégíthető. Jelöljük meg
  3. Minden olyan forrást, amelyet most kijelölt tevékenységünk használ, tekintsünk szabadnak
  4. 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

Holtpont megszüntetése

Megszakítások, IO kezelés

Megszakítás típusok

Irodalom