Operációs Rendszerek II. Második előadás
Első verzió: 2004/2005. I. szemeszter Ez a verzió: 2009/2010. II. szemeszter Sunday, February 14, 2010
Visszatekintés
Sunday, February 14, 2010
Visszatekintés • Operációs rendszer a számítógép hardver elemei és az alkalmazások közötti program, amely: – biztosítja az erőforrások optimális kihasználását – elfedi a hardver sajátosságokat (~virtualizáció)
Sunday, February 14, 2010
Visszatekintés • Operációs rendszer a számítógép hardver elemei és az alkalmazások közötti program, amely: – biztosítja az erőforrások optimális kihasználását – elfedi a hardver sajátosságokat (~virtualizáció) • Ma szinte kizárólag multiprogramozott rendszerek – kötegelt (erőforrás kihasználásra optimalizál) és – időosztásos rendszerek (válaszidőkre optimalizál)
Sunday, February 14, 2010
Visszatekintés • Operációs rendszer a számítógép hardver elemei és az alkalmazások közötti program, amely: – biztosítja az erőforrások optimális kihasználását – elfedi a hardver sajátosságokat (~virtualizáció) • Ma szinte kizárólag multiprogramozott rendszerek – kötegelt (erőforrás kihasználásra optimalizál) és – időosztásos rendszerek (válaszidőkre optimalizál) • Terminológia ma kicsit más – Szerverek: több, párhuzamos kérés egy időben – Desktop (PC)-k: egy felhasználó, több program Sunday, February 14, 2010
Visszatekintés (folyt) Változások okai: • Új hardver technológiák (SMP, RAID) • Hardverek teljesítmény jellemzőinek abszolút és relatív változása • Egyéb hardver sajátosságok (pl. SSD, NUMA) • Felhasználási mód, funkciók • Versenytársak...
Sunday, February 14, 2010
Visszatekintés (folyt) Változások okai: SMP • Új hardver technológiák (SMP, RAID) Uniprocesszoros rendszerekben több program egyidejűteljesítmény futtatása látszólagos, egy abszolút időpillanatban • Hardverek jellemzőinek és egyváltozása aktív program van (ez lehet oprendszer kód is). relatív Multiprocesszoros esetben valós párhuzamosság • Egyéb hardver sajátosságok SSD, aNUMA) jelenik meg, ami jelentősen (pl. bonyolítja működést. • Felhasználási mód, funkciók • Versenytársak...
Sunday, February 14, 2010
Visszatekintés (folyt) Változások okai: • Új hardver technológiák (SMP, RAID) • Hardverek teljesítmény jellemzőinek abszolút és relatív változása • Egyéb hardver sajátosságok (pl. SSD, NUMA) • Felhasználási mód, funkciók • Versenytársak...
Sunday, February 14, 2010
Visszatekintés (folyt) Változások okai: Teljesítmény jellemzők • Új hardver (SMP, RAID) Abszolúttechnológiák változás (példák): - Hálózatteljesítmény 10Mbit/s-ről jellemzőinek 1Gbit/s-re (és abszolút tovább), és • Hardverek - Szalagok (1999 DLT: 3MB/s, 2007 LTO-4: 120MB/s) relatív változása • Egyéb hardver sajátosságok (pl. SSD, NUMA) • Felhasználási mód, funkciók • Versenytársak...
Sunday, February 14, 2010
Visszatekintés (folyt) Változások okai: Teljesítmény jellemzők • Új hardver (SMP, RAID) Abszolúttechnológiák változás (példák): - Hálózatteljesítmény 10Mbit/s-ről jellemzőinek 1Gbit/s-re (és abszolút tovább), és • Hardverek - Szalagok (1999 DLT: 3MB/s, 2007 LTO-4: 120MB/s) relatív változása Relatív változás (példa): • Egyéb hardver sajátosságok (pl. SSD, - Diszk és memória teljesítmény, méretNUMA) és árviszonya • Felhasználási mód, funkciók miatt korábban a kis memória és intenzív diszk használat volt a jellemző. Ma azonban a telepített • Versenytársak... memória mennyiség „nagy”, a sebesség különbség jelentősen megnőtt - így a régi algoritmusok nem megfelőek...
Sunday, February 14, 2010
Visszatekintés (folyt) Változások okai: • Új hardver technológiák (SMP, RAID) • Hardverek teljesítmény jellemzőinek abszolút és relatív változása • Egyéb hardver sajátosságok (pl. SSD, NUMA) • Felhasználási mód, funkciók • Versenytársak...
Sunday, February 14, 2010
Visszatekintés (folyt) Változások okai: Egyéb • Új hardver (SMP, RAID) elérési ideje NUMA: atechnológiák „hagyományos” memóriák címfüggetlen, amit ki isjellemzőinek használunk aabszolút memóriaés kezelő • Hardverek teljesítmény megoldásokban. relatív változása A NUMA rendszerekben nem... • Egyéb hardver sajátosságok (pl. SSD, NUMA) • Felhasználási mód, funkciók • Versenytársak...
Sunday, February 14, 2010
Visszatekintés (folyt) Változások okai: Egyéb • Új hardver (SMP, RAID) elérési ideje NUMA: atechnológiák „hagyományos” memóriák címfüggetlen, amit ki isjellemzőinek használunk aabszolút memóriaés kezelő • Hardverek teljesítmény megoldásokban. relatív változása A NUMA rendszerekben nem... SSD: a „hagyományos” diszkek esetén az átvitel • Egyéb hardver sajátosságok (pl. SSD, aNUMA) helyfüggő (fejmozgások), amelyekkel különféle • Felhasználási funkciók algoritmusokmód, számolnak. Az SSD-k esetében nincs mozgó alkatrész... • Versenytársak...
Sunday, February 14, 2010
Visszatekintés (folyt) Változások okai: • Új hardver technológiák (SMP, RAID) • Hardverek teljesítmény jellemzőinek abszolút és relatív változása • Egyéb hardver sajátosságok (pl. SSD, NUMA) • Felhasználási mód, funkciók • Versenytársak...
Sunday, February 14, 2010
A továbbiakban • Programok és erőforrások dinamikus összerendelése – folyamatok • Tárgyalás időbeli fejlődést követ: – Egy processzor, nincsenek szálak – Több (szimmetrikus) processzor – Több szál (több processzoron) • Továbbiakban: – Operációs rendszeri megvalósítási modellek – Folyamatok és erőforrások összerendelése • CPU, memória, I/O – ütemezések • Együttműködés, verseny, problémák Sunday, February 14, 2010
Folyamatok • Mi a folyamat? • Multiprogramozott operációs rendszerek egyik alapfogalma • Először a Multics rendszer fejlesztői használták (60-as évek) • Jelentése (egyik): a program végrehajtás alatt álló példánya
Sunday, February 14, 2010
Program végrehajtása alatt álló… • A program futásához – legalább az aktuálisan végrehajtandó – utasításoknak és az általuk kezelt adatoknak a memóriában kell lennie • A program futása során több-kevesebb I/O eszközt szeretne használni (írni, olvasni), ezeket az operációs rendszer szolgáltatja a programoknak • Ahhoz, hogy a program valóban fusson, a fenti feltételeken (memória, I/O) túl a processzorhoz is hozzáférést kell kapjon
Sunday, February 14, 2010
Folyamatok
Sunday, February 14, 2010
Folyamatok
Sunday, February 14, 2010
Folyamatok
Sunday, February 14, 2010
Folyamatok
Sunday, February 14, 2010
Folyamatok
Sunday, February 14, 2010
Program végrehajtás alatt álló… • A folyamat leírható: – 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) – Egy végrehajtási szál (most éppen melyik utasítást kell végrehajtani)
• Kiindulás (most): az operációs rendszerek folyamatok szintjén ütemeznek (de már nem…) • Folyamat váltáskor a teljes folyamat környezetet meg kell őrizni – ez biztosítja a folytathatóságot!
Sunday, February 14, 2010
Program végrehajtás alatt álló… • A folyamat leírható: – 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) – Egy végrehajtási szál (most éppen melyik utasítást kell végrehajtani)
• Kiindulás (most): az operációs rendszerek folyamatok szintjén ütemeznek (de már nem…) • Folyamat váltáskor a teljes folyamat környezetet meg kell őrizni – ez biztosítja a folytathatóságot!
Sunday, February 14, 2010
Program végrehajtás alatt álló… • A folyamat leírható: – 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) – Egy végrehajtási szál (most éppen melyik utasítást kell végrehajtani)
• Kiindulás (most): az operációs rendszerek folyamatok szintjén ütemeznek (de már nem…) • Folyamat váltáskor a teljes folyamat környezetet meg kell őrizni – ez biztosítja a folytathatóságot!
Sunday, February 14, 2010
Folyamatok állapotai • A folyamatok és a processzorok közötti (dinamikus) összerendelésről az ütemező gondoskodik, a kiválasztást különféle ütemezési algoritmusok végzik • A hatékony ütemezés megvalósítása értekében bevezetjük a folyamatok állapotának fogalmát • A legegyszerűbb modell szerint egy folyamatnak két állapota lehet: – Fut, azaz éppen birtokolja a processzort – Nem fut
Sunday, February 14, 2010
Kétállapotú modell
Sunday, February 14, 2010
Kétállapotú modell
Sunday, February 14, 2010
Kétállapotú modell
Kritika: Nem tudjuk, hogy az éppen nem futó folyamat tudna-e futni egyáltalán
Sunday, February 14, 2010
Három állapotú modell
Sunday, February 14, 2010
Három állapotú modell
Sunday, February 14, 2010
Három állapotú modell
Kritika: Nem tudjuk, a blokkolt folyamat milyen (melyik) erőforrásra vár!
Sunday, February 14, 2010
Három állapotú modell bővítés
Sunday, February 14, 2010
Három állapotú modell bővítés
Kritika: a folyamat létrehozása és megszüntetése nem végtelenül rövid tevékenység!
Sunday, February 14, 2010
Öt állapotú modell
Sunday, February 14, 2010
Hét állapotú modell
Sunday, February 14, 2010
Valós állapot modellek (Unix)
Sunday, February 14, 2010
Sunday, February 14, 2010
Sunday, February 14, 2010
Sunday, February 14, 2010
Sunday, February 14, 2010
Sunday, February 14, 2010
Folyamatok közötti váltás • Okai – Időszelet letelte (Aktív ⇒ Futásra kész) – Blokkolódás I/O miatt (Aktív ⇒ Blokkolt) – Egyéb (pl. prioritások miatt)
• Megvalósítás (process switch) – Az éppen futó folyamat összes fontos adatának (környezetének) elmentése – A futásra kiválasztott folyamat környezetének visszaállítása – Vezérlés átadása az újonnan kiválasztott folyamatnak
Sunday, February 14, 2010
Folyamatok közötti váltás • Okai – Időszelet letelte (Aktív ⇒ Futásra kész) – Blokkolódás I/O miatt (Aktív ⇒ Blokkolt) – Egyéb (pl. prioritások miatt)
• Megvalósítás (process switch) – Az éppen futó folyamat összes fontos adatának (környezetének) elmentése – A futásra kiválasztott folyamat környezetének visszaállítása – Vezérlés átadása az újonnan kiválasztott folyamatnak
Sunday, February 14, 2010
Folyamatok közötti váltás • Okai – Időszelet letelte (Aktív ⇒ Futásra kész) – Blokkolódás I/O miatt (Aktív ⇒ Blokkolt) – Egyéb (pl. prioritások miatt)
• Megvalósítás (process switch) – Az éppen futó folyamat összes fontos adatának (környezetének) elmentése – A futásra kiválasztott folyamat környezetének visszaállítása – Vezérlés átadása az újonnan kiválasztott folyamatnak
Sunday, February 14, 2010
Folyamatváltás háttere • A környezet mentés és visszaállítás minden esetben kernel kódot igényel • A váltás során általában a memória táblákat (virtuális memória kezelés) is módosítani kell • A folyamat váltás meglehetősen sok utasítás végrehajtását (CPU ciklus) igényli, „drága” tevékenység!
Sunday, February 14, 2010
Mód váltás • Folyamat váltás során az érintett folyamat állapota megváltozik, másik folyamat lesz aktív (futó) • Bizonyos esetekben nem más folyamat, hanem a kernel kell, hogy fusson (pl. IRQ) • A folyamat folytatásához szükséges adatok ilyenkor is mentendők, de ez kevesebb, mint a teljes környezet (kevésbé „drága” tevékenység)! • Célszerű folyamat váltásról és mód váltásról külön beszélni!
Sunday, February 14, 2010
Kernel kód futtatása (mód váltás)
Sunday, February 14, 2010
Kernel kód futtatása (mód váltás) Mód váltás - kernel módba vált - kernel által használt adatokat menti - címtér nem változik, de kernel címtér elérhető - folyamat tovább futhat, státusza nem változik
Sunday, February 14, 2010
Folyamat váltás - folyamat minden adatát menteni kell - címtér változik - a folyamat státusza változik, más folyamat fog futni
Folyamatok létrehozása (Win)
Sunday, February 14, 2010
Végrehajtható fájl Végrehajtható fájl típus
Végrehajtás módja
Windows .exe
Közvetlenül
Win16 .exe
Ntvdm.exe program
MS-DOS .exe, .com, .pif Ntvdm.exe program MS-DOS .bat, .cmd
Cmd.Exe
POSIX kód
Posix.exe
OS/2 1.x kód
Os2.exe
Sunday, February 14, 2010
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
Sunday, February 14, 2010
Folyamat duplikálás – fork() mypid = fork() If(mypid == 0) { // Child printf(“%ld – I’m the parent\n”, getpid()) } else { // parent printf(“%ld – I’m the parent\n”, getpid()) }
Sunday, February 14, 2010
Folyamat duplikálás – fork() mypid = fork() If(mypid == 0) { … … // Child mypid = fork() printf(“%ld – I’m the parent\n”, getpid()) if(mypid == 0){ } else { // child … // parent } elseprintf(“%ld { – I’m the parent\n”, getpid()) // parent } … }
Sunday, February 14, 2010
Folyamat duplikálás – fork() mypid = fork() If(mypid == 0) { … … // Child mypid = fork() printf(“%ld – I’m the parent\n”, getpid()) if(mypid == 0){ } else { // child … // parent } elseprintf(“%ld { – I’m the parent\n”, getpid()) // parent } … }
Sunday, February 14, 2010
Folyamat duplikálás – fork() mypid = fork() If(mypid == 0) { … … // Child mypid = fork() printf(“%ld – I’m the parent\n”, getpid()) if(mypid == 0){ } else { // child … // parent } elseprintf(“%ld { – I’m the parent\n”, getpid()) // parent } … }
Sunday, February 14, 2010
Folyamat duplikálás – fork() mypid = fork() If(mypid == 0) { … … … … // Child mypid = fork() mypid = fork() printf(“%ld – I’m the parent\n”, getpid()) if(mypid == 0){ if(mypid == 0){ } else { // child // child … … // parent } elseprintf(“%ld { } else getpid()) { – I’m the parent\n”, // parent // parent } … … }
Sunday, February 14, 2010
}
Folyamat duplikálás – fork() mypid = fork() If(mypid == 0) { … … … … // Child mypid = fork() mypid = fork() printf(“%ld – I’m the parent\n”, getpid()) if(mypid == 0){ if(mypid == 0){ } else { // child // child … … // parent } elseprintf(“%ld { } else getpid()) { – I’m the parent\n”, // parent // parent } … … }
Sunday, February 14, 2010
}
Folyamat duplikálás – fork() mypid = fork() If(mypid == 0) { … … … … // Child mypid = fork() mypid = fork() printf(“%ld – I’m the parent\n”, getpid()) if(mypid == 0){ if(mypid == 0){ } else { // child // child … … // parent } elseprintf(“%ld { } else getpid()) { – I’m the parent\n”, // parent // parent } … … }
Sunday, February 14, 2010
}
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); } Sunday, February 14, 2010
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); } Sunday, February 14, 2010
Gy: Sz: Gy: Sz:
1,2 1,2 3,2 1,2
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)
Sunday, February 14, 2010
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 shellben)
Sunday, February 14, 2010
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
Sunday, February 14, 2010
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
Sunday, February 14, 2010
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
Sunday, February 14, 2010
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
Sunday, February 14, 2010
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
Sunday, February 14, 2010
Kernel kód futtatása folyamat címterében
Sunday, February 14, 2010
Folyamat alapú kernel
Sunday, February 14, 2010
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)!
Sunday, February 14, 2010
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)
Sunday, February 14, 2010
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
Sunday, February 14, 2010
Tipikus mikrokernel (alap)funkciók • • • •
Alacsonyszintű memória menedzsment IPC IRQ kiszolgálás I/O kezelés (alacsony szinten)
Sunday, February 14, 2010
Mikrokernel
Sunday, February 14, 2010
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ás igé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
Sunday, February 14, 2010