p-procesi2_2005_06

7
Fakultet informacijskih tehnologija [email protected] UOS::Predavanja Copyright © by: FIT 1 Datum: 07.04.2005 Predavanje Uvod u Operativne Sisteme Sadržaj Procesi (Dio #2)

Upload: goran-petrovic

Post on 06-Nov-2015

213 views

Category:

Documents


1 download

TRANSCRIPT

  • Fakultet informacijskih tehnologija

    [email protected]

    UOS::Predavanja Copyright by: FIT

    1

    Datum: 07.04.2005

    Predavanje

    Uvod u Operativne Sisteme

    Sadraj

    Procesi (Dio #2)

  • Fakultet informacijskih tehnologija

    [email protected]

    UOS::Predavanja Copyright by: FIT

    2

    Kod multiprogramiranih sistema situacija je takva da se vie procesa konkurentno natjee za procesor. Do ove situacije dolazi kada god su dva ili vie procesa u ready stanju. Ukoliko sistem posjeduje samo jedan CPU, mora se donijeti odluka koji proces e sljedei biti izvravan. Dio operativnog sistema koji donosi ovu odluku je (CPU) scheduler (rasporedjiva). Algoritam kojeg sheduler koristi u donoenju ove odluke naziva se scheduling algoritam. CPU Scheduler

    Iz grupe procesa u memoriji koji su spremni (ready) za izvravanje, scheduler izabire jedan proces i alocira mu CPU

    CPU scheduling moe nastupiti kada proces:

    1. Mijenja stanje iz running u waiting. 2. Mijenja stanje iz running u ready. 3. Mijenja stanje iz waiting u ready. 4. Zavri.

    U sluajevima 1 and 4 scheduling nazivamo nonpreemptive. U sluajevima 2 i 4 scheduling nazivamo preemptive.

    Kriteriji za Izbor Prikladnog Scheduling Algoritma Razliiti CPU scheduling algoritmi favoriziraju razliite procesore i razliite vrste kompjutinga. Prilikom izbora scheduling algoritma obino se uporedjuju razni faktori kao i osobine razliitih scheduling algoritama. Neki od bitniji faktora za izbor scheduling algoritma su:

    CPU iskoritavanje nastojanje dranja CPU-a to vie zauzetim Propustnost (Throughput) broj procesa kompletiranih po jedinici vremena Turnaround time koliina ukupnog vremena za izravanje specifinog procesa Vrijeme ekanja (Waiting time) vrijeme koje je proces proveo ekajui u ready

    queue-u Vrijeme odgovora (Response time) vrijeme koje protekne od momenta kada

    je podneen zahtjev, do momenta kada je produciran prvi odgovor bitno za interaktivne sisteme

    Generalno, ovi kriretiji se nastoje maksimizirati ili minimizirati: CPU iskoritavanje nastoji se maksimizirati Throughput - maksimizirati Turnaround time - minimizirati Waiting time - minimizirati Response time - minimizirati Prilikom optimiziranja navedenih kriterija esta je situacija da optimiziranje jednog faktora utie negativno na druge faktore, te je potrebno nai odgovarajui balans.

    Osnovni Scheduling Algoritmi U najpopularnije scheduling algoritme spadaju sljedei:

    Frist-come first-served Shortest job first Priority scheduling Round Robin scheduling

  • Fakultet informacijskih tehnologija

    [email protected]

    UOS::Predavanja Copyright by: FIT

    3

    Multilevel Queue scheduling Multilevel feedback queue scheduling

    Primjer 1: First-Come, First-Served Scheduling algoritam Kao to i samo ime govori, ovaj algoritam funkcionie tako da se procesima dodjeljuje CPU po redoslijedu po kojem su zatraili CPU; Procesor se alocira prvom procesu koji zatrai CPU. Uzmimo za primjer sljedee procese, koji pristignu kod vremena 0 (nula). Proces Vrijeme izvravanja P1 24 P2 2 P3 3

    Pretpostavimo da procesi stiu po slijedeem redoslijedu: P1 , P2 , P3

    Vremena ekanja: P1 = 0; P2 = 24; P3 = 26 Prosjeno vrijeme ekanja: (0 + 24 + 26) / 3 = 16.7

    Primjer 2: SJF Scheduling algoritam Shorthest job first algoritam funkcionira tako da za svaki proces asocira njegov sljedei CPU burst (njegovo sljedee vrijeme izvravanja na procesu; process se obino switchuje vie puta sa/na procesor prije nego kompletira sa izvravanjem). Algoritam dodjeljuje procesor onom procesu iji je sljedei CPU burst najkrai (shorthest job first). Koristei ovaj algoritam prethodno pomenuta tri procesa bi dobila CPU po sljedeem redoslijedu: P2 , P3 , P1

    Vremena ekanja: P1 = 5; P2 = 0; P3 = 2 Prosjeno vrijeme ekanja: (5 + 0 + 2) / 3 = 2.3

    P1 P2 P3

    24 26 29 0

    P1 P3 P2

    5 2 29 0

  • Fakultet informacijskih tehnologija

    [email protected]

    UOS::Predavanja Copyright by: FIT

    4

    Kreiranje Procesa Tri principijelna dogaaja koja uzrokuju kreiranje procesa su:

    1. Inicijalizacija sistema (boot-anje) 2. Egzekucija sistemskog poziva za kreiranje procesa od strane izvravajueg procesa 3. Korisniki zahtjev za kreiranje procesa

    - Na interaktivnim sistemima korisnici mogu pokrenuti programe unoenjem komande ili double-click-anjem na nekih od icon-a. Bilo koje od ove dvije akcije e pokrenuti novi proces te unutar tog procesa izvriti program koji smo izabrali. - Interakcija sa procesima npr. mi, keyboard Tipino je da: Postojei proces kreira novi proces uz pomo sistemskih poziva (system calls). Sistemski pozivi za kreiranje procesa: Kod Unix-a: fork Kod Windows-a: CreateProcess Ukoliko proces A kreira proces B, proces A se naziva parent proces a proces B child process.

    Parent procesi kreiraju child procese, koji onda i sami mogu kreirati nove procese (i time postati ujedno i parent procesi); Na ovaj nain formira se stablo (tree) procesa.

    Kada je u pitanju mogunost dijeljenje resursa od strane parenta i childa postoje sljedee mogunosti:

    Parent i child(ren) dijele sve resurse. Children procesi dijele podskup roditeljskih resursa. Parent i child ne dijele resurse.

    Izvravanje mogunosti: Parent i child(ren) izvravaju istovremeno. Parent eka dok child(ren) ne kompletira(ju).

    UNIX OS identifikuje procese jedinstvenim brojem PID (proces ID) Svaki proces takodjer posjeduje i Parent Proces ID PPID (PID procesa koji ga je

    kreirao) Primjer Stabla Procesa

    Slika 1: Primjer stabla procesa: Proces A je kreirao dva child procesa: B i C Proces B je kreirao tri child procesa: D, E i F

  • Fakultet informacijskih tehnologija

    [email protected]

    UOS::Predavanja Copyright by: FIT

    5

    Address space (adresni prostor) Kod UNIX sistema prilikom kreiranja novog procesa, najprije se kreira child

    proces identian svom parent procesu (procesu koji ga je kreirao). (u veini sluajeva) Neposredno nakon toga se u child proces potom uitava

    novi program. Primjer UNIX operativnog sistema

    fork sistemski poziv kreira novi proces exec sistemski poziv se koristi nakon fork-a; exec novo-kreiranom procesu

    zamjenjuje memory space sa novim programom. Windows NT pored toga to podrava dupliciranje parent adresnog prostora,

    takodjer omoguuje i direktno specifikovanje programa bez prethodnog dupliciranja. Primjer kreiranja procesa kod UNIX-a (pojednostavljen code) ... ... pid = fork( ); /* ukoliko fork uspije, pid roditelja > 0, */ /* a pid kod child-a = 0 */ if (pid > 0) { /* ovdje ide code parent procesa */ } else { /* ovdje ide code child procesa */ exec(child_program, ....., ....) }

    Slika 2: Kreiranje procesa kod UNIX sistema. Prikaz pojednostavljenog code-a pid = jedinstveni identifikacioni broj procesa; OS dodjeljuje procesima njihov pid prilikom njihovog kreiranja (fork sistemskim pozivom) Nakon kreiranja procesa, pid varijabla kod roditelja se setuje na broj vei od nule (koji oznaava pid child-a), dok se pid varijabla kod child-a setuje na 0. Obzirom da fork vraa nazad razliite vrijednost, dva procesa koji su u momentu neposredno nakon fork sistemskog poziva identini e biti u stanju da nastave razliitim putevima (provjerom pid vrijednosti te djelujui odgovarajui tome).

  • Fakultet informacijskih tehnologija

    [email protected]

    UOS::Predavanja Copyright by: FIT

    6

    Slika 3: Grafiki prikaz kreiranja procesa kod UNIX sistema: prije i poslije fork sistemskog

    poziva Terminiranje procesa Proces se moe zavriti u slijedeim sluajevima:

    Proces izvri poslijednju programsku instrukciju te poziva sistemski poziv exit(). - Outputa podatke iz child-a na parent (via wait() sistem. poziv) - OS dealocira resurse procesa.

    Parent terminira izvravanje child procesa (abort() ). Obino se to deava kod sljedeih situacija:

    - Child je prekoraio alocirane resurse. - Zadatak dodijeljen child-u nije vie potreban za obaviti. - Parent zavrava (operativni sistem ne dozvoljava child-u da nastavi ukoliko njegov parent zavri (primjeri: VMS, UNIX-init)

  • Fakultet informacijskih tehnologija

    [email protected]

    UOS::Predavanja Copyright by: FIT

    7

    Obrada i prijevod dijelova sljedee litarature: Tanenbaum, Modern Operating Systems, 2nd ed. Silberschatz, Operating System Concepts with Java, 6th ed. Stones, Beginning Linux Programming, 3rd ed.