Oper ci s rendszerek ii
This presentation is the property of its rightful owner.
Sponsored Links
1 / 39

Operációs Rendszerek II. PowerPoint PPT Presentation


  • 37 Views
  • Uploaded on
  • Presentation posted in: General

Operációs Rendszerek II. 5. előadás 2007. március 05. Múlt óra…. A folyamat: Program végrehajtás alatt álló példánya Erőforrás hozzárendelés alapja Folyamat környezete Terület a központi memóriában (kód, adat, stack) Adatok és státuszinformációk a processzor regisztereiben

Download Presentation

Operációs Rendszerek II.

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Oper ci s rendszerek ii

Operációs Rendszerek II.

5. előadás

2007. március 05.


M lt ra

Múlt óra…

  • A folyamat:

    • Program végrehajtás alatt álló példánya

    • Erőforrás hozzárendelés alapja

  • Folyamat környezete

    • Terület a központi memóriában (kód, adat, stack)

    • Adatok és státuszinformációk a processzor regisztereiben

    • Egyéb státuszinformációk (pl. erőforrásokkal kapcsolatos)

      • A folyamat állapot-információk leírására az ún. PCB szolgál

    • Egy végrehajtási szál (most éppen melyik utasítást kell végrehajtani)

  • Ütemezés: folyamatok közötti váltás

  • Folyamat váltáskor a teljes folyamat környezetet meg kell őrizni – ez biztosítja a folytathatóságot!


Folyamatok l trehoz sa win

Folyamatok létrehozása (Win)


V grehajthat f jl

Végrehajtható fájl


Folyamatok l trehoz sa unix

Folyamatok létrehozása (Unix)

  • Teljesen eltérő megoldás (eléggé fura)

  • A program indítása két részből áll

    • Aktuális folyamat duplikálása (szülő-gyerek)

    • Az indítandó program betöltése a gyerek folyamat helyére

  • Sokat kritizált, de a mai napig élő megoldás


Folyamat duplik l s fork

Folyamat duplikálás – fork()

mypid = fork()

if(mypid == 0){

// child

} else {

// parent

}

mypid = fork()

if(mypid == 0){

// child

} else {

// parent

}

mypid = fork()

If(mypid== 0) {

// Child

printf(“%ld – I’m the parent\n”, getpid())

} else {

// parent

printf(“%ld – I’m the parent\n”, getpid())

}


Fork tov bb

fork() tovább

int a = 1;

int b = 2;

If(fork() == 0) {

printf(“Gy:\t%d, %d\n”,a,b);

a += 2;

printf(“Gy:\t%d, %d\n”,a,b);

} else {

printf(“Sz:\t%d, %d\n”,a,b);

sleep(1);

printf(“Sz:\t%d, %d\n”,a,b);

}

Gy:1,2

Sz:1,2

Gy:3,2

Sz:1,2


Oper ci s rendszerek ii

fork()

  • A fork() hatására a teljes folyamat címterét és az erőforrás adatokat is duplikáljuk

  • A duplikálás után a címterek függetlenek, a változók külön élnek (a kezdőérték ua.)

  • A fájlokat mindkét folyamatból el lehet érni (ha mindkettőből írunk, akkor a kimenet összekeveredve jelenik meg)


Oper ci s rendszerek ii

exec()

  • A fork() érdekes, de hogyan indítunk új programot?

  • Az exec() hívás az éppen futó folyamat „helyére” tölt be (és indít el) egy programot

  • A pid nem változik és az erőforrás leírók is öröklődnek (pl. így működik a pipe a shell-ben)


Folyamat s m d v lt s

Folyamat és mód váltás


Folyamat le r k

Folyamat-leírók

  • Erőforrás menedzsment megvalósításához az operációs rendszernek elegendő információval kell rendelkeznie a folyamatok és az erőforrások mindenkori állapotáról

  • Ezt OS különböző táblázatok fenntartásával valósítja meg. Tipikus táblázatok:

    • Memória tábla (fizikai és VM is)

    • I/O tábla

    • Fájl tábla

    • Folyamat tábla


Folyamat le r k1

Folyamat-leírók

  • Memória tábla (fizikai és VM is)

    • memória – folyamat összerendelés,

    • védelmi információk,

    • VM információk

  • I/O tábla

    • Processz információ

    • Státusz

    • Memória info (pl. puffer terület)

  • Fájl tábla

    • Adattartalma attól függ, hogy a fájlkezelés feladatai milyen módon oszlanak meg az OS és az alkalmazás között

  • Folyamat tábla


Folyamat le r k2

Folyamat-leírók

  • A táblázatok függenek egymástól, hivatkoznak egymásra (pl. fájl és I/O, folyamat és mindegyik).

  • A táblázatokat inicializálni kell, meg kell határozni határértékeket. Ez történhet:

    • konfiguráció alapján (statikus)

    • dinamikusan


Oper ci s rendszer v grehajt sa

Operációs rendszer végrehajtása

  • Az operációs rendszer is egy program, amelyet a CPU hajt végre

  • A teljes rendszer működtetéséért az OS felel, önmagát teljesen nem menedzselheti (tyúk vagy tojás)

  • Operációs rendszer végrehajtási modellek

    • Nonprocess kernel

    • Folyamat címterében futó kód

    • Folyamat alapú kernel


Modellek

Modellek

  • Nonprocess kernel

    • Folyamatok fogalma kernel szinten nincs

    • Kernel teljesen szeparált, saját törvényei szerint fut

  • Folyamat címterében végrehajtott kernel kód

    • Mernel nem folyamat alapú, (user) folyamatok címterében fut

    • Minden folyamat címterében elérhető (folyamatok nem látják)

  • Folyamat alapú kernel

    • Kernelt is folyamatokként valósítjuk meg

      • Kliens-szerver modell

      • többprocesszoros rendszeren is hatékony

    • Kell egy folyamat váltási funkció, ami a folyamatok „alatt” fut


Mikrokernelek mi rt

Mikrokernelek – miért?

  • Operációs rendszerek fejlődése

    • Teljesen monolitikus kód (több millió sor)

    • Struktúrált felépítésű, rétegelt kód

    • Mikrokernelek

  • Miért nem eléggé jó a struktúrált kód?

    • Kernel módban a súlyos hibák végzetesek

    • Kernel kódot nehéz írni

    • A növekvő funkcionalitás miatt egyre több és több kód kell(ene)!


Hogyan is m k dnek az os funkci k

Hogyan is működnek az OS funkciók?

  • Különféle kernel funkciók (pl. lapcsere memóriakezelés esetén)

    • Döntés (politika): lap helyének kiválasztása

    • Végrehajtás: a tényleges lapbetöltés

  • A végrehajtás tipikusan hardver közeli, de a döntés nem igazán  ha megfelelő adatok rendelkezésre állnak, a döntési rész akár kernelen kívül is futhat(na)


Oper ci s rendszerek ii

Mikrokernel: A kernel csak az alapfunkciókat tartalmazza, a kód többi részét felhasználói módban futó szolgáltatások valósítják meg.

Erősségei:

  • Egységes interfész

  • Bővíthető

  • Flexibilis

  • Hordozható

  • Megbízható

  • Elosztott rendszerek támogatása

  • OO támogatása


Oper ci s rendszerek ii

Mikrokernel: A kernel csak az alapfunkciókat tartalmazza, a kód többi részét felhasználói módban futó szolgáltatások valósítják meg.

Gyenge pontok:

  • Kernel és felhasználói mód közötti váltás erőforrásigényes (lassúság)  kernelbe épített funkciók aránya

  • Teljesen új koncepció, gyakorlatilag nulláról újra kell írni a rendszereket

    Az igazán elterjedt rendszerekben tisztán nem igazán lehet találkozni vele (talán: Mach  OpenStep  Mac OS X)


Tipikus mikrokernel alap funkci k

Tipikus mikrokernel (alap)funkciók

  • Alacsonyszintű memória menedzsment

  • IPC

  • IRQ kiszolgálás

  • I/O kezelés (alacsony szinten)


Sz lak mi rt

Szálak – miért?

  • Programok egyre több párhuzamosan is végrehajtható részfeladattal bírnak

    • Szerver megoldások (web, file)

    • Kliensek esetén háttérfunkciók (backup, stb.)

    • Előtér párhuzamosítás (pl. web böngésző)

  • A több (sok) processzor kihasználásához párhuzamosan végrehajtható kód!

  • Ezek a kódok nem függetlenek – közös adatok, együttműködés (szinkronizáció)!


Probl m k

Problémák

  • Természetes megoldás: párhuzamos kód  több folyamat (hiszen erre való)

  • Ez így jó (is volt sokáig), de:

    • Létrehozásuk, megszűntetésük drága

    • Kommunikáció, együttműködés (drága) kernel műveletekkel lehetséges

    • Folyamatok közötti váltás költséges

    • Általában: kernel funkciók futtatása drága!

Szálak


Sz lak

Szálak

  • Alapötlet: válasszuk külön az erőforrások birtoklását a program futtatásától!

    • Folyamat: erőforrás foglalás alapegysége (mint eddig is)

    • Szál: folyamaton belüli futási végrehajtás egysége

  • Egy folyamaton belül egyszerre több végrehajtási szál is létezhet


Folyamatok sz lak

Folyamatok, szálak


A folyamathoz k pest

A folyamathoz képest…

  • Gyorsabb végrehajtás

  • Gyorsabb terminálás

  • Egy folyamaton belül

    • A szálak közötti váltás gyorsabb, mint a folyamatváltás

    • A szálak közötti adatcsere, kommunikáció kernel funkciók igénybe vétele nélkül zajlik

  • Nem a folyamatok helyett van!


Megval s t si lehet s gek

Megvalósítási lehetőségek

  • Felhasználói szálak

  • Kernel szálak

  • Hibrid megoldások


Felhaszn l i sz lak

Felhasználói szálak


Felhaszn l i sz lak1

Felhasználói szálak

  • Kernel nem tud róla, továbbra is folyamatokat lát

  • Szálmenedzsment alkalmazás szintű kóddal (lib)

  • Szálütemezés folyamatonként eltérő lehet

  • Előnyök

    • szálváltás gyors (user módban fut)

    • OS-től független, hordozható megoldás

  • Korlátok

    • I/O blokkolhatja az összes

      folyamat-szálat (aszinkron I/O)

    • 1 folyamat összes szála 1 CPU!

    • Signal-ok kezelése nem triviális


Signal ok kezel se

Signal-ok kezelése

  • Aszinkron események (nem szinkron válasz egy hívásra)

  • Felhasználói szálak esetén a kernel csak folyamat szinten tudja ezeket az eseményeket kezelni

  • Ez is a thread könyvtár problémája…


Kernel sz lak

Kernel szálak


Kernel sz lak1

Kernel szálak

  • A teljes szálmenedzsment kernel módban

  • Felhasználói szinten csak API van

  • A szálak ütemezést a kernel végzi

  • Erősségek

    • egy szál blokkolódása nem

      blokkolja a teljes folyamatot

    • folyamat szálai több

      CPU-n is futhatnak

    • Signal kezelés megoldott

  • Korlátok

    • drága


Mennyire olcs

Mennyire „olcsó”?

  • Gyorsabb a létrehozás (kb. 20x)

  • Gyorsabb a terminálása

  • Egyazon folyamat szálai között

    • Gyorsabb váltás

    • Szálak közötti kommunikáció user címtérben zajlik, a kernel nélkül!

  • 1992, VAX-on végzett mérések (UNIX-szerű környezet)


Hibrid sz lak pl solaris 10 el tt

Hibrid szálak (pl. Solaris 10 előtt)


Hibrid sz lak

Hibrid szálak

  • A felhasználói szálak alkalmazás szinten értelmezettek, de vannak szálak kernel szinten is.

  • A kernel LWP-k (LightWeight Process) szintjén látja a folyamatokat (ezek 1:1-ben kapcsolódnak kernel szálakhoz)

  • Az LWP-k és a felhasználói szálak közötti kapcsolatot felhasználói szintű kód menedzseli

  • A felhasználói szálak és LWP-k aránya dinamikus, de kódból is módosítható

  • A Solaris 10-ben már nincs meg ez a megoldás!


Adatok strukt r k

Adatok, struktúrák

  • kell privát stack (user mindig, kernel szálak esetén kernel stack is)

  • szálaknak is van állapota /ready, run, blocked/ és prioritása, a CPU regisztereket menteni kell: TCB (a PCB-vel analóg módon)


Adatok strukt r k1

Adatok, struktúrák


Tov bbi sz l megold sok

További szál-megoldások?


Sz lm veletek

Szálműveletek

  • POSIX threads (felhasználói szintű szál-könyvtár) szolgáltatások

    • Szálak létrehozása és megszűntetése

    • Üzenetek és adatok átadása szálak között

    • Szálak végrehajtásának ütemezése

    • Szál környezet mentése és visszaállítása


J n j n j n

Jön, jön, jön…

  • Folyamatok és szálak megvalósítása különféle operációs rendszerekben (adattáblák, leírók)

  • Folyamatok ütemezése

  • Folyamatok közötti szinkronizáció és kommunikáció


  • Login