Скачать презентацию OPERACIJSKI SUSTAVI Predavanja 15 x 2 sata Скачать презентацию OPERACIJSKI SUSTAVI Predavanja 15 x 2 sata

f4b0d1faf674a78f6ad25f545efa167e.ppt

  • Количество слайдов: 161

OPERACIJSKI SUSTAVI Predavanja: 15 x 2 sata = 30*0. 75 = 22. 5 sati OPERACIJSKI SUSTAVI Predavanja: 15 x 2 sata = 30*0. 75 = 22. 5 sati ( 0. 75 ECTS) Vježbe: 15 x 2 sata = 30*0. 75 = 22. 5 sati ( 0. 75 ECTS) Samostalno učenje: 45 sati ( 1 ECTS) Literatura: 30 sati ( 1 ECTS ) Vježba na računalu: 30 sati ( 1 ECTS ) Ukupno: 150 sati = 5 ECTS 1

Pravila Uvjeti za potpis: - 70 % prisustvo na predavanjima - prisustvo i ispunjavanje Pravila Uvjeti za potpis: - 70 % prisustvo na predavanjima - prisustvo i ispunjavanje obaveza na vježbama - dopušten je izostanak s četiri (4) predavanja - nema opravdanih izostanaka - moguća molba Zavodu - evidencija s provjerom prisustva na svakim predavanjima Polaganje ispita: - dva kolokvija iz vježbi - dva kolokvija iz teorije - obavezan usmeni ispit - izvlači se 5 pitanja 2

Sadržaj predavanja 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Uvod: što Sadržaj predavanja 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Uvod: što je operacijski sustav Model jednostavnog računala Obavljanje ulazno-izlaznih operacija Međusobno isključivanje Jezgra OS-a Koncepcija monitora Vremenska svojstva računalnog sustava Gospodarenje spremničkim prostorom Datotečni podsustav Često korišteni operacijski sustavi: UNIX, LINUX, WINDOWS NT 3

Literatura 1. Obavezna : Budin, L. , Golub, M. , Jakobović, D. , Jelenković, Literatura 1. Obavezna : Budin, L. , Golub, M. , Jakobović, D. , Jelenković, L. : Operacijski sustavi, Element, Zagreb, 2010. (prvih 10 poglavlja) 2. Dopunska: Silberschatz A. , Galvin P. , B. : Operating System Concepts, Addison-Wesley Publishing Company, MA - USA, 1998. 4

1. UVOD 1. 2. 3. 4. 5. Što je operacijski sustav Osnovni zadaci operacijskog 1. UVOD 1. 2. 3. 4. 5. Što je operacijski sustav Osnovni zadaci operacijskog sustava Dijelovi operacijskog sustava Sučelja operacijskog sustava Sučelje primjenskih programa (API) 5

Što je operacijski sustav • Operacijski sustav je računalni program koji posreduje između korisnika, Što je operacijski sustav • Operacijski sustav je računalni program koji posreduje između korisnika, tj. primjenskog programa i računalnog sklopovlja (hardvera). • Namjena: osigurati radno okruženje u kojem korisnik može izvoditi svoje primjenske programe (aplikacije) na pogodan i učinkovit način. Zadaci operacijskog sustava 1. Olakšavanje uporabe računalnog hardvera programeru i korisniku primjenskih programa 2. Organizacija djelotvornog iskorištavanja svih dijelova računala 3. Osiguravanje komunikacije između računala spojenih u mrežu 6

Korisnici, sklopovlje, korisnički program [engl. users, hardware, application software] • Korisnici: ljudi, strojevi i Korisnici, sklopovlje, korisnički program [engl. users, hardware, application software] • Korisnici: ljudi, strojevi i druga računala koji nastoje uporabom računalnog hardvera riješiti svoje različite probleme • Računalno sklopovlje ( hardver): univerzalna elektronička naprava koja nije pripremljena rješavati konkretan korisnikov problem. Zbog svoje univerzalnosti omogućava visoko-serijsku proizvodnju => niske cijene • Korisnički program: instruira računalno sklopovlje kako će rješavati konkretan korisnički problem. Pretvara univerzalno računalo u virtualni stroj potreban korisniku. • Operacijski sustav: upravlja i usklađuje uporabu računalnog hardvera od strane različitih korisničkih programa i različitih korisnika. OS je poput vlade jedne države – ne radi ništa “korisno”, ali ostvaruje okruženje i preduvjete za normalno i nesmetano odvijanje drugih “proizvodnih procesa” (od kojih su neki korisni). 7

Hijerarhijska izgradnja operacijskog sustava • Sustav se izgrađuje po razinama • Svaka se razina Hijerarhijska izgradnja operacijskog sustava • Sustav se izgrađuje po razinama • Svaka se razina sastoji od objekata i operacija nad tim objektima • Objekti i operacije n-te razine izgrađuju se samo od objekata i operacija prethodne, n-1, razine • Detalji ostvarenja objekata i operacija pojedine razine su skriveni 8

Hijerarhijska struktura računalnog sustava Korisnik 1 Korisnik 2 Korisnik 3 Korisnik 2 kompajler asembler Hijerarhijska struktura računalnog sustava Korisnik 1 Korisnik 2 Korisnik 3 Korisnik 2 kompajler asembler tekst editor Baza podataka Sistemski i aplikacijski programi Operacijski sustav Računalno sklopovlje 9

Kako OS ostvaruje svoje zadatke OS upravlja: • Strojnim resursima: I/O, memorijom, CPU, strojnim Kako OS ostvaruje svoje zadatke OS upravlja: • Strojnim resursima: I/O, memorijom, CPU, strojnim vremenom • Procesima: “istovremeno” izvođenje više procesa • Podacima: smještanje u radnoj memoriji i jedinicama za masovnu pohranu podataka 10

Primjer 1: Tipkovnica Buffer Korisnički program Primjer 2: Tiskalnik Korisnički Buffer program Tiskalnik 11 Primjer 1: Tipkovnica Buffer Korisnički program Primjer 2: Tiskalnik Korisnički Buffer program Tiskalnik 11

Primjer 3: Memorija Korisnički Program I Korisnički I II Program II Memorija 12 Primjer 3: Memorija Korisnički Program I Korisnički I II Program II Memorija 12

Upravljanje procesima • Program: skup instrukcija koje definiraju ponašanje računalnog sklopovlja f Ulazi Izlazi Upravljanje procesima • Program: skup instrukcija koje definiraju ponašanje računalnog sklopovlja f Ulazi Izlazi X Y Y = f( X ) Program preslikava programske ulaze u programske izlaze Proces: program u izvođenju. Posjeduje vremensku komponentu. Promatra se kao niz instrukcija, te stanjem ulaza i izlaza prije, te poslije izvođenja. 13

Sučelje • Općenito: čvrsto dogovoreni način uspostavljanja veze između, inače, razdvojenih cjelina. • Utvrđeni Sučelje • Općenito: čvrsto dogovoreni način uspostavljanja veze između, inače, razdvojenih cjelina. • Utvrđeni način komunikacije između korisnika i operacijskog sustava. • Obuhvaća: – dogovoreni način postavljanja zahtjeva operacijskom sustavu – izgled povratnih poruka. • Operacije OS-a može pokrenuti – čovjek preko korisničkog sučelja (ljuske, engl. shell) – program preko sučelja primjenskog programa (API) 14

2 Model jednostavnog računala 1. 2. 3. 4. 5. 6. 7. 8. 9. Von 2 Model jednostavnog računala 1. 2. 3. 4. 5. 6. 7. 8. 9. Von Neumannov model računala Svojstva i ponašanje procesora Procesorski registri Sabirnički ciklus Pseudokod aktivnosti procesora Kontekst dretve Poziv potprograma Pojmovi programa, procesa i dretve Višeprogramski rad na jednoprocesorskom računala 15

2 Model jednostavnog računala John von Neumann, 1945: • ulazni dio: unos podataka i 2 Model jednostavnog računala John von Neumann, 1945: • ulazni dio: unos podataka i instrukcija programa iz okoline u računalo • izlazni dio: prikaz rezultata programa • radni ili glavni spremnik: pohranjuje sve podatke i instrukcije, te rezultate djelovanja instrukcija • aritmetičko-logička jedinka (ALU): izvršava instrukcijama zadane aritmetičke i logičke operacije • upravljačka jedinka: dohvaća instrukcije iz spremnika, dekodira ih, upravlja s ALU, ulazima i izlazima. 16

Sabirnička građa računala RAM ROM SABIRNICA ULAZNI PRISTUP PROCESOR SABIRNIČKI SKLOP IZLAZNI PRISTUP 17 Sabirnička građa računala RAM ROM SABIRNICA ULAZNI PRISTUP PROCESOR SABIRNIČKI SKLOP IZLAZNI PRISTUP 17

Podjela vremena na sabirničke cikluse • Takt računala – usklađuje hardverske operacije između pojedinih Podjela vremena na sabirničke cikluse • Takt računala – usklađuje hardverske operacije između pojedinih dijelova računala • Frekvenijca (red veličine) = 1 GHz (109 promjena u sekundi) • Period T = 1 ns (miljardeti dio sekunde) • Jedna strojna instrukcija - izvršava se tijekom nekoliko perioda • Cjevovod (pipeline) – preklapanje instrukcijskih ciklusa 18

Radni spremnik • Neposredan pristup do svakog bajta (okteta) u spremniku • Adrese • Radni spremnik • Neposredan pristup do svakog bajta (okteta) u spremniku • Adrese • Podaci • Upravljači signal R / W • Takt • Napajanje Pitanje: koliko lokacija (bajtova) adresira 32 bitna adresna sabirnica ? 19

Procesor i spremnik povezani na sabirnicu 20 Procesor i spremnik povezani na sabirnicu 20

Procesor Propusna moć procesora: • Broj registara • Broj bitova registara • Instrukcijski set Procesor Propusna moć procesora: • Broj registara • Broj bitova registara • Instrukcijski set • Frekvencija takta • Mjera moći procesora: MIPS 21

Vrste instrukcija procesora • premještanje sadržaja između spremnika i registara procesora • aritmetičke i Vrste instrukcija procesora • premještanje sadržaja između spremnika i registara procesora • aritmetičke i logičke operacije • programski skokovi ili grananja (uvjetni i bezuvjetni) • posebna upravljačka djelovanja 22

Djelovanje procesora AL operacija dok je procesor uključen činiti 1. dohvatiti iz spremnika instrukciju Djelovanje procesora AL operacija dok je procesor uključen činiti 1. dohvatiti iz spremnika instrukciju na koju pokazuje PC; 2. dekodirati instrukciju, odrediti operaciju koju treba izvesti; 3. povećati sadržaj PC tako da pokazuje na sljedeću instrukciju; 4. odrediti odakle dolaze operandi i gdje pohraniti rezultat; 5. operande dovesti na ALU, izvesti zadanu operaciju; 6. pohraniti rezultat u odredište; 23

Izgled instrukcije za obavljanje operacija 24 Izgled instrukcije za obavljanje operacija 24

Djelovanje procesora Bezuvjetni skok dok je procesor uključen činiti 1. dohvatiti iz spremnika instrukciju Djelovanje procesora Bezuvjetni skok dok je procesor uključen činiti 1. dohvatiti iz spremnika instrukciju na koju pokazuje PC; 2. dekodirati instrukciju, odrediti operaciju koju treba izvesti; 3. povećati sadržaj PC tako da pokazuje na sljedeću instrukciju; 4. ako je instrukcija bezuvjetnog skoka onda 5. 6. 7. odrediti adresu i smjestiti je u PC inače --- 25

Djelovanje procesora Skok u potprogram dok je procesor uključen činiti 1. dohvatiti iz spremnika Djelovanje procesora Skok u potprogram dok je procesor uključen činiti 1. dohvatiti iz spremnika instrukciju na koju pokazuje PC; 2. dekodirati instrukciju, odrediti operaciju koju treba izvesti; 3. povećati sadržaj PC tako da pokazuje na sljedeću instrukciju; 4. ako je instrukcija skoka u potprogram onda 5. spremiti PC na stog; 6. adresu potprograma smjestiti u PC; 7. inače ako je instrukcija povratka iz potprograma onda 8. 9. 10. vratiti PC sa stoga; inače --- 26

Razmjena podataka između potprograma i programa • preko stoga • prenošenjem vrijednosti parametra • Razmjena podataka između potprograma i programa • preko stoga • prenošenjem vrijednosti parametra • prenošenjem adrese parametra (reference) 27

Program, proces i dretva • Program – niz jednoznačnih instrukcija po kojima izvršitelj može Program, proces i dretva • Program – niz jednoznačnih instrukcija po kojima izvršitelj može postupati; algoritam zapisan izabranim formalnim sustavom – programskim jezikom. • Proces – program u izvršavanju – – trenutak početka trenutak završetka trajanje zaustavljanje • Dretva (nit) – niz instrukcija koje izvodi jedan procesor. On izvodi jednu instrukciju za drugom kao da kroz niz instrukcija provlači dretvu (nit, cipelarski konac). 28

Kontekst dretve – memorijska struktura Kazaljka na spremnik Stanje dretve PID PC CPU Registri Kontekst dretve – memorijska struktura Kazaljka na spremnik Stanje dretve PID PC CPU Registri Spremnička ograničenja Lista otvorenih datoteka --29

Višedretveni rad na višeprocesorskom računalu 30 Višedretveni rad na višeprocesorskom računalu 30

Višedretveni rad na jednoprocesorskom računalu 31 Višedretveni rad na jednoprocesorskom računalu 31

Multipleksiranje procesora Dretva T 0 Operacijski sustav Dretva T 1 Sačuvaj stanje u KDT Multipleksiranje procesora Dretva T 0 Operacijski sustav Dretva T 1 Sačuvaj stanje u KDT 0 Učitaj stanje iz KDT 1 Sačuvaj stanje u KDT 1 Učitaj stanje iz KDT 0 32

3 Obavljanje ulazno-izlaznih operacija, prekidni rad UI-naprave ili periferijske naprave Ulazne naprave: • tipkovnica 3 Obavljanje ulazno-izlaznih operacija, prekidni rad UI-naprave ili periferijske naprave Ulazne naprave: • tipkovnica • miš Izlazne naprave: • monitor • pisač (printer) Ulazno – izlazne naprave: • magnetski disk • optički disk • memorijski stik 33

Povezivanje UI-naprave s računalom • Pristupni sklop: procesor “vidi” UI-napravu kao jednu (ili više) Povezivanje UI-naprave s računalom • Pristupni sklop: procesor “vidi” UI-napravu kao jednu (ili više) memorijskih lokacija, slično spremniku 34

UI-naprave prema načinu rada Prema načinu prijenosa podataka između UI-naprave i spremnika računala: • UI-naprave prema načinu rada Prema načinu prijenosa podataka između UI-naprave i spremnika računala: • bajt orijentirane – prenose se pojedinačni znakovi – tipkovnica – miš • blok orijentirane – prenosi se niz uzastopnih bajtova – magnetski disk – printer 35

Vrste prijenosa podataka Scenariji istovremenog učenja i kuhanja mlijeka • radno čekanje: ostavimo učenje Vrste prijenosa podataka Scenariji istovremenog učenja i kuhanja mlijeka • radno čekanje: ostavimo učenje i čekamo dok mlijeko ne prokuha • redovita provjera: svakih 1 minutu privremeno prekidamo učenje i provjeravamo je li mlijeko prokuhalo • prekidni prijenos: kada mlijeko prokuha čuje se zvučni signal; prekidamo učenje dok ne prenesemo mlijeko 36

Prijenos znakova radnim čekanjem pročitati registar stanja RS; dok je ZASTAVICA = 0 činiti Prijenos znakova radnim čekanjem pročitati registar stanja RS; dok je ZASTAVICA = 0 činiti pročitati registar stanja RS; pročitati registar RS; // time se automatski briše ZASTAVICA 37

Protokol dvožičnog rukovanja Naprava može UPISATI u PR samo kada je ZASTAVICA= 0 UPISIVANJE Protokol dvožičnog rukovanja Naprava može UPISATI u PR samo kada je ZASTAVICA= 0 UPISIVANJE završeno ZASTAVICA u 1 Procesor čita PR ZASTAVICA u 0 38

Primjer: prijenos znakova radnim čekanjem • Znakovi pristižu brzinom od 1000 znakova u minuti Primjer: prijenos znakova radnim čekanjem • Znakovi pristižu brzinom od 1000 znakova u minuti = svakih 1 ms jedan znak • Procesor izvodi instrukcije brzinom 10 MIPS (10 milijuna instrukcija u sekundi) = svakih 100 ns jedna instrukcija Algoritam: brojac = 0; dok je brojac < 1000 čitati registar stanja RS; dok je ZASTAVICA = 0 čitati registar RS; čitati znak iz podatkovnog registra PR; // Koristan posao brojac++; 39

Učinkovitost radnog čekanja • Koristan posao u sekundi: 1000 x 1 instrukcija x 100 Učinkovitost radnog čekanja • Koristan posao u sekundi: 1000 x 1 instrukcija x 100 ns – 105 ns • Radno čekanje u sekundi - ostatak vremena: • Stupanj korisnog djelovanja: – vrijeme korisnog posla / vrijeme ukupnog posla – 105 ns / 109 ns = 10 -4 = 0, 1% 40

Prekidni način rada procesora Signal prekida (IRQ) upozorava procesor da je novi znak spreman Prekidni način rada procesora Signal prekida (IRQ) upozorava procesor da je novi znak spreman za prijenos iz PR • procesor dovršava tekuću strojnu instrukciju • ako zahtjev za prekid nije maskiran onda: – procesor iz korisničkog načina rada prelazi u jezgreni – privremeno onemogući daljnje prekidanje – djeluje na adresni dio sabirnice tako da omogući adresiranje sustavskog dijela memorije – aktivira drugi, sustavski registar kazaljke stoga – sprema tekuću adresu iz PC na sustavski stog – u PC postavi adresu početka programa za posluživanje prekida 41

Povratak iz prekida Povratak pokreće instrukcija za povratak, primjerice RTI Procesor: - obnovi procesorske Povratak iz prekida Povratak pokreće instrukcija za povratak, primjerice RTI Procesor: - obnovi procesorske registre sa sistemskog stoga - izvršava instrukciju na koju pokazuje obnovljeni PC; time se prekinuti program nastavlja instrukcijom čije je izvršavanje odgođeno zbog prekida Glavni posao IRQ I/O prijenos Glavni posao 42

Prijenos blokova znakova • Postojanje posebnog specijaliziranog procesora za prijenos podataka • Glavni i Prijenos blokova znakova • Postojanje posebnog specijaliziranog procesora za prijenos podataka • Glavni i specijalizirani procesor moraju izmjenjivati podatka preko buffera • Glavni procesor upiše podatke u buffer i inicira ( probudi ) DMA procesor • Definira: adresu i veličinu buffera u memoriji, smjer prijenosa podataka ( na disk ili sa diska ), koordinate bloka podataka na vanjskoj jedinici • Kako glavni i DMA procesor ne mogu istovremeno pristupati istoj memoriji, jer bi došlo do interferencije signala, pristup je usklađen podjelom / krađom ciklusa 43

DMA prijenos (Direct Memory Access) 44 DMA prijenos (Direct Memory Access) 44

DMA prijenos (Direct Memory Access) Algoritam DMA – ostvaren sklopovski: dok je BR > DMA prijenos (Direct Memory Access) Algoritam DMA – ostvaren sklopovski: dok je BR > 0 zatražiti sabirnicu; čekati na dodjelu sabirnice; postaviti adresu AR; upisati na adresiranu lokaciju sadržaj PR; 45

Čvrsto povezani višeprocesorski sustavi • • • više procesora (ili procesorskih jezgri) lokalna memorija Čvrsto povezani višeprocesorski sustavi • • • više procesora (ili procesorskih jezgri) lokalna memorija zajednička sabirnica dodjeljivač sabirnice 46

Čvrsto povezani višeprocesorski sustavi 47 Čvrsto povezani višeprocesorski sustavi 47

4 Međusobno isključivanje u višedretvenim sustavima 48 4 Međusobno isključivanje u višedretvenim sustavima 48

Programi, procesi, dretve • Računalo izvršava zadatak (engl. task) – izvršava programe pripremljene u Programi, procesi, dretve • Računalo izvršava zadatak (engl. task) – izvršava programe pripremljene u višem programskom jeziku i prevedene u strojni kod • Vremenska obilježja programa pri izvršavanju: – trenutak početka: T – trenutak završetka: T – trajanje izvršavanja: T – T • Proces – program u izvršavanju • Dretva – slijed instrukcija koje izvršava procesor (jezgra) • Višezadaćni ili višeprogramski rad sustava – bolje iskorištavanje strojnih resursa – lakša priprema poslova 49

Zadaci i podzadaci Primjer: • ulazna dretva – obrađuje ulazne podatke • radna dretva Zadaci i podzadaci Primjer: • ulazna dretva – obrađuje ulazne podatke • radna dretva – obavlja proračun • izlazna dretva – ispisuje rezultate 50

Model višedretvenosti • Zadatak Proces • Podzadatak Dretva • Proces - ograničen isključivo na Model višedretvenosti • Zadatak Proces • Podzadatak Dretva • Proces - ograničen isključivo na vlastite resurse • P 1 ne može direktno pristupati memorijskim lokacijama procesa P 2 • P 1 eventualno može pristupiti memoriji od P 2 posredovanjem OS-a • Proces – izvršava barem jedna ili više dretvi • Dretve istog procesa – mogu pristupiti resursima drugih dretvi istog procesa 51

Memorijski model dretve • Instrukcije dretve • Stog dretve • Lokalni podaci dretve 52 Memorijski model dretve • Instrukcije dretve • Stog dretve • Lokalni podaci dretve 52

Izvršavanje dretve • Lokalni podaci dretve Di • Xi : domena • Yi : Izvršavanje dretve • Lokalni podaci dretve Di • Xi : domena • Yi : kodomena • Dretva ostvaruje preslikavanje: • fi: Xi → Yi, • Yi = fi(Xi) 53

Međusobna nezavisnost zadataka • Zadaci su nezavisni i mogu se izvršavati proizvoljnim redom ako Međusobna nezavisnost zadataka • Zadaci su nezavisni i mogu se izvršavati proizvoljnim redom ako i samo ako • ne pišu zajedničke memorijske lokacije • mogu samo čitati zajedničke memorijske lokacije • Xi: domena dretve Di Yi: kodomena dretve Di • Xj domena dretve Dj Yj: kodomena dretve Dj 54

Primjer sustava dretvi Mogući niz izvršavanja: D 1 D 1 D 2 D 3 Primjer sustava dretvi Mogući niz izvršavanja: D 1 D 1 D 2 D 3 D 4 D 6 D 6 D 2 D 5 D 5 D 7 D 7 55

Međusobna sinkronizacija • Dretve na paralelnim putovima grafa mogu se izvršavati paralelno • Dretve Međusobna sinkronizacija • Dretve na paralelnim putovima grafa mogu se izvršavati paralelno • Dretve na istom putu moraju se izvršavati strogo utvrđenim redom prema prethođenju čvorova u grafu: • kada završi D 1 mogu započeti D 2, D 3 i D 4. 56

Cikličke dretve • Sinkronizacija: • Ulazna dretva uzastopce ponavlja čitanje podataka • radna dretva Cikličke dretve • Sinkronizacija: • Ulazna dretva uzastopce ponavlja čitanje podataka • radna dretva prihvaća podatke od ulazne dretve • izlazna dretva prihvaća podatke od radne dretve • Ostvarenje redovima FIFO 57

Kritični odsječak Programski odsječak koji čita/piše zajedničku varijablu int n = 3; Dretva D Kritični odsječak Programski odsječak koji čita/piše zajedničku varijablu int n = 3; Dretva D 2 Dretva D 1 dok je n > 0 činiti n=1 dok je n > 0 činiti n--; n=0 n = -1 Pitanje: može li se dogoditi da n bude manji od 0? Da, kada D 1 bude prekinuta nakon provjere n > 0, a prije izvršenja n--. 58

Međusobno isključivanje dretvi dok je istina činiti kritični odsječak; nekritični odsječak; Zahtijeva se: • Međusobno isključivanje dretvi dok je istina činiti kritični odsječak; nekritični odsječak; Zahtijeva se: • proizvoljne brzine izvršavanja dretvi • kada jedna dretva zastane u svom nekritičnom dijelu – ne smije spriječiti ulazak druge dretve u svoj kritični dio • izbor jedne od dretvi koja smije ući u svoj kritični odsječak mora se obaviti u konačnom vremenu 59

Prvi pokušaj dok je istina činiti čitati varijablu ZASTAVICA; dok je ZASTAVICA != 0 Prvi pokušaj dok je istina činiti čitati varijablu ZASTAVICA; dok je ZASTAVICA != 0 činiti čitati varijablu ZASTAVICA; ZASTAVICA = 1; kritični odsječak; ZASTAVICA = 0; nekritični odsječak; Problem: kada dvije dretve žele istovremeno u kritični odsječak uz jednako brzo izvršavanje instrukcija. 60

Drugi pokušaj dok je istina činiti čitati varijablu PRAVO; dok je PRAVO != I Drugi pokušaj dok je istina činiti čitati varijablu PRAVO; dok je PRAVO != I činiti čitati varijablu PRAVO; kritični odsječak; PRAVO = J; nekritični odsječak; Problem: dretve moraju naizmjenično ući u KO. Dretva koja zastane u NKO ne mijenja PRAVO i blokira drugu dretvu. 61

Treći pokušaj dok je istina činiti // dretva I čitati varijablu ZASTAVICA[J]; dok je Treći pokušaj dok je istina činiti // dretva I čitati varijablu ZASTAVICA[J]; dok je ZASTAVICA[J] != 0 činiti čitati varijablu PRAVO; ZASTAVICA[I] = 1; kritični odsječak; ZASTAVICA[I] = 0; nekritični odsječak; Problem: kada obje dretve istovremeno žele ući u KO (kao u prvom pokušaju) 62

Šesti pokušaj: Dekkerov postupak dok je istina činiti // dretva I ZASTAVICA[I] = 1; Šesti pokušaj: Dekkerov postupak dok je istina činiti // dretva I ZASTAVICA[I] = 1; čitati varijablu ZASTAVICA[J]; dok je ZASTAVICA[J] != 0 činiti čitati varijabli PRAVO; dok je PRAVO != I činiti ZASTAVICA[I] = 0; dok je PRAVO != I činiti čitati PRAVO; ZASTAVICA[I] = 1; čitati varijablu ZASTAVICA[J]; kritični odsječak; PRAVO = J; ZASTAVICA[I] = 0; nekritični odsječak; 63

Petersonov postupak dok je istina činiti // dretva I ZASTAVICA[I] = 1; NE_PRAVO = Petersonov postupak dok je istina činiti // dretva I ZASTAVICA[I] = 1; NE_PRAVO = I; čitati varijablu ZASTAVICA[J]; čitati varijablu NE_PRAVO; dok je NE_PRAVO = I && ZASTAVICA[J] = 1 činiti čitati varijablu ZASTAVICA[J]; čitati varijabli NE_PRAVO; kritični odsječak; ZASTAVICA[I] = 0; nekritični odsječak; 64

Sklopovska potpora dok je istina činiti // dretva I onemogućiti prekidanje; kritični odsječak; omogući Sklopovska potpora dok je istina činiti // dretva I onemogućiti prekidanje; kritični odsječak; omogući prekidanje; nekritični odsječak; Problem: ograničeno samo na jednoprocesorske (i jednojezgrene) sustave! 65

Sklopovska potpora Nedjeljivost ciklusa čitaj - piši • ispitati i postaviti (engl. test and Sklopovska potpora Nedjeljivost ciklusa čitaj - piši • ispitati i postaviti (engl. test and set) • zamjena sadržaja u registru i memorijskoj lokaciji (engl. swap) • dobaviti i povećati za 1 (engl. fetch-and-add) 66

Sklopovska potpora dok je istina činiti // dretva I ispitati i postaviti varijablu ZASTAVICA; Sklopovska potpora dok je istina činiti // dretva I ispitati i postaviti varijablu ZASTAVICA; dok je ZASTAVICA != 0 činiti ispitati i postaviti varijablu ZASTAVICA; kritični odsječak; ZASTAVICA = 0; nekritični odsječak; 67

5 Jezgra operacijskog sustava 68 5 Jezgra operacijskog sustava 68

Radno okruženje za izvršavanje dretvi Model jezgre zasnovan na pretpostavkama: • korisnički i privilegirani Radno okruženje za izvršavanje dretvi Model jezgre zasnovan na pretpostavkama: • korisnički i privilegirani (superkorisnički) način rada sustava • prekidom (IRQ) sustav prelazi u privilegirani mod • povratkom iz prekida sustav se vraća u korisnički mod • u adresnom prostoru procesa – nalaze se adresni prostori svih dretvi tog procesa • čitav adresni prostor procesa dohvatljiv je svim dretvama tog procesa • dretve se izvršavaju u jednoprocesorskom (i jednojezgrenom) sustavu • dretve pozivaju jezgrine funkcije programskim prekidima (SWI prekid izazvan strojnom instrukcijom) • Ulazno-izlazne naprave prekidima (IRQ) pozivaju jezgrine funkcije 69

Vrste prekida u sustavu 1. sklopovski prekidi od UI naprava 2. periodni sklopovski prekidi Vrste prekida u sustavu 1. sklopovski prekidi od UI naprava 2. periodni sklopovski prekidi od sistemskog sata 3. programski prekidi (od dretvi) 70

Prikaz jezgre 71 Prikaz jezgre 71

Stanje dretve – struktura podataka • • • kazaljka 1 – lista postojećih dretvi Stanje dretve – struktura podataka • • • kazaljka 1 – lista postojećih dretvi kazaljka 2 – lista (red) dretvi u istom stanju Identifikator procesa Identifikator dretve stanje dretve prioritet dretve početna adresnog prostora veličina prostora početna adresa zadano kašnjenje CPU registri Ostali podaci konteksta dretve 72

Red pripravnih dretvi 73 Red pripravnih dretvi 73

Blokirana stanja dretvi • • čekanje na binarnom semaforu – binarni semafor: Bsem[i]. v Blokirana stanja dretvi • • čekanje na binarnom semaforu – binarni semafor: Bsem[i]. v = 0 – čekati ili 1 – prolazi čekanje na općem semaforu – opći semafor: Osem[j]. v ≥ 0 – prolaz, ≤ 0 - čekati čekanje na istek zadanog intervala kašnjenja – pri svakom prekidu sata zadani se interval smanjuje za 1 – čekanje završava kada brojač intervala = 0 čekanje na završetak ulazno-izlazne operacije – upravljač diskom generira prekid kada dobavi zahtijevani blok podataka sa diska 74

Čekanje isteka vremenskog intervala • • ΔT = M x Tq, (period sistemskog sata) Čekanje isteka vremenskog intervala • • ΔT = M x Tq, (period sistemskog sata) M 1 < M 2 < M 3 <. . . 75

Tranzicija stanja dretve NOVA PASIVNA Isteklo vrijeme izvođenja PRIPRAVNA Dretva dobija procesor AKTIVNA Proces Tranzicija stanja dretve NOVA PASIVNA Isteklo vrijeme izvođenja PRIPRAVNA Dretva dobija procesor AKTIVNA Proces završio normalno Sredstvo zauzeto Sredstvo oslobođeno ČEKANJE 76

Tranzicija stanja dretvi 77 Tranzicija stanja dretvi 77

Jezgrine funkcije ulazak i izlazak iz jezgre IRQ: • onemogućava se prekidanje; • PC Jezgrine funkcije ulazak i izlazak iz jezgre IRQ: • onemogućava se prekidanje; • PC -> na sistemski stog; • CPU registri -> na stog; • poziv jezgrine funkcije; premjestiti prvi opisnik iz reda Pripravna _D u red Aktivna_D obnoviti kontekst iz opisnika Aktivna_D omogućiti prekidanje vratiti se iz prekidnog načina 78

Funkcije za binarni semafor Ispitati_Bsem(I); kritični odsječak; Postaviti_Bsem(I); nekritični odsječak; 79 Funkcije za binarni semafor Ispitati_Bsem(I); kritični odsječak; Postaviti_Bsem(I); nekritični odsječak; 79

Funkcija Ispitati_Bsem (Wait) funkcija Ispitati_Bsem(i) pohraniti konktekst u opisnik Aktivna_D; ako je Bsem[i]. v Funkcija Ispitati_Bsem (Wait) funkcija Ispitati_Bsem(i) pohraniti konktekst u opisnik Aktivna_D; ako je Bsem[i]. v = 1 onda // zeleno je Bsem[i]. v = 0; // postavi crveno obnoviti kontekst iz opisnika Aktivna_D; omogućiti prekidanje; RTI inače // crveno je premjestiti opisnik iz reda Aktivna_D u red BSem[i]; aktivirati prvu dretvu iz reda Pripravne_D; 80

Funkcija Postaviti_Bsem (Signal) funkcija Postaviti_Bsem(i) pohraniti konktekst u opisnik Aktivna_D; premjestiti opisnik iz reda Funkcija Postaviti_Bsem (Signal) funkcija Postaviti_Bsem(i) pohraniti konktekst u opisnik Aktivna_D; premjestiti opisnik iz reda Aktivna_D u red Pripravna_D; ako je red Bsem[i] neprazan onda premjestiti prvi opisnik iz reda Bsem[i] u red Pripravne_D; inače Bsem[i]. v = 1; // zeleno aktivirati prvu dretvu iz reda Pripravne_D; 81

Funkcija Ispitati_Osem (Wait) funkcija Ispitati_Bsem(j) pohraniti konktekst u opisnik Aktivna_D; Osem[j]. v --; ako Funkcija Ispitati_Osem (Wait) funkcija Ispitati_Bsem(j) pohraniti konktekst u opisnik Aktivna_D; Osem[j]. v --; ako je Bsem[j]. v >= 0 onda // zeleno je Obnoviti kontekst iz opisnika Aktivna_D; omogućiti prekidanje; RTI inače // crveno je premjestiti opisnik iz reda Aktivna_D u red Osem[j]; aktivirati prvu dretvu iz reda Pripravne_D; 82

Funkcija Postaviti_Osem (Signal) funkcija Postaviti_Osem(j) pohraniti konktekst u opisnik Aktivna_D; premjestiti opisnik iz reda Funkcija Postaviti_Osem (Signal) funkcija Postaviti_Osem(j) pohraniti konktekst u opisnik Aktivna_D; premjestiti opisnik iz reda Aktivna_D u red Pripravna_D; ako je red Osem[j] neprazan onda premjestiti prvi opisnik iz reda Osem[j] u red Pripravne_D; inače Osem[j]. v ++; aktivirati prvu dretvu iz reda Pripravne_D; 83

Funkcija Zakasniti_sebe (Join) funkcija Zakasniti_sebe( M ) pohraniti kontekst u opisnik Aktivna_D; uvrstiti opisnik Funkcija Zakasniti_sebe (Join) funkcija Zakasniti_sebe( M ) pohraniti kontekst u opisnik Aktivna_D; uvrstiti opisnik iz reda Aktivna_D u red Odgođene_D; aktivirati prvu dretvu iz reda Pripravne_D; 84

Funkcija Otkucaj_sata funkcija Otkucaj_sata( ) pohraniti kontekst u opisnik Aktivna_D; premjestiti opisnik iz Aktivna_D Funkcija Otkucaj_sata funkcija Otkucaj_sata( ) pohraniti kontekst u opisnik Aktivna_D; premjestiti opisnik iz Aktivna_D u red Pripravna_D; ako je red Odgođena_D neprazan onda smanjiti u prvom opisniku reda brojac za jedan; ako je brojac = 0 onda premjestiti prvi opisnik iz Odgođena_D u Pripravna_D; aktivirati prvu dretvu iz reda Pripravna_D; 85

Funkcija Započeti_UI k-te naprave funkcija Započeti_UI( K ) pohraniti kontekst u opisnik Aktivna_D; premjestiti Funkcija Započeti_UI k-te naprave funkcija Započeti_UI( K ) pohraniti kontekst u opisnik Aktivna_D; premjestiti opisnik iz Aktivna_D u red UI[K]; pokrenuti ulaznu / izlaznu operaciju na napravi K; aktivirati prvu dretvu iz reda Pripravna_D; 86

Funkcija Prekid_UI k-te naprave funkcija Prekid_UI( K ) pohraniti kontekst u opisnik Aktivna_D; premjestiti Funkcija Prekid_UI k-te naprave funkcija Prekid_UI( K ) pohraniti kontekst u opisnik Aktivna_D; premjestiti opisnik iz Aktivna_D u red Pripravna_D; premjestiti opisnik iz reda UI[K] u red Pripravna_D; aktivirati prvu dretvu iz reda Pripravna_D; 87

Sinkronizacija dretvi Sinkronizirati dretve čiju međusobnu zavisnost prikazuje graf na slajdu 55. Broj prethodnika Sinkronizacija dretvi Sinkronizirati dretve čiju međusobnu zavisnost prikazuje graf na slajdu 55. Broj prethodnika i inicijalno stanje općeg semafora i 1 2 3 4 5 6 7 Np[i] 0 1 1 1 2 2 2 Os[i]. v 1 0 0 0 -1 -1 -1 88

Sinkronizacija dretvi Ispitati_Os(1); D 1; Postaviti_Os(2); Postaviti_Os(3); Postaviti_Os(4); Ispitati_Os(2); D 2; Postaviti: Os(5); Ispitati_Os(3); Sinkronizacija dretvi Ispitati_Os(1); D 1; Postaviti_Os(2); Postaviti_Os(3); Postaviti_Os(4); Ispitati_Os(2); D 2; Postaviti: Os(5); Ispitati_Os(3); D 3; Postaviti_Os(5); Postaviti_Os(6); Ispitati_Os(4); D 4; Postaviti_Os(6); Ispitati_Os(5); D 5; Postaviti_Os(7); Ispitati_Os(6); D 6; Postaviti_Os(7); Ispitati_Os(7); D 7; 89

6 Međudretvena komunikacija i koncepcija monitora 90 6 Međudretvena komunikacija i koncepcija monitora 90

Komunikacija pomoću neograničenog spremnika 91 Komunikacija pomoću neograničenog spremnika 91

Komunikacija pomoću neograničenog spremnikaalgoritam proizvođača poruka Proizvođač poruka dok je istina činiti proizvesti poruku Komunikacija pomoću neograničenog spremnikaalgoritam proizvođača poruka Proizvođač poruka dok je istina činiti proizvesti poruku P; MS[UL] = P; UL = UL + 1; 92

Komunikacija pomoću neograničenog spremnikaalgoritam potrošača poruka Potrošač poruka dok je istina činiti pričekati da Komunikacija pomoću neograničenog spremnikaalgoritam potrošača poruka Potrošač poruka dok je istina činiti pričekati da bude ispunjeno UL > IZ; R = MS[IZ]; IZ = IZ + 1; potrošiti poruku R; 93

Komunikacija pomoću neograničenog spremnikasinkronizacija općim semaforom Proizvođač poruka dok je istina činiti proizvesti poruku Komunikacija pomoću neograničenog spremnikasinkronizacija općim semaforom Proizvođač poruka dok je istina činiti proizvesti poruku P; MS[UL] = P; UL = UL + 1; Postaviti_Osem(1); 94

Komunikacija pomoću neograničenog spremnikaalgoritam potrošača poruka Potrošač poruka dok je istina činiti Ispitati_Osem(1); R Komunikacija pomoću neograničenog spremnikaalgoritam potrošača poruka Potrošač poruka dok je istina činiti Ispitati_Osem(1); R = MS[IZ]; IZ = IZ + 1; potrošiti poruku R; 95

Komunikacija pomoću ograničenog spremnika - sinkronizacija općim semaforom Proizvođač poruka dok je istina činiti Komunikacija pomoću ograničenog spremnika - sinkronizacija općim semaforom Proizvođač poruka dok je istina činiti proizvesti poruku P; Ispitati_Osem(2); MS[UL] = P; UL = (UL + 1) mod N; Postaviti_Osem(1); 96

Komunikacija pomoću ograničenog spremnikasinkronizacija općim semaforom Potrošač poruka dok je istina činiti Ispitati_Osem(1); R Komunikacija pomoću ograničenog spremnikasinkronizacija općim semaforom Potrošač poruka dok je istina činiti Ispitati_Osem(1); R = MS[IZ]; IZ = (IZ + 1) mod N; Postaviti_Osem(2); potrošiti poruku R; 97

Kritični odsječak Neka zajednička sredstva nije moguće izbjeći. Primjer: dretve D 1 i D Kritični odsječak Neka zajednička sredstva nije moguće izbjeći. Primjer: dretve D 1 i D 2 koriste zajednički tiskalnik. Kako ga mogu koristiti ? - Paralelno ? NE ! Došlo bi do miješanja izlaza što je neprihvatljivo. - Najprije jedna dretva ( npr. D 1 ) bez prekida dok ne završi posao. - Kada dretva D 1 završi posao, dretva D 2 može započeti posao. 98

Kritični odsječak (nast. ) Dakle, vrijedi: - Dretve koriste zajedničko sredstvo uz isključivo pravo Kritični odsječak (nast. ) Dakle, vrijedi: - Dretve koriste zajedničko sredstvo uz isključivo pravo korištenja. - Jedna dretva zadržava sredstvo tako dugo dok joj treba. - Sredstvo je slobodno kada ga dretva više ne treba. - Dretva mora čekati da zauzeto sredstvo postane slobodno. - Dretve se natječu za sredstvo, a operacijski sustav dodjeljuje sredstvo prema strategiji dodjeljivanja sredstava (uvažavajući prioritete). 99

Kritični odsječak - dio programa u kojem dretve koriste zajedničko sredstvo uz isključivo pravo Kritični odsječak - dio programa u kojem dretve koriste zajedničko sredstvo uz isključivo pravo korištenja. Dretva izvodi naizmjence nekritične i kritične odsječke prema algoritmu: dok je istina činiti Nekritični odsječak; Kritični odsječak; 100

Potpuni zastoj Problem može nastati kada dvije dretve D 1 i D 2 trebaju Potpuni zastoj Problem može nastati kada dvije dretve D 1 i D 2 trebaju dva zajednička sredstva S 1 i S 2. D 1 drži sredstvo S 1 D 1 čeka sredstvo S 2 D 2 čeka sredstvo S 1 D 2 S 2 D 2 drži sredstvo S 2 Problem: niti jedna dretva nema sva potrebna sredstva i ne može napredovati. Obje niti čekaju zauvijek nedostajuće sredstvo i nikada neće završiti posao. 101

Potpuni zastoj Opisani se problem naziva potpuni zastoj (eng. Deadlock). Nuždni uvjeti za nastupanje Potpuni zastoj Opisani se problem naziva potpuni zastoj (eng. Deadlock). Nuždni uvjeti za nastupanje potpunog zastoja: 1. Svaka dretva ima isključivo pravo korištenja sredstva. 2. Dretva zadržava sredstvo tako dugo dok joj treba i ne može joj biti oduzeto. 3. Dretva zadržava jedno sredstvo dok čeka dodjelu drugog sredstva (iako ne nepreduje, jer nema sva potrebna sredstva). 102

Potpuni zastoj Kako riješiti problem ? Ako nije ispunjen barem jedan od navedenih uvjeta Potpuni zastoj Kako riješiti problem ? Ako nije ispunjen barem jedan od navedenih uvjeta ne može doći do potpunog zastoja. Uvjet (1): već znamo da se neka sredstva ne mogu koristiti paralelno – MORA OSTATI. Uvjet (2): Oduzimanjem sredstva nit ne napreduje – MORA OSTATI. Uvjet (3): MOŽE SE REDUCIRATI: dok nit čeka barem jedno sredstvo, neka vrati sva koja su joj već dodjeljena, po principu SVE ILI NIŠTA. 103

Primjer kritičnog odsječka: raskršće Kritični odsječak 104 Primjer kritičnog odsječka: raskršće Kritični odsječak 104

Strategije detekcije potpunog zastoja Dopušta se nastupanje potpunog zastoja. - OS detektira nastupanje potpunog Strategije detekcije potpunog zastoja Dopušta se nastupanje potpunog zastoja. - OS detektira nastupanje potpunog zastoja i onda intervenira. - OS bira dretvu žtrvu (npr. D 1) i oduzima joj sva sredstva. - Oduzeta (oslobođena) sredstva dodjeljuje preostaloj dretvi D 2. - Kada dretva D 2 završi, sredstva su sloboda i D 1 nastavlja izvođenje dok ne završi. 105

Prednosti i nedostaci strategije detekcije Prednosti: - Poslovi se odvijaju punim paralelizmom. - Niti Prednosti i nedostaci strategije detekcije Prednosti: - Poslovi se odvijaju punim paralelizmom. - Niti se ravnopravno natječu za sredstva po principu “koja prije zatraži” - Postoji jamstvo da će obje niti završiti. Nedostatci: - Postoji dretva žrtva ( eng. Deadlock victim ) - Problem detekcije nastupanja potpunog zastoja. 106

Strategija prevencije potpunog zastoja - Ne dopušta se nastupanje potpunog zastoja. - OS dodjeljuje Strategija prevencije potpunog zastoja - Ne dopušta se nastupanje potpunog zastoja. - OS dodjeljuje sredstva na taj način da sustav nikada ne može doći u nesigurno stanje, nakon kojeg slijedi potpuni zastoj. 107

Prednosti i nedostatci strategija prevencije Prednosti: - Dretvama se ne oduzimaju već dodjeljena sredstva. Prednosti i nedostatci strategija prevencije Prednosti: - Dretvama se ne oduzimaju već dodjeljena sredstva. - Postoji jamstvo da će obje dretve završiti. Nedostatci: - Narušen paralelizam. - Arbitriranje OS o redoslijedu izvođenja, čime je narušena ravnopravnost dretvi. 108

Problem pet filozofa Pet filozofa šeta oko okruglog stola i razmišlja. Kada neki od Problem pet filozofa Pet filozofa šeta oko okruglog stola i razmišlja. Kada neki od njih ogladne, sjedne za slobodni tanjur, uzme lijevi štapić, zatim uzme dezni štapić i jede kinesku hranu. (zanemarimo higijenska pravila) Potpuno je slučajno kada će pojedini filozof ogladniti. 109

Algoritam nesretnog filozofa (zašto su nesretni? ) ponavljati zauvijek ako je gladan onda nađi Algoritam nesretnog filozofa (zašto su nesretni? ) ponavljati zauvijek ako je gladan onda nađi slobodan tanjur; uzmi lijevi štapić; uzmi desni štapić; jedi; vrati desni štapić; vrati lijevi štapić; inače razmišljaj; Što će se dogoditi kada svih pet filozofa istodobno oglasne? 110

Ostvarenje algoritma pomoću semafora ponavljati zauvijek misliti; Ispitati_Bsem( I ); // lijevi štapić Ispitati_Bsem( Ostvarenje algoritma pomoću semafora ponavljati zauvijek misliti; Ispitati_Bsem( I ); // lijevi štapić Ispitati_Bsem( ( I+1 ) mod 5); // desni štapič jesti; Postaviti_Bsem( I ); Postaviti_Bsem( ( I + 1) mod 5 ); Semaforima ne možemo riješiti problem potpunog zastoja! 111

Algoritam ljutitog filozofa (zašto? ) ponavljati zauvijek ako je gladan onda nađi slobodan tanjur; Algoritam ljutitog filozofa (zašto? ) ponavljati zauvijek ako je gladan onda nađi slobodan tanjur; ako je slobodan lijevi štapić onda uzmi lijevi štapić; ako je slobodan desni štapić onda uzmi desni štapić; jedi; vrati desni štapić; vrati lijevi štapić; inače razmišljaj; Problem dizanja i spuštanja štapića pri jednakim brzinama 112 napredovanja.

Algoritam sretnog filozofa ponavljati zauvijek ako je gladan onda nađi slobodan tanjur; ako je Algoritam sretnog filozofa ponavljati zauvijek ako je gladan onda nađi slobodan tanjur; ako je slobodan lijevi štapić onda uzmi lijevi štapić; ako je slobodan desni štapić onda uzmi desni štapić; jedi; vrati desni štapić; vrati lijevi štapić; inače razmišljaj; Potpuni zastoj ne može nastupiti! 113

Koncepcija monitora • Ograničenja semafora: – svaki semafor ispituje samo jedan jednostavni uvjet; – Koncepcija monitora • Ograničenja semafora: – svaki semafor ispituje samo jedan jednostavni uvjet; – ispitivanje semafora povezano je sa zauzećem sredstva koje semafor štiti. Tako nije moguće provesti ispitivanje više semafora i tek nakon toga obaviti rezervaciju sredstva samo ako su slobodna sva sredstva potrebna za izlazak iz kritičnog odsječka. • A. Hoare: - predložio način rješenja navedenog problema – monitor. 114

Funkcije monitora • Ući_u_monitor( M ); • Izaći_iz_monitora( M ); • Uvrstiti_u_red_uvjeta( M, K Funkcije monitora • Ući_u_monitor( M ); • Izaći_iz_monitora( M ); • Uvrstiti_u_red_uvjeta( M, K ); • Osloboditi_iz_reda_uvjeta( M, K ); 115

Ući u monitor funkcija Ući_u_monitor( M ) pohraniti kontekst u opisnik Aktivna_D; ako je Ući u monitor funkcija Ući_u_monitor( M ) pohraniti kontekst u opisnik Aktivna_D; ako je Monitor[M]. v == 1 onda Monitor[M]. v = 0; // crveno obnoviti kontekst iz opisnika Aktivna_D; omogućiti prekidanje; RTI; inače premjestiti opisnik iz reda Aktivna_D u red Monitor[M]; aktivirati prvu dretvu iz reda Pripravna_D; Identična funkciji Ispitati_Bsem! 116

Izaći iz monitora funkcija Izaći_iz_monitora( M ) pohraniti kontekst u opisnik Aktivna_D; premjestiti opisnik Izaći iz monitora funkcija Izaći_iz_monitora( M ) pohraniti kontekst u opisnik Aktivna_D; premjestiti opisnik iz reda Aktivna_D u red Pripravna_D; ako je red Monitor[M] neprazan onda premjestiti prvi opisnik iz reda Monitor[M] u red pripravne_D; inače Monitor[M]. v = 1; // zeleno aktivirati prvu dretvu iz reda Pripravna_D; Identična funkciji Postaviti_Bsem ! 117

Uvrstiti u red uvjeta funkcija Uvrstiti_u_red_uvjeta( M, K ) pohraniti kontekst u opisnik Aktivna_D; Uvrstiti u red uvjeta funkcija Uvrstiti_u_red_uvjeta( M, K ) pohraniti kontekst u opisnik Aktivna_D; premjestiti opisnik iz reda Aktivna_D u red_uvjeta[M, K]; ako je red Monitor[M] neprazan onda premjestiti prvi opisnik iz reda Monitor[M] u red pripravne_D; inače Monitor[M]. v = 1; // zeleno aktivirati prvu dretvu iz reda Pripravna_D; 118

Osloboditi iz reda uvjeta funkcija Osloboditi_iz_reda_uvjeta( M, K ) pohraniti kontekst u opisnik Aktivna_D; Osloboditi iz reda uvjeta funkcija Osloboditi_iz_reda_uvjeta( M, K ) pohraniti kontekst u opisnik Aktivna_D; premjestiti opisnik iz reda Aktivna_D u red Pripravne_D; ako je Red_uvjeta[M, K] neprazan onda premjestiti prvi opisnik iz Reda_uvjeta[M, K] u Pripravne_D; ako je red Monitor[M] neprazan onda premjestiti prvi opisnik iz reda Monitor[M] u red pripravne_D; inače Monitor[M]. v = 1; // zeleno aktivirati prvu dretvu iz reda Pripravna_D; 119

Završetak monitorske funkcije ako je uvjet za oslobođenje iz Reda_uvjeta[M, K] ispunjen onda Oslobodoti_iz_reda_uvjeta( Završetak monitorske funkcije ako je uvjet za oslobođenje iz Reda_uvjeta[M, K] ispunjen onda Oslobodoti_iz_reda_uvjeta( M, K ); inače Izaći_iz_monitora( M ); 120

Rješenje pet filozofa pomoću monitora I-ta pozicija za stolom (štapići: I, ( I + Rješenje pet filozofa pomoću monitora I-ta pozicija za stolom (štapići: I, ( I + 1) mod 5) dok je istina činiti misliti; Uzeti_štapiće( I ); jesti; Spustiti_štapiće( I ); 121

Uzeti štapiće funkcija Uzeti_štapiće( I ) Ući_u_monitor(3); dok je Broj_štapića[I] < 2 činiti Filozof_čeka[I] Uzeti štapiće funkcija Uzeti_štapiće( I ) Ući_u_monitor(3); dok je Broj_štapića[I] < 2 činiti Filozof_čeka[I] = 1; Uvrstiti_u_red_uvjeta(3, I); Ući_u_monitor( 3 ); Broj_štapića[ ( I + 4 ) mod 5 ]--; // lijevi susjed Broj_štapića[ ( I + 1 ) mod 5 ]--; // desni susjed Izaći_iz_monitora( 3 ); 122

Spustiti štapiće funkcija Spustiti_štapiće( K ) Ući_u_monitor(3); Broj_štapića[ ( K + 4 ) mod Spustiti štapiće funkcija Spustiti_štapiće( K ) Ući_u_monitor(3); Broj_štapića[ ( K + 4 ) mod 5 ]++; // lijevi susjed Broj_štapića[ ( K + 1 ) mod 5 ]++; // desni susjed J = (K + 4) mod 5; ako je Broj_štapića[J]==2 && Filozof_čeka[J]==1 onda Filozof_čeka[J] = 0; Oslobodi_iz_reda_uvjeta(3, J); Ući_u_monitor( 3 ); 123

Spustiti štapiće (nastavak) J = (K + 1 ) mod 5; ako je Broj_štapića[J]==2 Spustiti štapiće (nastavak) J = (K + 1 ) mod 5; ako je Broj_štapića[J]==2 && Filozof_čeka[J]==1 onda Filozof_čeka[J] = 0; Oslobodi_iz_reda_uvjeta(3, J); inače Izaći_iz_monitora( 3 ); 124

Mogući problemi pri sinkronizaciji dretvi • problem potpunog zastoja; • problem radnog čekanja; • Mogući problemi pri sinkronizaciji dretvi • problem potpunog zastoja; • problem radnog čekanja; • problem izgladnjivanja. U prethodnom primjeru: • potpuni zastoj: NE • radno čekanje: NE • izgladnjivanja: DA 125

8 Gospodarenje spremničkim prostorom • Von Neumannov model računala: – program i podaci se 8 Gospodarenje spremničkim prostorom • Von Neumannov model računala: – program i podaci se nalaze u radnom spremniku (memoriji) – sve adrese generira procesor • Adrese dolaze iz: – PC : programsko brojilo adresira instrukciju – SP : kazaljka stoga (stack pointer) adresira dio memorije po načelu LIFO reda – adresa kao dio instrukcije (varijable, skokovi) 126

Zadatak • 32 bitni procesori imaju 32 bitnu adresu. Koliko memorijskih lokacija mogu adresirati? Zadatak • 32 bitni procesori imaju 32 bitnu adresu. Koliko memorijskih lokacija mogu adresirati? – Odgovor: 232 ~ 4 * 109 = 4 Giga lokacija/bajtova. • Koliko je približno pristupno vrijeme RAM memoriji DDR 3 DMM? • Koliko je pristupno vrijeme podacima na tvrdom magnetskom disku? • Računalo ima na raspolaganju 1 GB memorije. Može li ono izvršavati istovremeno dva programa od kojim svaki treba 2 GB memorije? 127

Značajke magnetskog diska • Elektromehaničke komponente – jedna ili više magnetskih ploča na zajedničkoj Značajke magnetskog diska • Elektromehaničke komponente – jedna ili više magnetskih ploča na zajedničkoj osovini koje rotiraju konstantnom brzinom (7200 ili 10800 okretaja u minuti) – ruka s magnetskom glavom radijalno se pokreće • Elektroničke komponente – procesor (mikrokontroler) diskovne jedinice – memorija jedinice – pristupni sklop za kondicioniranje signala elektromagnetske glave 128

Mehanički izgled diska 129 Mehanički izgled diska 129

Pogled odozgo na ploču magnetskog diska 130 Pogled odozgo na ploču magnetskog diska 130

Adresiranje podataka • glava (ploča) • cilindar (traka na ploči) • sektor na traci Adresiranje podataka • glava (ploča) • cilindar (traka na ploči) • sektor na traci • promjer ploče: 1 – 8 inča (1; 2, 5; 3, 5; 5, 25) • broj ploča: 1 – 20 • broj traka: 3000 – 250. 000 po inču • broj sektora po traci: 20 - 120 131

Kapacitet diska • Primjer – broj glava/površina P = 10 – broj cilindara C Kapacitet diska • Primjer – broj glava/površina P = 10 – broj cilindara C = 2000 – broj sektora / traci S = 100 – kapacitet sektora M = 512 Bajtova – UKUPNI KAPACITET = P * C * S * M = 1 GB • Kapaciteti današnjih diskova ~ TB (1012 B) 132

Upravljačka jedinica diska 133 Upravljačka jedinica diska 133

Vremena pristupa podacima • Rotacija konstantnom brzinom: – 7200 o/min = 120 o/s -> Vremena pristupa podacima • Rotacija konstantnom brzinom: – 7200 o/min = 120 o/s -> 8 ms za jedan okret – prosječno pristupno vrijeme: 4 ms 134

Vremena pristupa podacima • Kretanje glave: – pokretanje i ubrzavanje glave: • 1. 5 Vremena pristupa podacima • Kretanje glave: – pokretanje i ubrzavanje glave: • 1. 5 * D, za D ≤ 4 (D je broj traka) ms – kretanje konstantnom brzinom: • 4 + 0. 5 * D 1/2, za 4 < D ≤ 400 ms – usporavanje i zaustavljanje: • 10 + 0. 01 * D, za D > 400 ms – fino pozicioniranje 135

Fragmentacija diska • Upisivanje sektora iste datoteke u različitim vremenskim razmacima – na trakama Fragmentacija diska • Upisivanje sektora iste datoteke u različitim vremenskim razmacima – na trakama se izmjenjuju sektori različitih datoteka • čitanje 1 MB programa (2048 sektora po 512 bajtova) – podaci kompaktni - sektori u nizu: 294, 41 ms – podaci fragmentirani – maksimalni razbacani – 23, 72 ms • Defragmentacija diska 136

Od izvornog do strojnog koda Izvorni program Jezični procesor Objektni modul Sistemske bibl. Punjač Od izvornog do strojnog koda Izvorni program Jezični procesor Objektni modul Sistemske bibl. Punjač (loader) Dinamička bibl. Drugi obj. moduli Povezivač (linker) Program u memoriji Izvršni modul 137

Apsolutna i logička adresa programa • Strojni program – jedino što procesor izvršava • Apsolutna i logička adresa programa • Strojni program – jedino što procesor izvršava • Adrese strojnog programa su apsolutne • Pristup prvi (povijesni): – prevođenje programa s apsolutnim adresama – ista početna adresa (DOS. com programi) • Pristup drugi (povijesni): – prevođenje programa s relativnim (logičkim) adresama – program punjač (loader) podešava adrese 138

Apsolutna i logička adresa programa • Pristup treći (povijesni): – logičke adrese s 0 Apsolutna i logička adresa programa • Pristup treći (povijesni): – logičke adrese s 0 kao početnom – u momentu punjenja poznata je početna adresa – poseban sklop pribraja početnu adresu pri svakom adresiranju • Pristup četvrti (suvremeni): – mehanizam virtualne memorije 139

Izračun apsolutne adrese - MMU Granični reg. (526) Logičke adrese (0. . . 525) Izračun apsolutne adrese - MMU Granični reg. (526) Logičke adrese (0. . . 525) CPU Relokacijski reg. (1000) Da + < Ne Prekid: greška INT 1000 M 1 M 2 DATA 1525 M 3 140

Imamo malo memorije ? • Raspolažemo računalnim sustavom s jednim procesorom i ukupno 1 Imamo malo memorije ? • Raspolažemo računalnim sustavom s jednim procesorom i ukupno 1 GB radne memorije. Pri tome Operacijski sustav za svoje potrebe treba 50 MB memorije. • Želimo izvoditi usporedno 4 procesa pri čemu svaki od njih treba 750 MB memorije. • Je li to moguće ? 141

Imamo malo memorije ? • Da, moguće je, jer se stvarno istovremeno izvodi samo Imamo malo memorije ? • Da, moguće je, jer se stvarno istovremeno izvodi samo jedan proces. Da bi se izabrani proces (P 2) mogao izvoditi, OS mora “isprazniti memoriju” koju zauzima do tada izvođeni proces (P 1). Kažemo da se proces P 1 istiskuje iz memorije. • Da bi se proces P 1 mogao nesmetano nastaviti kada ponovno dođe na red, sve lokacije njegove memorije se moraju obnoviti na vrijednosti zatečene u momentu prekida. • Dakle, OS mora sačuvati vrijednosti lokacija “istisnute memorije” na mediju za masovnu pohranu podataka – disk. 142

Izmjena memorija procesa – swapping (povijesno) Operacijski sustav P 1 Privremeno se istiskuje na Izmjena memorija procesa – swapping (povijesno) Operacijski sustav P 1 Privremeno se istiskuje na disk (swap out) P 1 Korisnički memorijski prostor Glavna memorija P 2 Vraća se u memoriju (swap in) P 2 Swap područje 143

Nedostatak swappinga • Programi su različite veličine • Unutrašnja fragmentacija: neupotrijebljeni dijelovi memorije • Nedostatak swappinga • Programi su različite veličine • Unutrašnja fragmentacija: neupotrijebljeni dijelovi memorije • Vanjska fragmentacija: nedostatak kontinuiteta adresa za smještanje kompletnog velikog programa 144

Nedostatak swappinga • Istiskivanje cijelog procesa iz memorije i zatim ponovno učitavanje usporava napredovanje Nedostatak swappinga • Istiskivanje cijelog procesa iz memorije i zatim ponovno učitavanje usporava napredovanje procesa. • Treba li zaista proces sve memorijske lokacije istovremeno? • Ne, ne treba ih. Neki dijelovi programa, npr. help će se izvoditi povremeno, kada korisnik zatraži pomoć i zaista nema potrebe taj dio programa i pripadne varijable čuvati u memoriji cijeli životni vijek procesa. 145

Nedostatak swappinga • Dakle, OS mora čuvati u memoriji samo one dijelove programa koji Nedostatak swappinga • Dakle, OS mora čuvati u memoriji samo one dijelove programa koji se stvarno izvode. • Koji su to dijelovi ? • Ideja je podijeliti program u male fragmente - stranice i čuvati u memoriji one fragmente koji se izvode. • Sukladno tomu, glavna fizička memorija se logički dijeli na okvire u koje se učitaju stranice programa koje se izvode. • Veličina stranice programa = Veličina memorijskog okvira 146

Stranice memorije ( paging) Istiskivanje cijelog procesa iz memorije i zatim ponovno učitavanje usporava Stranice memorije ( paging) Istiskivanje cijelog procesa iz memorije i zatim ponovno učitavanje usporava napredovanje procesa. Da li proces treba sve memorijske lokacije istovremeno ? Ne, ne treba. Neki dijelovi programa, npr. help će se izvoditi povremeno, kada korisnik zatraži pomoć i zaista nema potrebe taj dio programa i pripadne varijable čuvati u memoriji. Dakle, OS mora čuvati u memoriji samo one dijelove programa koji se stvarno izvode. Koji su to dijelovi ? Ideja je podijeliti program u male fragmente - stranice i čuvati u memoriji one fragmente koji se izvode. Sukladno tomu, glavna fizička memorija se logički dijeli na okvire u koje se učitaju stranice programa koje se izvode. Veličina stranice programa = Veličina memorijskog okvira 147

Stranice i okviri ( paging) Stranica 0 Stranica 1 Stranica 2 Tablica stranice-okviri 0 Stranice i okviri ( paging) Stranica 0 Stranica 1 Stranica 2 Tablica stranice-okviri 0 1 2 3 1 4 3 7 Stranica 0 2 3 4 Stranica 3 Stranice Stranica 2 Stranica 1 5 Logička memorija 6 7 Fizička memorija Stranica 3 Okviri 148

Logička i fizička adresa Logička adresa CPU s 2 Fizička adresa r 32 o Logička i fizička adresa Logička adresa CPU s 2 Fizička adresa r 32 o 3 r 32 0 1 Stranica 0 2 0 1 2 3 1 4 3 7 3 4 Bit 9. . bit 0 s r 6 32 Bit 19. . bit 10 Stranica 1 5 Tablica stranice-okviri 2 Stranica 2 7 Fizička memorija Stranica 3 Okviri 149

Virtualna memorija Podjelom programa na stranice stvoreni su preduvjeti za odvijanje programa na slijedeći Virtualna memorija Podjelom programa na stranice stvoreni su preduvjeti za odvijanje programa na slijedeći način: 1. Učitati stranicu S 0 (samo jednu kao ideja) u slobodni okvir na kojoj se nalazi početna naredba procesa P 1. Postaviti zastavicu okvira u “zauzet”. 2. Tijekom izvođenja programa na stranici S 0 procesor adresira memorijsku lokaciju ( varijabla ili skok na adresu ) koja se nalazi na stranici S 3. Desio se PROMAŠAJ adrese. Proces P 1 mora na čekanje nedostajuće stranice. 3. Potražiti slobodni okvir i učitati stranicu P 3. Postaviti zastavicu okvira u “zauzet”. 150

Virtualna memorija 4. Proces P 1 nastavlja s radom. 5. Kada se desi da Virtualna memorija 4. Proces P 1 nastavlja s radom. 5. Kada se desi da nema slobodnih okvira, potražiti one koji: a) dugo nisu korišteni b) nisu “zaprljani”, tj. njihovi procesi nisu upisivali vrijednosti Isprazniti ih (postavljanjem zastavice u “slobodan”). 6. Štoviše, bilo bi korisno pretraživati okvire koji dugo nisu imali “pogotke” i permanentno ih prazniti. Ako su “zaprljani” treba ih sačuvati na vanjskoj memoriju (disk), a ako nisu ne treba ih čuvati. Proglasiti okvir slobodnim. 151

Stranice memorije ( paging) Logička adresa CPU s 3 Fizička adresa r 32 o Stranice memorije ( paging) Logička adresa CPU s 3 Fizička adresa r 32 o x r 32 Promašaj INT s 0 1 2 3 Potprogram: učitaj(S 3) o 1 x x x d 0 1 1 1 0 1 2 3 Dopusti 4 6 Prekid S 1 S 2 S 3 Slobodno 5 Tablica s-o S 0 Stranica 0 Slobodno 7 Fizička memorija Okviri 152

Datotečni sustav (eng. File System) Uloga datoteka u računalnim sustavima: 1. Trajno pohranjivanje svih Datotečni sustav (eng. File System) Uloga datoteka u računalnim sustavima: 1. Trajno pohranjivanje svih vrsta podataka – zapis je postojan nezavisno o napajanju. 2. Razmjena podataka između različitih procesa (programa u izvršavanju), primjerice: proces P 1 piše svoje izlaze u datoteku, a proces P 2 čita svoje ulaze iz te datoteke. Datoteke se čuvaju na vanjskim, blokovski organiziranim, spremnicima: podaci se prenose na spremnik i sa spremnika u blokovima, npr. od 4096 bajtova. Opisnik datoteke (eng. file descriptor) sadrži: • Atribute datoteke • Kazaljke na blokove diska koji čuvaju podatke datoteke. 153

Vrste datoteka 1. Direktorij ili imenik: posebna vrsta datoteke koja sadrži opisnike drugih datoteka. Vrste datoteka 1. Direktorij ili imenik: posebna vrsta datoteke koja sadrži opisnike drugih datoteka. Ovim datotekama pristupa i interpretira ih OS. Neki opisnici u direktoriju mogu opisivati druge direktorije – svoju djecu, te se tako datoteke organiziraju u stablo. 2. Datoteka koja predstavlja vanjski uređaj. Primjerice, tipkovnicu ili tiskalnik. Ovim datotekama pristupaju OS i primjenski programi, a interpretira ih vanjski uređaj. 3. Obična datoteka: • Binarna (strojni kod): interpretira je procesor. • Komande OS-a: interpretira je OS. • Sadržaj koji interpretira neki primjenski program, npr. Word. OS “vidi” sadržaj kao nestrukturirani niz bajtova. 154

Atributi datoteke 1. Naziv datoteke: jedinstven u imeniku u kojem je opisnik datoteke. 2. Atributi datoteke 1. Naziv datoteke: jedinstven u imeniku u kojem je opisnik datoteke. 2. Tip datoteke (exe, txt, doc, c, cpp, pas) 3. Lozinka za pristup datoteci (nije obavezna) 4. Korisničko ime vlasnika datoteke 5. Grupe korisnika 6. Prava pristupa za vlasnika i grupe: čitanje, pisanje, izvršavanje 7. Vrijeme stvaranja datoteke 8. Vrijeme zadnje upotrebe datoteke 9. Opis smještaja datoteke na disku 155

Opis prostora na disku 1. Sektor: 512 bajtova 2. Klaster: grupa sektora, npr. 2, Opis prostora na disku 1. Sektor: 512 bajtova 2. Klaster: grupa sektora, npr. 2, 4, 8 ili 16, ovisno veličini diska. Uz klaster od 8 sektora = 4 Kbajta, disk veličine 1 TB 1012 bytova ima 256 * 106 klastera. 1. Svaki je klaster identificiran jedinstvenim cijelim brojem prema formuli: k = glava * Ntraka + traka * Nsektor + sektor. 2. Stanje klastera: 1. Slobodan 2. Zauzet podacima neke datoteke (neispravne klastere OS proglasi zauzetima) 156

Opis prostora na disku Opis stanja klastera 1. Pomoću bitova: svakom je klasteru pridružen Opis prostora na disku Opis stanja klastera 1. Pomoću bitova: svakom je klasteru pridružen jedan bit pri čemu 1 označava zauzet, a 0 slobodan klaster. 2. Stanje klastera na disku od 1 TB označava 256 * 106 bitova, odnosno 32 Mbajta. 3. Pomoću jednostruko vezane liste: svaki element opisuje više slobodnih / zauzetih klastera u nizu i to: 1. Početni klaster. 2. Broj klastera u nizu koji su u istom stanju. 157

Načela ostvarenja datotečnik funkcija Datotečne funkcije: • Stvaranje datoteke: u zadani direktorij se upisuje Načela ostvarenja datotečnik funkcija Datotečne funkcije: • Stvaranje datoteke: u zadani direktorij se upisuje novi opisnik u koji se postavljaju atributi datoteke. Pronalazi se slobodan klaster kojem se stanje mijenja u zauzet i dodjeljuje datoteci. • Uništavanje (brisanje datoteke): u opisnik datoteke se postavnja oznaka da je datoteka izbrisana. Svi klasteri datoteke se proglašavaju slobodnima (odmah ili nakon recikliranja diskovnog prostora). • Otvaranje datoteke: na temelju direktorija i imena datoteke pronalazi se opisnik u kojem se nalaze atributi datoteke. Provjeravaju se prava pristupa datoteci. Datoteci se pridružuje spremnik (buffer) u radnoj memoriji. Nalaže se prekidni prijenos prvog klastera s vanjskog uređaja u spremnik (buffer). Program se postavlja u stanje čekanja U/I prijenosa. Kazaljka tekuće riječi (bajta) se postavlja na početak spremnika. 158

Načela ostvarenja datotečnik funkcija (nastavak) Datotečne funkcije: • Zatvaranje datoteke: pristup spremniku (bufferu) više Načela ostvarenja datotečnik funkcija (nastavak) Datotečne funkcije: • Zatvaranje datoteke: pristup spremniku (bufferu) više nije moguć, ali on još čuva podatke datoteke. • Prijenos podataka iz spremnika na disk (flush): nalaže se jedinici koja upravlja diskom prijenos podataka iz spremnika na disk. Kada operacija završi, spremnik (buffer) se proglašava slobodnim. Operacija se pokreće eksplicitno programski (instrukcijom flush), od strane OS kada je potrebno osloboditi spremnik (buffer) ili kada sustav nije opterećen, a najkasnije prije gašenja sustava. • Čitanje datoteke: programu se proslijedi jedna riječ (bajt) iz spremnika (buffera), a kazaljka tekuće riječi se pomjeri na sljedeću. Kada je kazaljka na kraju spremnika, čitanje sljedeće riječi pokreće prijenos klastera sa diska u spremnik, pri čemu se 159 kazaljka postavlja na njegov početak.

Načela ostvarenja datotečnik funkcija (nastavak) Datotečne funkcije: • Pisanje u datoteku: riječ (bajt) se Načela ostvarenja datotečnik funkcija (nastavak) Datotečne funkcije: • Pisanje u datoteku: riječ (bajt) se zapisuje na lokaciju spremnika koju pokazuje kazaljka tekuće riječi. Kazaljka se pomiče na sljedeću riječ. Kraj datoteke označen je posebnom rječju EOF (1). Kada kazaljka dostigne kraj spremnika (buffera) pokreće se njegov prijenos na disk, te dobavljanje sljedećeg klastera datoteke sa diska u spremnik, pri čemu se kazaljka tekuće riječi postavlja na njegov početak. • Pomicanje kazaljke: kazaljka se mijenja tako da pokazuje na zadanu lokaciju datoteke. Ako je potrebno, obavlja se prijenos spremnika na disk, te se sa diska dobavlja novi klaster na kojem se nalazi lokacija koju kazaljka pokazuje. 160

Rad s datotekama uz pomoć API funkcija RAM Adresni prostor procesa Opisnici datoteka Disk Rad s datotekama uz pomoć API funkcija RAM Adresni prostor procesa Opisnici datoteka Disk Direktorij K 1 Datoteka API funkcije K 10 K 3 K 8 Spremnici (bufferi) 161