Operációs rendszerek

Hasonló dokumentumok
Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

Operációs rendszerek. Folyamatok kezelése a UNIX-ban

Matematikai és Informatikai Intézet. 4. Folyamatok

Uniprogramozás. várakozás. várakozás. Program A. Idő. A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna

Operációs rendszerek. Az NT folyamatok kezelése

Operációs rendszerek Folyamatok 1.1

Operációs rendszerek. UNIX fájlrendszer

OPERÁCIÓS RENDSZEREK 1. PROCESSZKEZELÉS

(kernel3d vizualizáció: kernel245_graph.mpg)

Utolsó módosítás:

Operációs rendszerek Memóriakezelés 1.1

Operációs Rendszerek II.

Bevezetés a számítástechnikába

Operációs rendszerek MINB240

C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés / 21

A mai program OPERÁCIÓS RENDSZEREK. A probléma. Fogalmak. Mit várunk el? Tágítjuk a problémát: ütemezési szintek

Operációs rendszerek III.

Architektúra, megszakítási rendszerek

OPERÁCIÓS RENDSZEREK I. BEVEZETÉS Koczka Ferenc -

OPERÁCIÓS RENDSZEREK. A mai program. A CPU által végrehajtott instrukciófolyam. A folyamat kontextus, processz menedzsment, processz állapotok

2. Folyamatok. Operációs rendszerek. Folyamatok. Bevezetés Folyamatkezelés multiprogramozott rendszerekben. Folyamatok modellezése

Bevezetés az informatikába

Elosztott rendszerek

Konkurens TCP Szerver

Az előadás magáncélra szabadon felhasználható. Köz- és felsőoktatásban felhasználható, csak előtte kérlek írj egy t nekem.

Operációs rendszerek. A Windows NT

Előadás_#02. Előadás_02-1 -

Az operációs rendszer szerkezete, szolgáltatásai

Számítógépes alapismeretek

Az interrupt Benesóczky Zoltán 2004

Szenzorhálózatok programfejlesztési kérdései. Orosz György

A Számítógépek felépítése, mőködési módjai

Feladatok (task) kezelése multiprogramozott operációs rendszerekben

Operációs rendszerek. Az NT memóriakezelése

386 processzor címzés

Utolsó módosítás:

Számítógépek felépítése

LabView Academy. 4. óra párhuzamos programozás

Ütemezés (Scheduling),

Máté: Assembly programozás

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

Utolsó módosítás:

Virtuális memóriakezelés Védelem. Memória védelem. Intel x68. Izsó Tamás október 18. Izsó Tamás Memória védelem/ 1

Operációs rendszerek

Operációs rendszerek. 4. gyakorlat: Szignálok küldése, kezelése

UNIX folyamatok kommunikációja

Operációs rendszerek

OPERÁCIÓS RENDSZEREK. Elmélet

Operációs rendszerek II. Folyamatok ütemezése

Ütemezés (Scheduling),

Léteznek nagyon jó integrált szoftver termékek a feladatra. Ezek többnyire drágák, és az üzemeltetésük sem túl egyszerű.

LabVIEW példák és bemutatók KÉSZÍTETTE: DR. FÜVESI VIKTOR

Máté: Számítógép architektúrák

Virtualizációs Technológiák Bevezetés Kovács Ákos Forrás, BME-VIK Virtualizációs technológiák

Operációs rendszerek. Bemutatkozás

Párhuzamos és Grid rendszerek

Jelfeldolgozás a közlekedésben

TI TMDSEVM6472 rövid bemutatása

Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás

Virtuális memóriakezelés Védelem. Memória védelem. Intel X86. Izsó Tamás október 1. Izsó Tamás Memória védelem/ 1

Cloud computing. Cloud computing. Dr. Bakonyi Péter.

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Operációs Rendszerek II. Első verzió: 2009/2010. I. szemeszter Ez a verzió: 2009/2010. II. szemeszter

ios alkalmazásfejlesztés Koltai Róbert

Utolsó módosítás:

Windows ütemezési példa

Adatbázis és alkalmazás konszolidáció Oracle SPARC T4/5 alapon

Széchenyi István Egyetem

ARM Cortex magú mikrovezérlők

Alternatív processz állapot és statisztika lekérdezési módszer a Linux kernelben

Memória és perifériák virtualizációja. Kovács Ákos Forrás, BME-VIK Virtualizációs technológiák

EMTP, EGY ÚJ LEVELEZÕ PROTOKOLL ÉS IMPLEMENTÁCIÓJA

16F628A megszakítás kezelése

Nyíregyházi Egyetem Matematika és Informatika Intézete. Input/Output

OpenCL - The open standard for parallel programming of heterogeneous systems

Programozási nyelvek és módszerek Java Thread-ek

Mechatronika és mikroszámítógépek. 2018/2019 I. félév. Külső megszakítások

Proxer 7 Manager szoftver felhasználói leírás

Cloud computing Dr. Bakonyi Péter.

Dr. Illés Zoltán

Dr. Schuster György október 14.

ARM processzorok felépítése

Informatikai rendszerek alapjai (Informatika I.)

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Virtualizáció. egy hardveren több virtuális rendszer működik egyszerre, virtuális gépekben futó önálló vendég (guest) operációs rendszerek formájában

Az AVR programozás alapjai. Előadja: Both Tamás

Programozás C++ -ban 2007/7

Feladatok (task) kezelése multiprogramozott operációs rendszerekben

Jelszavak helyes megválasztása, szótáras törés. Pánczél Zoltán

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

Condor rendszer röviden. IKTA NI-2000/0008 munkaszkasz zárókonferencia

Operációs rendszerek. Folyamatok ütemezése

Utolsó módosítás:

Operációs Rendszerek II.

OPERÁCIÓS RENDSZEREK. Célkitűzések, tárgyfelépítés. Módszerek. OS fogalom, struktúrák. 2005/2006. tanév II. félév Dr. Vadász Dénes

1_Linux_bevezeto_bash

Analitikai megoldások IBM Power és FlashSystem alapokon. Mosolygó Ferenc - Avnet

Átírás:

Operációs rendszerek 7. előadás processzek 2007/2008. II. félév Dr. Török Levente

A mai program A multi programozástól a process-ekig A process-ek állapotai, állapot átmenetei A process-eket leíró táblák (process location) Process context váltás: mikor? Példák: http://www.iit.uni-miskolc.hu/~vadasz/geial202/peldaprogramok/

Egy processzor - sok feladat? Cél: (b. ábra), 1 proc esetén a megoldás (a. ábra), proc kihasználtság (c. ábra) megvalósul a látszat párhuzamosság ez a multi programozás

Sok feladat -> Sok processz 1. Direkt program a sok feladat kiszolgálásra nagy odafigyelést igényel, nehézkes nem lehet nagy ciklusokat szervezni, minden task csak egy kis feladatot láthat el int main() { for(;;) { task1(); // pl mosógép program végrehajtásának következő fázisa task2(); // az LCD frissititese task3(); // billentyuzet feldolgozasa } }

Sok feladat -> Sok processz 2. Állapot gépes technika ha bonyolultabb task-okat kell szervezni void task1() { static int state_m1; // ez az állapotgép állapota switch(state_m1){ case 1: ; state_m1=2;break; // itt váltunk állapotot először case 2: ;state_m1=1;break; // másodszor, vissza } } int main() { for(;;) { task1(); // pl mosógép program végrehajtásának következő fázisa task2(); // az LCD frissititese task3(); // billentyuzet feldolgozasa } }

Mi történik? A Task1() állapotgépje: először 1 2 másodszor ebben az állapotban megoldjuk a feladat egyik részét, majd elengedjük a vezérlést majd ebben megoldjuk az a másik feladat részét, és majd ismét elengedjük a vezérlést A végrehajtási sorrend a main-ben: task1() // state= 1 task2() task3() új ciklus task1() // state= 2 task2() stb.stb.

Sok feladat -> Sok processz 3. BgProc-os technika: csak arra kell figyelni, hogy bármelyik hosszú ideig tartó folyamat időről-időre meghívja a BgProc()-ot, amelyben a háttérfolyamatok állapotgépek segítségével adminisztrálásra kerülnek. A technika a előzőekkel szemben REKURZÍV megoldást alkalmaz.

Sok feladat -> Sok processz 4. Task switching: Timer interrupt-on időröl-időre kicseréljük a CPU teljes állapotját: (pl. x86-on: IP,CS,SS,DS ) NAGYON jól kell ismerni a hardware-t! Task adminisztrációs terület a memóriában (context): Task1 leírója: regs: IP,CS,SS,DS Task2 leírója: regs: IP,CS,SS,DS Task3 leírója: regs: IP,CS,SS,DS 2. save clock 1. Timer irq (20ms) CPU: Az éppen futó proc regs: IP,CS,SS,DS 3. restore

Sok feladat -> sok processz 5. Task switching védett op.rendszer esetén USER SPACE Task 1 Proc Context Task 2 Proc Context KERNEL SPACE Admin adatok Admin adatok Scheduler Proc context: regs, stacks,... ugyanaz mint az elöbb Admin adatok: - pl. megnyitott fájl descriptor-ok.

Process context User space: regiszterek: CS, IP, DS,SS pwd Kernel space: ID, process állapota, prioritása közelmúltban felhasznált ideje, gyermekei által felhasznált idők, kötetkező ébredés ideje fájl handler-ek, exception handler-ek cimei MMU állapota jogosultságok,umask,uid,gid rendszerhívás paraméterei

Standard kérdések Az op. rendszer szemponjából: Extended virtual machine: egyedüli hw. látszata hogyan? Resource management: CPU scheduling hogyan lehet optimális? Responding machine: egyedüli gép látszata az API felől. A felhasználó szepontjából: Process (sok DS) vagy thread (fonál; egy DS)? Kommunikáció a process-ek thread-ek között.

Kérdés Vajon a kernelben csak egy processz van? régen a linuxban igen, illetve ú.n. cooperative multi tasking volt ma már nem.ma preemptive multi tasking van, amihez valódi kontextus tartozik. természetesen a kernel processzek nincsenek védve egymástól ezért továbbra is nagyon odafigyelve lehetcsak kernelt fejleszteni. NB: az IT handler-ek csak a rendszer kontextushoz tartoznak.

Kérdés 2. Annak érdekében, hogy minden egyes task között egyenletesen tudjam elosztani a processzort, mint erőforrást, tudnom kell, hogy melyik process mennyit futott a közelmúltban és hogy valójában a processzor hány százalékára lenne jogosult. Ezt vezetjük ún. számlákon. Vajon a rendszerhívások melyik process számláját (process idejét) használják? A rendszerhívások (ioctl/syscall) mindenképp a hívó process idejét eszik meg. Az interruptok a rendszer process idejét fogyasztják.

2 állapotú process model A 2 állapot valamelyikében van a proc. Running Not-running

A queue-ban várakozik minden ready process

Process Creation (létrehozás) Példák: Gyermek folyamat létrehozása Print-elés (job bejuttatása a print queue-ba) A felhasználó be-log-olása

Process Termination példák process befejezésre exit() függvényt hív maga a process véget ér a program futása ( a main() fv ) System or User Kills process kill parancs segítségével küldünk a processnek (3-as signal-t quit-et), vagy 9-eset küldünk a rendszernek Error vagy fault esemény Segmentation Fault: ezzel egy időben: core dump fájl gyártása! A process-t indító felhasználó kilép

Process Termination példák process befejezésre Memory unavailable (nincs elég mem) Protection error (védelmi hiba) example write to read-only file (csak olvasható fájl írása) Arithmetic error: Division by zero

Process Termination példák process befejezésre I/O failure (sikertelen I/O művelet) Invalid instruction (nem értelmezett utasítás): például, amikor adat területet próbálunk végrehajtatni Privileged instruction execution: privilégizált csak kernel módban futtatható utasítást próbáltunk meg végrehajtani user módban. Operating system intervention: (Op rendszer beavatkozás) such as when deadlock occurs (deadlock feloldás) Parent terminates so child processes terminate: a szülő folyamat befejezte a futását. Parent request (szölői kérésre)

Process állapotok Not-running (nem futó) ready to execute (de kész a futásra) Blocked waiting for an event (egy esemény bekövetkezésére vár) ezt a folyamatot az ütemező nem tudja kiválasztani ütemezésre, mert bár ennek kellene következni, de várakozik az esemény bekövetkezésére

Az 5 állapotú modell Running Ready Blocked New Exit Ez azonos lenne a 3 állapotú modellel, de olyat nem szoktas emlegetni:)

Using Two Queues

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.

One Suspend State

Two Suspend States: 7 states modell

Okok a felfüggesztésre (suspended azaz swapped állapotba kerülésre) Swap: memória szűkössége, (mem starving) Interaktivitás: a felhasználó kiszolgálása elsődleges (CPU starving) Időzítés: a csak időszakosan fútó háttér folyamatokat, ki lehet swap-elni. Szülő folyamat kérésre

Virtualitás Minden processz úgy érzékeli, hogy övé a rendszer, akkor amikor fut. Azaz azt érzi nincs más a rendszerben, minden erőforrás az övé

Operating System Control Structures Minden process-t és erőforrást nyilván kell tartani: Ezeket táblázatokba, struktúrákba foglalva kezeli az op. rendszer

Process Table = cca. Process Location Table

Memory Tables Allocation of main memory to processes Allocation of secondary memory to processes Protection attributes for access to shared memory regions Information needed to manage virtual memory

I/O Tables I/O device is available (elérhető) or assigned (felhasználás alatt van) Status of I/O operation I/O<->mem átvitel során használt memória címek

File Tables Opened files Current Status (pillanatnyi állapota) Attributes (hozzáférési jogok) Location in main memory

Process Image Process Location

Process Location (a process tartalma ) Process control block PCB: Collection of attributes (minden attribútumok gyűjteménye!) Ez a processz nem ki-swap-pelhető része Process image: Code, data, stack, segments and attributes Ez a processz ki-swap-pelhető része

Process Control Block Process identification A kurrens process azonosítója (pid) A szülő process azonosítója (parent process - ppid) User identifier (uid), group identifier (gid), umask

Process Control Block Processor State Information A processzor a felhasználható által is használható regiszterei: pl. x86-on: AX, BX,, segmensek, Control and Status Registers PC, Status registers: carry, overflow, interrupt state

Példa a status register-re Pentium II EFLAGS Register

Process Control Block Process Control Information Scheduling and State Information (minden ami a process ütemezéséhez kell): Process state: running, ready, waiting, halted Priority: (e.g., default, current, highestallowable) Scheduling-related information: Az elmúlt időben felhasznált processzor idő Event: (esemény) Annak az eseménynek az azonosítója (ha blokkolt állapotban van), aminek teljesülnie kell mielőtt a process-t vissza lehet állítani ready állapotba

Process Control Block Process Control Information Data Structures (adat struktúrák) Egy folyamatot több helyre kellhet kapcsolni (azonosítani) Például, ha egy queue-ban várakozik, vagy ha egy process szülő-gyerek viszonyban jelenítjük meg. Ezek leírásához van szükség ezekre ezekre a szerkezetekre.

Process Control Block Process Control Information Interprocess Communication 2 független processz között flag-ekkel, signal-okkal, és messages-ekkel, osztott memoriával kommunikálhatunk. Ezek egy része ebben helyezkedik el. Process Privileges (jogosultságok): A processznek garantálni kell, hogy bizonyos memória területet elérhet és csak ő érhet el. Továbbá a rendszer erőforrások és perifériák jogosultságaira is.

Process Control Block Process Control Information Memory Management: A processzhez tartozó virtuális memiória leírására szolgáló pointereket, szegmenseket és vagy page-eket tartalmaz. Resource Ownership and Utilization (erőforrás birtoklása és használatának nyilvántartása) pl. nyitott file-ok. esetenként az erőforrás használat történetét is itt tartjuk nyilván és az ütemező ezt is figyelembe veszi.

Process végrehajtási módok User mode kevésbé privilégizált, korlátozott üzemmód A felhasználói programok futnak így Nem lehet minden proc. utasítást végrehajtani System mode = control mode = kernel mode privilégizált: minden erőforráshoz hozzáférhet az ilyen process az op.sys kernel-e fut így

Process Creation (létrehozás) Egyedi proc, azonosító allokálása Memória allokálása a proc. image számára és proc. contr. block (PCB) számára, ez utóbbit inicializálni kell Vegül a proc. ütemezőt értesítésítjük

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.

Mikor váltsunk process-t? 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)

Execution of the Operating System Non-process Kernel execute kernel outside of any process operating system code is executed as a separate entity that operates in privileged mode

Execution of the Operating System Process-Based Operating System major kernel functions are separate processes Useful in multi-processor or multi-computer environment

Execution of the Operating System NB: FUSE Execution Within User Processes operating system software within context of a user process process executes in privileged mode when executing operating system code

Processz management függvények C-ben fork() - process létrehozás gyermek proc. létrehozása a kurrens proc. context másolása a gyeremekére visszatérés mind a két proc.-ban a kurrens pid-del getpid() visszaadja a kurrens proc. pid-jét

main() { Példa int pid, gpid; pid = getpid(); if((gpid = fork()) == 0) { } // Itt a gyermek fut gpid = getpid(); exit(0); // Gyermek befejeződik } // itt a szulo fut exit(1); // Szulo befejeződik FONTOS: A szülő és a gyermek adat területe csak másolata egymásnak, de nem ugyanaz a memória terület!

fork() Szülő fork() A szülő folytatja futását Másolatként létrejön a gyermek folyamat

Process felülírása Ha az új process-t, a kurrens helyére akarjuk betölteni használjuk: exec(char* programfilename, ) Ez betölti a megadott programot, amely elkezd ugyanebben a process-ben futni.

Ultra könnyű process: thread = fonál = szál Egy proc. thread-jei közös adatal de külön-külön: Thread ID stack pointer, regisztek open files (descriptors) signal mask signals and signal handler priority current working directory Return value: errno User and group id Használat (gyakorlaton): pthread_create(); pthread_join();

Process és thread állapotok Process Thread1 Thread2 Run Blocked Run Blocked Ready Ready A vezérlés mindig a nem blokkolt állapotú thread-ek között kerül kiosztásra addig ameddig a process időszeletében arra lehetőség van.

Összefoglalás Multitasking direkt prog/direkt HW futtatás Op.sys esetén adatstruktúrák a kernelben státusok, állapot átmenetek kontrol: létrehozás, felülírás, thread létrehozás

Ellenőrző kérdések Mi a multiprogramozás? Miért fontos? Írjon egy állapotgépet C-ben, ami 1 másodpercenként sorsol egy új állapotot és oda lép. Milyen módszerekkel lehet valósítani multiprogramozást? 3 módszer Milyen processz adatok vannak user és kernel space-en? Mi a thread és a processz különbsége? Mi a cooperative és mi a preemptive multi tasking. Mi processzek 3,5 és 7 állapota? Mikor jön létre a suspended processz állapot?

Ellenőrző kérdések Milyen táblazatokat kell manage-elni az op.rendszerben? Mi a Process Location? Mi a PCB és mi a Process Image? Milyen 3 csoportba bontható információkat tartalmaz a PCB? Mit tartalmaz Proc Image? Írjon példát fork használatára. Exec használatára. Mit jelent a virtualitás legfontosabb megjelenése egy multitask-os rendszerben. Milyen lépésekben zajlik egy processz váltás? Milyen processzor működési állapotok és címtartományokat ismer? Mi jellemző a kernel és a user végrehajtási módra? privilégizáció És mód váltása?

Ellenőrző kérdések Rajzolja le egy processz két thread-jének thread állapot diagramját. Az egy processz különböző thread-jeiben különbözőek lesznek-e a megnyitott file-ok? a kurrens munka könyvtár? HF: utána nézni mire való a clone() függvény? -> man clone HF: utána nézni mi a zombie processz állapot és miért kell, hogy legyen? -> http://kerneltrap.org/node/6206