Programiranje za UNIX Okruženje unix procesa

Слични документи
Funkcije predavač: Nadežda Jakšić

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Uvod u računarstvo 2+2

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

Programski jezik C

Uvod u računarstvo 2+2

Funkcije predavač: Nadežda Jakšić

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Računarski praktikum I - Vježbe 09 - this, static

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Programski jezik C

Microsoft PowerPoint - Bitovi [Compatibility Mode]

Uvod u računarstvo 2+2

Računarski praktikum I - Vježbe 01 - Uvod

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Računarske mreže Čas 2 Ivana Tanasijević Matematički fakultet, Beograd 1

JEZGRO OPERATIVNOG SISTEMA I UPRAVLJANJE PROCESIMA 1. Šta je jezgro, a šta proces? Jezgro (nukleus ili kernel) je osnovni deo svakog operativnog siste

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br

PowerPoint Presentation

Microsoft Word - 11 Pokazivaci

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Programski jezici i strukture podataka

07_PJISP_II_Predavanja

Slide 1

Microsoft PowerPoint - 11.Programski_Jezik_C_ulaz-izlaz [Compatibility Mode]

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

PowerPoint Presentation

Tutoring System for Distance Learning of Java Programming Language

Datoteke predavač: Nadežda Jakšić

Microsoft PowerPoint - 12-Funkcije_1.ppt [Compatibility Mode]

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

Računarski praktikum I - Vježbe 11 - Funktori

Logicko projektovanje racunarskih sistema I

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj

Uvod u računarstvo 2+2

Zbirka resenih zadataka iz arhitekture racunara

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, Ispit iz Programiranja 2 Ispit traje 135 minuta Napomene: a) Pažljivo proučite U

P11.3 Analiza zivotnog veka, Graf smetnji

CLI

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p

Dijagrami sekvenci

P9.1 Dodela resursa, Bojenje grafa

Uvod u PHP

Microsoft Word - CCERT-PUBDOC doc

Algoritmi i arhitekture DSP I

Računarske mreže i mrežne tehnologije 10. termin 1. TRANSPORTNI SLOJ Transportni sloj nije još samo jedan od mnogih slojeva jer je njegova uloga sama

Microsoft Word - MySQL_3.doc

P3.2 Paralelno programiranje 2

Drugi kolokvij iz predmeta Operacijski sustavi 2. srpnja Napomene: PISATI ČITKO! Zadatke 7-10 rješavati na ovom papiru ili uz njih napisati "na

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1

MergedFile

ELEKTROTEHNIČKI FAKULTET, UNIVERZITET U BEOGRADU KATEDRA ZA ELEKTRONIKU UVOD U ELEKTRONIKU - 13E041UE LABORATORIJSKA VEŽBA Primena mikrokontrolera

Увод у организацију и архитектуру рачунара 1

Logičke izjave i logičke funkcije

(Microsoft PowerPoint - Uvod u ra\350unarstvo i informacione tehnologije)

OPIS RAČUNARSKOG SISTEMA Računarski sistem se sastoji od procesora, operativne memorije, tajmera i terminala. Sve komponente računarskog sistema su me

Osnovni programiranja I

Microsoft PowerPoint - ARS_Ch_6 - IO sustavi.ppt

Microsoft PowerPoint - 01 Uvod u operativne sisteme.ppt

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Sveucilište u Zagrebu

Microsoft PowerPoint - 10 PEK EMT Logicka simulacija 1 od 2 (2012).ppt [Compatibility Mode]

Microsoft Word - WP_kolokvij_2_rjesenja.doc

070-ALIP2-udzbenik.indb

PROMENLJIVE, TIPOVI PROMENLJIVIH

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime

Zadatak T=5: Jedinica WBSD propušta vred Potiče iz polja Rwb.LMD Signal Rwb.WRLMD izaziva propuštanje ove vrednosti 2. Vrednost 0000

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

P11.2 Izbor instrukcija, IBURG

PowerPoint Presentation

Objektno orjentirano programiranje

obavezno je koristiti spell-checker

1 Hello Qt Pravljenje veza Korišćenje priručne dokumentacije Početak rada U ovom poglavlju naučićete kako da kombinujete osnovni C++ sa funkcionalnošć

Generated by Foxit PDF Creator Foxit Software For evaluation only. Operativni sistem U računarstvu, operativni sistem (OS

Web programiranje i primjene - Osnovni pojmovi WEB tehnologije korišteni u kolegiju

Slide 1

Inženjering informacionih sistema

INDIKATOR SVJETLA FUNKCIJE TIPKI 1. Prikazuje se temperatura i parametri upravljanja 2. Crveno svjetlo svijetli kad grijalica grije 3. Indikator zelen

SRV_1_Problematika_real_time_sistema

Писање и превођење модула

P2.1 Projektovanje paralelnih algoritama 1

Microsoft PowerPoint - PRI2014 KORIGOVANO [Compatibility Mode]

Programiranje 2 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević February 23, 2008

` 1.Врсте меморије На основу начина чувања података делимо их на меморије које привремено чувају податке (док је рачунар укључен) и меморије које трај

1. Vremensko ograničenje Memorijsko ograničenje ulaz izlaz 0,1 s 64 MB standardni ulaz standardni izlaz Banka želi da upozori kupce na sumnjive aktivn

PowerPoint Presentation

RAČUNARSKI SISTEM Ne postoji jedinstvena definicija pojma računarski sistem. Računarski sistem predstavlja skup mašina i pridruženih metoda (realizova

PowerPoint Presentation

Programiranje 2 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 1. predavanje p. 1/7

PowerPoint Presentation

Programiranje 2 7. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/7

Транскрипт:

Programiranje za UNIX Okruženje unix procesa

Sadržaj Memorijska slika UNIX procesa Argumenti naredbenog retka i varijable okruženja Životni ciklus procesa Izlazni status procesa 2

Memorijska slika UNIX procesa high address Argumenti naredbenog retka Environment varijable Stack low address Heap Neinicijalizirani podaci Inicijalizirani podaci Text izvršni kod programa 3

Memorijska slika unix procesa Tekst strojni kod programa, read-only, može ga dijeliti više procesa Inicijalizirani podaci inicijalizirane globalne varijable Neinicijalizirane podaci (BSS) Block Started by Symbol - neinicijalizirane globalne varijable Stack (stog) okviri funkcijskih poziva Heap (hrpa) dinamička alokacija memorije Argumenti naredbenog retka i okruženje procesa 4

Argumenti naredbenog retka Primaju se kao argumenti funkcije main int argc broj argumenata char **argv polje pokazivača argv[0] argv[argc-1]... NULL ime izvršne datoteke argument 1 argument argc-1 5

Environment varijable Prosljeđuju se procesu u obliku ime=vrijednost parova Funkcije: getenv(), putenv(), setenv(), unsetenv(), clearenv() char **environ Nije dio POSIX standarda! environ[0] Treći argument funkcije main... NULL HOME=/home/dkrst SHELL=/bin/tcsh 6

Funkcijski okviri stoga Okvir stoga kreira se kod svakog poziva funkcije: Okvir stoga Okvir stoga povratna adresa povratna vrijednost argumenti funkcije lokalne varijable Kako rekurzivni funkcijski pozivi mogu utjecati na stog? Svaki novi rekurzivni poziv stvara novi okvir na stogu! 7

Repno rekurzivne funkcije Tail recursive functions Loše napisana rekurzivna funkcija povećava stog linearno sa brojem rekurzivnih poziva! Što ako je rekurzivni poziv zadnja operacija u tijelu funkcije? 8

Repno rekurzivne funkcije Tail recursive functions Loše napisana rekurzivna funkcija povećava stog linearno sa brojem rekurzivnih poziva! Što ako je rekurzivni poziv zadnja operacija u tijelu funkcije? Nakon poziva ne izvršava se procesiranje Ne koriste se lokalne varijable Ne koriste se argumenti funkcije Kompajler može za funkcijski poziv koristiti postojeći okvir stoga! 9

Stvaranje procesa Parent Child 10

Stvaranje procesa Parent Child Child je identična kopija parrent procesa, izvršavaju se nezavisno Povratna vrijednost funkcije : Parrent: PID child procesa Child: 0-1 u slučaju greške (samo u parent procesu, child u ovom slučaju ne postoji!) 11

Zamjena izvršnog koda procesa pokretanje novog programa Parent Child Datotečni sustav 12

Zamjena izvršnog koda procesa pokretanje novog programa Parent Child exec Datotečni sustav Izvršna datoteka 13

Zamjena izvršnog koda procesa pokretanje novog programa Parent Child Mijenja memorijsku sliku procesa temeljem zadane izvršne datoteke PC se postavlja na prvu naredbu u učitanom programu exec Datotečni sustav Izvršna datoteka 14

Prekid izvršavanja procesa Parent Child 15

Prekid izvršavanja procesa Parent wait Child exit 16

Prekid izvršavanja procesa Parent wait Child Funkcija exit prekida izvršavanje procesa Argument funkcije je izlazni status procesa exit Izlazni status može pokupiti samo parent proces pozivom funkcije wait ili waitpid 17

Mogući uzroci prekida procesa Normalan završetak (normal termination) return iz funkcije main - ekvivalentno pozivu funkcije exit exit - uobičajeni prekid uz pozivanje exit handlera _exit, _Exit - trenutni prekid izvršavanja (uz zatvaranje otvorenih file deskriptora) Neočekivani izlaz (abnormal termination) abort svi otvoreni ulazno/izlazni tokovi se prazne i zatvaraju - dobrovoljno! prekid signalom 18

Sistemski poziv, poziva se jednom, a vraća dva puta: klonira postojeći proces U slučaju greške, ne kreira se CHILD proces, povratna vrijednost -1 Oba procesa nastavljaju izvršavanje sa prvom slijedećom instrukcijom #include <sys/types.h> #include <unistd.h> pid_t (void); CHILD process dobiva: kopiju adresnog prostora PARENT procesa (copy on write segment se kopira kada ga CHILD proces adresira) Procesi dijele tekst segment 19

exit Normalan prekid izvršavanja procesa Izvršavaju se funkcije (exit handleri) registrirane sa atexit i on_exit Svi ulazno/izlazni tokovi se prazne (flush) i zatvaraju Parametar funkcije exit je izlazni status procesa #include <stdlib.h> void exit (int status); 20

wait, waitpid Čekanje na promjenu stanja CHILD procesa Ukoliko za proces koji je završio izvođenje nije primijenjen wait poziv, nastaje tzv. zombi proces Kernel očekuje da netko pokupi izlazni status procesa Kada proces završi, njegov PARENT proces dobiva SIGCHLD signal #include <sys/types.h> #include <sys/wait.h> pid_t wait(int *status); pid_t waitpid(pid_t pid, int *status, int options); 21

exec Mijenja memorijsku sliku procesa Mijenjaju se tekst segment, inicijalizirani i neinicijalizirani (BSS) segment podataka, argumenti naredbenog retka, environment i stog Nasljeđuje se PID i svi otvoreni file deskriptori #include <unistd.h> int execl(const char *path, const char *arg,...); int execlp(const char *file, const char *arg,...); int execle(const char *path, const char *arg, \..., char *const envp[]); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); int execve(const char *filename, \ char *const argv[], char *const envp[]); 22

Životni ciklus izvođenja programa funkcije exit exit handler main exit return exit exit handler _exit C start-up routine exit standard I/O cleanup exec _exit Kernel 23

Izlazni status procesa Završetkom procesa oslobađaju se njegovi memorijski segmenti, ali se čuvaju podaci u tablici procesa podaci se čuvaju sve dok parent proces ne pokupi izlazni status ukoliko parent ne pozove wait nastaje zombi proces! Što ukoliko parent proces pozove exit prije child procesa? Ako parent proces završi prije svojih child procesa, svim child procesima se dodjeljuje novi roditelj: proces init sa proces ID 1 init prima signal SIGCHLD za svaki završeni child proces i poziva wait 24

Zadatak: Razbijanje veze parent-child Može li parent proces prepustiti svoj child proces bez da završi rad? Napišite program koji stvara proces čiji je parent proces INIT (process ID 1), a da pri tom sam proces koji je novi proces stvorio nastavi s radom 25

Razbijanje veze parent-child PARENT proces stvara novi proces pozivom funkcije PARENT wait CHILD 1 exit // itd... 26

Razbijanje veze parent-child CHILD 1 proces poziva stvara se proces čiji je PARENT prvi child CHILD 1 PARENT wait // itd... CHILD 1 exit CHILD 2 // neki kod exit 27

Razbijanje veze parent-child PARENT poziva wait, CHILD 1 poziva exit PARENT wait // itd... CHILD 1 exit CHILD 2 // neki kod exit 28

Razbijanje veze parent-child CHILD 2 nasljeđuje INIT PARENT wait // itd... CHILD 1 exit CHILD 2 // neki kod exit init 29

Razbijanje veze parent-child Kada novi proces (CHILD 2) pozove exit, signal dobiva INIT proces PARENT wait // itd... CHILD 2 // neki kod exit init signal handler: wait 30

Limiti Postavljeni za svaki proces RLIM_AS, RLIMIT_CPU, RLIMIT_DATA, RLIMIT_FSIZE, RLIMIT_NPROC, RLIMIT_STACK Vrijednost RLIM_INFINITY isključuje limit na danom resursu #include <sys/time.h> #include <sys/resource.h> int getrlimit(int resource, struct rlimit *rlim); int setrlimit(int resource, \ const struct rlimit *rlim); struct rlimit { rlim_t rlim_cur; /* Soft limit */ rlim_t rlim_max; /* Hard limit */ }; 31

Tablica procesa Process Table Struktura u jezgri, sadrži informacije o svim procesima Osnovni podaci: PID, parent PID, UID, GID,... Signali: informacije o statusu svih signala Memorija: pokazivači na sve memorijske segmente procesa Informacije za upravljanje procesom (Scheduling Parameters): prioritet, nice value, CPU time, sleep time,... 32

Informacije o procesu Prikupljanje osnovnih informacija o procesu: proces ID parent proces ID real user ID effective user ID real group ID effective group ID #include <unistd.h> #include <sys/types.h> pid_t getpid(void); pid_t getppid(void); uid_t getuid(void); uid_t geteuid(void); gid_t getgid(void); gid_t getegid(void); 33