Operációs rendszerek. Történet

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

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. UNIX fájlrendszer

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 NT folyamatok kezelése

Matematikai és Informatikai Intézet. 4. Folyamatok

Operációs rendszerek. A Windows NT

(kernel3d vizualizáció: kernel245_graph.mpg)

Operációs rendszerek

Elosztott rendszerek

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

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

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

OPERÁCIÓS RENDSZEREK 1. PROCESSZKEZELÉS

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

Utolsó módosítás:

Operációs rendszerek MINB240

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

Konkurens TCP Szerver

Operációs rendszerek. 6. gyakorlat: Processzusok közti kommunikáció (osztott memória, üzenetsor)

Operációs Rendszerek II.

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

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

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

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

Széchenyi István Egyetem

Informatikai Rendszerek Intézete Gábor Dénes Foiskola. Operációs rendszerek oldal LINUX

Architektúra, megszakítási rendszerek

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

Operációs rendszerek III.

Operációs rendszerek. UNIX/Linux fájlrendszerek

Using the CW-Net in a user defined IP network

UNIX folyamatok kommunikációja

Csatlakozás a BME eduroam hálózatához Setting up the BUTE eduroam network

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

ARM Cortex magú mikrovezérlők

Bevezetés az informatikába

Create & validate a signature

ARM processzorok felépítése

9. MPI

16F628A megszakítás kezelése

ISA szimulátor objektum-orientált modell (C++)

Virtualizációs Technológiák Operációs rendszer szintű virtualizáció Konténerek Forrás, BME-VIK Virtualizációs technológiák

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

ios alkalmazásfejlesztés Koltai Róbert

Utolsó módosítá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

Operációs rendszerek. Bemutatkozás

Az időhöz kötődő parancsok

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

Az interrupt Benesóczky Zoltán 2004

Operációs Rendszerek II.

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

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

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

Párhuzamos és Grid rendszerek

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Stack Vezérlés szerkezet Adat 2.

USER MANUAL Guest user

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

S z á m í t ó g é p e s a l a p i s m e r e t e k

Mapping Sequencing Reads to a Reference Genome

2. Gyakorlat Khoros Cantata

(NGB_TA024_1) MÉRÉSI JEGYZŐKÖNYV

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

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

Utolsó módosítás:

Számítógépes alapismeretek

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

Utolsó módosítás:

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

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

Dr. Schuster György október 14.

OPERÁCIÓS RENDSZEREK. A mai program. Hiba és eseménykezelés. Alapfogalmak. Eseménykezelés, szignálozás

Operációs rendszerek 1.

Alkalmazások biztonsága

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

UNIX / Linux rendszeradminisztráció III. előadás

Kölcsönös kizárás, atomicitás, szemafor.

Fájl rendszer (implementáció) Fájl rendszer struktúra Allokációs módszerek Szabad hely kezelése Directory implementáció Helyreállítás

Dr. Varga Imre. Socket-programozás. C nyelven

Rootkitek. Előadó: Barta Csaba

Mikrokontrollerek. Tihanyi Attila május 8

Nagios NSCA Indirect Monitoring, Passive Check

Digitális rendszerek. Utasításarchitektúra szintje

UNIX: folyamatok kommunikációja

ARM (Advanced RISC Machine)

EN United in diversity EN A8-0206/419. Amendment

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

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

Adatkezelő szoftver. Továbbfejlesztett termékvizsgálat-felügyelet Fokozott minőség és gyártási hatékonyság

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

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

Programozás 6. Dr. Iványi Péter

Solaris Dtrace (mit is rejt a motorház) Erik Fischer Principal Engineer

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

Cloud computing Dr. Bakonyi Péter.

Mintavételes szabályozás mikrovezérlő segítségével

Átírás:

Operációs rendszerek Klasszikus UNIX (Bevezetés, általánosságok) 1 Történet 1969 Bell Research Lab korábban az MIT-vel Multics Ken Thompson, Dennis Ritchie 1973 implementáció DEC DPD-11-en C progromozási nyelv (platform függetlenség) 1977 kb. 5 helyen használják egyetemeknek ingyenesen hozzáférhet! forráskód 198 DARPA TCP/IP protokoll 1984 TCP/IP beépített támogatása a BSD UNIXban 2

UNIX család 3 A UNIX szerkezete 4

Rendszerhívások és kernel végrehajtás Rendszerhívás interfész privilégizált módba (teljes hozzáférés a rendszer er!forrásokhoz) váltás ellen!rzött körülmények között kernel végrehajtás procedurálisan kernel nem preemptív (egy processzoros gépekre tervezték) de expliciten végrehajthat blokkoló utasítást (pl. I/O) és interrupt megszakíthatja, a kiszolgálás után a vezérlés a megszakított folyamathoz kerül vissza (user módban dönthet másképp is az ütemez!) 5 Eszközkezelés (device handling) Két féle eszközkezelés block I/O (pl. disk) character I/O (pl. terminal) Nincsenek dedikált eszközkezel! folyamatok interrupt, privilégizált mód, interrupt handler hívása Eszköz meghajtók (device drivers) top half (I/O modul által hívható) bottom half (interrupt kezel! által hívható) 6

Fájlrendszer [részletek kés!bb] Hierarchikus fájlrendszer névtér könyvtárfájlok (directory) egy gyöker" fájlrendszerek becsatolása (mount) Speciális fájlok eszközök, IPC mechanizmusok normál fájlokéval azonos interfészen érhet!k el Fájlrendszer interfész I/O m"veletek megnyitás, lezárás, olvasás, írás, pozicionálás, létrehozás 7 Folyamatok kezelése Folyamatok címtere saját logikai címtér (felhasználói, kernel) 8

Folyamatok kezelése (folyt.) Folyamatok létrehozása fork rendszerhívás új címtér a hívó replikája, új process adatszerk. exec... rendszerhívás program betöltése az új címtérbe (Text), Data újra létrehozása exit rendszerhívás címtér megszüntetése, visszatérési kód, process adatszerk. marad (zombi állapot) wait rendszerhívás szinkronizálás a gyerek halálára 9 Folyamat hierarchia (pl.) 1

Folyamatok ütemezése [részletek kés!bb] Dinamikus prioritás alapú ütemezés kernel végrehajtás magasabb prioritású blokkolt folyamat prioritását a várt esemény határozza meg user folyamatok id!szeleteket kapnak, roundrobin ütemezés dinamikus prioritás a felhasznált id! alapján 11 Folyamatok állapotai 12

Folyamatok környezete Minden adat, ami szükséges a folyamat újraindításához. Két vezérlési adatstruktúra: proc (processz) struktúra a rendszer memóriájában: a kernel az összes folyamat proc struktúrájához hozzáfér, tárolás: hash tábla, u area (user area, felhasználói terület): a processz memóriájában, de csak (!) kernel módban módosítható: a kernel csak a futó folyamat u area-jához fér hozzá közvetlenül, indirekt módon a többit is eléri, de jóval lassabban. 13 A proc struktúra Processz azonosító (PID). User area-ra mutató referencia. Processz állapota: pl.: kernel vagy user módban fut, várakozó vagy futásra kész (állapot diagram). Ütemezési információk: pl.: 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. 14

struct proc (pl. FreeBSD) struct! proc {! TAILQ_ENTRY(proc) p_procq;! / run/sleep queue. /! LIST_ENTRY(proc) p_list;! / List of all processes. /! / substructures: /! struct! pcred p_cred;!! / Process owner's identity. /! struct! filedesc p_fd;!! / Ptr to open files structure. /! struct! pstats p_stats;! / Accounting/statistics (PROC ONLY). /! struct! plimit p_limit;! / Process limits. /! struct! vm_object p_upages_obj;/ Upages object /! struct! procsig p_procsig; #define p_sigacts! p_procsig->ps_sigacts #define p_sigignore! p_procsig->ps_sigignore #define p_sigcatch!p_procsig->ps_sigcatch #define! p_ucred!! p_cred->pc_ucred #define! p_rlimit!p_limit->pl_rlimit! int! p_flag;!!! / P_ flags. /! char!p_stat;!!! / S process status. /! char!p_pad1[3];! pid_t! p_pid;!!! / Process identifier. /! LIST_ENTRY(proc) p_hash;! / Hash chain. /! LIST_ENTRY(proc) p_pglist;! / List of processes in pgrp. /! struct! proc p_pptr;!! / Pointer to parent process. /! LIST_ENTRY(proc) p_sibling;!/ List of sibling processes. /! LIST_HEAD(, proc) p_children;! / Pointer to list of children. /! struct callout_handle p_ithandle; /!!!!! Callout handle for scheduling!!!!! p_realtimer.!!!!! / 15 struct proc (pl. FreeBSD, folyt.) / The following fields are all zeroed upon creation in fork. / #define! p_startzero! p_oppid! pid_t! p_oppid;! / Save parent pid during ptrace. XXX /! int! p_dupfd;! / Sideways return value from fdopen. XXX /! struct! vmspace p_vmspace;! / Address space. /! / scheduling /! u_int! p_estcpu;! / Time averaged value of p_cpticks. /! int! p_cpticks;! / Ticks of cpu time. /! fixpt_t! p_pctcpu;! / %cpu for this process during p_swtime /! void!p_wchan;! / Sleep address. /! const char p_wmesg;! / Reason for sleep. /! u_int! p_swtime;! / Time swapped in or out. /! u_int! p_slptime;! / Time since last blocked. /! struct! itimerval p_realtimer;!/ Alarm timer. /! u_int64_t p_runtime;!! / Real time in microsec. /! u_int64_t p_uu;!!! / Previous user time in microsec. /! u_int64_t p_su;!!! / Previous system time in microsec. /! u_int64_t p_iu;!!! / Previous interrupt time in usec. /! u_int64_t p_uticks;!! / Statclock hits in user mode. /! u_int64_t p_sticks;!! / Statclock hits in system mode. /! u_int64_t p_iticks;!! / Statclock hits processing intr. /! int! p_traceflag;!! / Kernel trace points. /! struct! vnode p_tracep;! / Trace to vnode. /! sigset_t p_siglist;!! / Signals arrived but not delivered. /! struct! vnode p_textvp;! / Vnode of executable. /! char!p_lock;!!! / Process lock (prevent swap) count. /! u_char! p_oncpu;!! / Which cpu we are on /! u_char! p_lastcpu;!! / Last cpu we were on /! char!p_rqindex;!! / Run queue index /! short! p_locks;!! / DEBUG: lockmgr count of held locks /! short! p_simple_locks;!! / DEBUG: count of held simple locks /! unsigned int! p_stops;!/ procfs event bitmask /! unsigned int! p_stype;!/ procfs stop event type /! char!p_step;!!! / procfs stop once flag /! unsigned char!p_pfsflags;! / procfs flags /! char!p_pad3[2];!! / padding for alignment /! register_t p_retval[2];! / syscall aux returns /! struct! sigiolst p_sigiolst;! / list of sigio sources /! int! p_sigparent;!! / signal to parent on exit /! sigset_t p_oldsigmask;!! / saved mask from before sigpause /! int! p_sig;!!! / for core dump/debugger XXX / u_long! p_code;!! / for core dump/ debugger XXX /! struct! klist p_klist;!! / knotes attached to this process / / End area that is zeroed on creation. / 16 f l d

struct proc (pl. FreeBSD, folyt.) / The following fields are all copied upon creation in fork. / #define! p_startcopy! p_sigmask! sigset_t p_sigmask;! / Current signal mask. /! stack_t! p_sigstk;!/ sp & on stack state variable /! u_char! p_priority;! / Process priority. /! u_char! p_usrpri;!/ User-priority based on p_cpu and p_nice. /! char!p_nice;!! / Process "nice" value. /! char!p_comm[maxcomlen+1];! struct! pgrp p_pgrp;!/ Pointer to process group. /! struct! sysentvec p_sysent; / System call dispatch information. /! struct! rtprio p_rtprio;! / Realtime priority. /! struct! prison p_prison;! struct! pargs p_args; / End area that is copied on creation. / #define! p_endcopy!p_addr! struct! user p_addr;!/ Kernel virtual addr of u-area (PROC ONLY). /! struct! mdproc p_md;! / Any machine-dependent fields. /! u_short! p_xstat;!/ Exit status for wait; also stop signal. /! u_short! p_acflag;!/ Accounting flags. /! struct! rusage p_ru;!/ Exit information. XXX /! int! p_nthreads;! / number of threads (only in leader) /! void!p_aioinfo;! / ASYNC I/O info /! int! p_wakeup;!/ thread id /! struct proc p_peers;!! struct proc p_leader;! struct! pasleep p_asleep;! / Used by asleep()/ await(). /! void!p_emuldata;! / process-specific emulator state data / }; 17 f l d 249 struct proc 25 pfind(pid) 251 register pid_t pid; 252 { 253 register struct proc p; 254 255 sx_slock(&allproc_lock); 256 LIST_FOREACH(p, PIDHASH(pid), p_hash) 257 if (p->p_pid == pid) { 258 PROC_LOCK(p); 259 break; 26 } 261 sx_sunlock(&allproc_lock); 262 return (p); 263 } #define PIDHASH(pid) pidhash]) proc table kezelése (pl. FreeBSD) (&pidhashtbl[(pid) & 124 pidhashtbl = hashinit(maxproc / 4, M_PROC, &pidhash); 378 int i; 379 38 if (elements <= ) 381 panic("hashinit: bad elements"); 382 for (hashsize = 1; hashsize <= elements; hashsize <<= 1) 383 continue; 384 hashsize >>= 1; 385 hashtbl = malloc((u_long)hashsize sizeof(hashtbl), type, M_WAITOK); 386 for (i = ; i < hashsize; i++) 387 LIST_INIT(&hashtbl[i]); 388 hashmask = hashsize - 1; 389 return (hashtbl); 39 } 373 void 374 hashinit(int elements, struct malloc_type type, u_long hashmask) 375 { 376 long hashsize; 377 LIST_HEAD(generic, generic) hashtbl; 18

A user area Egyszer" adatelemek: PCB (hardver környezet, regiszterek). Mutató a folyamat proc struktúrájára. Jogosítványok (valós {signal} és hatásos {file} UID, GID). Signal handler (kezel!) rutinok címei. CPU használati statisztika (ütemezéshez). Környezeti változók (pl.: aktuális könyvtár, kontroll terminál, keresési út). Ö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, perprocess Region Table). File-leírók táblázata (per process File Descriptor Table). Kernel módban használt veremtár (per process Kernel Stack). 19 u-area (pl. FreeDSB) / Per process structure containing data that isn't needed in core when the process isn't running (esp. when swapped out). / struct! user {! struct! pcb u_pcb;! struct! sigacts u_sigacts;!/ p_sigacts points here (use it!) /! struct! pstats u_stats;!! / p_stats points here (use it!) /! /! Remaining fields for a.out core dumps - not valid at other times!! /! struct! kinfo_proc u_kproc;! / proc + eproc /! struct! md_coredump u_md;! / machine dependent glop / }; user struct 4 struct pcb { 41 register_t pcb_context[2]; / non-volatile r14-r31 / 42 register_t pcb_cr; / Condition register / 43 register_t pcb_sp; / stack pointer / 44 register_t pcb_lr; / link register / 45 register_t pcb_usr; / USER_SR segment register / 46 struct pmap pcb_pm; / pmap of our vmspace / 47 struct pmap pcb_pmreal; / real address of above / 48 faultbuf pcb_onfault; / For use during 49 copyin/copyout / 5 int pcb_flags; 51 #define PCB_FPU 1 / Process had FPU initialized / 52 struct fpu { 53 double fpr[32]; 54 double fpscr; / FPSCR stored as double for easier access / 55 } pcb_fpu; / Floating point processor / 56 unsigned int pcb_fpcpu; / which CPU had our FPU 57 stuff. / 58 }; pcb struct 2

Daemon folyamatok Önálló folyamatokként megvalósított OPR funkciók. Nem privilegizált módban futnak. Rendszerhívásokon keresztül érik el a kernel szolgáltatásait. Nincsenek terminálhoz kötve 21 IPC megoldások Csövek (pipe) fájl és eszköz I/O-val kompatibilis egyirányú kommunikációt (író, olvasó) biztosító bájt folyam szinkronizál a folyamatok között üres cs!b!l olvasó folyamat blokkolódik csövet (puffert) teleíró folyamat blokkolódik a gyerekfolyamat örökli!ket (a többi fájl leíróhoz hasonlóan) 22

IPC megoldások (folyt.) Signal el!re definiált szemantika (folyamat vezérlés, hibakezelés) nincs szinkronizálás elveszhetnek kernel módba lépéskor detektálhatók 23