You are on page 1of 6

B) Multiprogramozás és lehetőségei, látszat párhuzamosság,

megvalósítások; processzek alapfogalmai (Process Control Blocks,


Process Image); processz állapotok (futó, futásra kész, blokkolt,
felfüggesztett); processz állapot-átmenet gráfok; processz váltás
lépései; Szálak (thread-ek) és használatuk (POSIX rendszerben).

Multiprogramozás és lehetőségei

A multiprogramozás megjelenése előtt a lassú perifériák korlátozták a CPU kihasználtságát,


mert a processzornak várakoznia kellett a lassú perifériás műveletek befejeződésére. A
szekvenciális hozzáférésű tárak miatt pedig a munkákat csak érkezési sorrendben lehetett
végrehajtani.
A véletlen hozzáférésű tárakról az OR tetszőleges sorrendben választhatja ki a következő
végrehajtandó munkát, és egy speciális adatszerkezet (nyilvántartás), a „job pool”
segítségével úgy ütemezheti, hogy a CPU kihasználtsága kb. 90%-os legyen (a lementés-
visszaállítás időbe kerül).
A CPU mellett a többi erőforrás felhasználását is koordinálni kell, gondoskodni kell az
egyes programok és memóriaterületük védelméről a többiekkel szemben, stb.
A legnagyobb problémát az jelentette, hogy továbbra sem volt közvetlen kapcsolat a
programozó és a gép között, vagyis nehéz volt a programokat módosítani, hibát keresni.

Párhuzamosságok a modern számítógépes rendszerekben


• Egy multiprogramozású rendszerben csak látszólagos párhuzamosság van jelen
• A valódi párhuzamosság azt jelenti, hogy egy többprocesszoros rendszerben több
központi egység osztja ugyanazt a memóriaterületet.
• A szekvenciális processzusok modellje megkönnyíti a párhuzamosságok kezelését

Látszat párhuzamosság

Megvalósítások
Processzek alapfogalmai (Process Control Blocks, Process Image)

Process Image: kód-, adat-, stack-, szegmensek és attribútumai, swap-elhető


Process Control Block: minden attribútumok gyűjteménye, nem swap-elhető

Processzuskép (Process Image):


 Felhasználói adat
o – lokális és globális változók illetve definiált konstansok számára fenntartott
adat területek
 Felhasználói program
o – a processzus során végrehajtandó program(ok)
 Rendszer verem (System stack)
o – rendszerhívások paramétereinek tárolása
 Processzusvezérlő blokk (Process Control Block - PCB)
o – az operációs rendszer számára a processzus vezérléséhez szükséges adatok
A processzusvezérlő blokk elemei
 Processzusazonosítás
o – processzusazonosító: egyedi numerikus azonosító
 az elsődleges processzustábla egy indexe is lehet
o – szülőprocesszus azonosítója
o – felhasználóazonosító
 Processzorállapot információ (Processor State Information)
o – felhasználó által látható regiszterek állapota
o – vezérlő- és státuszregiszterek állapota: processzorregiszterek, melyek a
processzor működését vezérlik
 programszámláló: a következő végrehajtandó utasítás címét tartalmazza
 állapotkód: a legutolsó aritmetikus vagy logikai művelet eredményét
tartalmazza (előjel, nulla, átvitel, egyenlő, túlcsordulás)
 státuszinformáció: megszakítás bekapcsolva/kikapcsolva, végrehajtó
mód
o – veremmutatók (Stack Pointer) állapota
 minden processzushoz társítva van egy vagy több "last-in-first-out"
(LIFO) rendszerverem
 ez a verem a rendszerhívások és eljárások számára paraméterek és
címek tárolására szolgál
 a veremmutató ezen verem tetejére mutat
Processz állapotok (futó, futásra kész, blokkolt, felfüggesztett);
processzek - életük során - különböző állapotok-ban (state) lehetnek, az állapotok között
különböző állapotátmenetek lehetségesek. A legegyszerűbb és legáltalánosabb állapot és
állapotát-menet diagram a 2.4.ábrán látható, ahol az ellipszisekkel jelöltek az állapotok
:

 running - futó állapot, a processzé a CPU;


 blocked - blokkolt, alvó (sleeping) állapot, mikor a processz egy esemény
bekövetkezésé-re vár;
 ready - futásra kész (computable) állapot, mikor a processz futhatna, ha megkapná a
CPU-t.
Az ábrán nyilakkal jelöltük az állapotátmeneteket:
 wait/sleep/request - várakozz (blokkolódj) eseményen állapotátmenet;
 signal/respond - jelzés az esemény bekövetkezésére;
 preempt - a CPU elvétele a processztől;
 schedule - A CPU kiosztása a processznek.

Kérdés merülhet fel, mi váltja ki az állapotátmeneteket a folyamat szemszögéből nézve? A


válasz: egyedül a wait/request/sleep állapotátmenetet kezdeményezi maga a processz (pl. egy
diszk blokk behozatalának kérelmével), az összes többi átmenetet a processz szemszögéből
nézve külső entitás váltja ki (a signal-t pl. a diszkvezérlő megszakítása, a preempt-schedule
átmeneteket a kernel időkiosztó alrendszere stb.).

Suspended Processes
(felfüggesztett állapot)
Ha sokáig blokkolt (blocked) egy proc.,kikerülhet (swap-pelődhet) a disk-re, ilyenkor
kerül felfüggesztett (suspended) állapotba
2 új állapot
– Blocked suspend
– Ready suspend
Ugyan ez történhet akkor is, ha hosszú ideig csak „ready”, azaz futásra kész állapotban van
egy processz.

Az 5 állapotú modell
 Running
 Ready
 Blocked
 New
 Exit

Processz állapot-átmenet gráfok

Processz váltás lépései

Mikor váltsunk process-t?


Clock interrupt
– lejárt a process-re szánt idő ebben az időszeletben
I/O interrupt
Memory fault
– Ha a megcímzett memória terület swap
területen van.
Trap:
– NB: (a kooperativ op rendszerek csak ezt tudják! - win 3.2)
– ha hiba történt
– ha ez exit állapotba billentené a proc-t

Processz váltásának lépései

 Save: PC and context


 Update the current PCB
 Change PCB state to „ready”
 Scheduler selects another proc.
 Update PCB of the new proc. to „running”
 Update memory-management data structures
 Restore context, and PC (i. e. jump)

Szálak (thread-ek) és használatuk (POSIX rendszerben).


Ultra könnyű process:
thread = fonál = szál
Egy proc. thread-jei de külön-külön:

közös– adatal – Thread ID

– open files (descriptors) – stack pointer, regisztek

– signals and signal handler – signal mask

– current working directory – priority

– User and group id – Return value: errno


Folyamatok és szálak
 A processzusokkal kapcsolatban két jellemzőt lehet megemlíteni:
o – erőforráskiosztás: a processzus számára virtuális címtartomány van
lefoglalva a processzus kép (process image) tárolásához
o – ütemezés/végrehajtás: a processzus végrehajtása egy programvégrehajtási
útvonalat követ, mely kereszteződhet más processzusok végrehajtásával
 Ezen jellemzők egymástól függetlenek, az operációs rendszer egymástól függetlenül
kezelheti őket:
o – Processzus
 erőforráskiosztás alapegysége
 virtuális címtartomány, főmemória
 I/O eszközök és fájlok
o – Szál (vagy könnyűsúlyú processzus, újraindított programkód)
 processzor kiszolgálás, ütemezés alapegysége
 ütemezés és kiszolgálás operációs rendszer vezérlése szerint
 a szálak olyan mechanizmust szolgáltatnak, amely lehetővé teszi a
szekvenciális processzusoknak a rendszerhívások blokkolását, s közben
a „párhuzamosság elérését”
 Többszörös szálak (Multithreading)
o Az operációs rendszer támogathatja egy processzuson belül több vezérlési szál
végrehajtását
 – MS-DOS csak egyszeres szálakat támogat
 – UNIX támogat párhuzamos felhasználói processzusokat, de egy
processzuson belül csak egy szálat
 – Windows 2000, Solaris, Linux, Mach, és OS/2 támogatja a
többszörös szálakat

You might also like