Teljes anyag, lezárva 99. XII. 17-én.
Megjegyzések:
Az NT Belső mechanizmusok, ill. Memóriakezelés részek vége vázlat formájában nem érhető el. A fenti részek a könyvből pótlandóak.
Az esetleges hibák listáját szívesen látom.
Vizsga
Összehasonlítva a többi vizsgáiddal, mennyire tartottad nehéznek az Operációs rendszerek II. vizsgát?
1 - könnyebb volt
2 - körülbelül a többi vizsgával azonos nehézségű volt
3 - nehezebb volt
Az Operációs rendszerek II. vizsgán számonkért anyag mennyire fedte le az előadáson elhangzott anyagot?
1 - 5
5 - nem volt olyan anyag a vizsgán ami nem szerepelt az előadáson
Az Operációs rendszerek II. vizsgán megszerzett érdemjegy mennyire tükrözte a tényleges tudásodat?
1 - jobb lett a jegy, mint a tudásom
2 - körülbelül tükrözte a jegy a tudásomat
3 - rosszabb lett a jegy, mint a tudásom
Az Operációs rendszerek II. vizsgára hány napot tanultál (1 nap kb. 10 óra tanulás)?
Előadás
Mekkora hányadára jártál be az Operációs rendszerek II. előadásnak?
százalék (max.100% !!!)
Összehasonlítva a többi tárggyal, mennyire tartottad az Operációs rendszerek II. előadás anyagát hasznosnak és érdekesnek a képzésed szempontjából?
1 - 5
1 - az elhangzott anyagnak soha egyáltalán nem fogom hasznát venni
5 - az elhangzott anyag nagy részére szükségem lesz
Mennyire volt jól ellátva az Operációs rendszerek II. előadás segédanyagokkal (jegyzet, óravázlat stb.)?
1 - 5
5 - az előadás jól el volt látva segédanyagokkal
Mennyire volt gyors ill. követhető az Operációs rendszerek II. előadás összehasonlítva a többi tárggyal?
1 - jóval gyorsabb volt, nehezen követhető
2 - gyorsabb volt, néha elvesztettem a fonalat
3 - az előadás körülbelül a többi tárgyal azonos gyorsaságú volt, jól tudtam követni
4 - lassabb volt, néha unatkoztam
5 - nagyon lassú volt, mindig unatkoztam
Mi az összbenyomásod az Operációs rendszerek II. előadásról? Előadás stílusa, az előadások struktúrája stb.
1 - 5
5 - tetszik
pár mondatos értékelés
UNIX operációs rendszer rövid története és jellemzői
1969: Bell Laboratórium (Ken Thompson)
Dennis M. Ritchie (MULTICS)
PDP-7
belső használatra
hatékony és elegáns rendszer
főleg szöveges állományok feldolgozására
első változat assembly
C nyelven újraírják
1974: első publikus változat V6
publikus forráskód egyetemek részére
több szálú párhuzamos fejlesztés
részben inkompatibilis verziók
szabványosítás (OSF, POSIX)
Irányzat |
Verziók |
Példák |
AT&T System X rendszerek |
System V Release 4.2 |
Sun Solaris, AT&T System V |
Berkley BSD X rendszerek (1992-ig) |
BSD 4.4 |
SunOS, ULTRIX (Alpha), BSD386, FreeBSD |
OSF rendszerek (1991) |
OSF/1 |
DEC Didital UNIX, IBM AIX, HP-UX |
POSIX
(IEEE szabvány) |
|
Linux |
Jellemzők
multiprogramozott környezet
időosztásos ütemezés
virtuális memóriakezelés
többfelhasználós rendszer
alapvető védelmi rendszer
hatékony on-line file rendszer
Előnyök
hatékony hardver kihasználás
integrált hálózati interface (1984, BSD, TCP/IP) (socket)
"hordozható" operációs rendszer
hordozható alkalmazások
könnyen kezelhető programozói interface (API) (rendszerhívások, API)
I/O egységek kezelése a file rendszer interface-en keresztül
hatékony és konfigurálható felhasználói interface (shell)
egyszerű de jól használható segédprogramok, tool-ok
programfejlesztés támogatása: make, verziókontroll programok
1999-9-3
1999-9-10
Windows NT
Microsoft cég új generációs operációs rendszere
DOS, ill. Windows rendszerek felváltása
Eredetileg az OS/2-es rendszerek nyomdokán
32-bites Windows rendszerekhez közelítetett
struktúrájában is különböző operációs rendszer:
New Technology (NT)
Megjelenés ideje |
Verzió szám
(belső név) |
A verzió tulajdonságai, ill. újdonságai |
1989. |
Az NT tervezésének kezdte. |
1993. július |
NT 3.1. |
Kompatibilis a WIN 3.1.-gyel;
16-bites operációs rendszer |
1994. szeptember |
NT 3.5
(Daytona ) |
Optimalizálják a rendszer méretét, és teljesítményét; hatékonyságnövelés. |
1995. május |
NT 3.51 |
Power PC architektúra támogatása. |
1996. július |
NT 4.0
(Shell Update Release – SUR) |
Azonos külső (felhasználói interfész) a Windows 95-ös rendszerekkel. Megnövekedett hatékonyság: pl. a grafikus alrendszer, képernyőkezelő funkciók (a Win32-es alrendszer egyes részei) átkerültek felhasználói módból kernel módba. |
- Elvárások
- Valós 32-bites, preemptív (kiszorításos, vagyis bármikor megszakítható), reentrens (a kód újra elindítható, több példányban futtatható), virtuális memóriakezelést megvalósító operációs rendszer legyen.
- Fusson különböző hardver platformokon.
- Fusson szimmetrikus multiprocesszoros környezetben, és ská
lázható tulajdonságával tegye lehetővé az adott környezetben rendelkezésre álló erőforrások hatékony kihasználását.
- Fusson elosztott hardver környezetben; és tegye lehetővé elosztott számítási környezet létrehozását.
- A “legtöbb” 16-bites MS-DOS é
s Windows 3.1-es alkalmazás (applikáció) futtatását tegye lehetővé.
- Teljesítse a POSIX 1003.1 szabványt. (Legyen POSIX-kompatibilis.)
- Teljesítse az amerikai biztonsági szabványokat.
- Használjon UNICODE-ot a karakterek és stringek ábrázolására.
- Tervezői célkitűzések
- Legyen az NT kódja “kiterjeszthető”, vagyis könnyen továbbfejleszthető. (A lehetőségeket figyelembe véve legyen nyílt rendszer.)
- Legyen hordozható a kód, vagyis a későbbiekben legyen lehetőség könnyen új hardver platformokra át
vinni.
- A legyen rendszer megbízható és robosztus (teherbíró). Ennek három vonatkozását különböztették meg:
- két applikáció futása ne befolyásolja egymást,
- egy applikáció ne dönthesse össze az operációs rendszert,
- az operációs rendszer belső
komponensei “megférjenek” egymás mellett.
A lehetőségekhez mérten maximálisan legyen kompatibilis a meglévő rendszerekkel. Itt mind a felhasználói interfészre, mind pedig a programozói interfészre (API-ra) gondoltak. A kompatibilis rendszereknek két csoportját különböztették meg:
A Microsoft korábbi operációs rendszerei: MS-DOS, Windows 3.2.
Nem a Microsoft által készített, azonban széles körben elterjedt rendszerek: UNIX, OS/2, NetWare.
A rendszer a hardver környezettől függetlenül legyen hatékony, vagyis a teljesítménye legyen maximális bármelyik hardver platformon.
A Windows NT, a Windows 95, és a Windows 98 összehasonlítása
Tulajdonságok |
NT |
95/98 |
Multiprocesszoros környezet támogatása |
* |
- |
Változó HW platform |
* |
+ (korlátozottan) |
NTFS (biztonsági hozzáférés) |
* |
- |
32 bites kód |
* |
+ |
Reentrens (több példányban, párhuzamosan futtatható) kód |
* |
- |
16-bites (Windows 3.1-es) alkalmazások futtatása |
*
(biztonságos) |
+
(összeakadhatnak) |
Megosztott memória elérésének korlátozása |
csak az ér el aki megnyitja |
mindenki elérheti |
A rendszer adatstruktúráit nem érhetik el az applikációk |
* |
sok adatszerkezet elérhető |
User módban nem írhatóak az operációs rendszer adatai |
* |
- |
NT 5.0-ban várható újdonságok |
Plug and Play képesség |
- |
+ |
Power management |
- |
+ |
Infrared támogatás |
- |
+ |
FAT32 könyvtárszerkezet támogatás |
- |
+ |
Minden Windows 3.1-es és DOS alkalmazás futtatása |
-(nem is lesz) |
* |
FOLYAMATOK A UNIX-BAN
UNIX folyamatok
A multiprogramozott operációs rendszer alapfogalma.
Absztrakt fogalom.
Gyakorlati kép:
végrehajtás alatt álló program.
Folyamat virtuálisan egyedül fut a rendelkezésre álló hardveren.
Hardver erőforrások elérése:
operációs rendszeren keresztül.
Erőforrás igénylés. Várakozás.
Operációs rendszer feladata:
összehangolja az egyes folyamatok perifériás műveleteit,
elossza a rendelkezésre álló hardver erőforrásokat.
Folyamatok memóriája
Egyszerre több folyamat a fizikai memóriában
Logikai memória kép:
memória cím – memória tartalom összerendelés.
logikai memóriacím
fizikai memóriacím
Folyamatok párhuzamos végrehajtása
egy fizikai processzor → virtuális párhuzamos végrehajtást
CPU ütemezés:
gyors váltás, futó folyamatok számára szinte észrevétlen
UNIX:
időszeletet (time slice vagy quantum),
prioritásos, preemptív (kiszorításos, erőszakos)
A folyamatok megszakítása, ill. újraindítása
Folyamatok környezete:
a folyamat és az őt végrehajtó gép állapota.
(programszámláló (program counter), regisztarek, MMU használt erőforrások stb.)
A UNIX rendszer és a folyamatok kapcsolata
Operációs rendszer szolgáltatások a folyamatoknak, lehetőségek a perifériák kezelésére.
Az operációs rendszer
belső magja, az ún. kernel, a következő négy működést valósítja meg:
- rendszerhívások (system call
)
UNIX programozói interfésze, API application programming interface
operációsrendszer szolgáltatásainak elérése,
kernel funkciókat aktivizálása,
erőforrások kezelése.
kivétel (exception)
pl. nullával történő osztás, memóriaterületről történő kicímzés, stb.
utasítás végrehajtással szinkron események
kivételek kezelése kernel feladat
hardver megszakítások (hardware interrupt)
perifériák állapotának megváltozása,
utasítás végrehajtással szinkron események,
interrupt-ok kezelése kernel feladat (csak kernel erőforrások).
daemon folyamatok,
operációs rendszer önálló folyamatokként megvalósított funkciói, rendszer erőforrásait használják, de a többi folyamathoz hasonlóan rendszerhívásokon keresztül érik el a kernel szolgáltatásait.
1999-9-10-17
Folyamatok futási környezete
Folyamatok logikai memóriaképe:
- operációs rendszer által használt memóriára, ill. a
- folyamat által használt memóriára
Memória védelme:
- rendszer környezet (system context) és a
- felhasználói környezet (user context) megkülönböztetése.
Rendszer környezet:
- operációs rendszer memóriaterületei,
kernel erőforrásai,
kernel stack
Felhasználói környezet:
- alkalmazás adatterületei,
- user stack.
K
ülönböző módú programfuttatás:
felhasználói mód (user mode),
és egy privilegizált, kernel mód (kernel mode).
|
Folyamat környezet |
|
Felhasználói mód |
alkalmazás
(csak a folyamat memória területe érhető el) |
rendszerhívások, kivételkezelő
(folyamat és rendszer memória is elérhető) |
Kernel mód |
nem megengedett |
megszakítás-kezelő, rendszer folyamatok
(csak a rendszer memória érhető el). |
|
Rendszer környezet |
|
Megszakítások (interrupt)
aszinkron módon fellépő eseményekre a rendszer reagálni tudjon
interrupt rutin lefuttatása
nincs környezetváltást (context switch),
Interruptot okozhat:
hardver erőforrás (I/O periféria),
hibaesemény, a normától eltérő működés.
Az interrupt rutin által vé
gzett tipikus műveletek:
(végrehajtási mód váltása: user® kernel)
Elmenti az aktuális processzor környezetet.
IT kiváltó esemény azonosítása.
IT kiszolgáló rutin meghatározása.
IT rutin hívása.
Környezet visszaállítása.
(végrehajtási mód váltás: kernel ® user)
Rendszerhívások
programozói interfész
(application programing interface, API)
függvényhívásokon keresztül
függvénykönyvtárak

- Az ütemező hardver-támogatása: az óra-interrupt
A hardver óra
adott időközönként megszakítást okoz.
Gyakorisága: tikk
(óra-tikk, CPU-tikk): 10 ms (rendszerfüggő: HZ).
Az óramegszakítás-kezelő az alábbi fő feladatokat hajtja végre:
A hardver óra újraindítása, amennyiben ez szükséges.
Az aktuálisan futó folyamat CPU használati statisztikájának frissítése
prioritás újraszámítása,
időszelet lejártának kezelése stb.
SIGXCPU signal küldése az aktuális folyamatnak, amennyiben az túllépte az idő kvótáját.
A rendszer óráinak frissítése (napi óra).
A call-out függvények ellenőrzése.
Bizonyos rendszerfolyamatok kezelése (swapper, pagedaemon).
Riasztások (alarm) kezelése.
Folyamatok állapot-átmeneti diagramja
fork rendszerhívás
gyermek folyamat
szülő folyamatnak
visszatérési értékk (PID, 0)
ready to run (futásra kész) állapot:
scheduler (ütemező)
created (létrehozott) állapot
asleep in memory (memóriában alvó)
sleep rendszerhívás
wake up átmenet:
swapped out
kernel running
user running
preempted (erőszakosan megszakított, kiszorított) állapot
redy to run (futásra kész)
zombie állapot:
Folyamat állapotainak változását keletkezése után.

1999-9-17
1999-9-24
A folyamatok környezetének adatelemei
Minden adat, ami szükséges a folyamat újraindításához
Két adatstruktúrában tárolódnak:
- u area (user area, felhasználói terület)
processz memóriájában
- proc (processz) struktúra
rendszer memóriájában
Felhasználói címtartomány
A u area
Processz-táblázatának (Process Table)
A user area elemei:
egyszerű adatelemek:
PCB (hardver környezet, regiszterek)
mutató a folyamat proc struktúrájára
jogosítványok (valós és hatásos UID, GID)
signal handler (kezelő) rutinok címei
CPU használati statisztika
környezeti változók (aktuális könyvtár, kontroll terminál, keresési út, stb.)
összetett adatelemek:
a folyamathoz tartozó memória (a felhasználói címtartomány) elérésére szolgáló táblázat (címtranszformációs tábla, per process region table)
fájl-leírók táblázata (per process file descriptor table)
kernel módban használt veremtár (per process kernel stack)
A hardver környezet (PCB) tartalmazza a CPU regisztereit:
- utasításszámláló (PC)
- stack pointer (SP)
- processzor-állapotleíró bitek (
process status word), pl. carry (átvitel) bit
- memóriakezelő egység regiszterei (Memory Management Units, MMU)
- Lebegőpontos egység (Floating Point Units) regiszterei
A proc struktúra
A proc struktúra elemei:
- processz azonosító (PID)
- user area-ra mutató referencia
- processz állapota (kernel vagy user módban fut, várakozó vagy futásra kész, stb.)
- ütemezési információ (p_cpu, p_usrpri,…)
- ütemezésnél használt egyéb mutatók (pl. milyen prioritási kategóriában van)
- signalok kezelésére vonatkozó információ (ignored-blocked-posted-handled)
- MMU információ (milyen MMU regisztereket kell frissíteni a folyamat futtatásakor)
a processzek különböző listáihoz (aktív, zombie, szabad) tartozó linkek
jelzőbitek
a PID alapján hash táblában történő tároláshoz szükséges mutatók
a processzek hierarchiájában elfoglalt helyre vonatkozó információ
processz szülője, processz gyermekei, stb.
A processz-táblázat és egy folyamathoz tartozó u area
Processz-táblázat: Proc2 u area:
Kernel Stack:
Az a stack, amit a folyamat akkor használ, amikor kernel módban fut, vagyis rendszerhívások módváltása után, ill. interruptok esetén.
MMU címtranszformációs táblázat
Az a táblázat, amiben az operációs rendszer számon tartja a folyamat által megnyitott fájlokat, ill. a fájlok eléréséhez szükséges információt.
- Felhasználói címtartomány
TEXT |
|
Program kód terület |
Statikus kódterület |
Dinamikusan linkelt könyvtárak (DLL) |
DATA |
Adat terület |
Inicializált adatok (BSS) |
Nem inicializált adatok |
Osztott elérésű adatok |
Dinamikusan foglalt adatok (HEAP) |
STACK |
Veremtár |
.1. ábra: Egy program logikai címtartományának felépítése
Operációs rendszer: logikai címeket fizikai címekké transzformálja:
- Címtranszformációs tábla (per process region table)
- CPU MMU egységének segítségével.
Új folyamat indulása a UNIX-ban
A fork rendszerhívás – a processz generálás – lépései:
- SWAP területet foglalása az új folyamat számára.
- Új PID generálás az új folyamat számára.
- Process Tábla bejegyzés foglalása az új folyamat számára.
- U area foglalása és másolása:
Egyszerű adatelemek (PCB, jogosítványok stb.)
Kernel Stack és a táblázatok (File Table, Region Table) másolása
A folyamat által írható memória területek másolása.
Hivatkozási számláló növelése globális Region Table-ben a csak olvasható memóriaterületekhez tartozó bejegyzések esetén és a globális File Table-ben.
Új program betöltése: exec hívás. A folyamat a paraméterként megadott programot hajtja végre:
- exec
(fájlnév) /*fájlnév nevű fájl indítása*/
Példa a fork és az exec használatára:
if((result=fork())==0)
{
printf("GYERMEK VAGYOK");
exec("gyermek_kód",...);
}
else
{
if(result<0)
{
printf("HIBA");
/*hiba esetén negatív értéket ad vissza*/
}
else
{
printf("Anya vagyok. Gyermekem PID-je:%d", &result);
/*ha a visszatérési érték >0, írja ki*/
{
}
SIGNAL-kezelés
A signal (jelzés) események kezelésére.
- Aszinkron és szinkron események kezelése.
- A megadott függvény vagy beépített funkció meghívása.
Konstansként definiált eseményazonosítók: SIGINT, SIGKILL, SIGSTOP.
Események kezelése
Beépített (rendszer által megvalósított) funkciók:
A folyamat befejeződik (kilép), és generál egy ún.
core fájlt, ami tartalmazza a folyamat memóriaképét kilépéskor. Ezt elemezve esetleg meghatározhatjuk, hogy mi okozta a leállást.
Kilép core fájl generálása nélkül.
Elveti az eseményt, nem veszi figyelembe. (Nem minden signal esetén lehetséges.)
Felfüggeszti a folyamat futását.
Folytatja a folyamat futását.
A felhasználó által definiált működés leírása a következőképpen történik:
Függvény, amelyben a felhasználó definiálja a kívánt működést.
A signal (SIGNUM, handler) rendszerhívással megadja, hogy a “handler” rutin hajtódjon végre a SIGNUM számú signal érkezésekor.
SIGNAL-ok ellenőrzése
A következő alkalmakkor ellenőrzi a UNIX a signal-ok érkezését:
amikor a processz kernel running állapotból user running állapotba vált,
amikor kernel running állapotból sleep állapotba vált,
amikor ready to run állapotból kernel running állapotba vált.
SIGNAL-források
A folyamatok egymásnak is küldhetnek signal-
t, de ez a lehetőség korlátozott. Az operációs rendszer csak azonos UID-vel rendelkező folyamatok között engedi meg signal-ok küldését. Fontos, hogy a signal-ok kezelésénél a rendszer mindig a valós user ID-t veszi figyelembe.
A signal-ok forrásai lehetnek:
- Exeption (kivétel) pl.: nullával való osztás, nem megengedett memória elérési kísérlet stb.
- Másik folyamat.
- A kernel küld egy signalt pl. I/O egység kezelésekor egy adott adatcsomag megérkezésekor.
- Alarm érkezése.
- Kvóta-túllépés.
- Folyamatok kezelése. (A shell a háttérben futó folyamatok kezelésére signal-okat használ.)
SIGNAL kezelése alvó folyamatok esetén
Az alvó (sleep állapotban levő) processzeket két csoportba soroljuk:
megszakítható:
Ha signal érkezik, a rendszer felébreszti (átteszi redy to run állapotba) a folyamatot.
nem megszakítható:
Csak a rendszerhívás után értesül a signal-ról és akkor kezeli le.
1999-9-24
1999-10-01
A UNIX védelmi rendszere
Illetéktelen hozzáférés megakadályozása:
- az egyes felhasználók adataihoz
- az operációs rendszer adataihoz
erőforrásokhoz.
Jogosítványokon keresztül valósul meg.
A UNIX védelmi rendszerének működése
Minden felhasználónak van egy azonosítója (UID).
A jogosítványok könnyebb kezeléséhez:
- csoport (group) ID is (továbbiakban GID).
Fájl i-node:
- fájl tulajdonosának jogosultságai,
- fájl tulajdonosának csoportja jogosultságai,
- az összes többi felhasználó jogosultságai.
Egy futó processznek két azonosítója, ID-je van:
- hatásos UID (ill. GID):
a védelmi rendszer fájlhozzáféréskor/eléréskor használja.
- valós UID (GID):
signal-ok kezelésekor vizsgálja a védelmi rendszer.
Processz elindul (alapeset):
- elindító felhasználó jogaival fog rendelkezni, megkapja folyamatot elindító felhasználó UID-ját.
- hatásos és valós UID megegyezik.
Hatásos UID megváltoztatása:
- Fájl-leíró: "suid" bit = 1,
létrejövő processz a fájl tulajdonosának jogait (UID) kapja meg.
Kitüntetett felhasználó, a root (UID=0), aki minden jogosultsággal rendelkezik. A root számá
ra minden fájl elérhető.
FOLYAMATOK ÜTEMEZÉSE A UNIX-BAN
Ütemező a multiprogramozott operációs rendszer "lelke".
Ütemező algoritmus megválasztása meghatározza:
a rendszer teljesítményét
a hardver kihasználtságát.
Tradicionális UNIX ütemezési algoritmus:
- Az SVR3, ill. 3.1BSD UNIX rendszerek alkalmazták.
- Néhány megoldás már idejétmúlt.
- A mai UNIX rendszerek az algoritmus valamilyen továbbfejlesztett változatát használják.
Az ütemezési algoritmussal szemben támasztott követelmények
A UNIX rendszer feltételezett felhasználása:
- több felhasználós,
- interaktív programok,
- batch programok.
Követelmények:
Alacsony válaszidő (interaktív folyamatok).
Nagy átbocsátó képesség.
Éhezésének elkerülése (háttérben futó pl. batch folyamatok).
Általános kritériumok:
A rendszer terhelését figyelembe vevő ütemezés.
(A terhelés növekedésével nem hirtelen omlik össze).
Lehetőség a folyamatok futási jogosultságának befolyásolására.
A UNIX-ütemezés rövid jellemzése
Prioritásos
ütemezés, időben dinamikusan változó prioritással. Felhasználói, ill. kernel módban eltérő algoritmus.
felhasználói mód:
preemptív ütemezés, időosztásos, időben változó prioritás.
Azonos prioritású folyamatok esetén körben forgó (Round-Robin), FCFS ütemezés (First Come First Served)
kernel módban futó folyamatok ütemezése:
nem preemptív ütemezés, fix prioritású folyamatok.
Felhasználói módban az ütemezés preemptív:
- Ha egy magasabb prioritású folyamat futásra késszé válik:
ütemező elveszi a futás jogát az alacsonyabb prioritású felhasználói módban futó folyamattól.
- Ha több azonos prioritású folyamat van futásra készen és nincs náluk magasabb prioritású futásra kész folyamat:
akkor az azonos prioritású folyamatok között időoszt ásos, körben forgó (Round-Robin) ütemezést valósít meg a rendszer (FCFS).
A kernel módban az ütemezés szigorúan nem preemptív:
- Kernel kódot végrehajtó folyamatot (pl. rendszerhívás, megszakítás-kezelés) nem lehet kényszeríteni, hogy lemondjon a CPU használatról egy nagyobb prioritású folyamat javára.
Átütemezés kernel módban:
- önként lemond a futás jogáról (sleep rendszerhívást hajt végre).
- folyamat visszatér kernel módból felhasználói módba.
A kernel kód reentrens!
Példa ami indokolja, hogy a kernel nem preemptív:

Láncolt lista egy közbülső elem lefűzése előtt

Láncolt lista egy közbülső elem lefűzése közben
Folyamatok ütemezési prioritása
0 |
legnagyobb prioritás |
KERNEL prioritások |
. |
|
. |
|
. |
|
49 |
|
50 |
|
FELHASZNÁLÓI prioritások |
. |
|
. |
|
. |
|
127 |
legkisebb prioritás |
Prioritás meghatározása kernel módban
Kernel módban a prioritás attól függ, hogy a rendszer milyen ok miatt hajtott végre sleep rendszerhívást, vagyis, hogy milyen eseményre várakozik. Emiatt a kernel prioritást szokták alvási prioritásnak is nevezni.
Prioritás meghatározása felhasználói módban
Két fő tényező:
nice szám (kedvezési szám),
CPU használat.
A nice szám a felhasználó által meghatározható érték, amivel kifejezheti, hogy mennyire fontos az általa indított folyamat.
A prioritás számításához négy paramétert használ a UNIX:
- p_pri
: aktuális ütemezési prioritás
- p_usrpri
: felhasználói módban érvényes prioritás
- p_cpu
: a CPU használat mértékére vonatkozó szám
- p_nice
: a felhasználó által futás elején adott nice szám
Az operációs rendszer a fenti paramétereket minden folyamat esetén külön-külön számon tartja.
Az ütemező a
p_pri paraméterben tárolja a folyamat aktuális prioritását.
Felhasználói mód:
Kernel mód:
A p_cpu paraméter a folyamat CPU használatára jellemző érték.
- Folyamat indításakor p_cpu := 0,
- Minden óra-interrupt lekezelésekor futó process p_cpu := p_cpu +1.
- minden 100-adik interruptnál az ütemező újraszámolja
minden folyamat felhasználói prioritását a következő három lépésben:
korrekciós faktor (KF) számítása:
KF: = 2*futásra kész folyamatok száma /
2* futásra kész folyamatok száma+1
p_cpu = p_cpu * KF
p_usrpri = P_USER+p_cpu/4+2*p_nice
|
futó folyamat |
minden folyamat |
minden interrupt |
p_cpu := p_cpu +1 |
Megvizsgálja, van-e a futónál magasabb prioritású folyamat. Ha van, átütemez. |
minden
10. interrupt |
Round-Robin algoritmus: ha több azonos prioritású folyamat van a legmagasabb prioritású pozícióban, 10 óra-interrupt-onként váltja a futó folyamatot |
minden
100. interrupt |
|
- korrekciós faktor számítása
- p_cpu = p_cpu * KF
- p_usrpri = P_USER+p_cpu/4+2*p_nice
|
P_USER konstans, értéke a legkisebb felhasználói prioritás értékével egyezik meg, vagyis példánkban P_USER = 50.
A KF korrekciós faktor számításával a rendszer terhelését igyekszik figyelembe venni a
z ütemező.
Az ütemezési algoritmus, ill. a hozzá kötődő tevékenységek nem közvetlenül az interrupt-ban hajtódnak végre (call-out mechanizmus).
Környezetváltás ütemezéskor
Nem preemptív ütemezés:
- várakozik:
sleep rendszerhívás.
- kilép:
exit rendszerhívást hajt végre.
Preemptív ütemezés:
- A 100-adik óraciklusban a prioritások újraszámításakor az egyik folyamat prioritása nagyobb lesz, mint a futó folyamat prioritása.
- A 10-edik óraciklus esetén a Round-Robin algoritmus egy másik, azonos prioritású folyamatot ütemez futásra.
Egy futó folyamat vagy interrupt-kiszolgáló rutin működésének eredményeképpen felébred (ready to run állapotba jut) egy az aktuálisan futónál magasabb prioritású, eddig várakozó folyamat.
Adatszerkezetek folyamatok prioritásának tárolására
Dinamikus adatszerkezetek.
Az azonos prioritású futásra kész folyamatok:
Az adott prioritású folyamatok:

A folyamatok prioritásának tárolása
Példa az ütemezés számolására
minden óra megszakításnál: p_cpu := p_cpu +1
minden 100-adik óra-interruptnál :
p_cpu = p_cpu * KF = p_cpu * ˝
p_usrpri = P_USER+p_cpu/4+2*p_nice = 50 + p_cpu/4
A |
B |
C |
|
p_pri |
p_cpu |
p_pri |
p_cpu |
p_pri |
p_cpu |
Lépés |
Futó foly. |
50 |
0 |
50 |
0 |
50 |
0 |
1 |
A |
50 |
1 |
50 |
0 |
50 |
0 |
2 |
A |
… |
… |
… |
… |
… |
… |
… |
A |
50 |
99 |
50 |
0 |
50 |
0 |
99 |
A |
50+50/4
63 |
100/2
50 |
50 |
0 |
50 |
0 |
100 |
A |
63 |
50 |
50 |
1 |
50 |
0 |
101 |
B |
… |
… |
…. |
… |
… |
… |
… |
B |
63 |
50 |
50 |
99 |
50 |
0 |
199 |
B |
50+25/4
56 |
50/2
25 |
50+50/4
63 |
100/2
50 |
50 |
0 |
200 |
B |
56 |
25 |
63 |
50 |
50 |
1 |
201 |
C |
… |
… |
…. |
… |
… |
… |
… |
C |
56 |
25 |
63 |
50 |
50 |
100 |
299 |
C |
50+13/4
53 |
25/2
13 |
50+25/4
56 |
50/2
25 |
50+50/4
63 |
100/2
50 |
300 |
C |
A UNIX-ütemezés értékelése
Nem méretezhető megfelelően. A korrekciós faktor használata nem elég hatékony eszköz.
Az algoritmussal nem lehet meghatározott CPU időt allokálni
Nem lehet a folyamatok fix válaszidejét garantálni.
Ha egy kernel rutin sokáig fut, az feltartja az egész rendszert.
A felhasználó a folyamatainak prioritását nem tudja megfelelő módon befolyásolni. A nice szám nem elég hatásos eszköz.
Call-out
A call-out
mechanizmus egy adott tevékenység későbbi időpontban történő végrehajtása:
timeout (függvény)
untimeout (függvény)
Ismétlődő
feladatok (kernel funkciók) végrehajtása:
- hálózati csomagok ismételt elküldésére,
ütemezési és memóriakezelő függvények hívására,
perifériák monitorozására,
perifériák lekérdezésére, amelyek nem támogatják a megszakításokat.
A megszakítás-keze
lő nem közvetlenül hívja meg a call-out függvényeket, hanem beállít egy erre a célra rendszeresített jelzőbitet.
Dinamikus adatszerkezet a call-out függvények kezelésére:
időkerekes.
Call-out függvények láncolt listás ábrázolása

Call-out függvények tárolása időkerékkel

1999-10-01
1999-10-06
A UNIX FÁJLRENDSZER
UNIX File System (UFS):
- On-line fájlrendszer.
- Változatlan felhasználói felület.
- Nyolcvanas évek: elosztott fájlrendszerek megjelenése:
Felület marad, belső működés változik.(pl. Virtual FS, VFS)
UFS jellemzők
Alapegység: fájl.
Soros (szekvenciális) elérés.
Transzparens (átlátszó) fájl-szerkezet.
Könyvtárak szerkezete: fa (irányított körmentes gráf).
Linkek (kapcsolatok) létrehozásának lehetősége.
UFS felhasználói felület jellemzői
A fájlok elérése: /út/fájlnév.
Egyetlen gyökérkönyvtár ("/").
Fájlrendszerek összekapcsolása (mount).
Egy fájlra több névvel is hivatkozhatunk.
A UNIX fájlrendszerben használat adatszerkezetek
i-node(index node).
Könyvtár leírás:
a "." nevű file.
i-node-szám (2bájt) |
fájl neve (14 bájt) |
6 |
. |
5388 |
.. |
45 |
adat.dat |
677 |
.titok.titkos |
|
|
i-node
Fájl típusa, ami a következők egyike lehet
speciális (I/O),
adatállomány,
könyvtár (katalógus) bejegyzés,
PIPE/FIFO.
Az adott i-node-ra mutató linkek száma.
Eszköz ID.
i-node-száma (azonosítója, ID-je).
UID, GID (a fájl tulajdonosának felhasználói és csoportazonosítója).
A UNIX védelmi rendszere használja.
Időpontok
utolsó elérés,
utolsó módosítás,
attribútumok módosítása.
Mód flag-ek.
A fájl elérési jogai
A fájlhoz tartozó adatblokkok elérési információja.
Fájl létrehozásakor a fájl a létrehozó felhasználó hatásos user-ID-jét és group-ID-jét örökli.
Fájlrendszer méretének korlátja:
- a logikai diszk mérete nem lehet nagyobb a fizikai diszk méreténél.
Fájl méretének korlátja:
- a fájl mérete nem lehet nagyobb a logikai diszk méreténél.
- Fájlok kezelése
- Nyitás: file descriptor a további kezeléshez.
- Processz: File Descriptor Table
- Rendszer: Global File Descriptor Table, i-node Table
|
u area |
|
|
Global File Descriptor Table |
|
i-node Table |
|
File Descriptor Table |
|
|
|
|
|
|
read |
|
|
read/write |
|
|
|
write |
|
|
eltolás |
|
i-node |
|
write |
|
|
referencia szám=1 |
|
referencia szám=1 |
|
|
… |
|
|
|
|
|
|
read/write |
|
|
|
|
|
|
read |
|
|
read/write |
|
|
|
… |
|
|
eltolás |
|
i-node |
|
|
|
|
referencia szám=1 |
|
referencia szám=1 |
|
|
|
|
|
|
|
A UNIX fájlkezelésre használt rendszerhívások:
(nyitás módja, fájl_név)
nyitáskor az eltolási érték 0 lesz, a jogok ellenőrzése megtörténik
az fopen hatására létrejön egy bejegyzés a processz FDT-ben
read(olvasandó byte_szám, fájl_descriptor)
chown(fájl_descriptor)
UID megváltoztatása
utimes(fájl_descriptor)
időpontok módosítása
Standard csatornák
input: STDIN, fájl descriptora: 0 (szabványos bemeneti csatorna)
output: STDOUT, fájl descriptora: 1 (szabványos kimeneti csatorna)
error: STDERR, fájl descriptora: 2 (szabványos hiba csatorna)
Új fájl nyitása:
első szabad file descriptor.
Standard csatornák átirányítása:
- fájl descriptor-t duplikálunk (átmásolunk dup() rendszerhívással).
Példa:
fd = fopen("r","myinput");
/*új fájl nyitása, fd=visszatérési szám*/
fclose(1); /*STDIN lezárása*/
dup(fd);
/*a "myinput FD-jét az elsõ szabad helyre másolja*/
Adatszerkezetek és fájlrendszer leírók a lemezen
Fájlrendszer a lemezen:
1999-10-086, 1999-10-08
A SUPER BLOCK
A SUPER BLOCK tartalma:
- a fájlrendszer mérete
- a szabad adatblokkok száma
- a szabad adatblokkok listája
a következő szabad adatblokk indexe a szabad adatblokkok listájában
az i-nodelista mérete
a szabad i-node-ok száma
a szabad i-node-ok listája
mutató az első szabad i-node-ra a lemezen tárolt i-nodelistában
Szabad adatblokkok tárolása
Szabad adatblokkokra mutató tömbök láncolt listája
Cél: gyors kiszolgálása a kéréseknek.
Egy adatblokk 512 bájt * 2n nagyságú, ahol n tetszőleges egész szám. Általános az 1K-s blokkméret.
következő szabad adat blokk mutatója |
super block |
|
|
|
|
|
|
|
|
|
|
83 |
|
|
|
|
|
|
|
Szabad adatblokkok listája |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
szabad
blokk |
|
szabad
blokk |
|
szabad
blokk |
|
|
adat blokkok területe a lemezen |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Láncolt lista első eleme (83-as adat blokk) |
|
|
95 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
szabad
blokk |
|
szabad
blokk |
|
szabad
blokk |
|
szabad
blokk |
|
szabad
blokk |
|
szabad
blokk |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Az i-node-ok tárolása a rendszerben
Cél: gyors kiszolgálása a kéréseknek.
|
super block |
i-node lista (lemezen) |
|
szabad i-node-ok listája (super block) |
f. |
f. |
f. |
f. |
sz |
f. |
sz |
|
|
sz |
sz |
sz |
sz |
x |
x |
|
|
|
|
|
|
|
|
|
|
|
|
első szabad i-node |
|
|
|
|
|
|
|
a lemezen |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foglalt vagy super block-ban szerepelő i-node |
A UNIX fájlrendszer felhasználói interfésze
A UNIX fá
jlrendszer felhasználói felületének lehetőségei:
standard input/output átirányítás;
mount: két fájlrendszer logikai összefűzése;
linkek létrehozása:
hard link,
szimbolikus link;
pipe (csatorna).
Hard link
Egy fájl különböző nevekkel történő elérése.
ln /home/users/usr1/file /home/users/usr2/hardlink
/home/users/usr1 |
|
/home/users/usr2 |
43 |
. |
|
67 |
. |
23 |
.. |
|
88 |
.. |
92 |
file |
|
59 |
adat.dat |
91 |
titok.mese |
|
92 |
hardlink |
|
|
|
|
|
|
|
|
|
|
Hátrány:
- Felhasználó elvesztheti a felügyeletet a fájljai felett.
- Szimbolikus link
Hard link hibáinak kiküszöbölése. (4.2 BSD)
ln -s /home/users/usr1/file /home/users/usr2/szimb_link
/home/users/usr1 |
|
/home/users/usr2 |
43 |
. |
|
67 |
. |
23 |
.. |
|
88 |
.. |
92 |
file |
|
59 |
adat.dat |
91 |
titok.mese |
|
- |
szimb_link: /home/users/usr1 |
|
|
|
|
|
|
|
|
|
- Pipe
A pipe
(csatorna, csővezeték):
FIFO tároló,
egy vagy több processz írhat bele,
egy vagy több processz olvashatja,
automatikus szinkronizáció,
mérete korlátos, hossza 10 Kbájt,
megvalósítás: fájl rendszerben (általában).
Kétféle pipe van:
- elnevezett pipe: mknode(csatorna_név),
- név nélküli pipe: pipe().
Elosztott rendszerek
Elosztott rendszer:
autonóm műveletvégző egységek,
összeköttetés: kommunikációs csatornán keresztül,
komponensek összehangolásával feladatok közös megoldása.
Párhuzamos rendszerek típusai:
- szorosan csatolt
(vagy multiprocesszoros) rendszerek, illetve
- lazán
csatolt rendszerek.
Terminológia:
- Elosztott rendszer: lazán csatolt rendszer.
Elosztott rendszerek típusai:
távoli csomópontok közötti, nagy területű hálózat
(wide-area network - WAN),
lokális (helyi) hálózat (local-area network - LAN).
- Elosztott rendszerek tulajdonságai
Elosztott rendszerek előnyei:
- erőforrás-megosztás (resource sharing),
nyílt rendszer (open system),
konkurens működés (concurrency),
méretezhető rendszer (scalability),
hibatűrés, megbízhatóság (fault tolerance, reliability),
átlátszóság (transparency).
Elosztott rendszerek operációs rendszerei
hálózati operációs rendszer,
elosztott operációs rendszer.
Hálózati operációs rendszer:
A felhasználó tudatában van a hardver elosztott voltának.
Pl.: rlogin, ftp.
Elosztott operációs rendszer:
A felhasználó nincs tudatában a hardver elosztott voltának.
Pl.: adatvándorlás, folyamatok vándorlása (data, process migration).
ELOSZTOTT FÁJLRENDSZEREK
Távoli csomópontokban elhelyezkedő fájlok elérése a helyi fájlokkal azonos interfészen keresztül.
Elosztott fájlrendszerekkel szemben támasztott követelmények
Hozzáférés átlátszósága:
lokális és távoli fájlok azonos eljárásokkal történő kezelése.
Elhelyezkedés átlátszósága:
a fájlok neve nem hivatkozik fizikai elhelyezkedésükre.
a fájlok a rendszerben mozgathatók anélkül, hogy megváltozna az elnevezésük.
- Méretezés átlátszósága (skálázhatóság):
a fájlrendszer méretezhető.
egy komponensek hibája esetén képes tovább működni.
Felhasználók mobilitása:
az összes fájl a rendszer minden belépési pontjáról elérhető.
Fájlok mobilitása:
a fájlok áthelyezhetők az egyik helyről a másikra a rendszer futása közben is.
Elosztott fájlrendszerek megvalósítása
Kliens-szerver modell
Kliens állapotának tárolása
Az elosztott fájlrendszer megvalósítása lehet:
- állapotmentes, és
- állapottárolós.
Fájlok elnevezése elosztott fájlrendszerben
Az egyes csomópontokban az állománynevek tere lehet
- uniform
(egységes), ill.
- nem uniform
(nem egységes).
Uniform

Nem uniform

- A SUN Network File System (NFS)
Elosztott állományrendszer:
első változata 1985,
szabadon elérhető protokoll és referencia-implementációk.
A SUN NFS jellemző tulajdonságai
Kliens-szerver modell,
szinkron távoli eljáráshívásra (Remote Procedure Call - RPC).
A SUN NFS felhasználói felületének lehetőségei a következők:
Egy vagy több fájlrendszer teljes vagy részleges (rész fa) exportálása.
Konfigurációs fájl létezik az exportált fájlrendszert elérő kliensek definiálására.
Távoli fájlrendszer mount-olásának lehetősége az elérési jogosultságok definiálásával.
Szoros (hard), ill. laza (soft) mount-olás.
Lokális fájlokkal azonos módon történő távoli fájl elérés.
A szerver csak a saját, lokális fájlrendszerét exportálhatja.
A SUN NFS tervezőinek célkitűzései
Minden operációs rendszer alatt lehetséges legyen megvalósítani a protokollt.
A protokoll hardver-független legyen.
Létezzen egyszerű újraindítási lehetőség a kliens, ill. a szerver számára.
A kliens kezelje az operációsrendszer-függő fájlelérési metodikát.
összemérhető teljesítmény a helyi fájlrendszerrel.
A hálózati összeköttetéstől független, ill. a forgalomnövekedéssel bővíthető kapacitású implementáció.
Következmény: állapotmentes megvalósítás.
Előnye: egyszerű újraindíthatóság.
Hátránya: a szerver csak stabil állapotában válaszolhat a kliens kéréseire. (Nem használhat pl. cache-t.)
A SUN NFS részei
Egymásra épülő protokollok halmaza.
(Számos az NFS-től független alkalmazás használja őket.)
A SUN NFS által használt protokollok a következők:
NFS protokoll: a fájl elérés magas szintű protokollja.
Defini
álja, hogy a kliens és a szerver hogyan tudnak együttműködni. Pl.: get/setattrib(fájl), lookup(fájl_név), write(fájl), read(fájl)
- RPC (Remote Procedure Call) protokoll: a távoli eljáráshívás protokollja.
- XDR (EXtended Data Representation) protokoll: a rendszer-független adatábrázolást rögzítő protokoll.
- Mount
protokoll: távoli fájlrendszerek összekapcsolását leíró protokoll.
A mount protokoll tipikus szolgáltatásai:
mount: távoli fájlrendszer helyi fájlrendszerben történő befűzése,
unmount: kapcsolat megszüntetése,
dump: a fájlrendszerbe “fel-mount-olt” távoli fájlrendszerek kilistázása.
Egy működő SUN NFS rendszerben megtalálható szoftver komponensek:
NFS szerver.
NFS kliens kód.
Démon (daemon) folyamatok.
Tipikus démon processzek:
biod:
blokkos adatátvitelt kezelő daemon.
mountd: mount-olással kapcsolatos kérdéseket elégíti ki.
nfsd: kérésekkel kapcsolatos kéréseket intézi.
- NLM (Network Lock Manager).
- NSM (Network Status Manager).
- XDR (EXtended Data Representation) protokoll
Az XDR protokoll:
- adatok hardver-független ábrázolása,
hálózaton történő továbbítás módja,
Szabályok új adat típus definiálására.
Típus |
Adat |
XDR ábrázolás |
Egész szám |
0x123456 |
0x00 |
0x12 |
0x34 |
0x56 |
Három-elemű egészekből álló t ömb |
[tömb hossza] |
0x00 |
0x00 |
0x00 |
0x03 |
4 |
0x00 |
0x00 |
0x00 |
0x04 |
2 |
0x00 |
0x00 |
0x00 |
0x02 |
-1 |
0xFF |
0xFF |
0xFF |
0xFF |
- Az RPC protokoll
Megbízható
üzenettovábbítást valósít meg a kommunikáló partnerek között.
Az RPC protokollok rögzítik:
- az üzenetek formátumát (mit tartalmazhatnak az üzenetek),
- az üzenetközvetítés módját (mely üzenetek milyen sorrendben küldhetők), és
- a partnerazonosítás (címzés) módját.
RPC típusai: Kliens folyamat várakozik-e az általa kért szolgáltatás végrehajtására:
- szinkron,
- aszinkron RPC protokoll.
SUN RPC protokoll:
- Az RPC protokoll működése

Az RPC-kérés felépítése:
XID |
IRÁNY |
RPC VERZIÓ |
PRG AZONOSÍTÓ |
PRG VERZIÓ |
SZOLGÁLTATÁS |
AZONOSÍTÁSI INFORMÁCIÓ |
ADAT |
RPC generálta egyedi azonosító.
Kérés vagy válasz.
Több RPC verzió létezik. (Az üzenetformátum verziófüggő.)
A szolgáltatás azonosítója. (Több szolgáltatás is használhat RPC-t.)
Az adott szolgáltatás verziója.
A küldő folyamat azonosítója. PL.: UNIX: PID.
Az üzenet adatrésze.
Az RPC-válasz felépítése:
XID |
IRÁNY |
STÁTUSZ |
AZONOSÍTÁSI INFORMÁCIÓ |
STÁTUSZ 2 |
ADAT |
Megadja, hogy sikeres volt-e a kért szolgáltatás végrehajtása.
- A SUN NFS működése

- Virtuális fájlrendszer
A virtuális fájlrendszer (Virtual File System, VFS) a UNIX fájlrendszer (UNIX File System, UFS) továbbfejlesztése:
- azonos fájl-elérési felületet,
lehetőség különböző típusú fájlrendszerek kezelésére is.
Az UFS és VFS alatti fájlelérés összehasonlítása

VFS esetén a globális fájl-descriptor tábla tartalma kibővül:
v_data:
Mutató az adott fájlrendszerben a fájl azonosítására szolgáló adatmezőre. Pl.: UFS-hez tartozó fájl esetén a
v_data az i-node-ra mutat.
Az adott fájlrendszerben a fájl kezelésére szolgáló rutinok címeit tartalmazó táblázatra mutat. Minden ilyen táblázat felépítése azonos.
NFS esetén a fájlok azonosítása:
- Távoli fájlok elérése NFS használatával

- Az X Window rendszer
Grafikus kimenetű alkalmazások felhasználói felületének megjelenítése.
1983-84: a Massachusetts Institute of Technology-n (MIT, USA).
Azonos kezelői felületet különböző operációs rendszereken.
Működés: az alkalmazás és a kezelői felület szétválasztása.
Forráskódja publikus. (Elsősorban a UNIX rendszerek támogatják.
Az X Window rendszer működése
Kliens-szerver modell használata.
A szerver kezeli az ún. grafikus munkahelyet, melynek részei:
pernyő (ill. képernyők),
a billentyűzet (alfanumerikus bemeneti eszköz), és
egy grafikus bemeneti eszköz.
A kliens egy grafikus kimenetű (általában interaktív) folyamat.
Az X protokoll
A rendszer magja az X protokoll:
Definiálja a kliens és a szerver együttműködésének módját.
A protokoll kétirányú aszinkron kommunikációt tesz lehetővé.
Az üzenetek típusai a következők lehetnek:
Kérés (kliens küldi a szervernek).
Válasz (szerver küldi a kliensnek).
Esemény (szerver küldi a kliensnek).
Hiba (szerver küldi a kliensnek).
A hálózati kommunikáció mérséklésére törekszik:
- A kliens az üzenetek összegyűjtött csomagját küldi át a hálózaton.
- A szerver helyben kezel egyszerű eseményeket (pl. egérmozgatás).
- A szerver szoftver erőforrásokat (grafikus környezetet, betűtípushoz tartozó leírást, stb.) hoz létre a kliens kérésére, amiket később a kliens folyamat egyszerű hivatkozással érhet el.
- Az X Window rendszer koncepciója
Alapvető
elem a grafikus, ún. X munkahely:
egy X display (X megjelenítő),
egy vagy több X screen (X képernyő),
bemeneti eszköz:
egy karakteres bemeneti eszközt (általában billentyűzet),
egy pozicionálásra alkalmas grafikus bemeneti eszköz.
Ablakkezelés
A grafikus képernyő kezelése:
ablakok létrehozása.
Az ablakok rendszere hierarchikus:
- gyökér ablak,
- leszármazott ablak.
Ablakok mozgatása:
- A leszármazott ablakok területe csak az ősük ablakfelületén látszik.
- Kilógó vagy átlapolódó ablakoknál automatikus vágás.
- Egy ablakfelület kitakarása:
a szerver "kitakarás eseményt" küld a kliens folyamatnak.
- Lehetőség az ablak automatikus frissítésére.
- Bemeneti eszközök kezelése
Az eszközök állapotváltozásakor:
a szerver esemény üzenettel értesíti a klienst.
A bemeneti információ elosztása:
alapján:
Az input focus birtokosa értesítendő a bemeneti eszközök állapotváltozásakor.
Pozicionáló eszköz kezelése:
ablak bal felső sarkától számított relatív koordinátákban m
ért információ.
Karakteres input:
a karakter-hozzárendelést a szerver végzi.
Megjelenítő eszköz kezelése
Raszteres (képpontokból,
pixelekből álló) grafikus terminál.
Az ablakok helyének kezelése:
a képernyő bal felső sarkától számolt derékszögű koordiná
ta rendszerben.
Az ablakok és rajzelemek elhelyezkedését képpontokban méri.
Rajzolás:
Egyszerű, előre definiált rajzelemek használata.
A rajzelemek halmaza bővíthető a felhasználó által.
Képernyőre rajzolás.
Memóriába rajzolás: letakart képernyő tartalom kezelése.
Színek használata:
128-elemű paletta,
szerver: 16, 24, vagy akár 32 bites színábrázolás,
paletta-váltás, ha kevés a szín.
A kezelői felület elemei
Egy működő X rendszernek három fő eleme van:
Windowing system:
Felelős az X protokollt megvalósításáért.
Window manager:
A Window manager egy kitüntetett kliens folyamat, ami az ablakok felhasználó által történő manipulálását intézi. Csak egy Window manager kapcsolódhat egy X Window system-hez. A Window manager által támogatott műveletek az ablakokkal:
mozgatás
méretezés
zárás
ikonizálás
menü biztosítása
Session manager:
A Session manager egy állandóan futó X szerver esetén a felhasználó beléptetését intézi a grafikus képernyőn. Opcionális része a rendszernek.
1999-, 1999-
A WINDOWS NT
Felépítésében is új operációs rendszer:
New Technology (NT)
32-bites Windows-os rendszerek felváltása
Windows 2000: NT alapú
Operációs rendszerek felépítése
- Monolitikus kernel
Közvetlen kommunikáció modulok között,
"közös" adatterület,
nincs szabványos érintkezési felülete (interfésze) a moduloknak,
nem megbízható,
egy hibás modul hibája továbbterjedhet a többi modul felé,
nehezen karbantartható, fejleszthető.
Réteg szerkezetű operációs rendszer
A modulok rétegszerűen épülnek egymásra
(objektum-orientált megközelítés).
A kommunikáció jól definiált interfészeken keresztül bonyolódik.
A rétegek csak a felettük illetve alattuk levő réteget érik el közvetlenül.
Az interfészek használata:
biztonságos: ellenőrizhető a kérés/hozzáférés jogossága,
megbízható: nem terjed a hiba, ()
karbantartható: fejlesztés, módosítás egyszerű.

Kliens-szerver modellre épülő operációs rendszer
Önálló, jól definiált funkciókat ellátó komponensek.
Egymásra épülő szolgáltatások nyújtása, ill. azok használata.
Mag az ún. mikrokernel. (mikrokernel-es operációs rendszerek).
Funkciója:
Szolgáltatás kéréseket üzenetek formájában továbbítja az operációs rendszer moduljai számára.
Biztosítja a folyamatok számára a hardver elérését.
(Hardver elérés csak mikrokernelen keresztül.)
A modulok önálló szerver folyamatok.
Mikrokernel: privilegizált (kernel) mód.
Folyamatok: felhasználói mód.
Előny: rugalmas, biztonságos működés.
Hátrány: nem hatékony hardver kihasználás (környezetváltások!).
Pl.: Mach operációs rendszer. UNIX daemon folyamatok
- Az NT felépítésének fő jellemzői
- Réteg szerkezet.
- Kliens-szer
ver működés (alrendszerek, szolgáltatások stb.).
- szigorúan interfész használat.
- Hatékony hardver kihasználás:
user módban megvalósítható funkciók kernel módban vannak.
Az NT objektum-orientált szemlélete
A Windows NT objektum-orientált szemléletben készült:
- adatrejtés
:
Az operációs rendszer objektumai csak saját adataikat érhetik el.
- interfész-használat
:
Az objektumok formális interfészt használnak egymás elérésére.
- hierarchikus objektum szerkezet
:
kernel objektumok, executive objektumok.
A Windows NT nem
valósítja meg a következő objektum-orientált tulajdonságokat:
polimorfizmus:
Azonos néven különböző objektumok elérése.
öröklődés:
Az objektumoknak hierarchikus származási rendszere.
dinamikus adattípus-kötés:
Definiálhatóak adattípussal paraméterezett objektumok.
A WINDOWS NT FELÉPÍTÉSE
HAL (Hardware Abstraction Layer)
A hardvert teljesen elfedő legalacsonyabb szoftver réteg.
Hardver elérés csak ezen keresztül.
Mindegyik processzorhoz külön HAL-réteg, a rendszer a telepítésekor választ HAL-t (lásd NT CD \i386–os alkönyvtára).
Processzortól független szolgáltatások.
(Azonos architektúrájú processzorok esetén pl. az x86 típusú processzorokon futó NT-k között csak a HAL-ban van különbség.)
Az aktuális hardverre támaszkodva egy virtuális gépet valósít meg.
Kernel
Állandóan memóriában levő kernel (védett) módban futó komponens.
A kernel a HAL-on kívül az egyetlen hardver-függő rész.
HAL a processzor típusától függ,
A kernel a processzor architektúrájától.
A kernel által a nyújtott interface hardver független:
a többi komponens hardver független.
Hordozhatóság:
Hardver független interfészű szoftver réteg.
Hordozható programnyelv használata (C, C++).
Funkció:
az operációs rendszer többi tagja számára egyszerű, jól definiált működésű alapmodulokat (ún. primitíveket) biztosít.
A primitívek a következő funkciókat valósítják meg:
thread (szál) ütemezés, környezetváltás
kivételkezelés,
IT-kezelés,
trap-kezelés,
multiprocesszor-ütemezés,
kernel objektumok kezelése.
A kernel objektumok egyszerűbbek:
gyors kezelés
nem végez ellenőrzést az egyes objektumok elérésekor, megbízik abban, hogy a rendszer tagjai helyesen használják az objektumokat.
Device driver-ek
A device driver-ek (készülékmeghajtók) az I/O alrendszer és a hardver között teremtenek kapcsolatot.
Hardver elérés: HAL-rétegen keresztül. ("Hordozható" device driver-ek.)
A device driver-ek négy típusát különböztetjük meg:
- Hardver driver-ek:
hardver egységek elérése, eszközök közvetlen be- és kimeneteit kezelik.
- Fájlrendszer driver-ek:
fájlrendszerek elérését biztosító kéréseket fogadnak el és I/O kérésekké transzformálják azokat.
Szűrő típusú device driver-ek:
az ún. réteg szerkezetű device driver struktúra lehetőségeit kihasználva speciális többletfunkciókat valósítanak meg.
A magasszintű driver-ek (pl. fájlrendszer driver-ek) és alacsony szintű (hardver) driver-ek közé ékelődnek.
Hálózat elérését biztosító device driver-ek:
hálózati kéréseket szolgálják ki, ill. továbbítják azokat.
Az NT ún. réteg szerkezetű device driver struktúrát használ.
Réteg szerkezetű device driver struktúra
Különböző funkcionalitású driver-ek rugalmas használata.
Igényeknek megfelelő rendszer építése.
Különböző driver szintek.
A szintek funkcionalitása, ill. az adott funkcionalitáshoz tartozó interface jól definiált.
Példa:
Lemez írása.

Executive
Magasszintű
szolgáltatásokat nyújtó alrendszereket megvalósítása.
Önálló részei:
Folyamat és szál kezelő
Virtuális memória kezelő
Biztonsági alrendszer (monitor)
Cache kezelő
I/O rendszer kezelő
Funkciói:
- Az NTDLL.DLL által definiált függvények hívásainak megvalósítása.
Az NT belső objektumai közötti kommunikáció biztosítása.
LPC (Local Procedure Call, lokális eljárás hívás).
NT IPC (Inter Process Communication) eszköze.
Egy user objektum egy másik user objektum függvényét hívhatja meg.
PL.: Így érhetik el pl. az egyes alkalmazások a hozzájuk tartozó alrendszer szolgáltatásait.
A run-time library függvények megvalósítása.
Rendszer processzek és a szolgáltatások számára támogató funkciókat megvalósító függvények.
Rendszer processzek
- Operációs rendszer funkciókat megvalósító önálló folyamatok.
- Felhasználói módban futó folyamatok.
- Rendszer processzek szükséges részei a rendszernek.
Fontosabb rendszer folyamatok
A rendszer indításakor létrehozott folyamat, ami az applikációk elindításáért felelős.
Feladatai:
- Az egyes alrendszerek elindítása, ha futásukra szükség van,
- Biztosítja a kapcsolatot a debugger és az általa futatott applikáció között.
- Biztosítja a környezeti változók definiálásának és elérésének lehetőségét.
- Logon
:
A felhasználók ki és beléptetését intéző folyamat.
Minden ún. SAS (Secure Attention Sequence
) billentyű kombináció (alapesetben: CTRL-ALT-DEL) aktivizálja.
Beléptetéskor a uesr name és password kombinációt az önálló folyamatként futó Local Security Authentication Server-hez (LSASS
) továbbítva ellenőrzi.
Ha az azonosítás sikeres, elindítja a USERINIT.EXE programot, ami beállítja a felhasználó által definiált környezetet, és elindítja a user által kért shell-t. (alapesetben: EXPLORER.EXE)
A szolgáltatások indításáért és leállításáért felelős folyamat.
- Szolgáltatások
Szolgáltató folyamatok
(kliens-szerver működés).Pl.:
RPC (Remote Procedure Call) szolgáltató
NT specifikus eseménynaplózó (event logger) szolgáltató.
Tulajdonságaik:
- Felhasználói módban futó folyamatok.
- A szolgáltatásokat megvalósító folyamatok futása nélkül is
képes működni az NT.
A szolgáltatások a Service Manager segítségével elindíthatók és leállíthatók a rendszer működése közben.
Egyszerű Win32-es alkalmazások, de együttműködnek a Service Conroller (SERVICES.EXE) folyamattal (regisztrál, indít leállít).
(Lásd Control Panel Services ikonja.)
A szolgáltatások három elnevezése:
- ahogy a szolgáltatás a Control Panel Services alpontján keresztül elérhető,
- ahogy Registry-ben szerepel,
- a szolgáltatást megvalósító futtatható program neve.
1999-11-5, 1999-11-12
- NTDLL.DLL
Dinamikusan linkelhető könyvtár (
Dinamically Linked Library, -DLL).
- Interfész a felhasználói módú folyamatok számára
- Minden felhasználói objektum az NTDLL.DLL-en keresztül éri el a környezetét (pl. LPC).
Működés:
- Hívási paraméterek ellenőrzése.
User–kernel módváltás.
NT kért függvényének meghívása.
Alrendszerek
Applikációk futtatása: alrendszerek segítségével:
- Win32 (szükséges),
- POSIX (opcionális),
- OS/2 (opcionális).
Alrendszerek feladata:
- Alkalmazások futtásához szükséges szolgáltatások nyújtsa.
- Alkalmazások kontrollálása.
Az alkalmazások és az NT interfésze: alrendszer DLL
(programozói interface (API, Application Programming Interface).
- Jól definiált publikus interface; a többi interface (pl. NTDLL.DLL) nem publikus.
- Az egyes alrendszerekhez tartozó API-k lényegesen különböznek egymástól. (A legszélesebb a Win32 API.)
- API funkciók: pl. ablakozás, szálak kezelése stb..
Az applikáció csak egy alrendszerhez tartozhatnak, nem keveredhetnek egymással egy applikáción belül különböző alrendszerekhez tartozó hívások.
POSIX alrendszer
Szigorúan a POSIX 1003.1-es szabványban rögzített tulajdonságokat valósítja meg.
Lehetőség van:
fork-olásra,
hard link-ek definiálására,
interprocess kommunikációra,
folyamatok kezelésére valamint
karakteres I/O kezelésére,
Nincs
lehetőség
szálak (thread-ek) létrehozására,
ablakkezelésre,
RPC-elérésére,
socket-ek használatára.
Win32 alrendszer
A Win32 alrendszer:
- 32-bites alkalmazások,
- 16-bites és
- DOS-os alkalmazások futtatása.
Nélküle nem futhat az NT.
Az alrendszer egy része kernel módban fut. (WIN32K.SYS):
Grafikus képernyő-kezelési funkciók. (A USER32.DLL, GDI.DLL, KERNEL32.DLL, ADVAPI.DLL könyvtárakban definiált funkciók.)
Rendszer gyorsítása miatt kerültek ide, módváltás nélkül lehetséges az executive, ill. kernel-szolgáltatások (függvények) elérése.
Grafikus eszközözök és a printer kezelése szabványos felületen történik:
- A GDI (Graphical Device Interface), ill. a hozzá tartozó GDI32.DLL (WIN32 API része) teszi lehetővé. Ezek is a WIN32 alrendszer kernel módú részében (WIN32K.SYS) vannak megvalósítva
Win32 API-hívások megvalósítása
Megvalósításuk helye szerint:
Egyszerű funkcionalitású függvények, a végrehajtásukhoz nincs szükség a rendszer már részeinek elérésére.
- Az alrendszerben vannak megvalósítva:
A hívást ebben az esetben az alrendszer DLL továbbítja az NTDLL.DLL felé, ami az Executive réteg LPC szolgáltatását igénybe véve, eljut a Win32 alrendszerhez, ami a kérést teljesíti.
- Az NT más kernel módban futó rétege valósítja meg a hívást:
A hívás ebben az esetben is az Executive réteghez kerül, ami továbbítja a megfelelő kernel réteg felé.
- A WINDOWS NT BELSŐ MECHANIZMUSAI
A következő rendszermechanizmusokkal foglalkozunk:
Interrupt- és kivételkezelés.
Executive objektumkezelés.
Szinkronizáció.
Lokális eljárás hívás (Local Procedure Calls, -LPC’s).
Kernel módú komponensek használják:
- executive
- kernel
- device driver-ek
Interrupt- és kivételkezelés
Az interruptok és a kivételek:
a CPU-t eltérítik
az utasítások normál végrehajtási sorrendjétől.
Forrás:
- hardver,
- vagy szoftver komponens.
Az NT trap (csapda) fogalma:
A processzor azon mechanizmusa , amelynek segítségével az egy vé
grehajtás alatt levő szálat megállít egy interrupt vagy egy kivétel hatására.
Működés:
felhasználói módról kernel módra kapcsolja át,
a vezérlést az operációs rendszer egy fix helyére adj át.
NT kernel
trap-kezelő rutinja:
eldönti, melyik operációs rendszer komponens képes az interruptot vagy kivételt kiváltó eseményt lekezelni.
A trap-kezlő aktivizálódik a rendszer hívások végrehajtásakor:
user-kernel mód váltás.
A trap-kezelő működése
|
|
Trap kezelő |
|
IT rutinok |
|
|
IT |
|
|
IT diszpécser |
|
|
|
|
|
|
|
|
|
|
|
Rendszer szolgáltatás hívás |
|
|
Rendszer szolgáltatás diszpécser |
|
Rendszer szolgáltatások |
|
|
|
|
|
|
|
|
|
Kivételek
(HW/SW) |
|
|
|
Kivétel diszpécser |
|
Kivétel kezelő rutinok |
|
|
|
|
|
|
|
Virtuális memória kivételek |
|
|
|
Virtuális memóriakezelő lapkezelője |
|
|
Az interrupt-ok és a kivételek:
kezelésüket tekintve nagyon hasonló események.
Különbség az interrupt és a kivétel között:
- Az IT egy olyan aszinkron esemény:
- Semmilyen összefüggésben nincs a processzor által éppen futtatott folyamattal.
A IT-k tipikusan I/O eszköztől származnak.
Lehetőség van elfogadásukat engedélyezni ill. időlegesen tiltani.
A kivétel egy szinkron esemény
A futó folyamat adott utasításának végrehajtása eredményez.
Például a memória-túlcímzés, vagy a nullával való osztás, stb.
Az interrupt-ot általában hardver egység idézi elő.
A kivételt általában szoftver komponens idézi elő.
Ellenpéldák:
Hardver eredetű kivételre példa a busz hiba által kiváltott kivétel.
Szoftver által generált interruptra példa az NT-ben:
(néhány esetben) a futó szál váltását,
az időzített óra lejárását,
néhány szinkron I/O folyamatot.
Az IT-k típusa és prioritásaik
A kezelhető IT-k száma processzorfüggő.
Operációs rendszer:
- Az interrupt-okhoz prioritási szinteket (ún. Interrupt Request Level, -IRQL) rendel.
A párhuzamosan érkező interrupt-ok kiszolgálása:
- a prioritási szinteknek megfelelően.
A magasabb prioritású IT megszakítja az alacsonyabb prioritású IT kiszolgálását.
7 |
Felső szint |
6 |
Processzor – IT |
5 |
Órajel |
4 |
I/O-eszköz/Felső szint |
3 |
I/O-eszköz |
2 |
Késleltetett procedúrahívás |
1 |
Aszinkron procedúrahívás |
0 |
Alsó szint |
IRQL-ek az Alpha processzornál
31 |
Felső szint |
30 |
Tápfeszültség-kimaradás |
29 |
Processzor – IT |
28 |
Órajel |
|
I/O-eszköz(n) |
|
.
.
. |
|
I/O-eszköz(2) |
|
I/O-eszköz(1) |
2 |
Késleltetett eljáráshívás |
1 |
Aszinkron eljáráshívás |
0 |
Alsó szint |
IRQL-ek az Intel x86 processzoroknál
Az interrupt szintek használata:
Felső szintjei hardver-megszakításoknak fenntartva.
Az 1-es és 2-es szintek: szoftver-megszakítások.
A késleltetett eljáráshívást eredményező IT:
egyes szálak biztonságos végrehajtása érdekében van szükség.
Az aszinkron eljáráshívás:
Egy eljárás végrehajtása (meghívása) egy másik felhasználói szál környezetében.
LPC mechanizmus.
A felhasználói és a rendszer programok is használhatják.
A legalsó, nullás IRQL: normál szálvégrehajtás.
Minden IT engedélyezve van.
Kivételkezelés
- Objektumkezelés
- Szinkronizáció
- Kernel szinkronizáció
- Executive szinkronizáció
- Lokális eljáráshívás
A lokális eljáráshívás (Local Procedure Call -LPC):
Nagysebességű folyamatok közötti kommunikáció.
Csak a Windows NT operációs rendszer komponensei
Két példa az LPC-k használatára:
- Távoli eljáráshívások (
Remote Procedure Call) LPC-t használnak akkor, ha a kommunikáló folyamatok ugyanazon a rendszeren belüli vannak.
A felhasználói bejelentkezéseket kezelő WinLogon processz LPC hívásokat használ arra, hogy kommunikáljon a helyi biztonsági jogosultságot ellenőrző szerverrel (LSASS).
Az LPC az üzenetváltás három különböző formáját teszi lehetővé:
- A 256 bájtnál rövidebb üzenet úgy küldhető el, hogy az LPC üzenet küldésekor közvetlenül megadjuk egy pufferben az ü
zenetet. Az üzenetet a rendszer a híváskor átmásolja a saját címtartományába, majd onnan a hívott folyamat címtartományába.
Ha egy kliens és egy szerver 256 bájtnál több adatot szeretne továbbítani, akkor midkét folyamatnak meg kell nyitnia egy osztott elérésű memóriaterületet. A küldő az üzenetet eltárolja az osztott elérésű memóriaterületen, majd egy rövid LPC üzenetet (lásd első eset) küld a hívott folyamatnak, melyben egy pointert ad az üzenet kezdetére.
Ha egy szerver több adatot akar írni vagy olvasni, mint amennyi az osztott elérésű memórialapon elférne, akkor a szerver folyamat – megfelelő elérési token-ek megszerzése után – közvetlenül is elérheti a kliens címtartományát, ahonnan tud olvasni és oda írni. Az üzenetváltás szinkronizálására megint csak rövid üzeneteket (lásd első eset) használhatnak a kommunikáló folyamatok.
MEMÓRIAKEZELÉS
A memóriakezelő feladatai:
A folyamatok virtuális címterének címeit megfeleltesse fizikai címeknek
(logikai-fizikai címtranszformáció).
A virtuális memóriakezelés megvalósítása:
A memória terheltsége esetén a régen nem használt memóriaterületeket háttértárra menti,
ha hivatkozás történik egy háttértárra mentett memórialapra, a szálat addig várakoztatja, amíg bemozgatja a kérdéses lapot a fizikai memóriába.
Tulajdonságok:
- 32-bites virtuális memóriakezelés.
- A memóriát laponként (page) kezeli.
Többletszolgáltatások (hatékonyság növelése):
a fájlok memóriaként történő elérése (memory mapped files)
fájlok osztott elérése,
copy-on-write mechanizmus.
A memóriakezelő felhasználói interfésze
A memóriakezelő szolgáltatásai a Win32 API-n keresztül elérhetők.
A memóriakezelő szolgáltatásai a felha
sználóknak:
- virtuális memória allokáció, ill. felszabadítás
osztott elérésű (shared) memória létrehozása
fájlok osztott elérésű memóriához hasonló elérése
virtuális memória kezelése (információkérés, adatok memóriába rögzítése, kiírása háttértárra, stb.)
memóriavédelmi funkciók
kernel színtű funkciók (elsősorban a device driver-ek) támogatása (pl. fix fizikai memóriaterület használata)
Memóriafoglalás
A memóriafoglalás két lépésben történik a Windows NT-ben:
- reserve
virtuális címtartomány lefoglalása
- commit
virtuális memória lefoglalása
Lehetőség a két lépés egy függvényhívásban történő végrehajtására.
A reserve művelet:
Nem jelent tényleges memóriafoglalást.
A folyamat csak deklarálja az operációs rendszer számára, hogy mennyi memóriára lesz, vagy lehet szüksége.
A commit művelet:
Hívásakor foglal le tényleges tárterületet a rendszer.
Csak a korábban a reserve művelettel már lefoglalt memórián hajtható végre.
Ssak a commit művelet után tudja a folyamat a memóriát használni.
(A csak reserve-elt memóriacímre történő hivatkozás hibát okoz.)
A két lépcsőben történő megvalósítás célja:
- Hatékonyabb működés biztosítása.
- A reserve egy belső táblázatában jelzi, hogy a folyamat lefo
glalta az adott címtartományt.
A rendszer a commit hatására fog tényleges memórialapokat (page-eket), ill. ún. backing store-t, vagyis a memóriaterület potenciális mentésére szolgáló háttértárat lefoglalni.
Lehetősége előre lefoglalni egybefüggő címtartományokat a rendszer terhelése nélkül.
Példa: a szálak user stack-jének foglalás.
- A stack-nek folyamatos címtartománynak kell lennie.
- Alapértelmezés:
1 MB memóriát foglal reserve művelettel,
két lapnyi (x86-os rendszerekben kétszer 4KB) memóriát foglal commit művelettel.
Első lap a stack teteje.
A második lap pedig arra szolgál, hogy a rendszer érzékelje, ha a stack megtelt, és automatikusan foglaljon commit művelettel új oldalakat.)
Kétlépéses memóriafoglalás nélkül:
minden szál indulásakor a rendszermemóriából ténylegesen le kellene foglalni 1 MB-nyi területet, melynek valószínűleg jelentős részét a szálak többsége nem is használná.
Osztott elérésű memória
|
|
|
|
|
C fordító (1 lap) |
|
C fordító (1 lap) |
|
C fordító (1 lap) |
C fordító (2 lap) |
|
C fordító (2 lap) |
|
C fordító (2 lap) |
C fordító (3 lap) |
|
C fordító (3 lap) |
|
C fordító (3 lap) |
|
|
|
|
|
I. process
címtartománya (logikai memóriakép) |
|
Fizikai memória
|
|
II. process
címtartománya (logikai memóriakép) |
Osztott elérésű memória
Memóriavédelem
- Copy-on-Write
|
|
|
|
|
1 lap (eredeti adat) |
|
1 lap (C-o-W) |
|
1 lap (eredeti adat) |
2 lap (eredeti adat) |
|
2 lap (C-o-W) |
|
2 lap (eredeti adat) |
3 lap (eredeti adat) |
|
3 lap (C-o-W) |
|
3 lap (eredeti adat) |
|
|
|
|
|
I. process
címtartománya |
|
Fizikai memória |
|
II. process
címtartománya |
Copy-on-write memórialapok írást megelőzően
|
|
|
|
|
1 lap (eredeti adat)
|
|
1 lap (C-O-W) |
|
1 lap (eredeti adat) |
2 lap (eredeti adat)
|
|
2 lap (C-O-W) |
|
2 lap (módosított) |
3 lap (eredeti adat)
|
|
3 lap (C-O-W) |
|
3 lap (eredeti adat) |
|
|
|
|
|
|
|
2 lap (másolat) |
|
|
|
|
|
|
|
I. process
címtartománya |
|
Fizikai memória |
|
II. process
címtartománya |
Copy-on-write memórialapok írást követően
Memória foglalása
A memória mérete
00000000 |
|
|
|
alkalmazás kódja
globális változók
szálak stack területe
DLL |
felhasználói
címtartomány |
7FFFFFFF |
|
|
80000000 |
|
|
|
kernel , executive
HAL |
|
C0000000 |
|
|
|
processz lap tábla |
rendszer |
C0800000 |
|
címtartomány |
|
rendszer cache
paged pool
nonpaged pool |
|
FFFFFFFF |
|
|
A logikai címtér felépítése
Az NT három memória méretkategóriát különböztet meg:
- kicsi (small),
- közepes (medium),
- nagy (large).
méret kategória |
x86 |
Alpha |
kicsi |
Ł 19 MB |
Ł 31 MB |
közepes |
20-32 MB |
nem használt |
nagy |
ł 32 MB (NT Workstation)
ł 64 MB (NT Workstation) |
ł 32 MB (NT Workstation)
ł 64 MB (NT Workstation) |
A fizikai memória mérete különböző memóriamodellek esetén
Címtranszformáció
31 |
|
0 (LSB) |
laptábla könyvtár index (PDI) |
laptábla index
(PTI) |
byte index
(BI) |
x86: 10 bit
Alpha: 8 bit |
x86: 10 bit
Alpha: 11 bit |
x86: 12 bit
Alpha: 13 bit |
virtuális memórialap szám |
eltolás |
A virtuális cím felépítése
A címtranszformáció menete x86-os processzorok esetén
A WINDOWS NT FÁJLRENDSZERE (NTFS)
NTFS: Windows NT File System
Elvárások az NTFS-sel szemben
Megbízható fájlrendszer (recoverability).
Állományok biztonságának garantálása (security).
Hibatűrés, redundáns tárolás lehetősége (fault tolerance).
Nagy diszkek és nagy fájlok tárolásának lehetősége.
Biztonság
Minden állomány-hozzáféréskor elérési jogosultság ellenőrzés.
NT általános objektumelérést ellenőrző biztonsági rendszere.
Nagy diszkek kezelése
64 bites cluster-leíró használata.
Elméleti korlátok:
- Egy fájlrendszerben összesen 248
fájl lehet egyidőben.
Egy fájl mérete maximum 264 byte lehet.
Megbízható fájlrendszer
A megbízható fájlrendszer megvalósítása:
Transaction processing (műveletenkénti feldolgozás).
Redundáns tárolása a fontos adatoknak.
Redundáns tárolás
A rendszer duplikálja a fontos adatállományokat a lemezen.
A lemezen egymástól távoli régióiban tárolja a replikákat.
Transaction processing (műveletenkénti feldolgozás)
“Mindent vagy semmit” elvre épül.
Egy lemezművelet teljesen végrehajtódik.
Ha megszakad, a rendszer visszaállítja a fájlrendszer eredeti állapotát.
Mindig konzisztens fájlrendszer a lemezen.
Működés:
- Fájlrendszeren végzett műveletek lépésekre bontva.
Redundáns adminisztrációs lépések beiktatása.
Lépések sorozata:
csak konzisztens adatok a lemezen,
vagy visszaállítható a kezdeti állapot.
Egy lemezírási művelet kiszolgálása
NTFS -> LFS : készítsen log rekordot.
Az LFS írja a cache-ben lévő log fájlt.
Az NTFS végrehajtja a kért utasítást, írja a (cache-ben lévő) fájlt.
A CM üzen, hogy az írás befejeződött, minden adat megvan.
Az LFS -> CM: milyen adatokat kell a cache-ből üríteni.
(A megváltoztatott fájlt + log fájlt.)
A CM kiírja a lemezre a log fájlt.
A CM kiírja a lemezre az adatokat, vagyis a megváltoztatott fájlt.
1 |
2 |
3 |
4 |
5 |
6 |
… |
n-3 |
n-2 |
n-1 |
n. |
újraindítási információ két példányban |
Körkörösen íródó tömb.
Tranzakció <-> log rekord.
(újbóli elvégzéséhez ill. a visszavonáshoz szükséges információ) |
A log fájl szerkezete
Réteg szerkezetű device driver struktúra használata
Nagy fájl rendszerek tárolása:
- több lemezen tárolt fájlrendszer (multivolume file system).
Az NT által tá
mogatott hibatűrő adattárolási technikák:
RAID level 1: diszkek tükrözése
RAID level 5: diszkszeletek prioritásos védelme
A RAID a Redundant Array of Inexpensive Disks
(olcsó lemezegységek redundáns tára) rövidítése. (Hibatűrő tárolás kommersz elemekkel).
Az NTFS további előnyös tulajdonságai
stream-ek használata
Egy adott néven elérhető adatállománynak több függetlenül elérhető alszekciója (stream-je) lehet. Ezeket külön-külön írhatjuk és olvashatjuk.
UNICIODE használata a fájlnevek megadásakor
A UNICODE használatán túl lehetőség van maximum 255 karakter hosszú fájl nevek választására, ami szóközöket illetve pontokat is tartalmazhat.
indexelés lehetősége
Egy fájlrendszerben készíthetünk egy ún. index buffer-t, ami egy adott tulajdonság alapján tartalmaz közvetlen hivatkozásokat fájlokra.
Dinamikus hibás (bad) szektor-kezelés.
POSIX szabvány támogatása
hard link
kisbetűt és nagybetűt megkülönböztethető (case sensitive) fájlnevek
időbélyegek (time stamp-ek) használata
Az NTFS által használt adattípusok, adatszerkezetek
Volume (kötet):
A lemez egy logikai partíciója
Cluster:
Az adattárolás alapegysége. (Az NT csak clustereket tart nyilván.)
Logical Cluster Number (LCN):
Egy adatszerkezethez, pl. egy fájlhoz tartozó cluster-ek sorszáma.
Virtual Cluster Number (VCN):
A lemezen elhelyezkedő cluster-ek azonosítására szolgáló sorszám.
A lemezen tárolt adatszerkezetek elérése:
az LCN-ek VCN-ekhez történő hozzárendelése alapján.
LCN: |
0 |
1 |
2 |
… |
n. |
VCN: |
6324 |
857243 |
9454 |
… |
542 |
NTFS metadata:
Azon adatok a gyűjtőneve, amelyek egy fájlrendszer kezeléséhez, ill. a benne tárolt fájlok eléréshez szükségesek.
Ami a lemezen van, az fájl:
- a volume-leíró, a boot információ, a hibás szektorok leírása, stb.
$Boot fájl |
A rendszer indulásakor használt információ |
$Bad sector |
A hibás clusterek sorszáma (LCN) |
$Bitmap |
A clusterek foglaltsági térképe |
$Logfile |
A Log File Service által a lemeztranzakciók adminisztrálására használt fájl |
$MFT |
Master File Table |
$MFT mirror |
A Master File Table (részleges) biztonsági másolata |
$Volume |
A kötet leírását (típusát, fájlrendszer, stb.) tartalmazó fájl |
$Attribute |
A kötet tulajdonságait, attribútumait tartalmazó fájl |
NTFS metadata információk
MFT (Master File Table):
A Master File Table (MFT) a fájlrendszerben tárolt fájlok leírása, elérésükhöz szükséges információ
Első 16 bejegyzést az operációs rendszer használja:
rendszer fájlok a fájlrendszer számára fontos adatok.
(Nevük mindig $ jellel kezdődik.)
Utána felhasználói fájlok.
A könyvtárak leírása is egyszerű felhasználói fájlokban:
- Az adott könyvtárban levő fájlok neveinek és a fájlokhoz tartozó MFT-bejegyzés sorszámának összere
ndelése található.
A gyökér könyvtár MFT- bejegyzés számát a fix helyen elérhető rendszer fájlok tartalmazzák.
$ MFT |
0. |
$ MFT mirror |
1. |
$ Logfile |
2. |
$ Volume |
3. |
$ Attrib |
4. |
… |
… |
$... |
15. |
USER FILE1 |
16. |
USER FILE2 |
17. |
… |
… |
USER FILEn |
n. |
A Master File Table szerkezete
Fájlokhoz tartozó adatok tárolása az NTFS-ben
Fájl:
egymással összerendelt adatok (jellemzők, attribútumok) halmaza.
Attribútumok:
keletkezési időpontja,
elérhetősége,
fájl tartalma, stb.
Attribútumoknak minden fájl esetén meghatározott értéke van.
- Megvalósítás
A fájlok az ún. file record-okban tárolódnak.
A file record:
- a fájl attribútumok (file attribute) azonosítója (neve)
és az attribútumhoz tartozó adatmező.
Az MFT file record-ok sorozata.
Az MFT csak a file record első 1K-s darabját tartalmazza.
Lényegében az MFT egy 1K-s bejegyzéseket tartalmazó táblázat:
- A táblázat minden bejegyzése egy-egy fájlt azonosít.
- A fájl egyedi azonosítója az a sorszám, ami megmondja, hogy az MFT hányadik bejegyzése tartozik hozzá.
- A bejegyzések minden fájlra vonatkozó információt tartalmaznak.
- Szerkezetük nem kötött.
File Record
Egy tipikus file record
Az attribútumok értékének tárolása:
- rezidens és
- nem rezidens módon.
Attól függ, hogy fizikailag hol helyezkedik el az attribútumot jellemző adathalmaz.
Rezidens tárolás:
közvetlenül az attribútum header után.
Nem rezidens tárolás:
az attribútum után csak egy hivatkozást találunk, hogy a lemez mely clustere tartalmazza az attribútum adatait.
- Rezidens tárolás
Általános felépítés: |
|
|
|
attribútum (adat) |
fájl név header |
fájl név (adat) |
security header |
security (adat) |
Egy konkrét példa: (az adatelemek fölött az lefoglalt byte-ok száma látható) |
|
0…………..7 |
8…………21 |
22……….29 |
30 … |
|
“RESIDENT”
8h (offset)
14h (Length)
|
“MYFILE.DAT” |
“RESIDENT”
8h (offset)
25h (length)
|
|
Attribútumok rezidens tárolása
- Nem rezidens tárolás
- A header után csak az attribútum értékét reprezentáló adatok helye van tárolva.
- Pl. az adatokat tartalmazó buffer címétt tárolja a rendszer a rekordban.
- Adat tárolás 2K-s (4K-s) buffer-ekben (run vagy extent)
- header jelzi a nem rezidens tárolás tényét.
Standard infó |
Fájl név |
Biztonsági leíró |
Adat |
|
|
|
VCN |
LCN |
Num. |
0 |
1344 |
4 |
4 |
2345 |
4 |
|
|
|
|
|
0 |
1 |
2 |
3 |
|
4 |
5 |
6 |
7 |
|
|
|
|
|
|
|
|
|
1344 |
1345 |
1346 |
1347 |
|
2345 |
2346 |
2347 |
2348 |
Adat attribútum nem rezidens tárolása
- Könyvtárak tárolása
Fájlok azonosítása:
63 |
|
47 |
|
0 |
Az MFT bejegyzést
hányszor használták |
Fájl száma
(hányadik MFT bejegyzés) |
Rezidens tárolás
Standard infó |
Fájl név |
Biztonsági leíró |
Index root |
|
|
|
fájl1 |
subdir1 |
fájl3 |
referencia |
referencia |
referencia |
időbélyeg |
időbélyeg |
időbélyeg |
Könyvtár leírás rezidens tárolása
- Nem rezidens tárolás
Általános felépítés: |
|
|
Header |
File index |
|
Root index tábla:
az index bufferekre mutató
pointer-ek |
VCN - LCN megfeleltetése az index buffereknek
|
Bitmap:
Tárolja, mely fájl hivatkozások használtak az index bufferekben. |
|
Konkrét példa: |
|
|
|
|
|
|
|
|
|
|
|
“NONRESIDENT” |
F7 |
F18 |
F22 |
VCN - LCN MAP |
BITMAP |
|
Könyvtár leírás tárolása -
Attribútumok nem rezidens tárolása
Könyvtárak indexelt tárolása:
- A header jelzi a nem rezidens tárolás tényét.
- Fájlok tárolása: név szerint rendezve
- Root indextábla:
mely bufferek-ben milyen nevű fájlok találhatók.
VCN – LCN megfeleltetési táblázat: a tényleges helye a buffereknek.
Bitmap:
Egy táblázat, mely megmutatja, hogy mely clusterek használtak és mely clusterek nem használtak a bufferekben.
Struktúra: b+ fa
Dinamikusan növekvő indextáblát használó egyszintű indexelésnek.
Fájlok elérése NTFS alatt
A lépések többségét csak a kötet (volume) rendszerindulás (boot-olás
) utáni első elérésekor kell végrehajtani.
A $Boot file elérése, amely rögzített helyen van.
$MFT elérése. A $Boot tartalmazza az MFT kezdetének helyét. Az $MFT mindig az első MFT-rekordhoz tartozik, $MFTMirr a másodikhoz, $LogFile a harmadikhoz, stb.)
$MFT ($MFTMirr) elérése, memóriába tárolása
$LogFile és más meta-fájlok beolvasása
A kötet (volume) rendszerindulás (boot-olás) utáni első elérésekor végrehajtja az ún. recovery műveletet.
A recovery nem más, mind a fájlrendszer konzisztens állapotának ellenőrzése, szükség esetén annak helyreállítása. A log fájl alapján ellenőrzi a rendszer, hogy kell-e tranzakciót “visszagörgetni” vagy újra végrehajtani. Recovery után a lemez konzisztens állapotba kerül.
A root “\” könyvtárhoz tartozó MFT-bejegyzés megkeresése, ill. a memóriában tárolása a későbbi elérések gyorsítása érdekében.
A tényleges fájl-tranzakció végrehajtása. Természetesen a log fájl írása minden tranzakciónál folyamatosan történik.
Fájl attribútumok
Standard információ
A fájl jellemzői: pl. read only, archive stb., ill.
időbélyegek: létrehozás utolsóváltoztatás ideje
hard linkek száma
mindig rezidens
Fájl név ($FILENAME)
Több lehet belőle:
POSIX hard link
NT-s név (UNICODE!)
DOS-os név (automatikusan származtatott)
Max. 255 krakter
Névterek viszonya: POSIX - NT- DOS
mindig rezidens
Biztonsági információ
- Tulajdonos
- Felhasználók elérési jogosultságai
Adat ($DATA)
- adat fájl: "default unnamed data attribute" (név nélküli adat)
- Több stream esetén néhány elnevezett adat attribútum
- könyvtárnak nincs adat attribútuma
Index root , index
- csak könyvtár leíró fájl esetén
- idex attribútum a könyvtárbeli fájlok indexelésére
- mindig rezidens
Attribútum lista
- csak egynél több MFT bejegyzést használó fájlok esetén
- a fájl attribútumainak leírása
- Fájl attribútumok elérése
Felhasználó:
- Attribútumokat ír és olvas
- Szimbolikusan ($NÉV) hivatkozik
Rendszer:
- Sorba rendezi és sorban tárolja az attribútumokat
FOLYAMATOK KEZELÉSE ÉS ÜTEMEZÉSE
A Windows NT folyamatmodellje
Az NT folyamatmodellje:
- A végrehajtandó program kódját és adatait.
- Saját virtuális memória címtér.
Rendszererőforrásokat (szemaforokat, fájlokat, stb.)
A folyamat egyedi azonosítóját (process ID, PID).
Legalább egy végrehajtható szálat.
A szál az az egység (entitás) az NT-ben, amit az ütemező kezel.
A szálak a következő komponensekből állnak:
Szál környezet:
Végrehajtó processzor regiszterei (processzor állapota).
Két veremtár (stack): kernel mód, felhasználói mód.
Kizárólagosan használható tárterület.
(DLL-ek, ill. run-time könyvtárak számára.)
A szál egyedi azonosítója (thread ID).
(Thread ID-t és a process ID-t azonos a névtérből.)
Egy folyamathoz tartozó szálak:
- közös virtuális címtartományt használnak.
Folyamatok:
Memóriaterületek:
használat előtt le kell foglalni.
Erőforrások:
- használat előtt le kell foglalni.
NT objektumokként reprezentál.
Objektum a megnyitása után a folyamat egy ún. handle-t kap.
(Gyorsabb elérés.)
A rendszer erőforrásainak védelme:
Elérési token-nel (access token).
Folyamat biztonsági azonosítóját, ill. a folyamat jogosultságainak leírását.
folyamat |
|
virtuális memória leíró |
|
virtuális memória leíró |
|
virtuális memória leíró |
|
elérési token |
|
virtuális címtér leírás |
|
handle táblázat |
|
|
|
|
|
handle |
|
objektum |
|
|
handle |
|
objektum |
|
|
handle |
|
objektum |
|
|
|
|
|
|
|
|
|
|
|
|
szál |
|
szál |
|
szál
|
|
elérési token |
A Windows NT folyamatmodellje
- Folyamatok kezelése a Windows NT-ben
- Windows NT executive
Folyamat leírás:
- folyamatblokk (EPROCESS).
- rendszer címterében.
- folyamat-környezeti blokk (Process Environment Block, - PEB):
- a folyamat címterében.
(Felhasználói módban futó kód is megváltoztathatja.)
Szálak leírása:
- executive szálblokk (ETHREAD).
- szál-környezeti blokk (Thread Environment Block, - PEB):
- a folyamat címterében.
(Felhasználói módban futó kód is megváltoztathatja.)
Win32 alrendszer
Folyamatleíró adatstruktúra: W32PROCESS.
Folyamatokhoz és szálakhoz tartozó adatstruktúra
- Folyamat létrehozása (CreateProcess)
Megvalósító komponensek::
- A Win32 kliens-oldali könyvtárából a KERNEL32.DLL,
- a Windows NT executive,
- a Win32 alrendszer folyamat (CSRSS).
Windows NT:
- Több környezeti alrendszer.
- Az executive réteg processz objektumának kezelése
(mindenki használhatja).
- elválasztva a Win32 folyamat létrehozásától.
A Win32 CreateProcess
hívásának főbb lépéseit:
A processzen belül végrehajtandó image-fájl (.EXE) megnyitása.
A Windows NT executive processz objektumának létrehozása.
A kezdeti szál létrehozása.
A Win32 értesítése az új processzről, azzal a céllal, hogy az felkészüljön az új processzre és szálra.
A kezdeti szál végrehajtásának elindítása.
Az újonan létrehozott processz és szál környezetben a címtér inicializálása (pl. a szükséges DLL-ek betöltése), majd a program végrehajtásának elkezdése.
Megjegyzések
- Egyetlen CreateProcess híváshoz egynél több prioritási osztály specifikálható. A Windows NT a processzhez automatikusan a legalacsonyabb prioritási osztályt rendeli.
- Ha nincs prioritási osztály specifikálva az új folyamathoz, a prioritási osztály a Normal besorolást kapja.
- Minden ablakot egy desktop-hoz rendeli a rendszer. Ha a CreateProcess-ben nincs megadva melyik desktop-ot használja a
folyamat, akkor a folyamat automatikusan a hívó aktuális desktop-jához rendelődik.
Szálak kezelése az NT-ben
Windows NT szál:
- executive szál blokk (ETHREAD):
- rendszer címtartományában található.
- szál környezeti blokk:
- a folyamat címtartományában.
Win32 alrendszer folyamata:
- szál-leíró adatstruktúra .
Kernel szál blokk (KTHREAD) |
Létrehozási és kilépési idők |
Processz azonosító |
|
Szál handle |
|
Megszemélyesítési információ |
LPC üzenetek leírása |
Timer információ |
|
Az executive szál blokk felépítése
Kernel szál blokk (KTHREAD):
- Adatok, amire a kernelnek van szüksége a szálütemezéshez és szinkronizációhoz.
Szál létrehozása (CreateThread)
Szál életciklusának kezdete:
- Folyamat kérése a executive réteghez.
Processzkezelő (elnevezése: process dispatcher)
helyet foglal a szálobjektum számára.
Kernelt hívja, a kernel szál blokk kezdeti értékeinek beállítása végett.
CreateThread hívás hatása a KERNEL32.DLL:
- A CreateThread egy felhasználói módú stack-et hoz létre a szál részére, a folyamat címterében.
- A CreateThread beállítja a kezdeti értékeket a szál hardver kapcsolataihoz.
- Az NtCreateThread függvény hívására kerül sor, ami az executive szál objektumát hozza létre. Az ide tartozó lépések sorozata kernel módban hajtódik végre, a Windows NT executive-ján és kernelén belül.
A CreateThread értesíti a Win32 alrendszert az új szálról, amire az alrendszer különböző beállításokat eszközöl az új szál részére.
A szál összetett elérési címe (handle) és azonosítója (amik a 3. lépésben lettek generálva) visszaadódik a hívónak.
A szál olyan állapotba került, amire már be lehet ütemezni a végrehajtását.
Szálak ütemezése
A Windows NT ütemezése:
- Prioritásos preemptív (kiszorító) ütemezés.
- Mindig a legmagasabb prioritású futtatható szál fut.
- Megkötés: a futást azok a processzorok korlátozhatják, amelyeken a szál futása meg van engedve.
- Processzor-affinitás:
egy szál melyik processzoron futhat.
A kvantum
Időszelet
kvantum (quantum):
- az az időtartam, amennyit egy szál futhat, mielőtt a Windows NT megszakítja a szálat.
Kvantum lejárta után ellenőrzi az NT:
- Nem vár-e futásra egy másik szál ugyanakkora prioritással.
- Nincs-e szükség a megszakított szál prioritásának csökkentésére.
A kvantumok értéke szálanként változhat.
Preemptív ütemezés:
- A szál nem jut el a kvantum végéig.
- Egy másik szál, nagyobb prioritással, futásra kész állapotba kerül.
- NT: kvantum megkezdése előtt elveszti a futás jogát.
- A Windows NT ütemezés megvalósítása
- Kernelben.
- Nincs külön ütemező modul.
- Ütemező rutinok a kernel különböző helyein.
- Az ütemezést megvalósító rutinok összessége:
diszpécser (dispatcher).
- Szál ütemezése
Egy szál állapotai
Egy szál állapotai a Windows NT-ben
A processzor affinitás
- A processzor kiválasztása
- BIZTONSÁGI ALRENDSZER
- USA Védelmi Minisztérium (DOD)
- C2-es szintű követelmények
- Windows NT Server és Workstation 3.51: 1996. októbere.
- Windows NT 4.0: 1999. márciusa.
- Biztonsági szolgáltatások
A biztonsági szolgáltatások és alapvető tulajdonságaik:
- Biztonságos logon lehetőség:
Felhasználónként egyedi logon azonosító és jelszó
Bejelentkezéskor user azonosítás.
Tetszőlegesen konfigurálható (discretionary) elérési ellenőrzés:
Erőforrás tulajdonosa: ki érheti el az erőforrást, és mit tehet vele.
Egyedi felhasználók vagy felhasználói csoportok kezelése.
Biztonsági auditálás (ellenőrzés):
Biztonságot érintő események felismerése és feljegyzése.
A rendszer-erőforrások létrehozására, elérésére vagy törlésére irányuló lépések adminisztrálása.
Memóriavédelem:
Egy processz egy másik processz virtuális memóriáját jogosulatlanul nem érheti el.
Windows NT: egy új memóriaoldalon soha nincsenek más folyamattól régi adatok.
A biztonsági alrendszer komponensei
A Windows NT biztonságát megvalósító komponensek a következők:
Biztonsági referencia monitor (Security Reference Monitor -SRM):
Megvalósítás: executive (NTOSKRNL.EXE - kernel mód).
Objektumok biztonsági elérésének ellenőrzése.
Privilégiumok (felhasználói jogok) kezelése.
Biztonsági auditálási üzenek előállítása.
Helyi biztonsági jogosultság ellenőrző (Local Security Authority -LSA)
Felhasználói módú folyamat (LSASS.EXE).
Helyi rendszer biztonsága.
Felhasználók bejelentkezési jogait és jelszavát ellenőrzi.
Ellenőrzi a felhasználóknak és csoportoknak adott privilégiumokat.
A biztonsággal kapcsolatos auditálás üzeneteket küld az események naplójába.
LSA adatbázis:
A rendszer biztonsági beállításai.
Registry: HKEY_LOCAL_MACHINE\Security
Biztonsági témaszám kezelő (Security Accounts Manager, -SAM) szerver:
Szubrutinok halmazából álló szolgáltatás.
A SAM rutinok az LSASS folyamat környezetében futnak.
A felhasználói neveket és a csoportokat tartalmazó adatbázis kezelése.
A nevek és csoportok érvényessége:
Helyi gép.
Ha a gép tartomány (domain) vezérlő, az adott domain-re.
SAM adatbázis:
Felhasználókhoz tartozó jelszavak és egyéb attribútumok tárolása.
Registry: HKEY_LOCAL_MACHINE\SAM
Logon processz:
Felhasználói módú folyamat (WINLOGON.EXE).
A folyamat a felhasználói nevet és jelszót kéri.
Elküldi őket az LSA-hoz ellenőrzés céljából.
Kevvező válasz esetén létrehozza a felhasználó első folyamatát.
Hálózati logon szolgáltatás:
Felhasználói módú szolgáltatás.
Hálózatról érkező logon kérésekre válaszol.
A jogosultságot úgy kezeli, mint a helyi logonokat:
a nevet és jelszót elküldi az LSA processzhez.
SRM-LSA folyamatok kommunikációja:
- helyi eljáráshívás (LPC), dedikált csatorna induláskor.
Az objektumok védelme
Az objektumvédelem:
konfigurálható elérési ellenőrzés,
auditálás alapja.
A Windows NT védhető objektumai:
fájlok,
hardver eszközök,
mail box-ok,
elnevezett és névtelen csővezetékek,
processzek,
szálak,
események,
szemaforok,
timer-ek,
elérési tokenek,
ablak-állomások,
desktop-ok,
hálózati megosztások,
szolgáltatások, ill.
nyomtatók.
Objektumvédelem alapja
Felhasználók azonosítása:
Egy objektumhoz tartozó handle megnyitása:
s ellenőrzés (objektumkezelő+ biztonsági rendszer)
biztonsági azonosító alapján.
Objektumok leírása
A védett objektumok:
- biztonsági leíróadatok
(security descriptors
):
Kinek milyen jellegű hozzáférési joga van az objektumhoz.
A biztonsági leíróadatok:
- A tulajdonos biztonsági azonosítója (security ID, -SID).
- A tulajdonos felhasználói csoport biztonsági azonosítója
(group security ID; ezt csak a POSIX használja).
- Konfigurálható elérési lista
: (ACL Access Control List)
kinek milyen fajta elérése van az objektumhoz.
- Rendszerelérési lista
: (System ACL)
Mely felhasználók mely műveleteit kell felsorolni a biztonsági auditálási naplóba.
ACL felépítése:
- header
- Access Control Enty (bejegyzés)
ACL ellenőrzés:
HANDLE nyitásakor
Elérési tokenek
Objektum elérést kezdeményező folyamatok, ill. szálak.
Elérési token (access token
):
- Egy processz vagy egy szál biztonsági adatai:
- biztonsági azonosító,
- azon csoportok listáját, amelyeknek a felhasználó a tagja,
- a megengedett és letiltott privilégiumok listáját.
Elérési token:
- Felhasználói módba vannak exportálva.
- Lehet létrehozni, ill. változtatni rajtuk (Win32 függvényekkel).
- Belső ábrázolás: kernel módban elérhető adatterületen.
Folyamatok:
elsődleges elérési token,
örököl az előállító folyamattól.
Logon:
Ha a felhasználói név és a jelszó összhangban van a SAM adatbázisában levő információval:
Az LSA logon processznek visszaad egy elérési tokent a WinLogon.
A tokent hozzárendeli a kezdeti folyamathoz.
Létrejövő további folyamatok az elérési tokent öröklik.
Megszemélyesítés
Szálaknak szintén lehet saját elérési tokenjük:
kliens - szerver működés).
Külön elérési tokent kér.
Megszemélyesítést kér a rendszertől (pipe, RPC, DDE, Log On)
Szál elérési tokenje különbözhet a folyamat elérési tokenjétől.
A biztonsági auditálás
Objektumkezelő elérési ellenőrzésének eredménye:
Auditálási esemény
Auditálási rekord generálás.
A Win32-es alkalmazások:
- léteznek auditálási eseményeket generáló API függvények.
- A kernel mód:
- mindig generálhat auditálási eseményt.
- Felhasználói mód:
- SeAuditPrivilege privilégiummal.
Rosszindulatú felhasználói módú program:
- nem
tudja elrontani a biztonsági naplózást.
Az auditálási rekordok kezelése
Megérkezésük után azonnal bekerülnek az LSA-nak küldendő rekordok sorába.
Nincs várakozás (pl. csomagok összeállítása).
Az auditálási rekordok az SRM → biztonsági alrendszerhez:
Ha a rekord kicsi (kisebb, mint a maximális LPC üzenetméret), akkor LPC üzenetként lesz elküldve.
Az auditálási rekordok az SRM címteréből az LSA folyamat címterébe másolódnak át.
Ha a rekord nagy, az SRM megosztott memóriát használ, hogy elérhetővé tegye az üzenetet az LSA számára. Ilyenkor egyszerűen csak egy pointert továbbít egy LPC üzenetben.
A logon
A logon (bejelentkezés):
- WinLogon logon processz,
- LSA,
egy vagy több hitelesítő rutin (biztonsági ellenőrző DLL),
valamint az SAM közreműködésével megy végbe.
WinLogon feladatai
megbízható folyamat,
biztonsággal kapcsolatos felhasználói beavatkozásokat kezelése.
Logont, logoffot.
Jelszavak bevitele logonnál.
Jelszavak megváltoztatása.
Munkaállomás lezárása és a lezárás megszüntetése.
Biztonsággal kapcsolatos műveletek elrejtése más processzektől.
Pl: megbízhatatlan folyamat nem juthat hozzá a desktop vezérléséhez (potenciális jelszó lopás).
WinLogon működése
Egyetlen folyamat, amely logon kérés fogad a billentyűzetről.
Jelszó ellenőrzés: LSA-n keresztül.
OK esetén: logon shellindítása.
A logon folyamatban résztvevő rendszer komponensek
A WinLogon-inicializálás
Rendszer inicializálás:
- A rendszer "feláll": A WinLogon megszerzi a vezérlést.
Létrehoz és megnyit három desktop-ot:
- egy alkalmazási desktop-ot,
- egy WinLogon desktop-ot
és egy képernyő-mentési desktop-ot.
A WinLogon desktop:
- biztonságos,
- csak a WinLogon képes elérni.
A másik két desktop:
a felhasználók számára is elérhető.
WinLogon desktop aktív:
- csak a WinLogon érheti el az adatait.
Védett műveletek:
belépés,
desktop zárása,
desktop zárás feloldása.
Inicializálás:
- WinLogon desktop létrejön.
- WinLogon aktív desktop.
- Lezárt állapot.
- WinLogon feloldja.
- Azonnal átkapcsol az alkalmazási desktopra,
vagy a képernyő-mentési desktopra.
A WINDOWS 2000
1998. október 28 Microsoft Windows NT 5.0 → Windows 2000:
- A 32-bites Microsoft operációs rendszerek (Windows 95, Windows 98) vonal Microsoft lezárva. (?!)
Windows 2000:
- 32-bites Microsoft operációs rendszerek + Windows NT
- Felépítés: Windows NT
- NT 4.0 kiterjesztése
- Új szolgáltatások: Windows 98
Windows 2000 négy változata:
A Windows 2000 Professional
- Kisebb vállalkozásokat célozza meg:
legegyszerűbb változat,
biztonságos rendszer,
mobil felhasználók igényeinek kielégítése.
A Windows 2000 Server
- Legfeljebb két párhuzamos processzor használata.
Elsősorban kis és közepes nagyságú vállalati alkalmazások futtatása.
Web-szerver működtetése.
Windows 2000
Advanced Server
- Igazi hálózati operációs rendszer (nem a klasszikus értelemben).
- Hálózatkezelési funkciókat támogatása.
- Négy párhuzamos processzor kezelése.
- Nagy fizikai memória kezelése.
- Terhelés kiegyensúlyozás a processzorok között.
Windows 2000 Datacenter Server
- Eddigi legerősebb Microsoft operációs rendszer.
- 16 párhuzamos processzor.
- Akár 16 Gbájt fizikai memória.
- Nagy adattárak, ún. adat-áruházak (data warehouses).
- Szimulációs futtatások
- On-line tranzakciók kiszolgálása.
A Windows 2000 új tulajdonságai
Aktív címtár (Active Directory):
NT-hálózatok adminisztrálása és kezelése:
- Felhasználók felvétele, jogosultságok definiálása.
- Hierarchikus fa struktúra a felhasználók és felhasználói csoportok számára.
Hálózati erőforrások egyszerű kezelése:
Find programmal.
Programozható, API-n keresztül elérhető.
Elosztott biztonsági kiterjesztések:
Hálózat távoli adminisztrálását akár különböző hálózati domain-ek között.
Domain controller-ek szinkronizálása.
Struktúrától függetlenül definiálható felhasználói csoportok.
Új lehetőségek a felhasználó azonosítására:
pl. az 5-ös verziójú Kerberos hitelesítési protokollt.
Biztonsági protokollok használata: Együttműködés nyilvános kulcsú titkosításra alapuló biztonsági rendszerekkel.
Smart card (chip kártya) használatán alapuló felhasználói azonosítás.
Titkosítás:
- A titkosítot fájlrendszer (Encrypting File System, -NFS)
- Titkosított fájlok tárolását az NTFS-en belül.
(NTFS4: Fájlok elér
ése a hozzáférési jogosultság ellenőrzése nélkül!)
Titkosítási eljárás: nyilvános kulcsokon (public keys) alapszik.
A nyilvános kulcsú titkosítás egy beépített rendszerszolgáltatás.
Biztonsági konfigurációs editor:
- Biztonsági konfigurációs editor (Security Configuration Editor)
- Egyetlen alkalmazás az NT-alapú biztonsági adminisztrálásához
NTFS bővítések:
NTFS 5:
- Quota rendszer.
- Access Control List, -ACL
hivatkozási lehetőség.
Összes attribútum azonos módon történő kezelése (pl. a különböző attribútumokban tárolt információ indexelése).
Speciális könyvtárak, pl. a UNIX szimbolikus link-ek.
Adatterület késleltetetett foglalása.
Tömörített fájlok hálózati átvitelekor nem lesz újra tömörítés.
Microsoft Szoftver Installátor:
- A Microsoft Szoftver Installátor (Microsoft Software Installer, -MSI)
Alkalmazások automatikus installálásának lehetőségére épít.
Adminisztrátor:
a felhasználó által elérhető alkalmazások halmazát definiálja.
Ha a szükséges alkalmazás nem áll rendelkezésre:
a rendszer automatikusan installálja.
Cél: Zero Administration Windows.
IntelliMirror:
- Elosztott számítások támogatása.
Rugalmasan méretezhető teljesítmény.
Megbízható és biztonságos környezet.
“Intelligensen tükrözi” a felhasználók adatait (beállítások, alkalmazások) egy Windows 2000-alapú szerveren.
Lehetőségek:
- Cserélhető PC-k.
- Egyszerű egységes adminisztráció
, pl.: automatikus alkalmazási installáció.
Job objektum:
- Processzek csoportjának egységként kezelése.
- UNIX származási fa struktúrájának pótlása.
Plug and Play:
Operációs rendszer:
automatikusan felismeri a gépben létező hardver elemeket.
Beállítja a szükséges konfigurációs adatokat (IT, típus stb.).
A Windows 2000 fejlesztések:
Az NT meglevő input/output alrendszer bővítése.
Ipari szabványok messzemenő figyelembevétele.
Új device driver interfész kialakítása.
Az operációs rendszer a következő szolgáltatásokkal támogatja a Plug and Play használatát:
Az installált hardver automatikus és dinamikus felismerése.
Hardver-erőforrások allokálása.
A meglevő meghajtók betöltése.
A felhasználói módú kód és a Plug and Play események közötti információs kapcsolat megteremtése (API).
A 64-bites szervezés
- 1997: Windows NT-nek lesz 64-bites változata.
Processzor-architektúrák:
DEC meglevő 64-bites Alpha AXP platformja.
64-bites Intel processzor.
Alpha 28:
Gigabájtig lehet a memóriát címezni (fizikai memória).
Logikai címtartomány:
64-bites processznek legalább 512 Gigabájt.
Fejlesztés:
64-bites API - Win64.