garnettkg

os1 kol1

Apr 22nd, 2016
468
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 192.76 KB | None | 0 0
  1. Predavanje 1a: Computer-System Structures
  2. Operacije računarskog sistema
  3. I/O operacije
  4. Struktura memorije
  5. Hijerarhija memorije
  6. Hardverska zaštita
  7. Glavna arhitektura sistema
  8. Arhitektura računarskog sistema
  9. Operacije računarskog sistema
  10. I/O uređaji i CPU
  11. moze se izvršavati
  12. konkurentno
  13.  
  14. CPU izolacija od I/O (3 uslova)
  15. 1. svaki uređaj kontroler ima lokalni bafer
  16. 2. DMA
  17. 3. Signal prekida (Interrupt controller)
  18. Interrupt Time Line for Single Process Doing Output
  19. Dve I/O Metode
  20. Direktan pristup memoriji (DMA)
  21. Koristi se za I/O uredjaje velike brzine
  22. omogucava brz prenos informacija
  23. između periferija i memorije.
  24.  
  25. DMA Uredjaj kontroler prenosi pakete podataka
  26. iz bafera
  27. direktno u glavnu memoriju
  28. bez koriscenja CPU-a
  29.  
  30. Jedan prekid
  31. je češći po bloku
  32. nego po bajtu.
  33. Struktura memorije
  34. Glavna memorija:
  35. veliki memorijski medijum
  36. kome CPU može pristupati direktno
  37.  
  38. Sekundarna memorija:
  39. nastavak glavne memorije
  40. koja obezbeđuje veliki dugotrajni memorijski prostor
  41.  
  42. Magnetni diskovi:
  43. čvrst metal ili staklene ploče
  44. omotani sa magnetnim materijalom po kojem se može pisati
  45. Površina diska je logički podeljena na staze,
  46. koji su podeljeni na sektore
  47. Disk kontroler obavlja
  48. logičku interakciju između uređaja i računara
  49. Mehanizam pomeranja glave diska
  50. Hijerarhija memorijskih uređaja
  51. Keširanje (Caching)
  52. Koriste ga memorije velike brzine
  53. da čuvaju podatke kojima se skoro pristupalo
  54.  
  55. Zahteva tehniku (policy) za upravljanje kešom
  56.  
  57. Keširanje predstavlja još jedan nivo u memorijskoj hijerarhiji.
  58.  
  59. Ovo zahteva da podaci
  60. koji su istovremeno memorisani
  61. u više od jednog nivoa
  62. da budu konsistentani
  63. Migracija A iz diska u registar
  64. Hardverska zaštita
  65. Dual mode operacija (user – kernel)
  66.  
  67. I/O zaštita
  68.  
  69. Memorijska zaštita
  70.  
  71. CPU zaštita
  72. Dvomodna operacija
  73.  
  74. 1. Korisnički mod:
  75. izvršenje obavlja korisnik
  76.  
  77. 2. Monitor mod
  78. (kao kernelski mod ili sistemski mod)
  79. izvršenje obavlja operativni sistem
  80. Dvomodna operacija
  81. Mode-bit se ubacuje u računarski hardver da ukaže na trenutni mod:
  82. monitor (0)
  83. ili
  84. user (1)
  85. Kada se javi greška ili prekid hardver se prebacuje u monitor mod
  86. I/O zaštita
  87. Sve I/O instrukcije su privilegovane instrukcije.
  88.  
  89. Mora se osigurati
  90. da korisnički program
  91. nikad ne dobije kontrolu
  92. nad računarom u monitor modu
  93. (npr., korisnički program koji, kao deo njegovog izvršavanja,
  94. memoriše nove adrese u IVT)
  95. Korišćenje sistemskih poziva za izvršavanje I/O operacija
  96. Memorijska zaštita
  97. Mora se obezbediti memorijska zaštita za:
  98. IVT (vektor prekida)
  99. interrupt service routines
  100. kernel
  101. user processes
  102.  
  103. Memorijska zaštita:
  104. ubacije dva registra
  105. koji određuju prostor adresa
  106. kojima program može pristupiti:
  107. Base register – opisuje najmanju fizičku memorijsku adresu.
  108. Limit register – sadrži veličinu prostora
  109.  
  110. Korišćenje Base i Limit registara
  111. Hardverska adresna zaštita
  112. CPU zaštita
  113. Timer (real time clock):
  114. Obezbeđuje računarske prekide posle određenog perioda
  115. osigurava operativnom sistemu održavanje kontrole.
  116.  
  117. Timer (real time clock) se dekrementira na svaki otkucaj sata
  118. Kada brojač dostigne vrednost 0, nastaje prekid
  119.  
  120. Timer se obično koristi za implementaciju time sharing-a.
  121.  
  122. Timer se takođe koristi za računanje trenutnog vremena
  123. Load-timer je privilegovana instrukcija
  124. Mrežna struktura
  125. Local Area Networks (LAN)
  126.  
  127. Wide Area Networks (WAN)
  128. LAN struktura
  129. WAN struktura
  130.  
  131.  
  132. Predavanje 1b: Uvod u OS
  133. Šta je operativni sistem?
  134.  
  135. Veliki računarski sistemi (Mainframe Systems)
  136.  
  137. Desktop sistemi
  138.  
  139. Višeprocesorski sistemi (Multiprocessor Systems)
  140.  
  141. Distribuirani sistemi
  142.  
  143. Udruženi sistemi (Clustered Systems)
  144.  
  145. Sistemi za upravljanje u realnom vremenu
  146.  
  147. Ručni sistemi (Handheld Systems)
  148.  
  149. Računarsko okruženje (Computing Environments)
  150. Šta je operativni sistem?
  151. OS je program koji predstavlja
  152. posrednika
  153. između
  154. korisnika računara
  155. i
  156. računarskog hardvera
  157. Prikaz delova operativnog sistema
  158. Komponente računarskog sistema
  159. Hardver:
  160. osnovni računarski resursi (CPU, memorija, I/O uređaji)
  161.  
  162. Operativni sistem:
  163. kontroliše i koordinara korišćenje hardvera
  164. između različitih aplikativnih programa
  165. za različite korisnike
  166.  
  167. Aplikativni programi:
  168. određuju
  169. koji resursi sistema se koriste
  170. za rešavanje računarskih problema korisnika
  171. (prevodioci, baze podataka, video igre, poslovni programi)
  172.  
  173. 4. Korisnici (ljudi, mašine, ostali računari)
  174.  
  175. Definicija operativnog sistema
  176. OS kao upravljač resursa:
  177. upravlja
  178. dodeljuje resurse
  179. kontroliše računarski hardver
  180.  
  181. OS kao virtuelna mašina:
  182. izvršava korisničke programe
  183.  
  184. rešava korisničke probleme na lakši način.
  185.  
  186. čini računarski sistem pogodnim za korišćenje
  187.  
  188. Funkcije operativnog sistema
  189. Sekvenciranje poslova (s jednog na drugi)
  190. Upravljanje poslovima i interpretacija komandnog jezika
  191. Rukovanje greškama
  192. Rukovanje I/O operacijama
  193. Rukovanje prekidima
  194. Raspoređivanje poslova
  195. Upravljanje resursima
  196. Zaštita i sigurnost (protection and security)
  197. Višestruki pristup
  198.  
  199. Dodatne funkcije:
  200. Korisnički interfejs
  201. Obračun
  202. Karakteristike operativnog sistema
  203. Konkurentnost (postojanje više procesa)
  204.  
  205. Deoba resursa (Resource Sharing)
  206.  
  207. Dugotrajna memorija (diskovi: magnetic, flash, SSD)
  208.  
  209. Determinističan u odnosu na rezultate/ Nedeterminističan u odnosu na opterećenje
  210.  
  211. Poželjne osobine:
  212. Efikasnost
  213. Pouzdanost
  214. Mogućnost održavanja
  215. Prihvatljiva veličina
  216. Poželjne osobine
  217. Efikasnost
  218. srednje vreme između grupnih (batch) poslova
  219. Vreme (%) iskorišćenosti procesora
  220. vreme prolaska za grupne poslove
  221. vreme odziva (za interaktivne sisteme)
  222. iskorišćenost resursa
  223. propusna moć (poslova/sat, transakcija/min)
  224. e=Tuseful/Total; o=Tsystem/Total; e+o=1
  225.  
  226. Pouzdanost
  227. p je verovatnoća greške, f je funkcija stanja
  228. p e [0,1]; f=1-p
  229.  
  230. Mogućnost održavanja
  231. jednostavan za održavanje sa malim brojem ljudi koji će raditi na održavanju
  232.  
  233. Prihvatljiva veličina
  234. Tipovi operativnih sistema -1
  235.  
  236. Kriterijum 1. (broj korisnika)
  237. jednokorisnički OS (DOS, MS-Windows 3.xx, 95, 98)
  238. višekorisnički OS (UNIX)
  239.  
  240. Kriterijum 2. (broj simultanih procesa)
  241. jednoprocesni OS (DOS)
  242. višeprocesni OS (UNIX, MS-Windows)
  243.  
  244. Kriterijum 3. Kombinacija 1+2
  245. jednoprocesni, jednokorisnički OS
  246. višeprocesni, jednokorisnički OS
  247. višeprocesni, višekorisnički OS
  248.  
  249. Tipovi operativnih sistema -2
  250.  
  251. Kriterijum 4. (obrada poslova)
  252. Sistemi sa grupnom obradom (batch)
  253. Interaktivni sistemi
  254. Kombinovani sistemi
  255.  
  256. Kriterijum 5. (distribucija resursa)
  257. Centralizovani OS
  258. Mrežni OS
  259. Distribuirani OS
  260.  
  261. Kriterijum 6. (namena)
  262. OS opšte namene
  263. OS specijalne namene
  264.  
  265. Tipovi operativnih sistema -3
  266.  
  267. Kriterijum 7. (funkcionalne osobine)
  268. Veliki računarski sistemi (mainframe)
  269. Sistemi sa deljenim vremenom (timesharing)
  270. Desktop sistemi
  271. Višeprocesorski sistemi
  272. Mrežni OS
  273. Distribuirani sistemi
  274. Udruženi sistemi (clusters)
  275. Sistemi za upravljanje u realnom vremenu
  276. Ručni sistemi (handheld)
  277.  
  278. Veliki računarski sistemi
  279. Vreme pripreme se smanjuje grupisanjem sličnih poslova (batch)
  280.  
  281. Automatsko sekvenciranje poslova (AJS)
  282. (bez operatora)
  283. automatski prebacuje kontrolu
  284. sa jednog posla na drugi.
  285.  
  286. Rezidentni monitor (za AJS)
  287. početna kontrola je u monitoru (kernel)
  288. kontroliše prenos poslova
  289. kad se posao završi, kontrola se prenosi u monitor
  290. Raspored memorije za grupni sistem
  291. Multiprogramiranje (grupni sistemi)
  292. Osobine OS-a potrebne za multiprogramiranje
  293. I/O rutine podržane od sistema
  294.  
  295. Upravljač memorijom:
  296. sistem mora dodeliti memoriju
  297. za nekoliko poslova
  298.  
  299. CPU raspoređivanje:
  300. sistem mora izabrati
  301. između nekoliko poslova spremnih za odvijanje.
  302.  
  303. Dodela uređaja
  304. Sistemi sa deljenim vremenom– Interaktivno računanje
  305. CPU se deli
  306. između nekoliko poslova
  307. koji se nalaze u memoriji i na disku
  308. (CPU se dodeljuje procesu samo ako je proces u memoriji).
  309.  
  310. Proces može da se suspenduje van memorije na disk (vm)
  311.  
  312.  
  313. On-line komunikacija između korisnika i sistema je uspostavljena na sledeći način;
  314. kad operativni sistem završi izvršavanje jedne naredbe,
  315. onda očekuje sledeću “kontrolnu naredbu” od korisnika.
  316.  
  317. Vreme odziva je što je moguće kraće
  318.  
  319. Desktop sistemi
  320. Lični računar (PC):
  321. računarski sietem namenjen za jednog korisnika.
  322.  
  323. I/O uređaji – tastatura, miš, monitor, mali štampači
  324.  
  325. Podesni za rad i okrenuti korisniku (user friendly)
  326.  
  327. Mogu da prihvaju tehnologije razvijene za veće operativne sisteme
  328. vrlo često pojedinac sam koristi računar
  329. i nema potrebu za naprednom korišćenjem CPU-a
  330.  
  331. Ovde spadaju nekoliko različitih tipova operativnih sistema (Windows, MacOS, UNIX, Linux)
  332. Paralelni sistemi
  333. Multiprocesorski sistemi:
  334. sa više od jednog CPU
  335. u zatvorenoj komunikaciji
  336.  
  337. Čvrsto-povezan grupni sistem:
  338. procesori dele memoriju i sistemski časovnik;
  339. komunikacija se obično odvija
  340. preko deljive memorije
  341.  
  342. Prednosti paralelnih sistema:
  343. Povećanje brzine (manje od Nx, CPU sinhronizacija)
  344. Ekonomičnost (isto napajanje, memorija, I/O)
  345. Povećanje pouzdanosti
  346. Paralelni sistemi
  347. Simetrično multiprocesiranje (SMP)
  348. svaki procesor izvršava
  349. identičnu kopiju operativnog sistema.
  350.  
  351. veliki broj procesa se može izvršavati
  352. po jedan na svakom CPU bez gubitka performansi
  353.  
  354. mnogi moderni operativni sistemi podržavaju SMP
  355.  
  356. Asimetrično multiprocesiranje
  357. Svaki procesor ima dodeljen specifičan zadatak;
  358. glavni procesor raspoređuje i dodeljuje poslove
  359. ostalim procesorima.
  360.  
  361. Uglavnom se koristi u ekstremno velikim sistemima
  362. Arhitektura simetričnog multiprocesiranja
  363. Taksonomija za paralelne računare
  364. Proširena taksonomija
  365. UMA simetrična multiprocesorska arhitektura
  366. NUMA
  367. CC-NUMA
  368. Sun Fire E25K NUMA Multiprocessor
  369. Distribuirani sistemi
  370. Distribuira izračunavanje
  371. između nekoliko fizičkih procesora
  372.  
  373. Labavo-povezani grupni sistem
  374. svaki procesor ima svoju lokalnu memoriju
  375. procesori komuniciraju između sebe
  376. putem raznih komunikacionih linija
  377. kao što su magistrale velike brzine ili telefonske linije
  378.  
  379. Prednosti distribuiranih sistema:
  380. deljenje resursa
  381. ubrzavanje izračunavanja – load sharing
  382. pouzdanost
  383. komunikacije
  384. Distribuirani sistemi
  385. Zahtevaju mrežnu infrastrukturu
  386.  
  387. LAN ili WAN
  388.  
  389. Mogu biti realizovani kao klijent-server ili peer-to-peer sistemi.
  390.  
  391. U klijent-server arhitekturi postoje:
  392. Serveri za izračunavanje (Compute server)
  393. Serveri podataka (File server)
  394. Serveri za štampače (Printer server)
  395.  
  396.  
  397. Struktura klijent-server sistema
  398. BlueGene
  399.  
  400. Realizacija BlueGene
  401.  
  402. Red Storm
  403. Baziran na 64bit AMD Opteron CPU
  404. 3 operaciona moda
  405.  
  406. poboljšan momrijski protok
  407.  
  408. sadrži mrežni CPU u sebi
  409. RedStorm realizacija
  410. BlueGene v Red Storm
  411. Klasteri (Cluster computing)
  412. 100-1000 PC
  413.  
  414. osetno jeftiniji u odnosu na MPP
  415.  
  416. koriste:
  417. Internet mrežu
  418. i
  419. PC komponente
  420.  
  421. centalizovani i decentralizovani
  422. Google-arhitektura
  423. Udruženi sistemi (Clustered Systems)
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430. Udruženi sistemi se sastoje od dva ili više sistema koji dele storage
  431.  
  432. Obezbeđuju visoku pouzdanost (Nema zastoja)
  433.  
  434. asimetrično udruživanje:
  435. jedan server izvršava aplikaciju
  436. dok
  437. su ostali serveri neaktivni = prateći serveri (monitoring servers).
  438.  
  439. simetričnom udruživanje:
  440. svi serveri izvršavaju aplikaciju/aplikacije
  441. (svi izvrčavaju i prate rad ostalih).
  442. Real-Time sistemi
  443. Često se koriste kao kontrolni uređaji
  444. u aplikacijama specijalne namene, kao što su:
  445. kontrolisanje naučnih eksperimenata
  446. sistemi za medicinsku grafiku
  447. sistemi za industrijsku kontrolu
  448. specijalni grafički sistemi
  449. Imaju precizno definisana vremenska ograničenja
  450.  
  451. Real-Time sistemi mogu biti:
  452. hard real-time (nema diska)
  453. soft real-time (realni OS)
  454. Real-Time sistemi
  455.  
  456. Hard real-time:
  457. sekundarna memorija ograničena ili otsutna,
  458. podaci se čuvaju u RAM ili read-only memory (ROM)
  459. nema diska, tastature, ekrana, miša..
  460. nema standardnih funkcija OS
  461.  
  462. Soft real-time
  463. procesi u realnom vremenu i obični procesi
  464. mnogi OS su soft real-time
  465. limitirana upotreba u industrijskoj kontroli ili robotici
  466. upotreba u aplikacijama
  467. (multimedia, virtual reality)
  468. zahteva napredne osobine operativnih sistema
  469. Ručni sistemi (Handheld Systems)
  470. Personal Digital Assistants (PDAs)
  471.  
  472. Mobilni telefoni
  473.  
  474. Karakteristike:
  475. Ograničena memorija
  476. Spori procesori
  477. Mala veličina ekrana
  478. Migracija operativnih sistema i osobine
  479. Računarsko okruženje (Computing Environments)
  480. Tradicionalno okruženje
  481. desk-top
  482. ili
  483. time-sharing sistemi
  484.  
  485. Web-bazirano okruženje
  486.  
  487. Ugrađeno okruženje (embeded, real time)
  488.  
  489.  
  490.  
  491.  
  492. Predavanje 3: Strukture operativnih sistema
  493. Komponente sistema
  494. Servisi operativnog sistema
  495. Sistemski pozivi
  496. Sistemski programi
  497. Struktura sistema
  498. Virtuelna mašina
  499. Dizajn sistema i implementacija
  500. Generacije sistema
  501. Opšte komponente sistema
  502. Upravljanje procesima (Process Management)
  503. Upravljanje memorijom (Main Memory Management)
  504. Upravljanje podacima (File Management)
  505. Upravljanje uIazom i izlazom (I/O System Management)
  506. Upravljanje sekundarnom memorijom (Secondary Management)
  507. Umrežavanje (Networking)
  508. Zaštita (Protection System)
  509. Korisnički interfejs (Command-Interpreter System)
  510.  
  511. Upravljanje procesima
  512. Proces je program koji se izvršava
  513. Proces traži izvesne resurse, da završi zadatak:
  514. CPU vreme
  515. memoriju
  516. datoteke
  517. I/O uređaje
  518.  
  519. Operatvni sistem je odgovoran za sledeće aktivnosti u vezi sa upravljanjem procesa:
  520. Kreiranje i brisanje procesa.
  521. Suspenzija i nastavak procesa.
  522. Obezbeđuje mehanizme za:
  523. sinhronizaciju procesa
  524. komunikaciju među procesima
  525. Upravljanje memorijom
  526. Memorija je veliki niz reči ili bajtova,
  527. svaki sa svojom adresom
  528. To je spremište za brz pristup podacima
  529. deljiv za CPU i I/O uređaje
  530.  
  531. Glavna memorija je privremeni uređaj za skladištenje
  532. Ona gubi svoj sadržaj u slučaju da se sistem obori
  533.  
  534. Operativni sistem je odgovoran za sledeće aktivnosti u vezi sa upravljanjem memorijom:
  535. Čuva evidenciju koji deo memorije se trenutno koristi i ko je koristi
  536. Odlučuje koji prices će biti učitan kada memorijski prostor bude dostupan
  537. Dodeljuje i oduzima memorijski prostor po potrebi
  538. Upravljanje podacima
  539. Datoteka je skup povezanih informacija definisan od strane njenog tvorca
  540. Uopšteno, datoteke predstavljaju:
  541. programe
  542. podatke
  543.  
  544. Operativni sistem je odgovoran za sledeće aktivnosti u vezi sa upravljanjem datotekama:
  545. Kreiranje datoteke i njeno brisanje.
  546. Kreiranje direktorijuma i njegovo brisanje.
  547. Pruža podršku za rukovanje datotekama i direktorijumima.
  548. Mapira datoteke u sekundarnoj memoriji
  549. Pravi kopiju datoteke na trajnoj (ne privremenoj) memorji.
  550. Upravljanje ulazom i izlazom
  551. I/O sistem se sastoji od:
  552.  
  553. 1. Komponente za upravljanje memorijom
  554. buffering
  555. caching
  556. spooling system
  557.  
  558.  
  559. 2. Opšti drajveri za uređaje
  560.  
  561. 3. Drajveri za određeni hardver
  562. Upravljanje sekundarnom memorijom
  563. Pošto je glavna memorija (primarna memorija) privremena
  564. i suviše mala da prihvati sve podatke i programe za stalno,
  565. računarski sistem mora obezbediti sekundarnu memoriju u koju kopira podatke iz glavne memorije
  566.  
  567. Mnogi moderni računarski sistemi koriste diskove
  568. kao osnovni memorijski medijum,
  569. za programe i podatke
  570.  
  571. Operativni sistem je odgovoran za sledeće aktivnosti u vezi sa upravljanjem sekundarnom memorijom:
  572. Upravljanje slobodnim prostorom
  573. Dodela memorije
  574. Disk scheduling
  575. Umrežavanje (Distribuirani sistemi)
  576. Distribuirani sistem je:
  577. skup procesora
  578. koji ne dele memoriju ili sistemski časovnik
  579. svaki procesor ima svoju lokalnu memoriju
  580.  
  581. Procesori se u sistemu spajaju kroz komunikacionu mrežu
  582.  
  583. Komunikacija se odvija korišćenjem protokola
  584.  
  585. Distribuirani sistem obezbeđuje korisniku da pristupa raznim resursima sistema
  586.  
  587. Pristup deljenim resursima obezbeđuje:
  588. Brže izračunavanje
  589. Povećanu upotrebljivost podataka
  590. Veću pouzdanost
  591. Zaštita
  592. Zaštita predstavlja mehanizam
  593. koji kontroliše pristup
  594. programa
  595. procesa
  596. korisnika
  597. sistemu i korisničkim resursima.
  598.  
  599. Mehanizam za zaštitu mora:
  600.  
  601. praviti razliku između
  602. autorizovane i
  603. neautorizovane upotrebe
  604.  
  605. obezbediti način da to sprovede
  606. Korisnički interfejs (UI)
  607. Tekstualni korisnički interfejs
  608. komandna linija
  609. shell (u UNIX-u)
  610.  
  611. Mnoge komande se operativnom sistemu zadaju preko kontrolnih naredbi koje obavljaju:
  612. kreiranje procesa i upravljanje
  613. upravljanje ulazom i izlazom
  614. upravljanje sekundarnom memorijom
  615. upravljanje glavnom memorijom
  616. pristup sistemu datoteka
  617. zaštita
  618. umrežavanje
  619. GUI
  620. Servisi operativnog sistema
  621. Izvršavanje programa:
  622. sposobnost sistema
  623. da učita program u memoriju i
  624. da ga pokrene
  625.  
  626. I/O operacije:
  627. pošto korisnički programi nemogu da izvršavaju I/O operacije direktno,
  628. operativni sistem mora obezbediti neki način da izvrši I/O operacije
  629.  
  630. Rukovanje sistemom datoteka:
  631. sposobnost programa da čita, upisuje, kreira, i briše datoteke
  632.  
  633. Komunikacija:
  634. razmena informacija između procesa koji se uzvršavaju
  635. na istom računaru ili
  636. na različitim sistemima koji su umreženi
  637. Implementira se preko deljene memorije ili sistema poruka
  638.  
  639. Otkrivanje grešaka:
  640. garantuje ispravno izračunavanje
  641. tako što otkriva greške u CPU i memoriji, u I/O uređajima, ili u korisničkim programima
  642. Sistemski pozivi (System Calls)
  643. Sistemski pozivi obezbeđuju interfejs
  644. između programa koji se izvršava i operativnog sistema
  645. Generalno, realizuju se u asembleskom jeziku.
  646. Noviji programski jezici za sistemsko programiranje
  647. takođe omogućavaju realizaciju sistemskih poziva u C, C++
  648.  
  649. Postoje tri generalna metoda za prosleđivanje parametara između programa koji se izvršava i operativnog sistema.
  650. 1. Prosleđivanje parametara u registrima procesora
  651. 2. Postavljanjem parametara u memorijskoj tabeli, a adresa tabele se prosleđuje u registru procesora.
  652. 3. Postavljanjem parametara na vrh steka (push), koje operativni sistem skida sa steka.
  653. Passing of Parameters As A Table
  654. Tipovi sistemskih poziva
  655. Kontrola procesa
  656.  
  657. Upravljanje datotekama
  658.  
  659. Upravljanje uređajima
  660.  
  661. Rukovanje informacijama
  662.  
  663. Komunikacije
  664. MS-DOS Execution
  665. UNIX Running Multiple Programs
  666. Komunikacioni modeli
  667. Unutrašnja struktura OS-a
  668. Monolitni sistemi (Monolithic Systems)
  669. velika zbrka (big mess)
  670. nema slojeva, nema ograničenog pristupa
  671. parametri sistemskog poziva se smeštaju u određena mesta
  672.  
  673. Slojevita realizacija (Layered systems)
  674.  
  675. Mikrokernel arhitektura
  676.  
  677. Klijent-server arhitektura
  678.  
  679. Slojevita realizacija
  680. Operativni sistem je podeljen na različite slojeve (layer):
  681. svaki sloj se gradi na slojeve ispod njega
  682. Najniži sloj (sloj 0), je hardver
  683. najviši (sloj N) je korisnički interfejs
  684.  
  685. Sa ovakvim modularnim konceptom,
  686. slojevi koriste
  687. funkcije i servise
  688. jedino sa nižih nivoa
  689. Sloj operativnog sistema
  690. Struktura MS-DOS sistema
  691. MS-DOS
  692. velika funkcionalnost
  693. u malom prostoru
  694. nije podeljen na module
  695.  
  696. Iako MS-DOS ima neku strukturu,
  697. njegov interfejs i nivo funkcionalnosti
  698. nisu dobro odvojeni
  699. MS-DOS slojevita struktura
  700. Mikrokernel sistemska struktura
  701. Mnoge funkcije kernela se pomeraju u korisnički prostor
  702.  
  703. Korisnički moduli komuniciraju između sebe koristeći sistem poruka (message passing)
  704.  
  705. Dobre osobine:
  706. - kernel se lako proširuje i optimizuje
  707. - sistem se lako prenosi na drugu računarsku arhitekturu
  708. - mnogo je pouzdaniju (manje koda se izvršava u kernelskom modu)
  709. - mnogo je sigurniji
  710. Struktura UNIX sistema
  711.  
  712. UNIX operativni sistem ima ograničenu strukturu.
  713.  
  714. UNIX OS se sastoji od 2 odvojena dela.
  715. 1. Sistemski programi
  716. 2. Kernel
  717. se sastoji od:
  718. interfejsa sistemskih poziva na višem nivou
  719. fizičkog hardvera na nižem
  720. Obezbeđuje podršku za:
  721. sistem datoteka
  722. CPU raspoređivanje
  723. upravljanje memorijom
  724. i ostale funkcije operativnog sistema
  725. veliki broj funkcija za jedan nivo
  726. Struktura UNIX sistema
  727. OS/2 slojevita struktura
  728. Windows NT Client-Server Structure
  729. Virtuelne mašine
  730. Virtuelna mašina je zasnovana
  731. na slojevitoj organizaciji
  732. Tretira
  733. realni hardver i realni kernel
  734. kao da su hardver za operativni sistem koji predstavlja
  735.  
  736. Virtelna mašina obezbeđuje
  737. identičan interfejs
  738. kao da je realni hardver ispod virtuelne mašine
  739.  
  740. Operativni sistem stvara iluziju
  741. o višestrukim procesima ili OS
  742. koji se izvršavaju na svom virtuelnom procesoru
  743. i svojoj virtuelnoj memoriji.
  744. Virtuelne mašine (2)
  745. Resursi računara
  746. se dele
  747. da kreiraju virtuelne mašine.
  748.  
  749. 1. CPU scheduling može stvoriti iluziju da korisnici imaju svoj procesor
  750.  
  751. 2. Spooling i sistem datoteka
  752. može obezbediti virtuelne čitače kartica
  753. i virtuelne linijske štampače.
  754.  
  755. 3. Vremenski deljeni korisnički terminal
  756. radi
  757. kao konzola za operatera virtuelne mašine
  758. Koncept virtuelne mašine
  759. Prednosti i mane virtuelnih mašina
  760. Koncept virtuelne mašine obezbeđuje
  761. kompletnu zaštitu sistemskih resursa
  762. pošto su sve virtuelne mašine izolovane od ostalih virtuelnih mašina
  763. Ova izolacija, sprečava direktno deljenje resursa
  764.  
  765. Virtuelne mašine su perfektan razvojni sistem
  766. za realizaciju novih operativnih sistema
  767. Sistem se razvija na virtuelnoj mašini
  768. a ne na realnoj
  769. i nemože doći do narušavanja normalnih sistemskih operacija
  770.  
  771. Koncept virtuelne mašine je komplikovan za realizaciju
  772. zato što treba egzaktno
  773. simulirati hardver koga reprezentuje virtulena mašina
  774. Ciljevi kod projektovanja OS-a
  775. Korisnički ciljevi: operativni sistem treba da bude podesan za:
  776. korišćenje
  777. lak za učenje
  778. pouzdan
  779. bezbedan
  780. brz
  781.  
  782. Sistemski ciljevi – operativni sistem treba da bude jednostavan za:
  783. projektovanje
  784. implementaciju i održavanje
  785. fleksibilan
  786. pouzdan
  787. bez grešaka
  788. efikasan
  789. Implementacija operativnog sistema
  790. Tradicionalno, operativni sistemi su pisani na asemblerskom jeziku
  791. Danas se operativni sistemi pišu u višim programskim jezicima.
  792.  
  793. Implementacija u višem programskom jeziku:
  794. izvorni kod se mnogo brže piše
  795. izvorni kod je mnogo kompaktiniji
  796. Kod se lakše razume i lakše se otklanjaju greške (debug)
  797.  
  798. Operativni sistem napisan na višem programskom jeziku se mnogo lakše prenosi na drugu računarsku arhitekturu, odnosno drugu vrstu procesora.
  799. Generisanje operativnog sistema (SYSGEN)
  800. Operativni sistemi se generišu da rade
  801. za više klasa računara;
  802. operativni sistem mora da se konfiguriše za svaku klasu procesora, posebno.
  803.  
  804. SYSGEN program obezbeđuje informacije:
  805. za hardversku konfiguraciju
  806. za koju će se generisati operativni sistem.
  807.  
  808. Booting – strartovanje operativnog sistema punjenjem kernela sa diska u memoriju.
  809.  
  810. Bootstrap program – kod koji se čuva u ROM-u
  811. sposoban je da:
  812. locira kernel
  813. napuni kernel u memoriju
  814. otpočne izvršenje
  815.  
  816.  
  817. Uvod u procese
  818. Pojam procesa
  819.  
  820. Raspoređivanje procesa
  821.  
  822. Operacije nad procesima
  823.  
  824. Saradnja među procesima
  825.  
  826. Interprocesna komunikacija (IPC)
  827.  
  828. Komunikacija u klijent-server sistemima
  829. Pojam procesa
  830. Operativni sistem izvršava mnoštvo programa:
  831. Grupni sistemi – jobs - poslovi
  832. Time-shared sistemi – korisnički programi ili zadaci (tasks)
  833. U literaturi se termini job, task i process koriste identično.
  834.  
  835. 1. def: Proces je program u stanju izvršavanja (running)
  836. (kontekst procesa: proces se izvršava u svom kontekstu).
  837. Proces sadrži:
  838. CPU registre {programski brojač i ostali CPU registri}
  839. Memorijsku sekciju
  840. tekst
  841. stek (stack)
  842. sekcija podataka
  843. I/O resursi: {datoteke, I/O uređaji}
  844. OS struktura
  845. 2. def: Proces je unija 4 konteksta:
  846. Register context
  847. Memory context
  848. IO context
  849. OS kontext
  850. Stanja procesa
  851. U toku izvršavanja proces menja stanja:
  852.  
  853. New (novi): Proces je upravo kreiran.
  854.  
  855. Ready (spreman): Proces je spreman za rad ali čeka da mu se dodeli CPU.
  856.  
  857. Running (izvršava se): Procesove Instrukcije se upravo izvršavaju (odnosi se na CPU)
  858.  
  859. Waiting (čekanje): Proces čeka da se neki događaj izvrši.
  860.  
  861. Terminated (završio): Proces je završio izvršavanje.
  862. Dijagram stanja procesa
  863. Running stanje i Dual-Mode Operation
  864. Mode Bit se ubacuje u računarski hardver
  865. da ukazuje na trenutni mode:
  866. monitor mode (0)
  867. ili
  868. user mod (1)
  869. Kada se javi greška ili prekid hardver prebacije u monitor mod.
  870. Sistemski pozivi
  871.  
  872. PCB (Process Control Block)
  873. Informacije vezane za svaki proces:
  874.  
  875. Stanje procesa
  876.  
  877. Programski brojač
  878.  
  879. Sadržaj CPU registara
  880.  
  881. Informacije o memoriji procesa
  882.  
  883. Lista otvorenih datoteka
  884.  
  885. Statističke informacije
  886.  
  887. Status I/O resursa
  888. PCB (Process Control Block)
  889. CPU prebacivanje od procesa do procesa
  890. Queue: red čekanja
  891. Red čekanja za poslove (Job queue):
  892. obuhvata sve procese u sistemu
  893.  
  894. Red čekanja za spremne procese (Ready queue):
  895. obuhvata sve procese
  896. smeštene u glavnoj memoriji
  897. spremne i čekaju na izvršenje
  898.  
  899. Redovi čekanja za I/O uređaje (Device queues):
  900. obuhvata procese koji
  901. čekaju na dodelu I/O uređaja
  902.  
  903. Proces se kreće između različitih redova čekanja
  904. Ready Queue and Various I/O Device Queues
  905. Prikaz raspoređivanja procesa
  906. Raspoređivači (Schedulers)
  907. Long-term (dugi, dugoročni) raspoređivač
  908. (ili raspoređivač poslova):
  909. selektuje procese
  910. i dovodi ih
  911. u red čekanja za spremne poslove (Ready queue)
  912.  
  913. Short-term (kratki, kratkoročni) raspoređivač
  914. (ili CPU raspoređivač):
  915. seletuje proces
  916. koji će se sledeći izvršiti
  917. i dodeljuje mu CPU
  918. Blok dijagram za medium-term (srednji) raspoređivač
  919. Raspoređivači (Schedulers)
  920. kratkoročni raspoređivač se poziva veoma često
  921. (millisekunde)  (mora biti brz).
  922.  
  923. dugoročni raspoređivač se ne poziva često
  924. (sekunde, minuti)  (može biti spor).
  925.  
  926. dugoročni raspoređivač reguliše stepen multiprogramiranja
  927.  
  928. Procese možemo podeliti:
  929. I/O intenzivne procese (IO bound process):
  930. najveći deo njihovog vremena izvršavanja otpada na I/O cikluse,
  931. relativno mala upotreba CPU
  932.  
  933. CPU intenzivne procese (CPU bound process):
  934. najveći deo svog vremena korsite na CPU izračunavanja,
  935. veoma velika upotreba CPU
  936. Prebacivanje konteksta (Context Switch)
  937. Kada se CPU prebacuje na drugi proces
  938. sistem mora sačuvati stanje starog procesa
  939. i
  940. učitati sačuvano stanje za novi proces
  941.  
  942. Prebacivanje konteksta (Context switch) =
  943. pamti stanje starog procesa
  944. +
  945. učitava sačuvano stanje novog procesa
  946.  
  947. Prebacivanje konteksta je gubitak vremena (overhead);
  948. sistem ne može raditi koristan posao dok prebacuje
  949.  
  950. Vreme zavisi od hardverskih performansi
  951. Kreiranje procesa (Process Creation)
  952. Kreiranje:
  953. Roditelj proces kreira dete proces
  954. koji, dalje kreira druge procese
  955. i formira stablo procesa
  956.  
  957. Deljenje resursa (Resource sharing)
  958. Roditelj i dete procesi dele sve resurse
  959. Dete proces deli podskup od roditeljskih resursa
  960. Roditelj i dete proces ne dele resurse
  961.  
  962. Izvršavanje (Execution)
  963. Roditelj i dete procesi se izvršavaju konkurentno
  964. Rioditelj proces čeka da dete proces završi aktivnosti
  965.  
  966. Kreiranje procesa
  967. Memorijski adresni prostor
  968. Dete proces kopira adresni prostor roditelja
  969. Dete proces dobija program koji puni njegov adresni prostor.
  970.  
  971. UNIX primeri
  972.  
  973. fork sistemski poziv kreira novi proces
  974.  
  975. exec sistemski poziv se koristi posle fork
  976. koji puni adresni prostor novim programom
  977. Kreiranje procesa (fork)
  978.  
  979. /* fork drugi proces*/
  980. pid = fork ();
  981.  
  982. if (pid == 0 )
  983. { /*dete proces*/
  984. execlp(“/bin/ls”, “ls”, NULL);
  985. }
  986.  
  987. else /*roditelj proces*/
  988.  
  989. /*roditelj će čekati da dete završi*/
  990. wait(NULL);
  991. printf(“Dete je završilo");
  992. exit (0);
  993. } }
  994. Stablo procesa na UNIX sistemu
  995. Završetak procesa (Process Termination)
  996. (exit) = normal termination
  997. Proces izvršava poslednju aktivnost i
  998. traži od operativnog sistema da ga obriše (exit)
  999. Dete proces vraća izlazne podatke roditelju (preko wait)
  1000. Resursi koji su pripadali procesu detetu se oslobađaju
  1001.  
  1002. (abort) = abnormal termination
  1003. Roditelj proces može prekinuti izvršavanje dece procesa, ako:
  1004. Dete proces je prekoračilo dodeljene resurse
  1005. Aktivnost koju obavlja dete proces nije više potrebna
  1006. Ako proces roditelj završi aktivnosti:
  1007. neki operativni sistemi ne dozvoljavaju da dete proces nastavi sa izvršavanjem ako je roditelj završio
  1008. Nasilno prekidanje (Cascading termination)
  1009. Saradnja među procesima
  1010. Nezavisni procesi:
  1011. nemogu uticati ili ne trpe uticaj
  1012. od strane drugih procesa.
  1013. (ne dele podatke, ili resurse)
  1014.  
  1015. Kooperativni procesi:
  1016. mogu uticati ili da se na njih utiče
  1017. od strane drugih procesa.
  1018. (dele podatke, ill resurse)
  1019.  
  1020. Prednosti saradnje među procesima:
  1021. Deljenje informacija
  1022. Ubrzavanje rada
  1023. Modularnost
  1024. Pogodnost
  1025. Problem Proizvođač-Potrošač
  1026. Paradigma za kooperativne procese,
  1027. proizvođač proces proizvodi informacije
  1028. potrošač koji troši informacije
  1029. Bafer (buffer)
  1030. bafer beskonačnog kapaciteta (unbounded-buffer) nema ograničenje u veličini bafera.
  1031. ograničeni bafer (bounded-buffer) ima ograničenu veličinu bafera
  1032.  
  1033. Sinhronizacija procesa:
  1034. turn
  1035. flags
  1036. semaphores
  1037. monitor
  1038. IPC (sistem poruka)
  1039. Bounded-Buffer – Rešenje za deljenje memorije
  1040. Deljeni podaci
  1041. #define BUFFER_SIZE N
  1042. typedef struct
  1043. {
  1044. . . .
  1045. } item;
  1046. item buffer[BUFFER_SIZE];
  1047. int in = 0; #first free buffer position
  1048. int out = 0; #first full buffer position
  1049.  
  1050. Rešenje je tačno, ali može koristiti samo BUFFER_SIZE-1 elemenata
  1051. Bounded-Buffer – Proces proizvođač
  1052.  
  1053. item nextProduced; int in = 0; #in ->first free buffer position
  1054. int out = 0; #out->first full buffer position
  1055. while (1)
  1056. {
  1057. while (((in + 1) % BUFFER_SIZE) == out)
  1058.  
  1059. ; /* buffer is full, do nothing */
  1060.  
  1061. buffer[in] = nextProduced;
  1062.  
  1063. in = (in + 1) % BUFFER_SIZE;
  1064.  
  1065. }
  1066.  
  1067.  
  1068. Bounded-Buffer – Proces potrošač
  1069.  
  1070. item nextConsumed; int in = 0; #first free buffer position
  1071. int out = 0; #first full buffer position
  1072.  
  1073. while (1)
  1074. {
  1075.  
  1076. while (in == out) #empty
  1077. ; /* do nothing */
  1078.  
  1079. nextConsumed = buffer[out];
  1080.  
  1081. out = (out + 1) % BUFFER_SIZE;
  1082. }
  1083.  
  1084.  
  1085.  
  1086.  
  1087. Interprocesna komunikacija (IPC)
  1088. Mehanizam za procese koji omogućava da:
  1089. komuniciraju
  1090.  
  1091. sinhronizuju njihove akcije
  1092.  
  1093. Tri metode:
  1094. signali (UNIX)
  1095.  
  1096. deljena memorija
  1097.  
  1098. sistem poruka
  1099. Komunikacioni model
  1100. (IPC): poruke
  1101. Sistem poruka:
  1102. procesi razmenjuju poruke
  1103. procesi komuniciraju sa ostalim procesima
  1104. bez deljenja memorije
  1105.  
  1106. IPC sistem obezbeđuje dve operacije:
  1107. slanje poruke (send message) – poruke fiksne ili promenljive veličine
  1108. prijem poruke (receive message)
  1109.  
  1110. Ako procesi P i Q žele da komuniciraju, oni trebaju da:
  1111. uspostave komunikacioni link između njih
  1112. poruke razmenjuju preko send/receive operacija
  1113.  
  1114. Implementacija komunikacionog linka:
  1115. fizička (npr., deljena memorija, hardverska magistrala)
  1116. logička (npr., logičke osobine)
  1117. Pitanja vezana za implementaciju
  1118. Kako su linkovi uspostavljeni?
  1119.  
  1120. Da li se linku mogu pridružiti više od dva procesa?
  1121.  
  1122. Koliko linkova može postojati
  1123. između svakog para komunikacionih procesa?
  1124.  
  1125. Šta je kapacitet linka?
  1126.  
  1127. Da li je veličina poruke koju link može preneti: fiksna ili promenljiva?
  1128.  
  1129. Da li je link unidirectional ili bi-directional?
  1130. Direktna komunikacija
  1131. Procesi trebaju da imaju ime i to svaki različito:
  1132. send (P, message) – poslaće poruku procesu P
  1133.  
  1134. receive (Q, message) – primiće poruku od procesa Q
  1135.  
  1136. Osobine direktne komunikacije:
  1137.  
  1138. Veze se uspostavljaju automatski
  1139.  
  1140. Veza je udružena sa tačno jednim parom komunikacionih procesa
  1141.  
  1142. Između svakog para postoji tačno jedna veza
  1143.  
  1144. Veza može biti unidirectional, ali se koristi i bi-directional
  1145. Indirektna komunikacija
  1146. Poruke se šalju i primaju preko poštanskih sadučića (mailboxes)
  1147. (ili preko portova)
  1148.  
  1149. Svako sanduče ima jedinstven id
  1150.  
  1151. Procesi mogu komunicirati samo ako dele sanduče
  1152.  
  1153. Osobine indirektne komunikacije:
  1154.  
  1155. Veza se uspostavlja samo ako procesi dele zajedničko sanduče
  1156.  
  1157. Vezi se mogu pridružiti više procesa
  1158.  
  1159. Između svakog para može postojati više različitih veza
  1160.  
  1161. Veza može biti unidirectional ili bi-directional.
  1162. Indirektna komunikacija
  1163. Operacije
  1164. kreiranje novog sandučeta
  1165.  
  1166. slanje i primanje poruka kroz sanduče
  1167.  
  1168. brisanje sandučeta
  1169.  
  1170. Naredbe za slanje:
  1171.  
  1172. send(A, message) – poslaće poruku u sanduče A
  1173.  
  1174. receive(A, message) – primiće poruku iz sanduče A
  1175. Indirektna komunikacija
  1176. Deljenje sandučeta
  1177. P1, P2, i P3 dele sanduče A.
  1178. P1, šalje; P2 i P3 primaju.
  1179. Ko je dobio poruku?
  1180.  
  1181. Rešenje:
  1182. 1. Dozvoliti da se link uspostavlja između najviše dva procesa
  1183.  
  1184. 2. Dozvoliti da samo jedan proces može obaviti prijem u jednom trenutku
  1185.  
  1186. 3. Dozvoliti da sistem proizvoljno bira primaoca
  1187. Pošiljaoc je obavestio ko je bio primaoc.
  1188. Sinhronizacija
  1189. Sistem poruka može biti blokirajući ili neblokirajući
  1190.  
  1191. blokirajući funkcioniše sinhrono
  1192.  
  1193. neblokirajući funkcioniše asinhrono
  1194.  
  1195. slanje i primanje poruka može biti:
  1196. blokirajuće
  1197. ili
  1198. neblokirajuće
  1199. Baferisanje
  1200. Message Buffer = Red u kom poruka čeka ;
  1201. realizacija na jedan od 3 načina:
  1202. Nulti kapacitet (Zero capacity): 0 poruka se čeka Pošiljalac mora čekati primaoca (rendezvous).
  1203.  
  1204. Ograničen kapacitet (Bounded capacity): ograničena dužina na n poruka Pošiljalac mora da sačeka ako je bafer pun
  1205.  
  1206. Neograničen kapacitet (Unbounded capacity) – neograničena dužina Pošiljalac nikad ne čeka
  1207.  
  1208. Potvrda: (P proces šalje poruku procesu Q)
  1209. Proces P Proces Q
  1210. send(Q, message) receive(P, messages)
  1211. receive(Q, message) send(P, “acknowledgment”)
  1212.  
  1213. Osobine poruka
  1214. Postoje tri vrste poruka koje razmenjuju procesi:
  1215. Fiksne veličine
  1216. Promenljive veličine
  1217. Tipske poruke
  1218.  
  1219. Druge osobine (waiting):
  1220. Nikad ne čeka
  1221. Čeka za odgovor (moguć deadlock)
  1222.  
  1223. Izgubljene poruke (lost messages)
  1224. otkrivanje
  1225. ponovno prenošenje
  1226.  
  1227. Komunikacija u klijent-server sistemima
  1228. Sockets
  1229.  
  1230. Poziv udaljene procedure (Remote Procedure Calls -RPC)
  1231.  
  1232.  
  1233. Sockets
  1234. BSD način za IPC između različitih mašina
  1235.  
  1236. Socket se definiše kao krajnja tačka komunikacije
  1237.  
  1238. Socket = Povezuje IP adresu i port
  1239.  
  1240. Socket 161.25.19.8:1625 se obraća
  1241. portu 1625
  1242. na hostu 161.25.19.8
  1243.  
  1244. Komunikacija se odvija između para socketa
  1245. Socket model
  1246. Socket komunikacija
  1247. Poziv udaljene procedure (RPC)
  1248. Poziv udaljene procedure (RPC) je abstrakcija poziva procedure
  1249. između procesa na mrežnom sistemu
  1250.  
  1251. Stubovi: klijentska strana je proxy za aktuelnu proceduru na serveru
  1252.  
  1253. Stub klijentske strane:
  1254. pronalazi server
  1255. šalje parametre
  1256.  
  1257. Stub serverske strane:
  1258. prima ovu poruku
  1259. raspakuje parametre
  1260. izvršava proceduru na serveru.
  1261. Izvršavanje RPC
  1262.  
  1263.  
  1264.  
  1265. Niti (Threads)
  1266. Opšti pregled
  1267.  
  1268. Višenitni modeli (Multithreading Models)
  1269.  
  1270. Osobine niti
  1271.  
  1272. Pthreads
  1273.  
  1274. Solaris 2 niti
  1275.  
  1276. Windows 2000 niti
  1277.  
  1278. Linux niti
  1279.  
  1280. Jedno-nitni i više-nitni procesi
  1281. Editor (single/multi threaded)
  1282. Web-Browser (single/multi threaded)
  1283. Dobre osobine
  1284. Vreme odziva (Responsiveness)
  1285. Deljenje resursa (Resource Sharing)
  1286. Ekonomičnost
  1287. Bolje iskorišćenje višeprocesorske arhitekture
  1288. Korisničke niti (User Threads)
  1289. Nitima upravlja korisnička biblioteka za niti
  1290. Primeri:
  1291. - POSIX Pthreads
  1292.  
  1293. - Mach C-threads
  1294.  
  1295. - Solaris threads
  1296. Kernelske niti (Kernel Threads)
  1297. Podržava ih kernel
  1298. Primeri:
  1299. - Windows 95/98/NT/2000
  1300.  
  1301. - Solaris
  1302.  
  1303. - Tru64 UNIX
  1304.  
  1305. - BeOS
  1306.  
  1307. - Linux
  1308. Višenitni modeli
  1309. Više u jednu (Many-to-One)
  1310. Jedna u jednu (One-to-One)
  1311. Više u više (Many-to-Many)
  1312.  
  1313. Model više u jednu
  1314. Više korisničkih niti
  1315. mapira se u
  1316. jednu kernelsku nit
  1317. Koristi se na sistemima koji ne podržavaju kernelske niti
  1318. Model više u jednu
  1319. Model jedna u jednu
  1320. Svaka korisnička nit se mapira u kernelsku nit
  1321. Primeri:
  1322.  
  1323. - Windows 95/98/NT/2000
  1324.  
  1325. - OS/2
  1326. Model jedna u jednu
  1327. Model više u više
  1328. Dozvoljava da više korisničkih niti
  1329. bude mapirano
  1330. u više kernelskih niti
  1331.  
  1332. Dozvoljava operativnom sistemu
  1333. da kreira
  1334. dovoljan broj kernelskih niti
  1335.  
  1336. Solaris 2
  1337.  
  1338. Windows NT/2000 sa ThreadFiber paketom
  1339. Model više u više
  1340. Osobine niti
  1341. Fork() i exec() sistemski pozivi
  1342.  
  1343. Prekidanje niti
  1344.  
  1345. Upravljanje signalima
  1346.  
  1347. Gomile niti (Thread pools)
  1348.  
  1349. Specifični podaci za nit (Thread specific data)
  1350. Pthreads
  1351. POSIX standard (IEEE 1003.1c) = pravila za:
  1352. kreiranje niti
  1353. i
  1354. njihovu sinhronizaciju
  1355.  
  1356. Postoji API i Pthread biblioteka na korisničkom nivou, koja programeru omogućava kreiranje niti
  1357.  
  1358. Prihvaćeni su u UNIX operativnim sistemima
  1359.  
  1360. Solaris 2 niti
  1361. Solaris procesi
  1362. Windows 2000 niti
  1363. Primenjuju one-to-one mapiranje
  1364.  
  1365. Svaka nit sadrži:
  1366. - nit id
  1367. - registarski set
  1368. - korisnički stek i kernelski stek
  1369. - mesto za privatne poruke
  1370. Linux niti
  1371. Linux koristi termin tasks umesto threads
  1372.  
  1373. Kreiranje niti se izvršava kroz clone() sistemski poziv.
  1374.  
  1375. Clone() dozvoljava
  1376. da dete proces deli adresni prostor
  1377. sa roditeljem procesom
  1378.  
  1379.  
  1380.  
  1381. Raspoređivanje procesa (CPU Scheduling)
  1382. Osnovni koncepti
  1383.  
  1384. Kriterijumi za raspoređivanje
  1385.  
  1386. Algoritmi za raspoređivanje
  1387.  
  1388. Raspoređivanje u višeprocesorskoj okolini
  1389.  
  1390. Raspoređivanje u realnom vremenu
  1391.  
  1392. Ispitivanje algoritama
  1393. Osnovni koncepti
  1394. Maksimalno iskorišćenje CPU-a
  1395. postiže se
  1396. multiprogramiranjem
  1397.  
  1398. CPU–I/O Burst Cycle:
  1399. Izvršavanje procesa se sastoji od
  1400. ciklusa CPU izvršavanja
  1401. i
  1402. ciklusa čekanja na I/O operacije
  1403.  
  1404. CPU burst distribucija
  1405.  
  1406. malo dugačkih-burst procesa
  1407.  
  1408. mnogo kratkih-burst procesa
  1409. Naizmenična sekvenca CPU i I/O Bursts
  1410. Histogram CPU-burst vremena
  1411. CPU raspoređivač (CPU Scheduler)
  1412. Selektuje iz reda čekanja procese u memoriju
  1413. koji su spremni da se izvrše,
  1414. i dodeljuje CPU jednom od njih
  1415.  
  1416.  
  1417. CPU raspoređivanje se dešava kada se proces:
  1418. 1. Prebacuje iz stanja izvršavanja u blokirano stanje
  1419.  
  1420. 2. Prebacuje iz stanja izvršavanja u stanje spremnosti
  1421.  
  1422. 3. Prebacuje iz blokiranog stanja u stanje spremnosti
  1423.  
  1424. 4. Završi svoje aktivnosti
  1425.  
  1426. Raspoređivanje koje se dešava pod okolnostima 1 i 4 je bez prekidanja (non-preemptive)
  1427.  
  1428. Raspoređivanje pod drugim okolnostima je preemptive
  1429. Dispečer (Dispatcher)
  1430. Dispečer modul
  1431. daje kontrolu CPU procesu
  1432. koji je izabran od strane kratkoročnog raspoređivača
  1433.  
  1434. Funkcije dispečera:
  1435. prebacivanje konteksta
  1436.  
  1437. prebacivanje u korisnički režim rada
  1438.  
  1439. skok na odgovarajuću lokaciju izabranog procesa koji će omogućiti njegovo izvršavanje
  1440.  
  1441. Kašnjenje dispečera (Dispatch latency):
  1442. vreme koje je potrebno dispečeru
  1443. da zaustavi jedan proces i
  1444. startuje izvršavanje drugog.
  1445. Kriterijumi za raspoređivanje
  1446. Iskorišćenje CPU
  1447. održavati CPU zauzetim (busy) kad god je moguće
  1448.  
  1449. Propusna moć (Throughput):
  1450. broj procesa izvršenih u jedinici vremena
  1451.  
  1452. Vreme za kompletiranje procesa (Turnaround time, TA, ATA):
  1453. ukupna količina vremena potrebna da se izvrši jedan proces
  1454.  
  1455. Vreme čekanja (Waiting time, WT, AWT) –
  1456. ukupno vreme koje proces provede u redu čekanja spremnih procesa (ready queue)
  1457.  
  1458. Vreme odziva (Response time)
  1459. vreme kada se uputi neki zahtev
  1460. pa do pojave prvih rezultatata procesa
  1461. Optimizacija kriterijuma
  1462. Maksimalno iskorišćenje CPU-a
  1463.  
  1464. Maksimalna propusna moć
  1465.  
  1466. Minimalno vreme za kompletiranje procesa
  1467.  
  1468. Minimalno vreme čekanja
  1469.  
  1470. Mininimalno vreme odziva
  1471. Algoritmi
  1472. FCFS
  1473.  
  1474. SJF <-> SRTF
  1475.  
  1476. RR
  1477.  
  1478. Priority
  1479.  
  1480. Multilevel
  1481. First-Come, First-Served (FCFS) raspoređivanje
  1482. Proces Vreme izvršavanja
  1483. P1 24
  1484. P2 3
  1485. P3 3
  1486. Pretpostavimo da procesi dolaze sledećim redom: P1 , P2 , P3 Gantt karta za raspoređivanje je:
  1487.  
  1488. Vreme čekanja za P1 = 0; P2 = 24; P3 = 27
  1489.  
  1490. Srednje vreme čekanja: (0 + 24 + 27)/3 = 17
  1491. FCFS raspoređivanje
  1492. Pretpostavimo da procesi dolaze sledećim redom:
  1493. P2 , P3 , P1 .
  1494. Gantt karta za raspoređivanje je:
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501. Vreme čekanja za P1 = 6; P2 = 0; P3 = 3
  1502.  
  1503. Srednje vreme čekanja: (6 + 0 + 3)/3 = 3
  1504.  
  1505. Mnogo bolje nego prošli slučaj (AWT je bio 17)
  1506.  
  1507. Efekat konvoja:
  1508. kratki procesi
  1509. iza
  1510. dugačkih procesa
  1511. Shortest-Job-First (SJF) raspoređivanje
  1512. Svaki proces određuje dužinu svog sledećeg CPU ciklusa
  1513.  
  1514. Ove dužine služe za raspoređivanje procesa sa najkraćim vremenom
  1515.  
  1516. Dve šeme:
  1517. SJF: bez pretpražnjenja (nonpreemptive):
  1518. kada je CPU dat procesu
  1519. N emože biti oduzet
  1520. dok se proces ne izvrši do kraja.
  1521.  
  1522. SRTF: sa pretpražnjenjem (preemptive):
  1523. ako dođe novi proces
  1524. sa vremenom izvršavanja manjim od
  1525. preostalog vremena izvršavanja tekućeg procesa,
  1526. nastaje predpražnjenje.
  1527.  
  1528. Ova šema je poznata kao Shortest-Remaining-Time-First (SRTF)
  1529.  
  1530. SJF je optimalan – daje najmanje srednje vreme čekanja za dati skup procesa.
  1531. Određivanje dužine sledećeg CPU ciklusa
  1532. Može se samo proceniti dužina
  1533.  
  1534. Procena se obavlja tako što se
  1535. na bazi svih prethodnih CPU ciklusa,
  1536. odredi eksponencijalna srednja vrednost
  1537.  
  1538.  
  1539.  
  1540. Primer eksponencijalne srednje vrednosti
  1541.  =0
  1542. n+1 = n
  1543. Skorija istorija se neračuna (stvarne dužine nemaju efekta)
  1544.  
  1545.  =1
  1546. n+1 = tn
  1547. Samo poslednji CPU ciklus se računa
  1548.  
  1549. Ako proširimo formulu dobijamo:
  1550. n+1 =  tn+(1 - )  tn -1 + …
  1551. +(1 -  )j  tn -j + …
  1552. +(1 -  )n t0 +(1 -  )n+10
  1553.  
  1554. Ako su oba  i (1 - ) manje od ili jednako 1,
  1555. svaki sledeći termin
  1556. je manje težine od prethodnika
  1557. Procena trajanja sledećeg CPU ciklusa
  1558. Primer SJF bez pretpražnjenja
  1559. novo raspoređivanje: samo kad proces završi
  1560. Proces Vreme nailaska Vreme izvršavanja
  1561. P1 0.0 7
  1562. P2 2.0 4
  1563. P3 4.0 1
  1564. P4 5.0 4
  1565. SJF (non-preemptive)
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572. Srednje vreme čekanja = (0 + 6 + 3 + 7)/4 = 4
  1573. (gleda se vreme nailaska)
  1574. za P2 i P4, se primenjuje algoritam FIFO
  1575. Primer SJF sa pretpražnjenjem (SRFT)
  1576. novo raspoređivanje: kad proces završi i kad naidje novi proces
  1577. pogledati u ready queue: svaki novi proces izaziva novo rasporedjivanje
  1578.  
  1579. Proces Vreme nailaska Vreme izvršavanja
  1580. P1 0.0 7
  1581. P2 2.0 4
  1582. P3 4.0 1
  1583. P4 5.0 4
  1584. SJF (sa pretpražnjenjem)
  1585.  
  1586.  
  1587.  
  1588.  
  1589. srednje vreme čekanja = (9 + 1 + 0 +2)/4 = 3
  1590. pogledati u ready queue: svaki novi proces izaziva novo rasporedjivanje
  1591. Prioriteno raspoređivanje
  1592. Prioritet (ceo broj) se dodeljuje svakom procesu
  1593.  
  1594. CPU alocira proces sa najvećim prioritetom (manji broj  veći prioritet)
  1595. sa pretpražnjenjem
  1596. bez pretpražnjenja
  1597.  
  1598. SJF je prioritetno raspoređivanje
  1599. gde je prioritet obrnuto proporcionalna funkcija od dužine trajanja sledećeg CPU ciklusa
  1600.  
  1601. Problem  zakucavanje
  1602. proces niskog prioriteta se možda nikad ne izvrši
  1603.  
  1604. Rešenje  Aging
  1605. sa vremenom čekanja raste prioritet procesa
  1606. Round Robin (RR)
  1607. Svaki proces ima malu količinu vremena (vremenski kvantum)
  1608. obično 10-100 millisekundi
  1609. Kada ovo vreme istekne
  1610. proces se prekida
  1611. i
  1612. ubacuje na kraju reda čekanja
  1613.  
  1614. Ako imamo
  1615. n procesa u redu čekanja i
  1616. ako je vremenski kvantum q, onda:
  1617. svakom procesu pripada procesor u odnosu 1/n
  1618. nijedan proces ne čeka više od (n-1)*q vremena na sledeći vremenski kvantum.
  1619.  
  1620. Performanse
  1621. veći q  FIFO
  1622. manji q  maksimalno ravnomerna raspodela CPU, ali i veoma često prebacivanje konteksta između procesa, a to znači veliki gubitak korisnog vremena .
  1623. Primer RR gde je vremenskim kvantum = 20
  1624. Proces Vreme izvršavanja
  1625. P1 53
  1626. P2 17
  1627. P3 68
  1628. P4 24
  1629. Gantt karta za raspoređivanje je:
  1630. Karakteristično,
  1631. veće srednje vreme završetka procesa u odnosu na SJF,
  1632. ali i bolje vreme odziva
  1633. Time Quantum and Context Switch Time
  1634. Turnaround Time Varies With The Time Quantum
  1635. Raspoređivanje u više redova
  1636. Red čekanja je podeljen u različite redove:
  1637. foreground (interactive)
  1638. background (batch)
  1639.  
  1640. Svaki red čekanja ima poseban algoritam za raspoređivanje:
  1641. foreground – RR
  1642. background – FCFS
  1643.  
  1644. Raspoređivanje između redova može biti:
  1645. Prioriteno raspoređivanje;
  1646. (npr., opslužuje sve iz prvog plana a onda iz drugog plana).
  1647. Mogućnost zakucavanja.
  1648.  
  1649. Time Slice (Deo vremena)
  1650. svaki red dobija procesor na neko vreme
  1651. a u tom vremenu selektuju se procesi iz tog reda;
  1652. npr., 80% za interaktivno red (RR)
  1653. 20% za pozadinski red (FCFS)
  1654. Raspoređivanje u više redova
  1655. Povratna sprega između redova čekanja
  1656. Proces se može pomerati između različitih redova;
  1657. aging može biti implementiran na sledeći način:
  1658.  
  1659. Multilevel-feedback-queue raspoređivač je definisan sledećim parametrima:
  1660. broj redova
  1661.  
  1662. raspoređivanje algoritama za svaki red
  1663.  
  1664. metod za određivanje kada proces može da pređe u red višeg prioriteta
  1665.  
  1666. metod za određivanje kada proces može da pređe u red nižeg prioriteta
  1667.  
  1668. metod koji određuje u koji će red proces ući po kreiranju
  1669. Primer Multilevel Feedback Queue
  1670. Tri reda:
  1671. Q0 – vremenski kvantum 8 milisekunde (RR)
  1672. Q1 – vremenski kvantum 16 milisekunde (RR)
  1673. Q2 – FCFS
  1674.  
  1675. Raspoređivanje
  1676. Novi posao ulazi u red Q0 koji je serviran uz pomoć FCFS.
  1677. Kada dobije CPU, posao ima 8 milisekunde.
  1678. Ako nije završio za 8 milisekunde, posao se pomera u red Q1
  1679.  
  1680. U red Q1 posao je opet serviran FCFS i dobija 16 dodatnih milisekundi
  1681.  
  1682. Ako još uvek nije završio, on je preempted i pomera se u red Q2.
  1683. Multilevel Feedback Queues-example
  1684.  
  1685. Višeprocesorsko raspoređivanje
  1686. CPU raspoređivanje je kompleksnije kad je dostupno više CPU-a
  1687. SMP: Homogeni procesori su u SMP
  1688. Svi CPU su identični
  1689. Pitanje je?
  1690. jedan isti ready queue (za sve procesore)
  1691. ili
  1692. poseban ready queue (za svaki CPU)
  1693. Load sharing
  1694. Svaki CPU = poseban ready queue,
  1695. jedan CPU može biti neaktivan
  1696. drugi veoma zauzet=>isti ready queue
  1697. U istoj oblasti podataka, svaki CPU mora biti programiran veoma pažljivo
  1698.  
  1699. Asimetrično multiprocesiranje:
  1700. svaki CPU ima specifičan cilj (jedan od njih je master)
  1701. samo jedan procesor ima pristup strukturama sistema podataka,
  1702. olakšava potrebu za deljenjem podataka
  1703. Rapoređivanje u realnom vremenu
  1704. Hard real-time systems:
  1705. zahteva da izvršavaju kritične poslove
  1706. u garantovanom vremenskom roku
  1707. Samo u sistemima bez diskova i virtuelne memorije
  1708.  
  1709. Soft real-time systems:
  1710. zahtevaju da im se
  1711. kritični procesi izvršavaju prioritetnije
  1712. nego drugi
  1713.  
  1714. Zahteva prioritetno raspoređivanje
  1715.  
  1716. Dispečersko kašnjenje mora da bude veoma malo
  1717.  
  1718. Vreme za dispečer (Dispatch Latency)
  1719. Ispitivanje algoritama
  1720. Simulacija: Deterministic modeling:
  1721. uzima poseban predeterminisan workload
  1722. i
  1723. definiše performanse svakog algoritma
  1724. za taj workload
  1725.  
  1726. Modeli za redove:
  1727. Broj redova, prioritet, pravila
  1728. Dužina
  1729. Nailazak procesa
  1730. Algoritam
  1731.  
  1732. Implementacija
  1733. Procena CPU raspoređivanja simulacijom
  1734.  
  1735.  
  1736.  
  1737.  
  1738.  
  1739. Sinhronizacija procesa
  1740. Pozadina
  1741.  
  1742. Problem kritične sekcije
  1743.  
  1744. Hardverska sinhronizacija
  1745.  
  1746. Semafori
  1747.  
  1748. Klasični problemi sinhronizacije
  1749.  
  1750. Kritični regioni
  1751.  
  1752. Monitori
  1753.  
  1754. Pozadina
  1755. Konkurentni pristup deljenim podacima
  1756. može dovesti do nekonzistencije podataka
  1757.  
  1758. Održavanje konzistencije podataka
  1759. zahteva mehanizme koji će da osiguraju
  1760. izvršavanje kooperativnih procesa u poretku (in order)
  1761.  
  1762. Solucija deljene memorije za problem bounded-buffer
  1763. dozvoljava više n – 1 elemenata u baferu
  1764. u isto vreme
  1765.  
  1766. Rešenje, gde se koriste svih N bafera, nije jednostavno
  1767. Pretpostavimo da želimo da izmenimo kôd za proizvođač-potrošač:
  1768. dodajući promenljivu counter
  1769. inicijalizovan na 0
  1770. inkrementiran svaki put kada se novi element doda u bafer
  1771. dekrementiran svaki put kada je elemenat izbačen iz bafera
  1772. Bounded-Buffer
  1773. Deljeni podaci (shared data)
  1774. in pokazuje na sledeći slobodan bafer
  1775. out pokazuje na prvi pun bafer
  1776. counter++ proizvođač; counter-- potrošač;
  1777.  
  1778. #define BUFFER_SIZE 10
  1779.  
  1780. typedef struct {
  1781. . . .
  1782. } item;
  1783.  
  1784. item buffer[BUFFER_SIZE];
  1785. int in = 0;
  1786. int out = 0;
  1787. int counter = 0;
  1788.  
  1789. Bounded-Buffer
  1790. Proces proizvođač
  1791.  
  1792. item nextProduced;
  1793. while (1) {
  1794. while (counter == BUFFER_SIZE)
  1795. ; /* ništa ne radi, bafer je pun */
  1796.  
  1797. buffer[in] = nextProduced;
  1798. in = (in + 1) % BUFFER_SIZE;
  1799. counter++;
  1800. }
  1801.  
  1802.  
  1803. Bounded-Buffer
  1804. Proces potrošač
  1805.  
  1806. item nextConsumed;
  1807. while (1) {
  1808. while (counter == 0)
  1809. ; /* ništa ne radi, bafer je prazan */
  1810.  
  1811. nextConsumed = buffer[out];
  1812. out = (out + 1) % BUFFER_SIZE;
  1813. counter--;
  1814. }
  1815.  
  1816.  
  1817.  
  1818. Bounded Buffer
  1819. Naredbe counter++; counter--; moraju se izvršavati atomski
  1820.  
  1821. Atomska operacija znači
  1822. operacija koja je u celosti izvršena
  1823. bez prekida
  1824. Bounded Buffer
  1825. Naredba “counter++” može biti implementirana u mašinskom jeziku kao: register1 = counter
  1826. register1 = register1 + 1 counter = register1
  1827. Naredba “counter--” može biti implementirana kao: register2 = counter register2 = register2 – 1 counter = register2
  1828. Bounded Buffer
  1829. Ako obojica, proizvođač i potrošač
  1830. pokušaju da ažuriraju bafer (brojač) konkurentno,
  1831. asemblerske naredbe mogu imati preklapanje (interleaving)
  1832.  
  1833. Interleaving zavisi od toga
  1834. kako su proizvođač i potrošač procesi raspoređeni
  1835. Bounded Buffer
  1836. Imamo counter inicijalizovan na 5
  1837. counter++; counter--;
  1838. Jedan od redosleda naredbi je: proizvođač: register1 = counter (register1 = 5) proizvođač: register1 = register1 + 1 (register1 = 6)
  1839. potrošač: register2 = counter (register2 = 5) potrošač: register2 = register2 – 1 (register2 = 4)
  1840. proizvođač: counter = register1 (counter = 6) potrošač: counter = register2 (counter = 4)
  1841. Vrednost counter može biti 4 ili 6,
  1842. gde tačan rezultat moze biti 5
  1843. Stanje trke (Race Condition)
  1844. Stanje trke:
  1845. Situacija gde više procesa
  1846. Pristupaju i upravljaju deljenim podacima konkurentno
  1847.  
  1848. Konačna vrednost deljenih podataka
  1849. zavisi od toga
  1850. koji proces završava poslednji
  1851.  
  1852. Da bi se izbeglo stanje trke,
  1853. konkurentni procesi
  1854. moraju biti sinhronizovani
  1855. Problem kritične sekcije (Critical section)
  1856. n procesa
  1857. svi se takmiče da koriste neke od deljenih podataka
  1858.  
  1859. Svaki proces ima deo koda,
  1860. zvani kritična sekcija,
  1861. u kome pristupa deljenim podacima
  1862.  
  1863. Problem:
  1864.  
  1865. kad je jedan proces udje u svoju kritičnu sekciju,
  1866.  
  1867. ni jedan drugi proces be sme da udje u svoju kritičnu sekciju
  1868. Rešenje problema kritične sekcije
  1869. Međusobno isključenje (Mutual Exclusion).
  1870. Ako se proces Pi izvršava u svojoj kritičnoj sekciji,
  1871. onda ni jedan drugi proces
  1872. ne može da se izvršava u istoj kritičnoj sekciji
  1873.  
  1874. Progres (Progress)
  1875. Ako se nijedan proces ne izvršava u svojoj kritičnoj sekciji a
  1876. postoje neki procesi koji žele da uđu u svoju kritičnu sekciju, onda selekcija procesa koji hoće da udje u kritičnu sekciju
  1877. nemože biti odložena u nedogled
  1878.  
  1879. Ograničeno čekanje (Bounded Waiting)
  1880. Ograničenje (bound) mora postojati
  1881. od trenutka kada proces da zahtev da uđe u svoju kritičnu sekciju
  1882. sve dok zahtev ne bude prihvaćen
  1883.  
  1884.  
  1885.  
  1886. Pretpostavka je da se svaki proces izvršava na nonzero brzini
  1887. Nema pretpostavke vezane za relativnu brzinu n procesa.
  1888. Inicijalni pokušaj za rešenje problema
  1889. Samo 2 procesa, P0 i P1
  1890.  
  1891. Generalna struktura procesa Pi (drugi proces Pj)
  1892.  
  1893. do {
  1894. entry section
  1895. critical section
  1896. exit section
  1897. reminder section
  1898. } while (1);
  1899.  
  1900. Procesi mogu deliti neke zajedničke promenljive
  1901. da sinhronizuju njihove akcije
  1902. Algoritam 1 (strict alternation)
  1903. Deljene promenljive:
  1904. int turn; initially turn = 0
  1905. if turn = i  Pi može ući u svojoj kritičnoj sekciji
  1906.  
  1907. Proces P0 Proces P1
  1908. do { do {
  1909. while (turn != 0) ; /*(entry section)*/ while (turn != 1) ;
  1910. critical section critical section
  1911. turn = 1; /*exit section*/ turn = 0;
  1912. ……reminder section …… reminder section
  1913. } while (1); } while (1);
  1914.  
  1915. Zadovoljava međusobno isključenje, ali ne progres (P0, P1, P0, P1)
  1916. (ako P1 ne uđe u svoj CS, P0 nikad neće ući)
  1917. Algorithm 2 (No SA, but wrong)
  1918. Deljene promenljive
  1919. boolean flag[2]; initially flag [0] = flag [1] = false.
  1920. flag [i] = true  Pi spreman da uđe u kritičnoj sekciji
  1921.  
  1922. Proces Pi
  1923. do {
  1924. flag[i] = true; while (flag[j]) ; critical section
  1925. flag [i] = false;
  1926. remainder section
  1927. } while (1);
  1928.  
  1929. Zadovoljava međusobno isključenje, ali ne progress
  1930. T0: P0 postavlja flag[0]=true; CPU je preempt-ovan u P1
  1931. T1: P1 postavlja flag[1]=true; oba procesa se blokiraju zauvek
  1932.  
  1933. Algoritam 3 Dekker-Peterson
  1934. Kombinovane deljene promenljive algoritma 1 i 2.
  1935.  
  1936. Proces Pi
  1937. do {
  1938. flag [i] = true; turn = j; /* daje šansu drugom procesu*/ while (flag [j] and turn = j) ;
  1939.  
  1940. critical section
  1941.  
  1942. flag [i] = false;
  1943.  
  1944. remainder section
  1945. } while (1);
  1946.  
  1947. Sva tri zahteva se ispunavaju;
  1948. rešava problem kritične sekcije za dva procesa.
  1949. Bakery Algorithm
  1950. Pre ulaska u kritičnu sekciju,
  1951. proces dobija broj
  1952.  
  1953. Onaj koji ima najmanji broj ulazi u kritičnu sekciju
  1954.  
  1955. Ako procesi Pi i Pj dobiju isti broj,
  1956. if i < j, (i, j predstavlja vreme kreiranja procesa, ili PID)
  1957. onda Pi se prvi izvršava; a ako ne Pj je se prvi izvršava
  1958. (prim. proces dobije broj,
  1959. onda je uspavan proces sa istim brojem probuđen)
  1960.  
  1961. Šema brojeva uvek generiše brojeve od najmanjeg do najvećeg;
  1962. prim., 1,2,3,3,3,3,4,5...
  1963. Bakery Algorithm
  1964. Notiranje < lexicographical order (ticket #, process id #)
  1965.  
  1966. (a,b) < (c,d)
  1967. if a < c
  1968. ili
  1969. if a = c and b < d
  1970.  
  1971. max (a0,…, an-1) je broj k, tako da k  ai for i - 0, …, n – 1
  1972.  
  1973. Deljeni podaci:
  1974. boolean choosing[n];
  1975. int number[n];
  1976.  
  1977. Strukture podataka su inicijalizovane na false i 0 respektivno
  1978. Bakery Algorithm
  1979. do {
  1980.  
  1981. choosing[i] = true; #čeka da dobije broj
  1982. number[i] = max(number[0], number[1], …, number [n – 1])+1;
  1983. choosing[i] = false;
  1984.  
  1985. for (j = 0; j < n; j++) {
  1986. while (choosing[j]) ;
  1987. while ((number[j] != 0) && (number[j],j) < (number[i],i))) ;
  1988. }
  1989. critical section
  1990.  
  1991. number[i] = 0;
  1992.  
  1993. remainder section
  1994.  
  1995. } while (1);
  1996. Hardverska sinhronizacija
  1997. Testira i modifikuje sadržaj reči, atomski
  1998.  
  1999.  
  2000. boolean TestAndSet(boolean &target)
  2001. {
  2002. boolean rv = target;
  2003.  
  2004. target = true;
  2005.  
  2006. return rv;
  2007. }
  2008. Međusobno isključenje sa Test-and-Set
  2009. Deljeni podaci: boolean lock = false;
  2010. Proces Pi
  2011. do {
  2012. while (TestAndSet(lock)) ;
  2013. critical section
  2014. lock = false;
  2015. remainder section
  2016. }
  2017. Hardverska sinhronizacija
  2018. Atomska razmena dve promenljive
  2019. void Swap(boolean &a, boolean &b)
  2020. {
  2021. boolean temp = a;
  2022. a = b;
  2023. b = temp;
  2024. }
  2025. Međusobno isključenje sa razmenom
  2026. Deljeni podaci (inicijalizovani na false): boolean lock;
  2027.  
  2028. Proces Pi
  2029. do {
  2030. key = true;
  2031. while (key == true) Swap(lock,key);
  2032. critical section
  2033. lock = false;
  2034. remainder section
  2035. }
  2036. Semafori
  2037. Alat za sinhronizaciju koji ne zahteva busy waiting
  2038.  
  2039. Semafor S, integer promenljiva
  2040.  
  2041. može biti dostupan samo preko
  2042. dve atomske operacije:
  2043. wait (S):
  2044. while S 0 do no-op; S--;
  2045. signal (S):
  2046. S++;
  2047. Kritična sekcija n Procesa
  2048. Deljeni podaci:
  2049. semaphore mutex; //initially mutex = 1
  2050. Proces Pi: do {
  2051. wait(mutex);
  2052. critical section
  2053.  
  2054. signal(mutex);
  2055. remainder section
  2056. } while (1);
  2057.  
  2058.  
  2059. Implementacija semafora
  2060. Definisati semafor kao zapis
  2061.  
  2062. typedef struct {
  2063. int value; struct process *L; } semaphore;
  2064. Pretpostavlja dve jednostavne operacije:
  2065. block
  2066. prekida proces.
  2067.  
  2068. wakeup(P)
  2069. nastavlja izvršavanje blokiranog procesa P
  2070. Implementacija
  2071. Semafor operacije su sad definisane kao:
  2072. wait(S): S.value--;
  2073. if (S.value < 0)
  2074. {
  2075. add this process to S.L; block;
  2076. }
  2077. signal(S): S.value++;
  2078. if (S.value <= 0)
  2079. {
  2080. remove a process P from S.L; wakeup(P);
  2081. #but which one {FIFO, LIFO, priority}
  2082. }
  2083. Semafor kao glavni alat za sinhronizaciju
  2084. Izvršava se B u Pj samo kad se A izvrsi u Pi
  2085.  
  2086. Koristi se semafor flag inicijalizovan na 0
  2087.  
  2088. Kod:
  2089. Pi Pj
  2090.  
  2091. A wait(flag)
  2092. signal(flag) B
  2093. Zastoj i zakucavanje
  2094. Deadlock – dva ili više procesa beskonačno čekaju
  2095. na događaj koji se nikada neće dogoditi.
  2096.  
  2097. Neka S i Q budu dva semafora inicijalizovana na 1
  2098. Zastoj nastupa ako P0 (wait(S), onda P1 (wait(Q), sledeće čekanje stavlja proces u stanje zastoja
  2099. P0 P1
  2100. 1. wait(S); 2. wait(Q);
  2101. wait(Q); wait(S);
  2102. ...... ........
  2103. signal(S); signal(Q);
  2104. signal(Q) signal(S);
  2105.  
  2106.  
  2107. Zakucavanje – beskonacno blokiranje
  2108. Proces nikad nemože da se pomeri
  2109. iz semafor queue
  2110. u kojem je bio suspendovan
  2111. Dva tipa semafora
  2112. Brojački semafor:
  2113. integer vrednost nema ograničenje u domenu
  2114.  
  2115. Binarni semafor:
  2116. integer vrednost je ograničen samo izmedju 0 i 1;
  2117. može biti jednostavniji za inplementaciju
  2118.  
  2119. Može se inplementirati
  2120. brojački semafor S
  2121. kao binarni semafor
  2122. Klasični problemi sinhronizacije
  2123. Problem ograničenog bafera
  2124.  
  2125. Problem čitalaca i pisaca
  2126. Večera filozofa
  2127. Problem ograničenog bafera
  2128. Deljeni podaci semaphore full, empty, mutex; Initially: full = 0, empty = n, mutex = 1
  2129.  
  2130. empty: broji prazne bafere
  2131.  
  2132. full: broji pune bafere
  2133. Problem ograničenog bafera Proizvođač-proces
  2134.  
  2135. do {
  2136. produce an item in nextp
  2137. wait(empty); /*buffer full*/
  2138.  
  2139. wait(mutex); /* ulaz u kritičnu sekciju*/
  2140. add nextp to buffer
  2141. signal(mutex); /*oslobodi bafer i kritičnu sekciju*/
  2142.  
  2143. signal(full); /*uvećaj broj popunjenih elemenata u baferu*/
  2144. } while (1);
  2145.  
  2146. Problem ograničenog bafera Potrošač proces
  2147.  
  2148. do {
  2149. wait(full); /* bafer prazan*/
  2150. wait(mutex); /*ulaz u kritičnu sekciju*/
  2151. remove an item from buffer to nextc
  2152. signal(mutex); /*oslobodi bafer i kritičnu sekciju*/
  2153. signal(empty); /*uvećaj broj slobodnih mesta*/
  2154. consume the item in nextc
  2155. } while (1);
  2156. Problem čitalaca i pisaca
  2157.  
  2158. Pravila: (tipični deljeni fajlovi ili zapisi)
  2159. samo jedan pisac u jedinici vremena (pisac ima ekskluzivan pristup)
  2160. vise čitalaca, simultano
  2161. kad je pisac aktivan, nijedan čitalac nemoze imati pristup
  2162. kad je neki čitalac aktivan, nijedan pisac nema pristup
  2163.  
  2164. Deljeni podaci semaphore mutex, wrt; Initially mutex = 1, wrt = 1, readcount = 0
  2165.  
  2166. wrt = mutex za čitaoce i pisce
  2167.  
  2168. mutex = mutex za readcount update
  2169.  
  2170. readcount = broj procesa koji čita objekat
  2171. Problem čitalaca i pisca (writer proces)
  2172. wait(wrt); /* no readers*/
  2173. writing is performed
  2174. signal(wrt);
  2175. Problem čitalaca i pisca (reader proces)
  2176.  
  2177. wait(mutex);
  2178. readcount++;
  2179. if (readcount == 1) wait(wrt); /* prvi reader, čeka writer /*
  2180. else continue /*nije prvi, ima readers*/
  2181. signal(mutex);
  2182. reading is performed
  2183.  
  2184. wait(mutex);
  2185. readcount--;
  2186. if (readcount == 0) signal(wrt); #no readers, freeing wrt
  2187.  
  2188. signal(mutex); go to transactions
  2189. Večera filozofa
  2190. Deljni podaci semaphore chopstick[5];
  2191. Inicijalno sve vrednosti su 1
  2192. Večera filozofa
  2193. Filozof i:
  2194. do {
  2195. wait(chopstick[i])
  2196. wait(chopstick[(i+1) % 5])
  2197. eat
  2198. signal(chopstick[i]);
  2199. signal(chopstick[(i+1) % 5]);
  2200. think
  2201. } while (1);
  2202. Kritični regioni
  2203. Konstrukcija sinhronizacije visokog nivoa
  2204.  
  2205. Zajednička promenljiva v tipa T, je deklarisana kao:
  2206. v: shared T
  2207.  
  2208. Promenljivoj v se može pristupati samo unutar regiona naredbi S
  2209. region v when B do S gde je B logički izraz
  2210.  
  2211. Dok se naredba S izvršava,
  2212. nijedan drugi proces nemože pristupiti promenljivoj v
  2213.  
  2214. Kritični regioni
  2215. Regioni koje se oslanaju na istu deljenu promenljivu (v)
  2216. isključuju jedan drugog u vremenu
  2217. Uslovni kritični regioni
  2218.  
  2219. Kad proces pokuša da izvrši naredbu regiona,
  2220. logički izraz B se ispituje:
  2221. Ako je B true
  2222. naredba S se izvršava
  2223. Ako je B false
  2224. proces se blokira dok B ne postane true
  2225. i
  2226. nema drugih proces u tom regionu koji je asociran sa v
  2227. Primer – Bounded Buffer
  2228. Deljeni podaci:
  2229. struct buffer #all in structure is shared
  2230. {
  2231. int pool[n];
  2232. int count, in, out;
  2233. }
  2234. Bounded Buffer (Proizvođač proces)
  2235. Proizvođač proces ubacuje nextp u zajednički bafer
  2236. region buffer when( count < n)
  2237. { pool[in] = nextp; in:= (in+1) % n; count++; }
  2238.  
  2239. Bounded Buffer (Potrošač proces)
  2240. Proces potrošač pomera element iz zajedničkog bafera i postavlja u nextc
  2241. region buffer when (count > 0)
  2242. {
  2243. nextc = pool[out]; out = (out+1) % n; count--; }
  2244. Monitori
  2245. Konstrukcija sinhronizacije visokog nivoa koja omogućava sigurno deljenje jednog apstraktnog tipa podatka među konkurentnim procesima.
  2246. monitor monitor-name
  2247. {
  2248. shared variable declarations
  2249. procedure body P1 (…) {
  2250. . . .
  2251. }
  2252. procedure body P2 (…) {
  2253. . . .
  2254. }
  2255. procedure body Pn (…) {
  2256. . . .
  2257. }
  2258. {
  2259. initialization code
  2260. }
  2261. }
  2262. Monitori
  2263. Da bi se dozvolilo procesu da čeka u monitoru,
  2264. uslovna promenljiva mora biti deklarisana, kao
  2265. condition x, y;
  2266.  
  2267. Uslovna promenljiva može biti upotrebljena samo sa operacijama wait i signal:
  2268. Operacija
  2269. x.wait();
  2270. znači da proces koji je pozvao operaciju se suspenduje
  2271. sve dok drugi proces ne pozove kontra operaciju
  2272. x.signal();
  2273.  
  2274. x.signal operacija će odblokirati tačno jedan suspendovan proces.
  2275. Ako nema suspendovanih procesa, onda signal operacija nema efekta.
  2276. Šematski prikaz na monitor
  2277. Monitor With Condition Variables
  2278. Primer - Večera filozofa
  2279. monitor dp
  2280. {
  2281. enum {thinking, hungry, eating} state[5];
  2282. condition self[5];
  2283.  
  2284. void pickup(int i) // following slides
  2285. void putdown(int i) // following slides
  2286. void test(int i) // following slides
  2287.  
  2288. void init()
  2289. {
  2290. for (int i = 0; i < 5; i++)
  2291. state[i] = thinking; //init code
  2292. }
  2293. }
  2294. Večera filozofa
  2295. void pickup(int i)
  2296. {
  2297. state[i] = hungry;
  2298. test[i];
  2299. if (state[i] != eating)
  2300. self[i].wait();
  2301. }
  2302.  
  2303. void putdown(int i)
  2304. {
  2305. state[i] = thinking;
  2306. // testira levog i desnog komsiju
  2307. test((i+4) % 5); /*daje šansu levom komšiji da jede*/
  2308. test((i+1) % 5); /* daje šansu desnom komšiji da jede */
  2309. }
  2310. Večera filozofa
  2311. void test(int i)
  2312. {
  2313. if((state[(I + 4)%5] != eating) && (state[i] == hungry)&&(state[(i +1) % 5] !=eating))
  2314. {
  2315. state[i] = eating;
  2316. self[i].signal();
  2317. }
  2318. }
  2319.  
  2320. Večera filozofa
  2321. each philosopher do it:
  2322.  
  2323. dp.pickup(i)
  2324. …..
  2325. eat
  2326.  
  2327. dp.putdown(i)
  2328.  
  2329.  
  2330.  
  2331.  
  2332. Zastoji (Deadlocks)
  2333. Sistemski model
  2334.  
  2335. Karakterizacija zastoja
  2336.  
  2337. Metodi upravljanja zastojem
  2338.  
  2339. Prevencija od zastoja (Deadlock Prevention)
  2340.  
  2341. Izbegavanje zastoja (Deadlock Avoidance)
  2342.  
  2343. Detekcija zastoja (Deadlock Detection)
  2344.  
  2345. Oporavak od zastoja (Recovery from Deadlock)
  2346.  
  2347. Kombinovan pristup za uklanjanje zastoja
  2348. Problem zastoja
  2349. Zastoj: Skup blokiranih procesa:
  2350. svaki proces drži resurs
  2351. i čeka da uzme resurs
  2352. koji drži drugi proces
  2353. Primer
  2354. Sistem ima 2 trake.
  2355. P1 i P2 drže po jednu traku
  2356. i oba procesa žele i drugu
  2357.  
  2358. Primer
  2359. semafori A i B, inicijalizovani na 1
  2360.  
  2361. P0 P1
  2362. wait (A); wait(B)
  2363. wait (B); wait(A)
  2364.  
  2365. Problem prelaska preko mosta
  2366. Saobraćaj je samo u jednom smeru.
  2367. Svaki deo mosta možemo videti kao resurs.
  2368. Ako se pojavi zastoj, to možemo rešiti ako se jedan automobil vrati nazad (preempt resources and rollback).
  2369. Više automobila treba vratiti nazad ako nastane zastoj.
  2370. Zakucavanje je moguće
  2371. Sistemski model
  2372. Resursi tipa R1, R2, . . ., Rm
  2373. CPU ciklusi, memorijski prostor, I/O uređaji
  2374.  
  2375. Svaki resurs tipa Ri ima Wi instancu
  2376.  
  2377. Svaki proces koristi resurs na sledeći način:
  2378. zahtev (request)
  2379. korišćenje (use)
  2380. oslobađanje (release)
  2381. Karakterizacija zastoja
  2382. 1. Mutual exclusion (Međusobno isključenje): samo jedan proces u jednom trenutku može koristiti resurs.
  2383.  
  2384. 2. Hold and wait (Drži i čekaj): proces drži jedan resurs a istovremeno čeka dobijanje resursa koji koristi neki drugi proces.
  2385.  
  2386. 3. No preemption (Nema otimačine): resurs se može osloboditi samo kada proces koji ga koristi završi svoj posao.
  2387.  
  2388. 4. Circular wait (Kružno čekanje): postoji skup procesa {P0, P1, …, Pn} koji čekaju resurs u sledećem poretku:
  2389. P0 čeka na resurs koji drži P1,
  2390. P1 čeka na resurs koji drži P2, …,
  2391. Pn–1 čeka na resurs koji drži Pn,
  2392. Pn čeka na resurs koji drži P0
  2393.  
  2394. Graf dodeljenih resursa
  2395. V sadrži dva skupa:
  2396. P = {P1, P2, …, Pn}, skup se sastoji od svih procesa u sistemu
  2397. R = {R1, R2, …, Rm}, skup se sastoji od svih resursa u sistemu
  2398.  
  2399. strelica zahteva: P1  Rj
  2400.  
  2401. strelica alokacije: Rj  Pi
  2402. Graf dodeljenih resursa
  2403. Proces
  2404. Resurs sa 4 instance
  2405.  
  2406.  
  2407. Pi zahteva instancu Rj
  2408.  
  2409.  
  2410. Pi drži instancu Rj
  2411. Graf dodeljenih resursa
  2412. Graf dodeljenih resursa sa zastojem
  2413. Graf dodeljenih resursa – kružni tok bez zastoja
  2414. Osnovne činjenice
  2415. Ako graf ne sadrži kružni tok  nema zastoja
  2416. Ako graf sadrži kružni tok 
  2417. ako resursi u kružnom toku sadrže samo jednu instancu,
  2418. Nastupio je zastoj
  2419.  
  2420. ako resursi u kružnom toku sadrže više instanci,
  2421. moguć je zastoj
  2422. Metodi upravljanja zastojem
  2423. 1. Obezbeđuju da sistem nikada ne uđe u stanje zastoja.
  2424.  
  2425. 2. Dozvoljava da ako sistem uđe u zastoj, da iz njega izađe
  2426. 3. Ignoriše probleme pretvara se da se zastoji nikad ne javljaju u sistemu; ovo koriste mnogi operativni sistemi, uključujući i UNIX.
  2427. Prevencija zastoja
  2428. Međusobno isključenje – nepotrebno za deljive resurse; obavezno za nedeljive resurse
  2429.  
  2430. Drži i čekaj (hold and wait)– ukoliko proces zahteva neki resurs, nema prava da drži neki drugi resurs (resources)
  2431. Proces traži i alocira sve svoje resurse pre početka izvršavanja
  2432. ili
  2433. proces može tražiti resurs samo pod uslovom da ne drži ni jedan drugi
  2434.  
  2435. Mala iskorišćenost resursa; zakucavanje moguce
  2436. Prevencija zastoja
  2437. Nema pretpražnjenja (no preemption):
  2438. Ako proces drži neki resurs,
  2439. a traži drugi resurs koga ne može trenutno da dobije,
  2440. onda proces treba da otpusti sve dosadašnje zauzete resurse
  2441.  
  2442. Oslobodjeni resursi se ubacuju na listu resursa za koje proces čeka
  2443.  
  2444. Proces će se restartovati samo kada bude mogao da povrati stare resurse, kao i da dobije nove koji su mu trebali
  2445. Kružno čekanje:
  2446. uvede se poredak označavanja svih resursa
  2447. natera se da svaki proces zahteva resurse
  2448. u strogo rastućem redu
  2449. Izbegavanje zastoja (Deadlock avoidance )
  2450. Najprostiji i najviše korišćeni model zahteva od svakog procesa da objavi maximalni broj resoursa koji će mu možda trebati.
  2451. Algoritam izbegavanja zastoja
  2452. dinamički ispituje trenutno stanje dodeljenih resursa
  2453. tako da osigura da sistem
  2454. nikada ne uđe u stanje cirkularnog čekanja
  2455. Pod stanjem dodeljenih resursa
  2456. podrazumeva se stanje definisano brojem:
  2457. raspoloživih
  2458. dodeljenih
  2459. maksimalno traženih resursa
  2460. u jednom trenutku vremena
  2461. Bezbedno stanje (Safe State)
  2462. Kada proces traži neki resurs, sistem mora da proceni da li će dodela tog resursa ostaviti sistem u bezbednom stanju (safe state)
  2463. Sistem je u bezbednom stanju ako postoji bezbedna sekvenca svih procesa
  2464. Sekvenca <P1, P2, …, Pn> je bezbedna ako za svaki proces Pi, resursi koje Pi može još tražiti, mogu zadovoljiti iz:
  2465. trenutno raspoloživih resursa + resursi koji pripadaju svim Pj, sa j<I.
  2466. (svi procesi startovani pre njega)
  2467. Ako resursi koje traži proces Pi nisu trenutno raspoloživi, tada će Pi da čeka dok prethodni procesi Pj ne završe svoje poslove
  2468.  
  2469. Kada Pj završi, Pi može dobiti traženi resurs, izvršiti, vratiti deljeni resurs i završiti svoj posao
  2470.  
  2471. Kada je Pi završi, Pi+1 može dobiti traženi resurs, itd
  2472. Činjenično stanje
  2473. Ako je sistem u bezbednom stanju  nema zastoja
  2474. Ako sistem je u ne-bezbednom stanju  postoji mogućnost zastoja
  2475. Izbegavanje 
  2476. osigurava da sistem
  2477. nikad ne uđe u ne-bezbedno stanje
  2478. Bezbedno, Nebezbedno , Zastoj stanje
  2479. Resource-Allocation Graph Algorithm
  2480. Mogući zahtev Pi  Rj (claim edge)
  2481. znači da proces Pj može zahtevati resurs Rj;
  2482. predstavljeno isprekidanom linijom
  2483.  
  2484. Mogući zahtev preći će u realni zahtev kada proces zahteva resurs
  2485.  
  2486. Kada se takav resurs otpusti od procesa, strelica dodele opet prelazi u strelicu mogućih zahteva
  2487. Svi mogući zahtevi za resurse moraju biti poznati unapred sistemu
  2488. Resource-Allocation Graph For Deadlock Avoidance
  2489. Unsafe State In Resource-Allocation Graph
  2490. Bankarski algoritam
  2491. Više instanci
  2492.  
  2493. Svaki proces unapred mora deklarisati maksimalan broj instanci.
  2494. Kada proces zahteva resurse možda će trebati da sačeka
  2495. Kada proces dobije sve njegove resurse mora mora da ih vrati u nekom konačnom vremenu
  2496. Strukture podataka za bankarski algoritam
  2497. Vektor raspoloživosti: Vektor dužine m. Ako je element available [j] = k, tada je k instanci resoursa Rj raspoloživo
  2498.  
  2499. Matrica maksimalnih zahteva: Ako je Max [i,j] = k, tada proces Pi može tražiti najviše k instanci resoursa Rj
  2500.  
  2501. Matrica alokacije: Ako je Allocation[i,j] = k tada je proces Pi trenutno dobio k instanci resursa Rj.
  2502.  
  2503. Matrica potreba: Ako je Need[i,j] = k, tada proces Pi može tražiti još k instanci resursa Rj da završi njegov posao
  2504. Need [i,j] = Max[i,j] – Allocation [i,j].
  2505. Bezbednosni algoritam (Safety Algorithm)
  2506. 1. Neka Work i Finish budu vektori dužine m i n, respektivno. Inicijalizacija:
  2507. Work = Available
  2508. Finish [i] = false for i - 1,3, …, n.
  2509. 2. Pronalaženje procesa Pi koji može da zadovolji svoje potrebe:
  2510. (a) Finish [i] = false
  2511. (b) Needi  Work /*trazi manje od raspolozivih R*/
  2512. Ako nema takvih procesa idi na korak 4
  2513.  
  2514. Work = Work + Allocationi vraća resurse Finish[i] = true (proces završio)
  2515. Idi na korak 2
  2516.  
  2517. 4. Ako je Finish [i] == true za svako i, tada je sistem u stabilnom stanju.
  2518. Algoritam za zahtevanje resursa
  2519. Requesti = vektor trenutnih zahteva za proces Pi.
  2520. Ako je Requesti [j] = k tada proces Pi traži k instanci resoursa Rj.
  2521. Ako je Requesti  Needi idi na korak 2. Ukoliko ovo nije ispunjeno postavlja se greška , zato što proces traži više od onoga što je specificirao kao maksimalan zahtev .
  2522.  
  2523. Ako je Requesti  Available, idi na korak 3. U suprotnom proces Pi mora da čeka, resursi nisu raspoloživi
  2524.  
  2525. 3. Zamislite da ste dodelili resurse procesu Pi po sledećoj formuli :
  2526. Available = Available - Requesti;
  2527. Allocationi = Allocationi + Requesti;
  2528. Needi = Needi – Requesti;
  2529.  
  2530. Ako je stanje stabilno  resursi će biti dodeljeni procesu Pi.
  2531. Ako stanje nije stabilno  Pi mora da čeka, i resursi se vraćaju u staro stanje
  2532. Primer bankarskog algoritma
  2533. 5 procesa P0 do P4;
  2534. 3 resoursa:
  2535. A (10 instanci), B (5instanci), i C (7 instanci)
  2536. Stanje sistema u trenutku T0:
  2537. Allocation Max Available
  2538. A B C A B C A B C
  2539. P0 0 1 0 7 5 3 3 3 2
  2540. P1 2 0 0 3 2 2
  2541. P2 3 0 2 9 0 2
  2542. P3 2 1 1 2 2 2
  2543. P4 0 0 2 4 3 3
  2544. Primer
  2545. Stanje matrice potreba Need[] se definiše kao:
  2546. Max[] – Allocation[]
  2547. Need Available
  2548. A B C A B C
  2549. P0 7 4 3 3 3 2
  2550. P1 1 2 2
  2551. P2 6 0 0
  2552. P3 0 1 1
  2553. P4 4 3 1
  2554. Sistem je u bezbednom stanju u sekvenci < P1, P3, P4, P2, P0> a uvek se polazi od procesa sa manjim zahtevima.
  2555. (pogledaj te najmanje zahteve P1.P3..)
  2556. Primer gde P1 zahteva (1,0,2)
  2557. Proverava se da li je Request  Available (1,0,2)  (3,3,2)  true.
  2558. Allocation Need Available
  2559. A B C A B C A B C
  2560. P0 0 1 0 7 4 3 2 3 0
  2561. P1 3 0 2 0 2 0
  2562. P2 3 0 1 6 0 0
  2563. P3 2 1 1 0 1 1
  2564. P4 0 0 2 4 3 1
  2565. Izvrši se bankarski algoritam i dokaže da postoji sekvenca <P1, P3, P4, P0, P2> koja će zadovoljiti uslove stabilnosti.
  2566. Da li se može odobriti zahtev procesu P4 (3,3,0)? (ne < od raspoloživog)
  2567. Da li se može odobriti zahtev procesu P0 (0,2,0)?(ne, ne-bezbedno)
  2568.  
  2569. Detekcija zastoja (Deadlock Detection)
  2570. Ako sistem uđe u stanje zastoja
  2571. Algoritam za detekciju zastoja
  2572. Algoritam za oporavak
  2573. Detekcija kad resursi imaju samo jednu instancu
  2574. Pruža wait-for graf:
  2575. Čvorovi su samo procesi
  2576. Pi  Pj ako Pi čeka na Pj.
  2577. Algoritam se periodično pozove da pretraži krugove u grafu
  2578. Algoritam detektuje krugove u grafu
  2579. preko n2 operacija,
  2580. gde je n broj strelica u grafu
  2581. Graf alokacije resursa i Wait-for graf
  2582. Detekcija kad resursi imaju više instanci
  2583. Vektor raspoloživosti: Vector dužine m. Ako je element available[j] = k, tada je k instanci resursa Rj rasploživo .
  2584. Matrica alokacije: Ako je Allocation[i,j] = k tada je proces Pi trenutno dobio k instanci resursa Rj.
  2585. Matrica trenutnih zahteva: Matrica ukazuje na trenutne zahteve procesa. Ako je Request [i,j] = k, tada proces Pi trenutno traži k instanci resursa Rj.
  2586. Algoritam za detekciju
  2587. 1. Neka Work i Finish budu vektori dužine m i n, respektivno Inicijalizacija:
  2588. (a) Work = Available
  2589. (b) For i = 1,2, …, n, if Allocationi  0, then Finish[i] = false;otherwise, Finish[i] = true
  2590.  
  2591. 2. Pronalazi se proces koji može da zadovolji sve potrebe:
  2592. (a) Finish[i] == false
  2593. (b) Requesti  Work
  2594. Ako takvi ne postoje, idi na korak 4
  2595.  
  2596. Algoritam za detekciju
  2597. 3. Work = Work + Allocationi Finish[i] = true idi na korak 2
  2598. 4. Ako je Finish[i] == false, za bilo koji proces i, 1  i  n, tada je sistem u stanju zastoja
  2599. Preciznije, ako je Finish[i] == false, tada je Pi u zastoju
  2600.  
  2601. Primer algoritma za detekciju
  2602. Pet procesa od P0 do P4;
  2603. tri resursa tipa A (7 instanci), B (2 instance), i C (6 instanci)
  2604. Stanje sistema u trenutku T0:
  2605. Allocation Request Available
  2606. A B C A B C A B C
  2607. P0 0 1 0 0 0 0 0 0 0
  2608. P1 2 0 0 2 0 2
  2609. P2 3 0 3 0 0 0
  2610. P3 2 1 1 1 0 0
  2611. P4 0 0 2 0 0 2
  2612.  
  2613. Sekvenca <P0, P2, P3, P1, P4> koja bi dovela da bude rezultat Finish[i] = true za sve procese i
  2614. Primer 2
  2615. P2 traži jednu instancu resursa C
  2616. Request
  2617. A B C
  2618. P0 0 0 0
  2619. P1 2 0 1
  2620. P2 0 0 1
  2621. P3 1 0 0
  2622. P4 0 0 2
  2623. Stanje sistema?
  2624. P0 ima najmanje prohteva i ako bi završio svoje i vratio resurse, stanje raspoloživih resursa bi bilo (0,1,0) a iza toga nemamo proces koji može da zadovolji svoje potrebe
  2625. Zastoj postoji, zaglavljeni su procesi P1, P2, P3 i P4
  2626. Korišćenje algoritma za detekciju
  2627. Kada, i koliko često, pozvati algoritam za detekciju zavisi od toga:
  2628. Koliko često se zastoj dešava ?
  2629. Koliko procesa je zahvaćeno zastojom ?
  2630.  
  2631.  
  2632. Zastoj se mora detektovati
  2633. jer su svi procesi i svi resursi u njima zaglavljeni,
  2634. ali zahteva prilično veliko vreme za detekciju
  2635. pa se ne sme pozivati veoma često
  2636. Oporavak od zastoja: Prekidanje procesa
  2637. Prekid svih zaglavljenih procesa
  2638. Prekid samo jednog procesa dok se ne razbije krug
  2639. Po kom redu se prekidaju procesi?
  2640. Prioritet procesa
  2641. Koliko dugo proces već radi, odnosno šta mu je ostalo do završetka
  2642. Koje resurse proces koristi
  2643. Koje resurse proces traži da kompletrira aktivnost
  2644. Koliko procesa je potrebno prekinuti
  2645. Da li su to interaktivni ili grupni procesi?
  2646. Oporavak od zastoja: Oduzimanje resursa
  2647. Biranje žrtve:
  2648. najmanji gubitak
  2649. Oporavak procesa (Rollback):
  2650. proces se vraća u bezbedno stanje,
  2651. ponovo se pokreće iz tog stanja.
  2652. Zakucavanje (Starvation):
  2653. neki proces možda uvek bude biran kao žrtva,
  2654. zbog toga se neće dugo izvršiti
  2655. Kombinovan pristup za uklanjanje zastoja
  2656. Kombinacija tri osnovna pristupa:
  2657. prevencija
  2658. izbegavanje
  2659. detekcija
  2660. dopušta korišćenje najpovoljnijeg pristupa za svaki resurs u sistemu
  2661. Podeljeni resursi u hierarhijski poređanim klasama
  2662. Koristi se najodgovarajuća tehnika za uklanjanje zastoja u svakoj klasi
  2663. Zastoj u saobraćaju
  2664.  
  2665.  
  2666.  
  2667. Virtuelna memorija
  2668. Background
  2669.  
  2670. Učitavanje stranica prema potrebi (Demand Paging)
  2671.  
  2672. Kreiranje procesa (Process Creation)
  2673.  
  2674. Zamena stranica (Page Replacement)
  2675.  
  2676. Alokacija okvira po procesima (Allocation of Frames)
  2677.  
  2678. Thrashing
  2679.  
  2680.  
  2681. Background
  2682. Osnovna zamisao:
  2683. Omogućava da se izvrši proces koji je samo delimično u memoriji
  2684. Deo procesa je u memoriji (onaj koji se trenutno koristi)
  2685. Ostatak programa je na disku (swap ili exe datoteka)
  2686.  
  2687. Program > Fizičke Memorije
  2688. VM nije jednostavna za implementaciju
  2689. VM može smanjiti performanse
  2690.  
  2691. Virtuelna memorija:
  2692. odvajanje korisničke logičke memorije od fizičke memorije.
  2693. Potrebno je da samo deo programa bude u memoriji da bi se izvršavao.
  2694.  
  2695. Zbog toga logički adresni prostor može biti mnogo veći od fizičkog adresnog prostora.
  2696.  
  2697. Omogućava da više procesa dele adresni prostor
  2698.  
  2699. Omogućava mnogo efikasnije kreiranje procesa
  2700. Virtuelna memorija je veća od fizičke memorije
  2701. Realizacija virtuelne memorije
  2702. Virtuelna memorija se najčešće realizuje preko sledećih tehnika:
  2703.  
  2704. Učitavanje stranica prema potrebi
  2705. (Demand paging)
  2706.  
  2707. Učitavanje segmenata prema potrebi
  2708. (Demand segmentation)
  2709.  
  2710. Učitavanje stranica prema potrebi
  2711. Učitava stranicu u memoriju samo kada je potrebna
  2712. lazy swapper (lenji razmenjivač)
  2713. potrebno je manje I/O operacija
  2714.  
  2715. potrebno je manje memorije
  2716.  
  2717. brži odziv
  2718.  
  2719. više korisnika
  2720. Postoje dva velika problema:
  2721. 1. Algoritam alokacije okvira
  2722. 2. Algoritam zamene stranica
  2723.  
  2724. Stranica je potrebna  prebacuje se u memoriju
  2725. ako je nevažeća referenca  prekid
  2726. ako nije u memoriji  prebacuje se u memoriju  restart
  2727. Prenos stranica u kontinualni prostor na disku
  2728. Valid-Invalid Bit
  2729. Za svaki ulaz u tabelu stranica
  2730. asociran je valid–invalid bit is (1  u memoriji, 0  nije u memoriji)
  2731. Valid–invalid bit je inicijalizovan na 0 za sve ulaze
  2732. Primer tabele stranica:
  2733.  
  2734.  
  2735. Tabela stranica kada neke stranice nisu u glavnoj memoriji
  2736. Greška u stranicenju (Page Fault)
  2737. PF rutina ima zadatak,
  2738. da stranicu sa diska
  2739. prebaci u memoriju
  2740. PF rutina proverava da li je referenca validna ili invalidna:
  2741. ako je referenca nevalidna  proces se prekida
  2742. ako je validna učitava se u memoriju
  2743. Uzima prazan okvir
  2744. Zamenjuje stranicu za okvir
  2745. Resetuje tabele, validation bit = 1
  2746. Instrukcija se restartuje: (carefully)
  2747. pomeranje bloka
  2748.  
  2749. automatsko inkrementiranje/dekrementiranje lokacije
  2750. Koraci u manipulisanju sa PF-om
  2751. Šta se događa ako nema slobodnih okvira?
  2752. Zamena stranica:
  2753. nađe se jedna stranicu u memoriji
  2754. koja se ne koristi,
  2755. upiše se na disk, a potom se oslobodi njena memorija
  2756.  
  2757. algoritam za najbolje performanse
  2758. traži se algoritam
  2759. koji daje rezultat
  2760. sa najmanjim brojem grešaka u stranici.
  2761. Ista stranica može biti dovedena u memoriju nekoliko puta
  2762. Performanse DP tehnike
  2763. PF: 0  p  1.0
  2764. ako je p = 0  nema grešaka u stranici
  2765. ako je p = 1  svaka referenca ima grešku (trashing)
  2766.  
  2767. Effective Access Time (EAT)
  2768. EAT= (1 – p) x memory access + p x (Page Fault time)
  2769.  
  2770. Page Fault time = page fault overhead
  2771.  
  2772. + swap page out /* if write*/
  2773. + swap page in
  2774.  
  2775. + restart overhead
  2776. Page Fault
  2777. 1. Servisiranje PF prekida
  2778. prekidni signal PF izaziva prelazak u operativni sistem
  2779. čuvanje konteksta prekinutog procesa (registri procesora)
  2780. određivanje da li je prekidni signal izazvan PF greškom
  2781.  
  2782. 2. Čitanje stranice
  2783. disk I/O izazva čekanje, tj. blokadu PF rutine
  2784. dok se čeka na disk CPU se daje nekom drugom
  2785. prekidni signal koji znači da je disk I/O operacija završena
  2786. određivanje da li je disk I/O prekidni signal
  2787.  
  2788. 3. Restrartovanje procesa koji je izazvao PF
  2789. korekcija tabele stranica
  2790. obnova konteksta procesa
  2791.  
  2792. Primer DP
  2793. Vreme pristupa memoriji MC = 1 mikrosekunda = 1000nsec
  2794. Proces punjenja stranice u memoriju može uključiti dve I/O
  2795. stranica koja je zamenjena
  2796. ukoliko je promenjena dok je bila u memoriji
  2797. ponovo se upisuje na disk.
  2798.  
  2799. ->1 ili 2 disk I/O operacije ->prosek =1.5 disk I/O
  2800.  
  2801. Vreme razmene stranica = 10 msec = 10,000 microsekundi
  2802.  
  2803. EAT = (1 – p) x 1 + p (15000)
  2804. 1 + 15000p (microsec)
  2805. Kreiranje procesa
  2806. Virtuelna memorija može dosta pomoći
  2807. u toku
  2808. kreiranja procesa:
  2809. - Copy-on-Write
  2810. - Memorijski mapirane datoteke (Memory-Mapped Files)
  2811. Copy-on-Write
  2812. Copy-on-Write (COW)
  2813. omogućava da roditelji i dete proces
  2814. inicijalno
  2815. dele iste stranice u memoriji
  2816.  
  2817. Ako bilo koji proces
  2818. pokuša da modifikuje deljenu stranicu,
  2819. tada će se prvo kreirati kopija za tu stranicu
  2820.  
  2821. COW omogućava mnogo efikasnije kreiranje procesa
  2822. tako što se samo modifikovane stranice kopiraju
  2823.  
  2824. Kod dodele novih stanica,
  2825. poželjno je da one budu prazne, to se postiže tehnikom
  2826. koja puni nule u okvir koji se dodeljuje (zero-fill-on-demand)
  2827. Memorijski mapirane datoteke
  2828. Memorijski mapirana I/O datoteka omogućava da se
  2829. I/O datotekama pristupa
  2830. preko memorijskih referenci
  2831. tako što se deo virtuelnog memorijskog prostora
  2832. dodeli datotekama
  2833.  
  2834. Inicijalni pristup datoteci se odvija preko DP tehnike
  2835. koja će izazvati PF grešku
  2836. i kao rezultat te greške
  2837. deo datoteke će se učitati u memoriju
  2838.  
  2839. Sledeći čitanje/upis u/iz datoteke
  2840. se tretira
  2841. kao običan pristup memoriji.
  2842.  
  2843. Pristup datoteci je uprošćen (brži)
  2844. ako se I/O datoteci pristupa kroz memoriju
  2845. češće nego preko
  2846. read() write() sistemskih poziva
  2847.  
  2848. Deljenje datoteke: omogućava da više procesa
  2849. mogu deliti istu datoteku
  2850. tako što se datoteka učita u memoriju
  2851. Memorijski mapirane datoteke
  2852. Zamena stranica
  2853. Kod alociranja memorije
  2854. pojavljuje se veliki broj PF grešaka,
  2855. tada se koristi zamena stranica
  2856. Koristi se dirty bit
  2857. koji opisuje da je stranica modifikovana
  2858. na disk se upisuju samo modifikovane stranice
  2859. Zamena stranica kompletira razdvajanje između logičke i fizičke memorije:
  2860. velika virtuelna memorija
  2861. se koristi samo kada je
  2862. fizička memorija mala
  2863. Zamena stranica
  2864. Opis zamene stranica
  2865. Potrebno je pronaći lokaciju na disku gde je smeštena stranica
  2866. Traži se slobodan okvir: - Ako ima slobodnih okvira uzima se jedan od njih - Ako nema nijednog slobodnog, pomoću algoritama za zamenjivanje stranica izabra se žrtva: okvir koji će biti zamenjen
  2867. Željena stranica se učitava u oslobođeni okvir. Tabele stranica i okvira se ažuriraju
  2868.  
  2869. Proces se restartuje
  2870.  
  2871. Pažljivo sa:
  2872. pomeranjem instrukcija
  2873. ili
  2874. automatskim inkrementiranjem/dekrementiranjem
  2875. Zamena stranica
  2876. Algoritmi za zamenu stranica
  2877. Potrebna je najmanja verovatnoća PF grešaka
  2878.  
  2879. Prilikom evaulacije algoritama
  2880. definiše se ulazna sekvenca referenci
  2881. i
  2882. na datoj veličini fizičke memorije
  2883. analizira se broj PF grešaka
  2884.  
  2885. U svim primerima, memorijske reference su
  2886. 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
  2887. Graph of Page Faults Versus The Number of Frames
  2888. First-In-First-Out (FIFO) Algorithm
  2889. Najstarija stranica će biti zamenjena
  2890. Niz memorijskih refernci: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
  2891. 3 okvira (3 stranice po procesu istovremeno mogu biti u memoriji)
  2892.  
  2893.  
  2894.  
  2895.  
  2896. 4 okvira
  2897. FIFO zamena – Belady anomalija
  2898. više okvira  manje PF
  2899. FIFO algoritam za zamenu stranica
  2900. Belady anomalija
  2901. Optimalni algoritam
  2902. Zamenjuje stranice
  2903. koje se neće koristiti
  2904. najduže vremena od svih.
  2905.  
  2906. primer sa 4 okvira
  2907. 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
  2908. OPT je najbolji mogući algoritam, ali na žalost ne može se implementirati.
  2909. Ne postoji način da operativni sistem dođe do potrebne informacije o tome, kada će koja stranica biti potrebna.
  2910. Optimalni algoritam za zamenu stranica
  2911. Least Recently Used (LRU) Algorithm
  2912. Zamenjuje se stranica za koju je proteklo najviše vremena od kada se nije koristila
  2913. Niz memorijskih refernci: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
  2914. Realizacija pomoću brojača (timer)
  2915. Svaka stranica ima svoj interni registar;
  2916. svaki put kada se pristupi stranici,
  2917. sadržaj casovnika kopira se u interni registar
  2918. Kada dođe do PF prekida,
  2919. algoritam pregleda sve interne registre
  2920. i bira stranicu čiji je broj najmanji.
  2921. (što znači da najduže nije korišćena)
  2922.  
  2923. LRU algoritam za zamenu stranica
  2924. LRU Algoritam (2)
  2925. Realizacija pomoću steka:
  2926. formira se stek koji opisuje redosled pristupanja stranicama
  2927. (head list & tail list):
  2928. Nakon PF prekida:
  2929. bira se stranica sa vrha steka
  2930. na njeno mesto se stavlja stranica kojoj se pristupa
  2931.  
  2932. Ova realizacija je veoma spora jer se pri svakom pristupu memoriji stek ažurira.
  2933. Algoritam LRU – realizacija pomoću steka
  2934. Aproksimativni LRU algoritmi
  2935. Reference bit
  2936. Za svaki ulaz u tabeli stranica postoji referentni bit, inicijalizovan na 0
  2937. Kada se stranica referencira, bit se setuje na 1
  2938. Nakon određenog vremena R bit se briše pomoću tajmerskih prekida
  2939. Nema informacije o redosledu korišćenja okvira
  2940.  
  2941. Druga šansa (second chance)
  2942. FIFO baziran
  2943. Koristi R bit
  2944. Kada treba izbaciti stranicu, uzima se zadnja iz reda čekanja, i pogleda R bit:
  2945. Ako stranica ima referenti bit R = 1, tada:
  2946. se R setuje na 0
  2947. a stranica se ostavlja u memoriji
  2948. zatim se gleda sledeća stranica na kraju reda
  2949. Druga šansa – realizacija pomoću kružnog reda čekanja
  2950. Klase stranica
  2951. Na osnovu vrednosti R i M bitova okvire delimo u 4 klase:
  2952.  
  2953. clasa 0. (0,0) stranica nije ni korišćena ni modifikovana
  2954.  
  2955. clasa 1. (0,1) stranica nije korišćena ali je modifikovana
  2956.  
  2957. clasa 2. (1,0) stranica je korišćena ali nije modifikovana
  2958.  
  2959. clasa 3. (1,1) stranica je i korišćena i modifikovana
  2960.  
  2961.  
  2962. Stranica za zamenu je svaka stranica u najnižoj klasi
  2963.  
  2964. Svaka klasa sa više stranica je FIFO bazirana
  2965. Brojački algoritmi
  2966. Čuva informaciju koliko je puta
  2967. svaka stranica bila referencirana
  2968.  
  2969. LFU Algoritam:
  2970. zamenjuje stranicu koja ima najmanji broj referenci
  2971.  
  2972. MFU Algoritam:
  2973. baziran na činjenici
  2974. da je stranica sa najmanjim brojem referenci
  2975. verovatno upravo učitana
  2976. i
  2977. upravo treba da se sačuva
  2978. Alokacija okvira
  2979. Svaki proces zahteva minimalan broj stranica.
  2980. Minimalni broj okvira po procesu zavisi od procesorske arhitekture
  2981.  
  2982. Primer:
  2983. IBM 370 – 6 pages to handle SS MOVE instruction:
  2984. instruction is 6 bytes, might span 2 pages.
  2985. 2 pages to handle from.
  2986. 2 pages to handle to.
  2987.  
  2988. Dve najvažnije šeme za alokaciju.
  2989. fiksna alokacija
  2990. prioritetna alokacija
  2991. Fiksna alokacija
  2992. Jednaka alokacija:
  2993. npr., ako ima 100 okvira i 5 procesa, svaki dobija 20 stranica.
  2994.  
  2995. Proporcionalna alokacija:
  2996. Svakom procesu pripašće sledeći broj okvira:
  2997. Prioritetna alokacija
  2998. Koristi šemu za proporcionalnu alokaciju
  2999. upotrebljavajući
  3000. prioritet umesto veličine.
  3001. Ako proces Pi generiše PF, postoje dva načina za zamenu
  3002.  
  3003. 1. bira za zamenu
  3004. jedan od njegovih okvira.
  3005.  
  3006. 2. bira za zamenu okvir
  3007. čiji proces ima najmanji prioritet.
  3008. Globalna i lokalna zamena stranica
  3009.  
  3010. Globalna zamena:
  3011. proces bira bilo koji okvir
  3012. iz cele fizičke memorije;
  3013. jedan proces može uzeti okvir od drugog.
  3014.  
  3015. Lokalna zamena:
  3016. svaki proces bira
  3017. samo okvire koji su mu dodeljeni
  3018. Thrashing
  3019. Ako proces nema “dovoljno” stranica,
  3020. pojava PF grešaka je veoma česta
  3021.  
  3022. Razmatrajmo sledeći slučaj:
  3023. ako je stepen iskorišćenja CPU-a previše mali
  3024. operativni sistem
  3025. povećava stepen multiprogramiranja
  3026. tako što aktivira nove proces.
  3027.  
  3028. Thrashing  pojava čestog razmenjivanja stranica
  3029.  
  3030. Thrashing  proces je zauzet zamenom stranica
  3031. Proces troši više vremena za straničenje nego za izvršavanje
  3032. Thrashing
  3033. Kako se izbegava trashing efekat? Model lokalnosti
  3034. Lokalnost je skup stranica koje proces koristi zajedno u jednom intervalu vremena
  3035. Proces može menjati svoje lokalnosti
  3036. Lokalnosti se mogu preklapati.
  3037.  
  3038. Zašto nastupa thrashing efekat?  suma lokalnosti > ukupne fizičke memorije
  3039. Radni model (Working-Set Model)
  3040. Radni model (Working-Set Model)
  3041.   prozor radnog skupa  fiksni broj referenciranih stranica
  3042.  
  3043. Primer: 10,000 instrukcija (memorijskih refernci)
  3044.  
  3045. WSSi (veličina radnog skupa procesa Pi) =
  3046. ukupan broj stranica
  3047. koje proces traži u vremenskom prozoru 
  3048.  
  3049. D =  WSSi  ukupna veličina radnog prostora
  3050.  
  3051. Ako je D > m  Thrashing
  3052.  
  3053. Kada D dođe do veličine sistemske memorije,
  3054. pojedini procesi treba da se suspenduju na disk
  3055. Keeping Track of the Working Set
  3056. Aprokcimaci preko Tajmera + referentni bit
  3057.  
  3058. Primer:  = 10,000
  3059. Tajmer pravi prekide posle svakih 5000 vremeskih jedinica.
  3060. U memoriji se čuvaju 2 bita za svaku stranicu
  3061. Uvek kada tajmer napravi prekid
  3062. kopira i setuje vrednost svih referentnih bitova na 0.
  3063. Ako je jedan od bitova u memoriji = 1  stranica je u radnom skupu.
  3064.  
  3065. Zašto ovo nije kompletno ispravno?
  3066.  
  3067. Poboljšanje =
  3068. 10 bita
  3069. i
  3070. prekid svakih 1000 vremenskih jedinica
  3071. Broj PF grešaka u funkciji broja okvira
  3072. Uspostavlja se “prihvatljiva” PF učestanost.
  3073. Ako je aktuelna učestanost mala, proces gubi okvir (ima ih mnogo)
  3074. Ako je aktuelna učestanost velika, proces dobija okvir (dodeljeno mu je malo okvira)
  3075. Dopunska razmatranja
  3076. Prepaging
  3077. DP=veliki broj PF grešaka pri startovanju programa
  3078. Prepaging je pokušaj da se spreči ovo inicijalno straničenje
  3079. Primer:
  3080. obnoviće ceo radni skup prethodno suspendovanog procesa
  3081.  
  3082. Veličina stranice
  3083. Fragmentacija (manja stranica=>manja fragmentacija)
  3084. veličina tabele stranica
  3085. I/O overhead (zahteva veće stranice)
  3086. Lokalnost (bolja rezolucija, bolja lokalnost, smanjen PF)
  3087. Tipične stranice:512, 1K, 2K, 4K
  3088. Dopunska razmatranja (2)
  3089. TLB efikasnost:
  3090. Količina dostupne memorije u TLB
  3091.  
  3092. TLB efikasnost = (TLB Size) X (Page Size)
  3093.  
  3094. Idealno,
  3095. radni skup svakog procesa se memoriše u TLB.
  3096. U protivnom,
  3097. postoji visok stepen PF grešaka.
  3098. Povećanje veličine TLB-a
  3099. Povećanje veličine stranice.
  3100. Ovo može dovesti do povećane fragmentacije
  3101. mada ne zahtevaju sve aplikacije velike stranice
  3102.  
  3103. Obezbediti stranice različitih veličina
  3104. Ovo omogućava aplikacijama
  3105. da traže veće stranice
  3106. i da ih koriste
  3107. bez povećanja fragmentacije
  3108. Dopunska razmatranja (3)
  3109. Struktura programa
  3110. int A[][] = new int[1024][1024];
  3111. Each row is stored in one page
  3112.  
  3113. Program 1 for (j = 0; j < A.length; j++) for (i = 0; i < A.length; i++) A[i,j] = 0; 1024 x 1024 page faults
  3114.  
  3115. Program 2 for (i = 0; i < A.length; i++) for (j = 0; j < A.length; j++) A[i,j] = 0;
  3116. 1024 page faults
  3117. Dopunska razmatranja (3)
  3118. Struktura programa
  3119. int A[][] = new int[1024][1024];
  3120. Each row is stored in one page
  3121.  
  3122. Program 1
  3123. for (j = 0; j < A.length; j++) for (i = 0; i < A.length; i++)
  3124. A[i,j] = 0;
  3125. 1024 x 1024 page faults
  3126.  
  3127. Dopunska razmatranja (3)
  3128. Struktura programa
  3129. int A[][] = new int[1024][1024];
  3130. Each row is stored in one page
  3131.  
  3132. Program 2
  3133. for (i = 0; i < A.length; i++) for (j = 0; j < A.length; j++) A[i,j] = 0;
  3134. 1024 page faults
  3135.  
  3136.  
  3137. Dopunska razmatranja (4)
  3138. Dok proces obavlja I/O transfer
  3139. Može biti suspendovan
  3140. Stranica za I/O transfer može biti dodeljena drugom procesu
  3141. Postoje dva rešenja za ovaj problem
  3142. I/O se nikad ne izvršavaja korisničkoj memoriji nego u kernelskim baferima
  3143. Mehanizam za zaključavanje stranice
  3144.  
  3145. I/O zaključavanje:
  3146. Stranice mogu biti zaključane u memoriji
  3147.  
  3148. I/O zaključavanje
  3149. Stranice koje se koriste za kopiranje datoteke sa uređaja
  3150. trebaju biti zaključane od buduće selekcije
  3151. u algoritma za zamenu stranica.
  3152. Razlog zbog čega okviri koji se koriste za I/O trebaju biti u memoriji
  3153.  
  3154.  
  3155.  
  3156. Upravljanje memorijom
  3157. Background
  3158.  
  3159. Razmena (Swapping)
  3160.  
  3161. Kontinualna alokacija (Contiguous Allocation)
  3162.  
  3163. Diskontinualna alokacija (Discontinuous Allocation)
  3164.  
  3165. Straničenje (Paging)
  3166.  
  3167. Segmentcija
  3168.  
  3169. Segmentacija sa straničenjem
  3170.  
  3171. Pregled
  3172. Background
  3173. Memorija je jedan od fundamentalnih delova OS
  3174.  
  3175. Glavne funkcije memorijskog menadžera:
  3176.  
  3177. 1. Vodi računa o korišćenju memorije
  3178.  
  3179. 2. Dodeljuje memoriju procesima kad je zatraže
  3180.  
  3181. 3. Oslobađa memoriju od procesa kad završe svoje aktivnosti
  3182.  
  3183. 4. Vrši razmenu između memorije i diska
  3184. kada glavna memorija nije dovoljno velika
  3185. da sadrži sve procese
  3186. Background
  3187. Program se mora učitati
  3188. u memoriju
  3189. unutar adresnog prostora novostvorenog procesa
  3190.  
  3191. Ulazni red (Input queue):
  3192. kolekcija procesa na disku
  3193. koja čeka povratak u memoriju
  3194. i nastavak izvršenja
  3195. Korisnički program
  3196. prolazi preko više faza
  3197. dok ne dođe do izvršavanja
  3198. Vezivanje adresa
  3199. 1. Adrese u izvornom programu
  3200. su simboličke
  3201. (npr. X)
  3202. 2. Prevodilac (Compiler)
  3203. vezuje ove simboličke adrese
  3204. za relokatibilne adrese
  3205. (npr. promenljiva count se vezuje na lokaciju na adresi 14 u odnosu na početak modula)
  3206.  
  3207. 3. Punilac (Loader)
  3208. pretvara ove relokatibilne adrese
  3209. u apsolutne adrese
  3210. (npr. 74014)
  3211.  
  3212. Vezivanje (Binding) = mapiranje iz jednog adresnog prostora u drugi
  3213. Vezivanje adresa
  3214. Vezivanje
  3215. instrukcija i podataka na memorijske adrese
  3216. može se izvršiti na tri različita načina:
  3217.  
  3218. 1. Vreme prevođenja (Compile time):
  3219. Kako nije poznato gde će proces koji će izvršavati,
  3220. generisani kod biti smešten u memoriji;
  3221. prevodilac generiše relativne, a ne apsolutne adrese
  3222.  
  3223. 2. Vreme učitavanja u memoriju (Load time):
  3224. Povezivač i punilac na bazi relokatibilnog koda
  3225. generišu apsolutne adrese i pune memoriju programom
  3226.  
  3227. 3. Vreme izvršavanja (Execution time):
  3228. Za vreme izvršavanja,
  3229. proces se može pomerati
  3230. s jednog memorijskog segmenta na drugi.
  3231. Zahteva hardversku podršku za adresno mapiranje
  3232. Višefazno procesiranje korisničkog programa
  3233. Logički i fizički adresni prostor
  3234. Koncept logičkog adresnog prostora
  3235. bazirano na razdvojenim fizičkim adresni prostorima
  3236. ima centralnu ulogu u upravljanju memorijom.
  3237.  
  3238. Logička adresa:
  3239. generisana od strane CPU;
  3240. u fazi izvršavanja naziva se i virtuelna adresa
  3241. Fizička adresa:
  3242. adresa same memorijske jedinice
  3243. Logičke i fizičke adrese su potpuno iste
  3244. u fazi prevođenja
  3245. u fazi učitavanja
  3246.  
  3247. Logičke i fizičke adrese
  3248. se razlikuju u fazi izvršavanja
  3249. Jedinica za upravljanje memorijom (MMU-Memory Management Unit)
  3250. MMU: Hardverski uređaj koji mapira
  3251. virtuelni adresni prostor u fizički
  3252. U naj-prostijoj MMU šemi,
  3253. vrednost u relokacionom registru
  3254. se sabira sa logičkom adresom koju generiše program
  3255. i tako se dobija fizička adresa
  3256. Korisnički program
  3257. uvek počinje od nulte adrese;
  3258. i ne treba da vodi računa o svom fizičkom prostoru.
  3259. Mapiranje pomoću relokacionog registra
  3260. Razmena (Swapping)
  3261. Proces se može
  3262. privremeno prebaciti iz memorije na disk,
  3263. i onda
  3264. ponovo vratiti u memoriju da bi nastavio izvršavanje
  3265.  
  3266. Vraćanje u memoriju:
  3267. brzi disk, dovoljno veliki
  3268. da prihvati kopije za sve memorijske slike za sve korisnike;
  3269. potrebno je obezbediti direktni pristup za ove memorijske slike
  3270.  
  3271. swap out, swap in:
  3272. razmenjivanje se koristi u prioritetnim šemama za raspoređivanje procesa;
  3273. procesi niskog prioriteta se upisuju na disk dok se
  3274. procesi visokog prioriteta učitavaju u memoriju i izvršavaju
  3275. Najveći deo vremena u ciklusima razmene otpada na prenos podataka;
  3276. trajanje jedne razmene
  3277. zavisi od količine podataka za prenos, karakteristika diskova i hardvera
  3278.  
  3279. Modifikovana verzija razmenjivanja postoji na svim OS, npr., UNIX, Linux, i Windows
  3280. Šematski prikaz razmene
  3281. Dinamičko učitavanje (Dynamic Loading)
  3282. Rutina se puni u memoriju samo kada je program pozove
  3283.  
  3284. Bolja iskorišćenost memorijskog prostora;
  3285. nepotrebne rutine se ne učitavaju u memoriju
  3286.  
  3287. Korisno je kod:
  3288. velikih programa
  3289. jer se u memoriju smeštaju
  3290. samo potrebni delovi programa.
  3291.  
  3292. Ne zahteva specijalnu podršku
  3293. od operativnog sistema
  3294. programer projektuje programe da koriste dinamičko punjenje
  3295. Preklapanje (Overlays)
  3296. Overlay čuva u memoriji
  3297. samo one delove programa
  3298. koji su potrebni u tom trenutku
  3299. Koristi se kada je proces veći
  3300. od memorije koja mu je dodeljena
  3301. Implementira je programer,
  3302. ne postoji specijalna podrška operativnog sistema
  3303. konkretnu strukturu overlay delova definiše programer
  3304. Preklapanje kod dvoprolaznog asemblera
  3305. Dinamičko povezivanje (Dynamic Linking)
  3306. Linkovanje je odloženo za kasnije, u toku izvršavanja
  3307.  
  3308. Malo parče koda za svaki poziv sistemske biblioteke,
  3309. stub,
  3310. pokazuje kako da se locira odgovarajuća sistemska rutina
  3311.  
  3312. Stub
  3313. puni rutinu u memoriju
  3314. i
  3315. izvršava je
  3316.  
  3317. Operativni sistem obezbeđuje da
  3318. da istu sistemsku rutinu koja je u memoriji
  3319. mogu koristititi više procesa.
  3320.  
  3321. Dinamičko povezivanje je naročito korisno za sistemske biblioteke.
  3322. Tipovi memorijiskih alokacija
  3323.  
  3324. Razlikujemo različite tipove memorijske alokacije na osnovu:
  3325. Efektivnosti
  3326. Složenosti
  3327. Hardvrske podrške
  3328.  
  3329. Kontinualna alokacija:
  3330. Single-programming
  3331. Bare
  3332. Resident Monitor
  3333. Multiprogramming
  3334. MFT
  3335. MVT
  3336.  
  3337. Diskontinualna alokacija:
  3338. Paging
  3339. Segmentation
  3340. Kontinualna alokacija za jedan proces
  3341.  
  3342. Bare machine
  3343.  
  3344.  
  3345.  
  3346. Dve particije: Resident Monitor + User area
  3347. Rezidentni deo operativnog sistema
  3348. se obično čuva u nižoj memoriji
  3349. sa tabelom prekidnih rutina
  3350. Korisnički procesi se drže u višoj memoriji
  3351.  
  3352.  
  3353. Kontinualna alokacija
  3354. Multiprogramming:
  3355. više korisničkih programa se čuvaju u memoriju,
  3356. istovremeno
  3357. bez mešanja
  3358.  
  3359. Alokacija uz pomoć particija
  3360.  
  3361. relokacioni registar
  3362. se koristi da zaštiti
  3363. korisničke procese između sebe,
  3364. i
  3365. operativnog sistema od korisničkih procesa.
  3366. relokacioni registar
  3367. sadrži najnižu adresu procesa;
  3368. limit registar
  3369. sadrži maksimalan opseg logičkih adresa procesa
  3370. svaka logička adresa treba biti manja od limit registra.
  3371. Hardverska podrška za relokacione i limit registre
  3372. Kontinualna alokacija (MFT)
  3373. MFT = Multiprogramming with Fixed Partitions
  3374. (fiksni broj zadataka)
  3375. Idealna za multiprogramiranje sistema sa grupnom obradom
  3376.  
  3377. Memorija se deli na N particija fiksne veličine
  3378. {multiply input Q, single input Q}
  3379.  
  3380. Novi proces
  3381. se smešta u najmanju moguću particiju
  3382. uvek postoji neiskorišćenost memorije (interna fragmentacija)
  3383. Kontinualna alokacija (MFT)
  3384. Višestruki redovi (Multiple Queues)
  3385. mali neiskorišćen prostor
  3386. procesi mogu čekati, dok su velike particije neiskorištene
  3387. Jedinstveni red (Single Queue)
  3388. bolja iskorišćenost particija
  3389. veliki neiskorišćen prostor (mali procesi u velikim particijama)
  3390. Kontinualna alokacija (MFT)
  3391. U sistemima sa deljenjem vremena (time-sharing)
  3392. više korisnika
  3393. više procesa
  3394. zahtevaju više od raspoložive memorije (swapping)
  3395.  
  3396. U sistemima sa deljenjem vremena dolazni procesi su:
  3397. previše mali ili previše veliki
  3398. menjaju se u vremenu (promenljive veličine)
  3399. procesi mogu da rastu u vremenu (podaci i stek)
  3400.  
  3401. Obe osobine su nepovoljna za MFT=>
  3402. mnogo neiskorišćenog prostora u particijama => novi MVT
  3403.  
  3404. MFT je neupotrebljiv;
  3405. => novi MVT
  3406.  
  3407. Kontinualna alokacija (MVT)
  3408. Multiple-partition allocation
  3409. šupljina (hole): slobodni kontinualni deo memorije
  3410. šupljine raznih veličina su razbacane po memoriji
  3411.  
  3412. Kad proces naiđe,
  3413. traži se šupljina dovoljno velika
  3414. da preuzme proces
  3415.  
  3416. Operativni sistem vodi evidenciju o: a) alociranim particijama b) slobodnim particijama (šupljine)
  3417. Upravljanje memorijom (slobodna lista)
  3418. Bit mape (Bit Maps)
  3419. Alocirani delovi memorije + bit mapa (0=free, 1=allocated)
  3420. Ako je alocirani deo manji => bit mapa je veća
  3421.  
  3422. Povezane liste (Linked Lists)
  3423. Povezana lista slogova = Proces (Šupljina) { start, dužina}
  3424.  
  3425.  
  3426.  
  3427. Zasebne liste za šupljine sa istim veličinama => tabela sa N ulaza:
  3428. traženje šupljine je brzo, ali je spajanje šupljina veoma teško
  3429.  
  3430. Sistem udruženih parova (Buddy Systems)
  3431. MM koristi listu slobodnih blokova veličine 1,2, 4, 8, 16, 32 ….
  3432. (za 1MB = 21 liste)
  3433. Cilj=2k, svi procesi trebaju imati veličinu približno 2k
  3434. brzo pretraživanje i spajanje šupljina
  3435. ali je dominantna neiskorišćenost prostora
  3436. Sistem udruženih parova (Buddy Systems)
  3437.  
  3438. Algoritmi za izbor prazne particije
  3439. 1. First-fit:
  3440. Procesu se alocira prva šupljina koja je dovoljno velika
  3441.  
  3442. 2. Best-fit:
  3443. Alocira se najmanja šupljina koja je dovoljno velika za proces;
  3444. pretražuju se cela lista, osim ako nije sređene po veličini
  3445. u ostatku ostavlja najmanju moguću šupljinu
  3446. => ideja za worst fit
  3447.  
  3448. 3. Worst-fit:
  3449. Procesu se dodeljuje najveća moguća šupljina;
  3450. opet se pretražuje cela lista
  3451. u ostatku ostavlja najveću moguću šupljinu
  3452. Fragmentacija
  3453. Eksterna fragmentacija – ukupan memorijski prostor može da zadovolji zahtev procesa ali nije kontinualan
  3454.  
  3455. Interna fragmentacija – alocirana memorija može biti veća od zahtevane memorije procesa, ono što je preostalo od alocirane memorije se ne koristi za ništa.
  3456.  
  3457. Eksterna fragmentacija se može smanjiti sažimanjem
  3458. Cilj sažimanja je da se ispremešta sadržaj memorije kako bi se dobile veće šupljine
  3459. Sažimanje je moguće samo ako je relokacija programa dinamička i radi se u vreme izvršavanja
  3460. I/O problem
  3461. opadaju performanse sistema, jer se procesi prekidaju,
  3462. i privremeno prebacuju na disk
  3463. Diskontinualna alokacija
  3464. Straničenje (Paging)
  3465.  
  3466. Segmentacija (Segmentation)
  3467.  
  3468. Kombinacija:
  3469. Straničenje sa segmentacijom
  3470. Segmentacija sa straničenjem
  3471.  
  3472. Straničenje (Paging)
  3473. Logički adresni prostor procesa mora biti kontinualan;
  3474. ali
  3475. fizički adresni prostor procesa ne mora biti kontinualan;
  3476. fizička memorija je dodeljena procesu kad god je raspoloživa
  3477.  
  3478. Fizička memorija se podeli na blokove fiksne veličine koji se nazivaju okviri (frames)
  3479. (veličina je stepen broja 2, između 512 B i 8192 B)
  3480.  
  3481. Logički adresni prostor se podeli na blokove iste veličine koje se nazivaju stranice (pages)
  3482.  
  3483. Za pokretanje programa veličine n stranica:
  3484. potrebno je pronaći n slobodnih okvira
  3485. učitati program
  3486.  
  3487.  
  3488. Tabela stranica (page table) prevodi logičke u fizičke adrese
  3489.  
  3490. Interna fragmentacija
  3491. Straničenje (2)
  3492. Adresa koju generiše CPU podeljena je na:
  3493.  
  3494. Broj stranice (Page number) (p):
  3495. koristi se kao indeks u tabeli stranica
  3496. koja sadrži
  3497. baznu adresu fizičke stranice, okvira
  3498. Pomeraj unutar stranice (Page offset) (d):
  3499. u kombinaciji sa baznom adresom
  3500. definiše
  3501. punu fizičku adresu
  3502. koja se šalje memorijskoj jedinici
  3503. Metoda straničenja
  3504. Primer straničenja
  3505. Primer straničenja
  3506. Slobodni okviri (Free Frames)
  3507. Implementacija tabele stranica
  3508. Tabela stranica se čuva u glavnoj memoriji
  3509.  
  3510. Page-table base register (PTBR)
  3511. pokazuje na tabelu stranica
  3512.  
  3513. Page-table length register (PRLR)
  3514. ukazuje na veličinu tabele stranica
  3515.  
  3516. U ovakvoj šemi
  3517. svaka korisnička memorijska referenca
  3518. se odvija preko dve memorijske reference
  3519. jedna za tabelu stranica i druga za pristup željenoj referenci
  3520.  
  3521. Problem dvostrukog pristupanja memoriji se rešava
  3522. korišćenjem specijalne keš strukture
  3523. koja se naziva
  3524. translation look-aside buffers (TLB)
  3525. Asocijativna memorija
  3526. Asocijativna memorija – paralelno pretraživanje
  3527.  
  3528.  
  3529.  
  3530.  
  3531.  
  3532. Prevođenje adresa (A´, A´´)
  3533. Ako je A´ u asocijativnom registru, (hit)
  3534. uzmi okvir # (tj A´´)
  3535.  
  3536. Ako nije (miss)
  3537. uzmi okvir #
  3538. iz tabele stranica u memoriji
  3539.  
  3540. Hardversko straničenje sa TLB-om
  3541. Efektivno vreme pristupa
  3542. Asocijativno pretraživanje =  vremenskih jedinica
  3543.  
  3544. Pretpostavimo da je vreme trajanja jednog memorijskog ciklusa MC mikrosekundi
  3545.  
  3546. Hit ratio:
  3547. procenat vremena
  3548. vreme koje je potrebno da se pronađe broj stranice u asocijativnim registrima;
  3549. povezan sa brojem asocijativnih registara.
  3550.  
  3551. Hit ratio = 
  3552.  
  3553. Effective Access Time (EAT)= Thit + (1- )Tmiss
  3554.  
  3555. EAT =  (MC + ) + (1 – )(2MC + )
  3556. = 2MC +  – MC
  3557.  
  3558. Zaštita memorije
  3559. Zaštita memorije postiže se
  3560. uvođenjem bitova
  3561. sa specijalnim značenjem
  3562. uz svaki okvir
  3563. Valid-invalid bit se čuvaju u tabeli stranica:
  3564.  
  3565. “valid” ukazuje da je stranica
  3566. u logičkom adresnom prostoru procesa,
  3567. pa je tako to važeća stranica
  3568.  
  3569. “invalid” ukazuje da stranica
  3570. nije u logičkom adresnom prostoru procesa
  3571. Valid (v) or Invalid (i) Bit In A Page Table
  3572. Struktura tabele stranica
  3573. Hijerarhijsko straničenje (Hierarchical Paging)
  3574.  
  3575. Heš bazirane tabele stranica (Hashed Page Tables)
  3576.  
  3577. Invertovane tabele stranica (Inverted Page Tables)
  3578. Hijerarhijsko straničenje
  3579. Podeliti logički adresni prostor
  3580. u
  3581. više tabela stranica
  3582.  
  3583. Jednostavna tehnika
  3584. je straničenje u dva nivoa
  3585. (two-level page table)
  3586. Straničenje u dva nivoa
  3587. Logička adresa (na 32-bitoj mašini sa veličinom stranice 4K) je podeljena na:
  3588. broj stranice koji se sastoji od 20 bitova
  3589. ofset stranice koji se sastoji od 12 bitova
  3590. Kada se primeni tabela stranica, broj stranice se dalje deli na:
  3591. 10-bita za broj stranice
  3592. 10-bita za offset stranice
  3593. Iz toga sledi, logička adresa:
  3594. gde je:
  3595. p1 indeks u spoljnoj tabeli stranica
  3596. p2 je pozicija u selektovanoj untrašnjoj stranici
  3597. Prikaz straničenja u dva nivoa
  3598. Šema prevođenja adresa
  3599. Šema prevođenja adresa za
  3600. straničenje u dva nivoa na 32-bitoj arhitekturi
  3601. Heš bazirane tabele stranica
  3602. Koristi se kod adresnih prostora koji su > 32 bita
  3603.  
  3604. Virtuelni broj stranice se dobija iz heširane tabele stranica
  3605. Ova tabela stranica sadrži:
  3606. povezanu listu elemenata
  3607. koji imaju istu vrednost heš funkcije.
  3608.  
  3609. Virtuelni brojevi stranica se upoređuju
  3610. u ovom nizu
  3611. i traži se odgovarajući broj
  3612. Kada se pronađe odgovarajući virtuelni broj,
  3613. dobijamo vrednost fizičke stranice
  3614. Heš bazirane tabele stranica
  3615. Invertovane tabele stranica
  3616. Jedan ulaz za svaki okvir ili fizičku stranicu memorije
  3617.  
  3618. Ulaz se sastoji od:
  3619. virtuelne adrese stranice
  3620. koja je pridružena ovoj memorijskoj lokaciji,
  3621. sa informacijom o procesu koji je dobio tu stranicu PID
  3622.  
  3623. Smanjuje se memorija potrebna da uskladišti svaku tabelu stranica,
  3624. ali se
  3625. povećava vreme potrebno za pretraživanje tabele
  3626. jer se pretražuje cela tabela.
  3627.  
  3628. Zbog toga se kotisti heš tabela da ograniči pretraživanje
  3629. Invertovane tabele stranica
  3630. Deljive stranice (Shared Pages)
  3631. Deljivi kod
  3632. Jedna kopija read-only (reentrant) koda
  3633. deli se između procesa (npr., tekst editori, kompajleri, grafički sistemi)
  3634. deljivi kod treba biti na istoj fizičkoj lokaciji
  3635. u logičkom adresnom prostoru svih procesa
  3636. Privatni kod i podaci
  3637. svaki proces čuva odvojenu kopiju koda i podataka
  3638. stranice za privatni kod i podaci mogu biti bilo gde
  3639. u logičkom adresnom prostoru.
  3640. Deljive stranice
  3641. Segmentacija
  3642. Šema za upravljanje memorijom
  3643. koja podržava
  3644. korisnički pogled na memoriju
  3645.  
  3646. Program je kolekcija segmenata
  3647.  
  3648. Segment je logička jedinica kao što je:
  3649. glavni program
  3650. procedura
  3651. funkcija
  3652. metod
  3653. objekat
  3654. localne promenljive, globalne promenljive,
  3655. blok
  3656. stek
  3657. tabela simbola, nizovi
  3658. Logički izgled programa
  3659. Logički izgled segmentacije
  3660. Arhitektura segmentacije
  3661. Logička adresa se sastoji od dva dela:
  3662. <segment-number, offset>
  3663.  
  3664. Tabela segmenata – mapiranje dvodimenzionalnih fizičkih adresa;
  3665. Svaki ulaz u tabeli sadrži:
  3666. bazna adresa segmenta:
  3667. defniše početnu fizičku adresu segmenta u memoriji
  3668. ograničenje segmenata:
  3669. definiše dužinu segmenta
  3670.  
  3671. Segment-table base register (STBR)
  3672. pokazuje na lokaciju u memoriji gde je smeštena tabela segmenata
  3673.  
  3674. Segment-table length register (STLR)
  3675. predstavlja broj segmenata koje koristi program;
  3676. broj segmenata je ispravan ako je s < STLR.
  3677. Arhitektura segmentacije (2)
  3678. Relokacija:
  3679. dinamičko, preko tabele segmenata
  3680. Deljenje:
  3681. deljivi segmenti
  3682. isti broj segmenata
  3683. Alokacija:
  3684. first fit/best fit
  3685. eksterna fragmentacija
  3686. Arhitektura segmentacije (3)
  3687. Zaštita.
  3688. Za svaki ulaz u tabelu segmenata asocira se:
  3689. validation bit = 0  nepravilan segment
  3690. read/write/execute privilegije
  3691.  
  3692. Zaštita je povezana sa segmentima;
  3693. deljenje koda se odvija u nivoima segmenata.
  3694.  
  3695. Pošto segmenti variraju u vremenu,
  3696. alokacija memorije ima problem dinamičke alokacije.
  3697.  
  3698. Primer segmentacije prikazan je u sledećem dijagramu
  3699. Hardverska segmentacija
  3700. Primer segmentacije
  3701. Deljivi segmenti
  3702. Segmentacija sa straničenjem – MULTICS
  3703. MULTICS sistem rešava probleme
  3704. eksterne fragmentacije i
  3705. velikog vremena za pretraživanje
  3706. uz pomoć straničenja segmenata
  3707. Ovo rešenje se razlikuje od čiste segmentacije
  3708. u tome što se na ulazu u tabelu segmenata
  3709. ne nalazi bazna adresa segmenta,
  3710. ali
  3711. se nalazi bazna adresa tabele stranica za taj segment.
  3712. Prevođenje adresa - MULTICS
  3713. Segmentacija sa straničenjem – Intel 386
  3714. Kao što je prikazano na sledećem diagramu,
  3715. Intel 386
  3716. koristi
  3717. segmentaciju sa straničenjem
  3718. sa šemom za straničenje u dva nivoa
  3719. Prevođenje adresa - Intel 30386
  3720. Zaključak
  3721. MM šeme
  3722. {Bare, Resident Monitor,MFT,MVT, Straničenje, Segmentacija}
  3723.  
  3724. Hardverska podrška
  3725. RM, MFT=MVT registar ili par ograničenih registara
  3726. P&S zahteva tabele mapiranja
  3727.  
  3728. Performanse
  3729. Prostije šeme su brže
  3730. P&S potreban je hardverski akcelerator, registri, CPU-TLB
  3731.  
  3732. Fragmentacija
  3733. MFT i straničenje pate od interne fragmentacije (fiksna veličina prostora)
  3734. MVT i segmentacija pate od eksterne fragmentacije
  3735. Zaključak
  3736.  
  3737. Pomeranje
  3738. Logička adresa se može pomerati dinamično,
  3739. za vreme izvršavanja.
  3740. To je potrebno za kompakciju memorije
  3741.  
  3742. Swapping
  3743. Svaki algoritam može imati ugrađen swapping
  3744.  
  3745. Deljenje
  3746. deljenje obično zahteva da bude korišćemo ili straničenje ili segmentacija,
  3747. da obezbedi male pakete informacija (stranice ili segmente)
  3748. koji mogu biti deljeni.
  3749.  
  3750. Zaštita
  3751. valid/invalid bit
  3752. read only, execute only, r/w
  3753.  
  3754.  
  3755.  
  3756.  
  3757. Realizacija sistema datoteka
  3758. Struktura sistema datoteka
  3759.  
  3760. Realizacija sistema datoteka
  3761.  
  3762. Realizacija direktorijuma
  3763.  
  3764. Alokaciona metoda
  3765.  
  3766. Upravljanje slobodnim prostorom
  3767.  
  3768. Efikasnost i performanse
  3769.  
  3770. Oporavak (Recovery)
  3771.  
  3772. Log-Structured File Systems
  3773. Struktura sistema datoteka
  3774. Struktura datoteka:
  3775. Logical storage unit
  3776. Skup povezanih informacija
  3777.  
  3778. (FS) Sistem datoteka se nalazi na sekundarnoj memoriji (diskovi)
  3779.  
  3780. FS Sistem datoteka je organizovan u slojevima.
  3781.  
  3782. Kontrolni blok datoteke (FCB):
  3783. memorijska struktura
  3784. koja sadrži informacije o datoteci
  3785. Sistem datoteka realizovan u slojevima
  3786. Strukture podataka neophodne za realizaciju sistema datoteka
  3787. Disk
  3788.  
  3789. BCB (boot control block, MBR,MPT)
  3790.  
  3791. Sistemi datoteka
  3792.  
  3793. kontroni blok particije (superblock, BPB)
  3794.  
  3795. kontrolne strukture za alokaciju datoteka (FAT table, inode table, MFT)
  3796.  
  3797. direktorijumske strukture
  3798.  
  3799. FCB (file-info)
  3800. Memorijske strukture podataka
  3801. tabele otvorenih datoteka:
  3802. na sistemskom nivou
  3803. po procesu
  3804.  
  3805. keš za direktorijume = nedavno korišćeni blokovi direktorijuma
  3806.  
  3807. keš za metapodatke =nedavno korišćene strukture metapodataka
  3808.  
  3809. keš za datoteke
  3810.  
  3811. strukture za upravljanje slobodnim prostorom
  3812. Memorijske strukture podataka
  3813. Virtuelni sistem datoteka
  3814. Virtuelni sistem datoteka (VFS)
  3815. predstavlja
  3816. jedan objektno orjentisani način
  3817. realizacije sistema datoteka
  3818.  
  3819. VFS omogućava
  3820. da isti sistemski poziv (API)
  3821. bude korišćen
  3822. za različite tipove sistema datoteka
  3823.  
  3824. API je u VFS interfejsu,
  3825. a ne u bilo kom drugom sistemu datoteka
  3826. Virtuelni sistem datoteka – šematski prikaz
  3827. Realizacija direktorijuma
  3828. 1. Linearna lista
  3829. linearna lista imena datoteka sa pokazivačem na blokove podataka
  3830. jednostavna šema
  3831. dugo pretraživanje
  3832. 2. Hash tabela:
  3833. linearna lista sa hash tabelom
  3834. smanjuje vreme pretraživanja direktorijuma
  3835. kolizije
  3836. fiksne veličine
  3837.  
  3838. 3. B-trees (B+ or B-)
  3839. Alokaciona metoda
  3840. Alokaciona metoda
  3841. predstavlja način
  3842. na koji se blokovi diska
  3843. dodeljuju datoteci:
  3844.  
  3845. Kontinualna alokacija
  3846.  
  3847. Povezana alokacija
  3848.  
  3849. Indeksna alokacija
  3850. Kontinualna alokacija
  3851. Svaka datoteka zauzima
  3852. kontinualne blokove
  3853. na disku
  3854. Prosta metoda, FCB (file-info) jednostavan, sastoji se od:
  3855. početne adrese (blok #)
  3856. dužine (broj blokova)
  3857.  
  3858. Proizvoljan pristup (random access)
  3859. (direktan pristup bilo kom delu datoteke)
  3860.  
  3861. Rasipanje memorijskog prostora
  3862. (za datoteku odmah mora dodeliti ukupni adresni prostor)
  3863.  
  3864. Datoteka ne može da raste
  3865. Kontinualna alokacija prostora na disku
  3866. Problemi kod kontinualne alokacije
  3867. Eksterna fragmentacija i kompakcija
  3868. Dinamička alokacija memorije:
  3869. First fit (prva šupljina koja je dovoljno velika)
  3870. Best fit (najmanja šupljina)
  3871. Worst fit (najveća moguća šupljina)
  3872.  
  3873. Glavni problem=creation:
  3874. proces mora da zna veličinu datoteke koja će biti formirana
  3875. to veoma je teško proceniti u trenutku formiranja
  3876.  
  3877. Ako je alociran suviše mali prostor =>a datoteka treba da raste
  3878. Postoje 2 mogućnosti:
  3879. 01. Proces će se završiti sa porukom o grešci
  3880.  
  3881. 02. Kopiraće datoteku u veću šupljinu i osloboditi prošlu
  3882. Extent metoda
  3883. Mnogi noviiji sistemi datoteka (npr. VFS)
  3884. koriste modifikovanu
  3885. metodu kontinualne alokacije
  3886.  
  3887. Sistem datoteka baziran na extent metodi
  3888. alocira blokove na disku
  3889. u celinama-extents
  3890.  
  3891. Extent je celina sastavljena od kontinualnih blokova na disku
  3892. extent je jedinica promenljive veličine
  3893. extent se koristi za alokaciju datoteke
  3894. datoteka se sastoji od jednog ili više extent-a
  3895. Povezana alokacija
  3896. Svaka datoteka dobija povezanu listu blokova
  3897. blokovi mogu biti razbacani svugde po disku
  3898. Povezana alokacija
  3899. Povezana alokacija (2)
  3900. Prosta metoda, FCB zahteva samo početnu adresu
  3901.  
  3902. Sistem za upravljanje slobodnim prostorom:
  3903. nema rasipanja memorijskog prostora
  3904.  
  3905. Ne postoji random pristup
  3906. nemože direktno pristupiti
  3907. bilo kom delu datoteke
  3908. bez prethodne analize
  3909.  
  3910. Prednosti i mane povezane alokacije
  3911. Prednosti:
  3912. Nema problema sa eksternom fragmentacijom
  3913. Kreiranje datoteke: nije potrebno definisati veličinu datoteke
  3914. Datoteka može da raste dok ima slobodnih blokova
  3915. Nikada nije neophodan kompaktan prostor na disku
  3916.  
  3917. Nedostaci:
  3918. Datoteke su razbacane, ali su i pokazivači na blokove razbacani
  3919. Usporeno pretraživanje zbog sekvencijalnog pristupa
  3920. Loše za proizvoljno pristupanje datoteci
  3921. Loše za pristupanje velikim datotekama
  3922. Pokazivači => gubitak prostora
  3923. Pouzdanost =loši pokazivači mogu stvoriti mnoge greške FS
  3924. File-Allocation Table
  3925. Primer FAT tabele
  3926. Primer: primer.txt = {5, 14, 70, 130}
  3927. FCB FAT Data area
  3928. Indeksna alokacija
  3929. Svakoj datoteci se dodeljuje indeksni blok
  3930. koji sadrži sve informacije o prostornom rasporedu datoteke
  3931. Logički prikaz
  3932. Primer indeksne alokacije
  3933. Indeksna alokacija (2)
  3934. Potrebna je indeksna tabela
  3935.  
  3936. Random pristup
  3937.  
  3938. Dinamički pristup
  3939. nema eksternu fragmentaciju
  3940. ali ima
  3941. gubitak prostora (index blocks)
  3942. Indeksna alokacija – mapiranje
  3943. UNIX FS
  3944. FS Layout DATA area FCB Inode
  3945. UNIX (4KB po bloku)
  3946. Poređenje
  3947. Kontinualna alokacija
  3948. najbrža jer posle čitanja FCB,
  3949. prelazi se na direktno čitanje datoteke
  3950.  
  3951. Linkovana alokacija
  3952. dobra za sekvencijalan pristup
  3953. čita blok i čita sledeći pokazivač
  3954. dva puta pristupa disku za jedan blok datoteke
  3955.  
  3956. veoma loša za direktan pristup
  3957. za i-ti blok može zahtevati i čitanja diska
  3958.  
  3959.  
  3960. Kao rezultat, neki sistemi podržavaju
  3961. direktan pristup korišćenjem CA
  3962. sekvencijalan pristup korišćenjem LA
  3963.  
  3964. Poređenje
  3965.  
  3966. Indeksna alokacija je najkompleksnija
  3967.  
  3968. Performanse IA zavise od:
  3969. strukture indeksa i strukture memorije
  3970. veličine datoteke
  3971. pozicije potrebnih blokova
  3972. direktni blok je brži
  3973. indirektni blok je sporiji
  3974.  
  3975. Kombinacija CA+IA
  3976. za manje datoteke = CA
  3977. za veće datoteke = IA
  3978. Upravljanje slobodnim prostorom
  3979. Bit vector (n blocks)
  3980. Linkovane liste
  3981. Upravljanje slobodnim prostorom(2)
  3982.  
  3983. Modifikacije:
  3984.  
  3985. 1. Grupisanje
  3986. U prvom bloku se čuvju pokazivači
  3987. na sledećih N-1 slobodnih blokova
  3988. Dok N-ti na sledeći free information block
  3989.  
  3990. 2. Brojanje (Counting)
  3991. adresa slobodnih blokova (pointer)
  3992. +
  3993. broj slobodnih blokova u blizini
  3994. Efikasnost i performanse
  3995. Efikasnost zavisi od:
  3996.  
  3997. Disk-alokacije i algoritama direktorijuma
  3998.  
  3999. tipova podataka koji se čuvaju u direktorijumskim ulazima
  4000.  
  4001. Performanse:
  4002. disk keš:
  4003. posebni delovi u glavnoj memoriji za blokove koji se često koriste
  4004.  
  4005. free-behind and read-ahead:
  4006. tehnike za optimizaciju sekvencijalnog pristupa
  4007.  
  4008. unapređenje performansi PC-ja
  4009. tako što se odvoji deo u memoriji kao virtualni disk,
  4010. ili RAM disk
  4011. Razne komponente keša
  4012. Keš za stranice
  4013. Keš za stranice
  4014. kešira stranice
  4015. a ne blokove na disku
  4016. korišćenjem tehnike virtualne memorije
  4017.  
  4018. Memorijski mapirane datoteke koriste stranični keš
  4019.  
  4020. Datoteke: I/O Drajveri
  4021. kroz sistem datoteka
  4022. koriste baferski (disk) keš
  4023.  
  4024. Ovo je predstavljeno na sledećoj slici:
  4025. I/O Without a Unified Buffer Cache
  4026. Unified Buffer Cache
  4027. Unified buffer cache
  4028.  
  4029. koristi isti keš za stranice
  4030. da kešira obe:
  4031. memorijski mapirane stranice
  4032. i
  4033. datoteke (običan FS I/O)
  4034. I/O Using a Unified Buffer Cache
  4035. Buffer Cache
  4036. Podela keša
  4037.  
  4038. Alokacija keša (Cache allocation)
  4039.  
  4040. Razmena podataka u kešu (Cache replacement)
  4041.  
  4042. Tehnika upisa podataka (Write techniques)
  4043.  
  4044. Cache coherency for DFS
  4045.  
  4046.  
  4047. Podela keša
  4048. Organizacija keša
  4049. Svaki deo keša ima ima svoju organizaciju
  4050.  
  4051. Keš direktorijuma =
  4052. nedavno korišćeni direktorijumski blokovi
  4053. sortirani po imenu
  4054.  
  4055. Keš metapodataka =
  4056. nedavno korišćeni metapodaci
  4057. sortirani po broju metapodatka (broj inoda)
  4058.  
  4059. Keš za datoteke
  4060. Keš za definicuju blokova (2**N blokova diska)
  4061. Algoritam za alokaciju/pretraživanje
  4062. Standardna šema
  4063.  
  4064. Razmenjivanje podataka u kešu
  4065. Svi delovi keša su ograničene veličine
  4066.  
  4067. Razmenjivanje podataka u kešu je neophodno
  4068.  
  4069. Tehnike za razmenjivanje podataka u kešu
  4070. LRU
  4071. LFU
  4072. LRFU
  4073.  
  4074. Veoma složen za DFS, Internet, proxy caching …
  4075.  
  4076. Kombinacija vrednosti (prostor x starost, vreme uzimanja podataka)
  4077.  
  4078. Tehnike upisa
  4079. Keš bez mogućnostu upisa = niske performanse
  4080.  
  4081. Dve metode
  4082. Write-through (sinhronizovani upis)
  4083. Siguran sistem, bez gubitka podataka, ali sa niskim performansama
  4084. Write-back (odloženi upis)
  4085. Visoke performanse, ali postoji gubitak podataka u slučaju da sistem bude oboren
  4086. Tehnike odloženog upisa
  4087. Upis nakon zatvaranja (Write on eject)
  4088. Pražnjenje bafera (Flushing)
  4089. Log-approach
  4090. Log for meta data, only = JFS
  4091. Total log = LFS
  4092. Journaling –LOG approach
  4093. svi metapodacii se ažuriraju (t)  u jednom velikom logu
  4094. JFS - Log Structured File Systems
  4095. Log structured (or journaling) file systems
  4096. snimaju svako ažuriranje sistema datoteka
  4097. kao transakciju
  4098.  
  4099. Sve transakcije se upisuju u log
  4100. transakcija se izvršava
  4101. samo kada je upisana u log
  4102. Međutim, sistem datoteka se možda ne može odmah ažurirati
  4103.  
  4104. Transakcije u log
  4105. se asinhrono upisuju u sistem datoteka.
  4106. kada je sistem datoteka modifikovan,
  4107. transakcija se briše iz loga.
  4108.  
  4109. U slučaju obaranja sistema,
  4110. sve postojeće transakcije u logu
  4111. trebaju da nastave da funkcionišu
  4112. Oporavak (Recovery)
  4113. Keširanje i obaranje sistema
  4114. mogu prouzrokovati
  4115. oštećenje podataka
  4116.  
  4117. Provera konzistencije:
  4118. uporedjuje podat ke u strukturi direktorijuma
  4119. sa blokovima podataka na disku
  4120. pokušava da locira nekonzistentne podatke
  4121.  
  4122. [cache data] must be = [disk data]
  4123.  
  4124. U slučaju obaranja sistema podaci mogu biti oštećeni
  4125. Koristiti sistemske programe
  4126. za pravljenje kopije podataka sa diska na drugi memorijski uređaj
  4127. (flopi disk, magnetna traka).
  4128. Oporavak izgubljenih datoteka
  4129. prebacivanjem
  4130. sa bekapa
  4131.  
  4132.  
  4133.  
  4134. Interfejs za sistem datoteka
  4135. Pojam datoteke (File Concept)
  4136. Metode pristupa (Access Methods)
  4137. Struktura direktorijuma (Directory Structure)
  4138.  
  4139. Aktiviranje sistema datoteka (File System Mounting)
  4140.  
  4141. Deljenje datoteka (File Sharing)
  4142. Zaštita (Protection)
  4143. Pojam datoteke
  4144. Definicije:
  4145. 1. Kontinulan logički adresni prostor
  4146. (logička jedinica diska)
  4147.  
  4148. 2. Datoteka je imenovana kolekcija povezanih informacija
  4149. koji se čuva
  4150. na disku
  4151.  
  4152. 3. Datoteka je sekvenca bitova, bajtova, linija ili zapisa
  4153. čije značenje
  4154. je definisano od strane kreatora datoteke.
  4155. Pojam datoteke
  4156. Tipovi datoteka (content):
  4157. data {brojčani, karakter, binarni, bit mape}
  4158. program (exe files)
  4159.  
  4160. Tipovi datoteka (support)
  4161. podrška od strane OS ili od strane aplikacija
  4162. UNIX koncept =
  4163. ne postoje tipovi datoteka u OS
  4164. maksimalna fleksibilnost datoteka
  4165. aplikacije podržavaju svoje tipove datoteka
  4166.  
  4167. Oblik
  4168. slobodni oblik (npr. tekstualna datoteka)
  4169. rigidni oblik (npr. baza podataka)
  4170.  
  4171. Logička struktura datoteka
  4172. 1. None (Nema je): kolekcija reči, bajtova
  4173.  
  4174. 2. Jednostavna logička struktura
  4175. Zapisi
  4176. Fiksne dužine
  4177. Promenljive dužine
  4178.  
  4179. 3. Složene strukture
  4180. Formatirani dokumenti
  4181.  
  4182. Može se simulirati
  4183. umetanjem kontrolnih znakova
  4184. u datoteke
  4185. bez logičke strukture.
  4186.  
  4187. Ko odlučuje (pruža podršku):
  4188. Operativni sistem
  4189. Program-aplikacija
  4190. Atributi datoteka
  4191. Ime (Name)
  4192. jedina informacija koja se održava u formi koju može da čita čovek.
  4193. Tip (Type)
  4194. dopuna za sisteme koji podržavaju različite tipove podataka.
  4195. Lokacija (Location)
  4196. pokazivač na lokaciju datoteke na disku.
  4197. Veličina (Size)
  4198. trenutna veličina datoteke.
  4199.  
  4200. Zaštita (Protection)
  4201. kontroliše ko može čitati, upisivati i izvršavati datoteku.
  4202.  
  4203. Vreme, datum i korisnička identifikacija
  4204. podaci za zaštitu, sigurnost i kontrolu korišćenja datoteke.
  4205.  
  4206. Atributi-Informacije o datotekama
  4207. se čuvaju u strukturi direktorijuma,
  4208. koji je se nalazi na disku
  4209. Operacije nad datotekama
  4210. Kreiranje (Create)
  4211. (dva koraka=dodeli prostor + upisuje u direktorijum)
  4212.  
  4213. Upis (Write)
  4214. (ime ili fd, bafer u kome se nalazi informacija o upisu)
  4215. sistem za svaku otvorenu datoteku, čuva ukazivač za ciklus upisa koji se stalno ažurira
  4216.  
  4217. Čitanje (Read)
  4218. (ime ili fd, bafer u koji će se čitati datoteka )
  4219. R/W =trenutni pokazivač na otvorenu datoteku
  4220. čita trenutni pokazivač, upisuje trenutni pokazivač
  4221.  
  4222. Pozicioniranje unutar datoteke
  4223. file seek (nema transfera podataka)
  4224.  
  4225. Brisanje (Delete)
  4226. (oslobađa zauzeti prostor + uklanja FCB)
  4227.  
  4228. Odsecanje (Truncate)
  4229. postojeća datoteka se smanjuje
  4230. oslobađa se prostor
  4231. Operacije nad datotekama
  4232. Otvaranje(Fi) (Open)
  4233. pretražuje se direktorijumska struktura na disku
  4234. kada se nađe kontrolni blok datoteke
  4235. upisuje se u glavnu sistemsku tabelu
  4236.  
  4237. provera sigurnosti
  4238. način pristupa (kreiranje, ro, rw)
  4239. za višekorisnički OS kao što je UNIX=> dve tabele + brojač
  4240. tabela otvorenih datoteka za svaki proces (per process file table)
  4241. sistemska tabela otvorenih datoteka (system wide file table)
  4242.  
  4243.  
  4244. Zatvaranje(Fi) (Close)
  4245. kontrolni blok datoteke iz memorije se ažurira
  4246. ponovo upisuje na disk (ako je modifikovan)
  4247. Tipovi datoteka – ime, ekstenzija
  4248. Metode pristupa datotekama
  4249. Sekvencijalan pristup datoteci (tape model)
  4250. tekući pokazivač (cp)
  4251. čitanje sledećeg bloka + vrednost cp se ažurira
  4252. upis u sledeći blok + vrednost cp se ažurira
  4253.  
  4254. reset (premotavanje)
  4255.  
  4256. ne postoji mogućnost prepisivanja
  4257.  
  4258. Editori i prevodioci koriste ovaj način pristupa datotekama
  4259.  
  4260. Metode pristupa datotekama
  4261.  
  4262. Direktan pristup datoteci (disk model)
  4263. (datoteka = N blokova)
  4264. svakom bloku se može pristupiti u bilo koje vreme
  4265.  
  4266. pristup = N-om bloku
  4267. čitanje n-tog bloka
  4268. upis u n-ti blok
  4269.  
  4270. pozicioniranje na n-ti blok
  4271. čitanje sledećeg bloka
  4272. upis u sledeći blok (kao kod sekvencijalnog modela)
  4273.  
  4274. prepiši n
  4275.  
  4276. n = relativan broj blokova u datoteci
  4277. Sekvencijalan pristup datoteci
  4278. Simulacija sekvencijalnog pristupa preko direktnog pristupa
  4279. Indeksno-sekvencijalni pristup datoteci
  4280. Struktura direktorijuma
  4281. Kolekcija nodova
  4282. sadrži
  4283. informacije o svim datotekama
  4284. Organizacija sistema datoteka
  4285. Information in a Directory Entry (file-info) ili FCB
  4286. Ime
  4287. Tip (za OS koji podržavaju različite tipove)
  4288. Adrese ( layout datoteka)
  4289. Trenutna dužina (size)
  4290. Maksimalna dužina
  4291. Datum poslednjeg pristupa (za arhiviranje)
  4292. Datum poslednje promene
  4293. ID vlasnika
  4294. Informacije o zaštiti
  4295.  
  4296. Sadržaj
  4297. Različite informacije za različite OS
  4298. Efikasna pretraga (B-trees, hashing)
  4299. Operacije nad direktorijumima
  4300. Pretraživanje datoteka
  4301.  
  4302. Kreiranje datoteke
  4303.  
  4304. Brisanje datoteke
  4305.  
  4306. Listanje sadržaja direktorijuma
  4307.  
  4308. Promena imena datoteke
  4309.  
  4310. Arhiviranje
  4311. Logička organizacija direktorijuma
  4312. Efikasnost:
  4313. brzo lociranje datoteke.
  4314.  
  4315. Imenovanje datoteka:
  4316. podesan način, koji korisniku omogućava davanje imena.
  4317. Dva korisnika mogu imati
  4318. isto ime za različite datoteke.
  4319. Ista datoteka može imati
  4320. nekoliko različitih imena (links).
  4321.  
  4322. Grupisanje:
  4323. logičko grupisanje datoteka po osobinama,
  4324. (npr., svi Java programi, sve igre, …)
  4325. Struktura sa jednim nivoom
  4326. Jedan direktorijum za sve korisnike
  4327. Struktura sa dva nivoa
  4328. Posebni direktorijum za svakog korisnika (dva nivoa)
  4329. Stablo direktorijuma
  4330. Stablo direktorijuma (2)
  4331. Efikasno pretraživanje
  4332.  
  4333. Mogućnost grupisanja
  4334. Trenutni direktorijum (radni direktorijum)
  4335. cd /spell/mail/prog
  4336. type list
  4337.  
  4338. Apsolutna ili relativna putanja i ime
  4339.  
  4340. Stablo direktorijuma (3)
  4341. Kreiranje nove datoteke se obavlja u tekućem direktorijumu
  4342.  
  4343. Brisanje datoteke
  4344. rm <ime datoteke>
  4345.  
  4346. Kreiranje novog poddirektorijuma se obavlja u trekućem direktorijumu
  4347. mkdir <ime direktorijuma>
  4348. Primer: ako je tekući direktorijum /mail
  4349. mkdir count
  4350.  
  4351. Brisanje direktorijuma = samo ako je prazan
  4352. Acyclic-Graph Directories (deljenje prostora)
  4353. Potreba za deljenjem datoteka (ista datoteka pod različitim imenima)
  4354. Deljenje direktorijuma i datoteka
  4355. Link = pokazivač na druge datoteke u poddirektorijumu
  4356. Acyclic-Graph Directories (2)
  4357. Problem brisanja linkovanih datoteka
  4358. If dict deletes list  dangling pointer (there a link)
  4359.  
  4360. Rešenja:
  4361. Free deletion (good for symbolic links)
  4362.  
  4363. Deletion only after all references are deleted
  4364.  
  4365. Reference file or number of links count
  4366.  
  4367. Entry-hold-count solution
  4368. General Graph Directory
  4369. General Graph Directory (2)
  4370. Kako da obezbedimo da ne dođe do pojave krugova?
  4371.  
  4372. 1. ne dozvoliti linkovanje između direktorijuma
  4373. Dozvoliti linkovanje samo datoteka
  4374.  
  4375. 2. garbage collection
  4376.  
  4377. 3. algoritam za otkrivanje krugova
  4378. pre kreiranja novog linka
  4379. koristi se algoritam za detekciju krugova
  4380. da kontorliše da li je sve u redu
  4381. Aktiviranje sistema datoteka
  4382. Sistem datoteka
  4383. mora biti aktiviran
  4384. pre korišćenja
  4385.  
  4386. Neaktivan sistem datoteka
  4387. se montira (mount)
  4388. na tačku za montiranje (MPD)
  4389. (a) Existing. (b) Unmounted Partition
  4390. Mount Point
  4391. Deljenje datoteka (između korisnika)
  4392. Deljenje datoteka
  4393. na višekorisničkim sistemima
  4394. je veoma korisno
  4395.  
  4396. Deljenje se može obaviti
  4397. preko
  4398. bezbedne šeme
  4399. Na distribuiranim sistemima,
  4400. datoteke mogu biti deljene
  4401. kroz mrežu
  4402. Network File System (NFS)
  4403. je deljenje daoteka
  4404. u distribuiranim uslovima
  4405. Zaštita
  4406. Tipovi zaštite:
  4407. totalna zabrana
  4408. totalna sloboda
  4409. kontrolisani pristup
  4410.  
  4411. Lista kontrole pristupa (Access Control List)
  4412. totalna lista
  4413. sažeta lista
  4414.  
  4415. Vlasnik/kreator datoteke treba biti sposoban da kontroliše:
  4416. šta može biti urađeno
  4417. i od koga
  4418. Tipovi pristupa:
  4419. Čitanje (Read)
  4420. Upis (Write)
  4421. Izvršavanje (Execute)
  4422. Dodavanje (Append)
  4423. Brisanje (Delete)
  4424. Listanje atributa datoteke (List)
  4425. Liste pristupa i grupe (UNIX)
  4426. način pristupa: read, write, execute
  4427. tri kategorije korisnika:
  4428. RWX
  4429. a) owner access 7  1 1 1 RWX
  4430. b) group access 6  1 1 0
  4431. RWX
  4432. c) public access 1  0 0 1
  4433. Pitati manadžera da dozvoli kreiranje grupe (jedinstveno ime), npr. G, i dodati neke korisnike u grupu
  4434. Za pojedinu datoteku (npr. igra) ili poddirektorijum, definisati svojstven pristup
  4435.  
  4436.  
  4437.  
  4438.  
  4439.  
  4440. Ulazno/Izlazni (I/O) Sistemi
  4441. I/O Ulazno/Izlazni Hardver
  4442.  
  4443. Aplikacijski I/O Interfejs
  4444.  
  4445. Kernelski I/O Podsistem
  4446.  
  4447. Pretvaranje I/O Zahteva u Hardverske Operacije
  4448.  
  4449. Tokovi Podataka (Streams)
  4450.  
  4451. Performanse
  4452. I/O Hardver
  4453. Opšte kategorije I/O uređaja:
  4454. memorijski uređaji
  4455. uređaji za prenos podataka
  4456. uređaji za korisnički intrefejs
  4457.  
  4458. Opšti koncepti:
  4459. Controller (host adapter) realizovan kao:
  4460. port (4 vrste registara :kontrolni, statusni, ulazni za podatke, izlazni za podatke )
  4461. magistrala (jedan uređaj priključen na sistem-daisy chain ili direktno deljenje podataka)
  4462.  
  4463. I/O instrukcije za kontrolu uređaja
  4464.  
  4465. I/O uređaji poseduju adrese, koje se koriste za:
  4466. direktne I/O instrukcije
  4467. memorijski mapirane I/O instrukcije
  4468. Tipična Struktura Magistrale ko PC-a
  4469. Lokacije Portova I/O Uređaja Kod PC-a (partial)
  4470. Tehnika Prozivanja (polling) PIO
  4471.  
  4472. Određivanje stanja korišćenjem statusnog registra, bits:
  4473. zauzeto(busy)
  4474. greska(error)
  4475.  
  4476. Čekanje dok kontroler ne bude spreman-slobodan (free)
  4477. busy bit
  4478.  
  4479. Zadavanje komandi:
  4480. postavljanje komandnog koda u komandni registar
  4481. postavljanje podatka u izlazni registar (ako je izlazna komanda-write)
  4482. postavljanje command-ready bita
  4483.  
  4484. Izvršenje komande (sa mogučim transferom podataka)
  4485. busy bit je postavljen svo vreme
  4486.  
  4487. Čekanje na kraj komande
  4488. busy bit
  4489.  
  4490.  
  4491. Prozivanje = Busy-čekanje u petlji:
  4492. Da kontroler bude spreman
  4493. Izvršenje komande
  4494.  
  4495. Prekidi (Interrupts)
  4496. CPU poseduje prekidnu liniju
  4497. koja se aktivira
  4498. od strane I/O uređaja
  4499. ISR: Rutina za obradu prihvata prekidne signale
  4500. Maskirajući IRQ se mogu
  4501. ignorisati
  4502. odložiti (deffer)
  4503. IVT: Vektor tabela prekida
  4504. Poziva odgovarajuće rutine za obradu prioritetnih prekida
  4505. zasnovana na prioritetu
  4506. izvršava neke nemaskirane prekide
  4507.  
  4508. Prekidni mehanizam takođe se koristi za:
  4509. izuzetke (exception)
  4510. Software interrupts
  4511. Prekid-Odvijanje I/O Ciklusa
  4512. Vektor Tabela Događaja Kod Intel Pentium Procesora
  4513. Direktan Pristup Memoriji (DMA)
  4514. PIO=Programirani I/O
  4515. Za svaki transfer podataka, PIO zahteva dve faze:
  4516. čekanje u petlji da podaci budu spremni
  4517. transfer podataka
  4518.  
  4519. DMA:Koristi se da bi se izbegao
  4520. programirani I/O
  4521. za veće transfere podataka
  4522. Zahteva DMA controller
  4523. Oslobađa CPU
  4524. od prenosa podataka
  4525. DMA prenosi direktno podatke
  4526. između I/O uređaja i memorije
  4527. Šest Koraka Izvođenja DMA Transfera
  4528. Aplikacijski I/O Interfejs
  4529. I/O sistemski pozivi su:
  4530. visokog nivoa, generalni
  4531.  
  4532.  
  4533. Device-driver layer
  4534. Karakteristike uređaja su sakrivene
  4535. u specijalnim modulima kernela koji se nazivaju drajveri
  4536.  
  4537. Podela uređaja:
  4538. Po načinu transfera podataka - na blok i karakter uređaje
  4539. Po metodi pristupa - sekvencijalni i uređaje sa direktnim ili slučajnim prisitupom
  4540. Po deljivosti - na deljive i nedeljve
  4541. Po brzini - brzi i spori
  4542. Po mogućnosti upisa - read-write, read only, or write only
  4543. Struktura I/O Kernela
  4544. Karakteristike I/O Uređaja
  4545. Blok i Karakter Uređaji
  4546. Blok uređaji se odnose na diskove
  4547. rade sa blokovima podataka
  4548.  
  4549. koriste komande: read, write, seek
  4550.  
  4551. koriste sirov(raw) I/O pristup sistemu ili pristup preko sistemske cache memorije
  4552. memorija-moguć je mapirani pristup datotekama
  4553. Karakter uređaji koriste tastaturu, miš, serijske portove
  4554. rade u režimu bajt po bajt
  4555.  
  4556. koriste komande: get, put
  4557.  
  4558. biblioteke
  4559. smeštene su na vrhu
  4560. dozvoljavaju editovanje po liniji
  4561. Mrežni Uređaji
  4562. Razlikuju se od
  4563. blok i karakter uređaja
  4564. zato što poseduju sopstveni interfejs socket
  4565.  
  4566. Unix i Windows NT/9i/2000 sadrže socket interfejs
  4567. razdvajaju mrezni protokol
  4568. od mrežnih operacija
  4569. sadrže select funkcionalnost
  4570.  
  4571. Mehanizmi za mrežne interfejse
  4572. pipes
  4573. FIFO
  4574. streams
  4575. redovi za poruke (message queue)
  4576. mailboxes
  4577. Časovnik i Tajmer
  4578. Obezbeđuju:
  4579. trenutno vreme
  4580. proteklo vreme
  4581. tajmerski okidač (trigger function)
  4582. Programibilni intervalski tajmeri se koriste za:
  4583. merenje proteklog vremena
  4584. periodične prekide
  4585. ioctl (na UNIX-u) pokriva
  4586. sporedne aspekte I/O
  4587. kao što su clock i tajmeri
  4588. Blokirajuće i Ne-blokirajuće I/O Operacije
  4589. Blokirajući:
  4590. proces se blokira i čeka sve dok se ne kompletira I/O operacija
  4591. Lako za korišćenje i razumevanje
  4592. Nedovoljan za neke potrebe
  4593. Neblokirajući:
  4594. I/O poziv vraća onoliko bajtova koliko je dostupno
  4595. korisnički interfejs, kopiranje podataka (buffered I/O)
  4596. ostvareno preko višenitnih procesa (multi-threading)
  4597. brzo odgovara sa brojem pročitanih ili upisanih bajtova
  4598. Asinhroni:
  4599. I/O pozivi vraćaju kontrolu procesu u istom trenutku
  4600. Proces se odvija dok se I/O izvršava
  4601. teško za korišćenje
  4602. I/O podsistem označava procesu kada je I/O završen
  4603. Kernelski I/O Podsistem
  4604. 1. Raspoređivanje (Scheduling)
  4605. poredak I/O zahteva prispelih u per-device reda čekanja
  4606. operativni sistemi optimzuju red izvršenja
  4607.  
  4608. 2. Baferisanje (Buffering) –
  4609. smešta privremeno podatke u memoriju
  4610. dok se obavlja
  4611. njihov transfer između uređaja
  4612.  
  4613. Baferisanje se koristi da bi se :
  4614. prevazišle razlike u brzini uređaja
  4615. prevazišle razlike u veličini transfera između uređaja
  4616. održala semantika kopiranja “copy semantics”
  4617. Sun Enterprise 6000 Device-Transfer Rates
  4618. Kernelski I/O Podsistem
  4619. 3. Keširanje:
  4620. brza memorija koja čuva kopije podataka
  4621. Uvek samo kopije
  4622. Ključno je za performanse
  4623. 4. Spool tehnika:
  4624. bafer koji čuva izlazne podatke za uređaj
  4625. ako uređaj može da pošalje samo jedan zahtev u tom trenutku
  4626. npr. Štampač
  4627.  
  4628. 5. Rezervacija uređaja –
  4629. omogućava ekskluzivni pristup uređaju
  4630. Sistemski pozivi za dodeljivanje i razdeljivanje
  4631. Motrenje na zastoje
  4632. Upravljanje greškama
  4633. OS može da se oporavi od greške:
  4634. čitanja diska
  4635. nedostupnosti uređaja
  4636. privremenog neuspelog upisa
  4637. Uglavnom vraća:
  4638. broj greške
  4639. ili
  4640. kod
  4641. kada I/O zahtev neuspe
  4642. System error logs
  4643. čuvaju izveštaje o problemima (problem reports)
  4644. Kernelske Strukture Podataka
  4645. Kernel mora da čuva informacije o stanju I/O komponenti,
  4646. kao što su:
  4647. tabela otvorenih datoteka
  4648. mrežne konekcije
  4649. stanja kareakter uređaja
  4650. Većina kompleksnih struktura podataka čuvaju informacije za:
  4651. baferisanje
  4652. dodeljivanje memorije
  4653. “prljavi” blokovi
  4654. neki OS koriste
  4655. objektno orijentisane metode
  4656. i
  4657. Message-passing
  4658. za implementaciju I/O
  4659. UNIX I/O Struktura Kernela
  4660. Transformisanje I/O Zahteva u Hardverske Operacije
  4661. Abalizirajmo učitavanje datoteke sa diska:
  4662. Određivanje uređaja koji čuva datoteku
  4663.  
  4664. Prevođenje imena koje se prikazuje uređaju
  4665.  
  4666. Fizičko učitavanje podataka sa diska u bafer
  4667.  
  4668. Priprema podataka dostupnih za proces
  4669.  
  4670. Vraćanje kontrole procesu
  4671. Životni Ciklus I/O Zahteva
  4672. STREAMS
  4673. stream:
  4674. full-duplex komunikacioni kanal
  4675. Između:
  4676. procesa na korisničkom nivou
  4677. i
  4678. uređaja
  4679.  
  4680. (stream) se sastoji od:
  4681. glave (stream head) koja komunicira sa korisničkim procesom
  4682. drajvera i interfejsa sa uređaja
  4683. proizvoljnog broja STREAM modula između njih
  4684.  
  4685. Svaki modul sadrži
  4686. red za čitanje
  4687. red za pisanje
  4688.  
  4689. Prosleđivanje poruka
  4690. se koristi
  4691. za komunikaciju
  4692. između redova
  4693. Struktura STREAM-ova
  4694. Performanse
  4695. I/O performanse jako utiču na opšte performanse sistema:
  4696. Zahtev od CPU da izvrši drajverski i kernelski I/O kod
  4697.  
  4698. prebacivanja konteksta i rukovanja prekidima
  4699.  
  4700. kopiranje podataka
  4701.  
  4702. Mrežni saobraćaj takođe izaziva veliki broj prekida
  4703. Komunikacija Unutar Računara
  4704. Poboljšanje Performansi
  4705. Smanjenje broja prebacivanja sadržaja
  4706.  
  4707. Smanjenje kopiranja podataka
  4708.  
  4709. Smanjenje prekida
  4710. korišćenjem
  4711. velikih transfera
  4712. pametnih kontrolera,
  4713. tehnikom pozivanja polling
  4714.  
  4715. Korišćenjem direktnog pristupa memoriji (DMA)
  4716.  
  4717. Balansirano korišćenje:
  4718. CPU, memorije, magistrale, I/O performansi
  4719. za najveću propusnu moć
  4720. Način Postizanja Najbolje Funkcionalnosti Uređaja
  4721.  
  4722.  
  4723.  
  4724.  
  4725.  
  4726. Mass Storage Sistemi (Za Masovno Skladištenje)
  4727. Struktura Diska
  4728.  
  4729. Raspoređivanje Disk Zahteva (Disk Scheduling)
  4730.  
  4731. Upravljanje Diskovima
  4732.  
  4733. Upravljanje Swap Prostorom
  4734.  
  4735. RAID Strukture
  4736.  
  4737. Priključivanje Diskova
  4738.  
  4739. Realizacija Stabilnih Sistema
  4740.  
  4741. Tercijalna Memorija
  4742.  
  4743. Zadaci Operativnog Sistema
  4744.  
  4745. Zadaci Performansi
  4746. Struktura Diska
  4747. Diskovi se adresiraju
  4748. kao široko jednodimenziono polje logičkih blokova ,
  4749. gde je
  4750. logički blok najmanja jedinica transfera
  4751.  
  4752. Jednodimeziono polje logičkih blokova
  4753. se mapira
  4754. u sektore na disku sekvencijalno .
  4755. logički blok 0
  4756. se mapira u prvi sektor,
  4757. prve staze,
  4758. spoljašnjeg cilindra .
  4759. Proces mapiranja se nastavlja na drugu stazu,
  4760. pa se pređe na sledeću stazu tog cilindra,
  4761. pa na sledeći cilindar
  4762. od krajnjeg unutrašnjeg
  4763.  
  4764. Raspoređivanje Disk Zahteva (Disk Scheduling)
  4765. operativni sistem je odgovoran
  4766. za efikasno korišćenje hardvera
  4767.  
  4768. Za diskove, ovo znači:
  4769.  
  4770. 1. brzo vreme pristupa (seek)
  4771.  
  4772.  
  4773.  
  4774. 2. brze disk transfere (disk media bandwidth)
  4775.  
  4776. Vreme Pristupa
  4777.  
  4778. Vreme pristupa se sastoji iz dve osnovne komponente:
  4779. Vreme pozicioniranja (seek time)
  4780. je vreme za koje disk
  4781. pomera glavu do cilindra
  4782. koji sadrži željeni sektor
  4783.  
  4784. Rotaciono kašnjenje (Rotational latency)
  4785. je naknadno vreme
  4786. čekanja da glava diska
  4787. rotira na željeni sektor
  4788.  
  4789. Smanjenje vremena pozicioniranja
  4790.  
  4791. Vreme pozicioniranja  udanjenost pozicije
  4792.  
  4793.  
  4794. Brzina Disk Transfera
  4795.  
  4796.  
  4797. Brzina disk transfera je:
  4798. ukipan broj prebačenih bajtova
  4799. u jedinici vremena
  4800.  
  4801. ukupno vreme između
  4802. prvog zahteva za servis
  4803. završetka poslednjeg transfera
  4804. Raspoređivanje Disk Zahteva
  4805. Postoji nekoliko algoritama
  4806. za raspoređivanje servisiranje disk I/O zahteva
  4807.  
  4808. Ilustrovaćemo ih preko reda zahteva (disk 0-199)
  4809. 98, 183, 37, 122, 14, 124, 65, 67
  4810.  
  4811. Pokazivač na glavu (head pointer) 53
  4812. FCFS
  4813. SSTF
  4814. Kriterijum: Biranje zahteva
  4815. sa minimalnim vremenom pozicioniranja
  4816. od trenutne pozicije glave
  4817.  
  4818. SSTF raspoređivanje
  4819. je forma SJF raspoređivanja;
  4820. može da izazove zakucavanje nekih zahteva
  4821.  
  4822. SSTF (Nastavak)
  4823. SCAN
  4824. Kriterijum:
  4825. glava diska počinje sa jednog kraja diska,
  4826. I kreće se prema drugom kraju diska,
  4827. opslužuje zahteve
  4828. dok ne dođe do drugog kraja diska,
  4829. gde se kretanje glave obrće
  4830. i opsluživanje se nastavlja
  4831.  
  4832. Često se naziva i lift algoritam.
  4833.  
  4834.  
  4835. SCAN (Nastavak)
  4836. C-SCAN
  4837. Obezbeđuje ravnomernije vreme čekanja od SCAN.
  4838.  
  4839. Kriterijum:
  4840. glava se kreće od jednog kraja diska do drugog.
  4841. opslužuje zahteve po redu.
  4842. kada dođe do kraja,
  4843. međutim,
  4844. on se odmah vraća na početak diska,
  4845. bez ikakvog opsluživanja zahteva pri povratku.
  4846.  
  4847. Opsluživanje cilindara
  4848. kao kružne liste
  4849. koja se vrti okolo
  4850. od zadnjeg cilindra
  4851. do prvog
  4852. C-SCAN (Nastavak)
  4853. C-LOOK
  4854. Verzija C-SCAN:
  4855. glava ide samo do poslednjeg zahteva u svakom pravcu,
  4856. zatim odmah obrće pravac,
  4857. i vraća na najbliži zahtev na početku diska
  4858. i tako stalno do kraja diska
  4859. C-LOOK (Nastavak)
  4860. Izbor Algoritma za Disk Raspoređivanje
  4861. SSTF je najbolji na prvi pogled
  4862. SCAN i C-SCAN su bolji
  4863. za sisteme
  4864. koji smeštaju velike količine podataka na disk.
  4865.  
  4866. Performanse zavise od broja i tipa zahteva
  4867.  
  4868. Na zahteve za opsluživanje diska se može uticati preko metoda alokacije datoteka (allocation method).
  4869.  
  4870. Algoritmi za raspoređivanje po disku
  4871. trebaju biti napisani kao odvojeni moduli operativnog sistema,
  4872. dozvoljavaju da budu zamenjeni sa drugim algoritmima ako je to neophodno.
  4873.  
  4874. SSTF i LOOK su dobar izbor
  4875. za default algoritam
  4876. Upravljanje Diskovima
  4877. Formatiranje niskog nivoa (low-level formatting) , ili fizičko formatiranje (physical formatting)
  4878. Deljenje diska u sektore
  4879. da bi disk kontroler
  4880. mogao da čita i upisuje
  4881.  
  4882. Korišćenje diska za čuvanje datoteka:
  4883. Operativni sistem mora da snimi
  4884. sopstvene strukture podataka na disk
  4885. 1. Deljenje diska na jednu ili više grupa cilindara
  4886. 2. logičko formatiranje ili pravljenje sistemskih datoteka
  4887.  
  4888. Boot block podiže sistem (start a booting)
  4889. Bootstrap program je smešten u ROM memoriji
  4890. Bootstrap loader program
  4891.  
  4892. Metode kao što je sector sparing
  4893. se koriste
  4894. da bi se otklonili loši blokovi (bad blocks).
  4895. MS-DOS Disk Šema (FAT)
  4896. Upravljanje Swap Prostorom
  4897. Swap-prostor, Virtuelna memorija
  4898. koristi prostor diska
  4899. kao nastavak glavne memorije
  4900. Swap-prostor može biti
  4901. izdvojen od normalnog fajl sistema,
  4902. može biti u zasebnoj particiji diska
  4903.  
  4904. Upravljanje swap-prostorom
  4905. 4.3BSD dodeljuje swap prostor
  4906. kada se započne proces;
  4907. zadržava segmente teksta (program) i segmente podataka
  4908. Kernel koristi swap mape to da bi vodio evidenciju o korišćenju
  4909. swap prostora
  4910. Solaris 2 dodeljuje swap prostor
  4911. samo kada se strana izbaci iz fizičke memorije,
  4912. a ne kada je strana prvi put kreirana u virtuelnoj memoriji
  4913. 4.3 BSD Text-Segment Swap Mapa
  4914. 4.3 BSD Data-Segment Swap Mapa
  4915. RAID
  4916. Na početku
  4917. N diskova = kao jedan veliki disk
  4918.  
  4919.  
  4920.  
  4921.  
  4922.  
  4923.  
  4924.  
  4925.  
  4926.  
  4927. Ali…Bez velikih, previše skupih diskova
  4928. ogroman kapacitet
  4929. veoma visoke performanse
  4930. veoma visoka pouzdanost
  4931. RAID Struktura
  4932. RAID
  4933. 1. Povećanje performansi
  4934. paralelizam operacija diska za velike zahteve
  4935. više diskova radi paralelno za jedan zahtev
  4936. konkurentni rad istovremeno za manje zahteve
  4937. više zahteva na različitim diskovima
  4938.  
  4939. 2. Povećanje pouzdanosti
  4940. RAID obezbeđuju pouzdanost preko redundanse
  4941. Dve osnovne šeme su:
  4942. tehnika ogledala (mirroring)
  4943. Informacije o parnosti (parity information)
  4944.  
  4945. 3. RAID je realizovan u 7 različitih nivoa
  4946. RAID (Nastavak)
  4947. Nekoliko poboljšanja
  4948. obuhvata korišćenje više diskova
  4949. koji rade kooperativno
  4950. Disk striping koristi grupu diskova kao jednu jedinicu
  4951. RAID šeme
  4952. poboljšavaju performanse
  4953. poboljšavaju pouzdanost sistema za smeštanje
  4954. čuvanjem redundantnih podataka
  4955.  
  4956. Ogledala (mirroring) ili senčenje(shadowing) čuvaju duplikate svakog diska
  4957.  
  4958. Parnost mnogo manje troši redundanse
  4959. Konvencialno Postavljanje Podataka naspram Stripinga
  4960. Mirroring vs Parity
  4961. Mirroring
  4962.  
  4963.  
  4964.  
  4965. Parity
  4966.  
  4967. Bez Redundanse (RAID Nivo 0)
  4968. niska cena svake RAID organizacije
  4969.  
  4970. uopšte ne koristi redundansu
  4971.  
  4972. Najbolje write preformanse
  4973. pošto uopšte ne mora da obnavlja(update) informacije o redundansi.
  4974.  
  4975. Neočekivano, nema najbolje read performanse.
  4976. Šeme redudansi koje dupliciraju podatke, kao što su mirroring, mogu bolje da izvode učitavanja(reads) preko
  4977. selektivnog raspoređivanja zahteva na disku sa najkraćim očekivanim vremenom pozicioniranja i rotacionih kašnjenja
  4978.  
  4979. Bez redundanse, svaki pojedini disk failure će rezultovati gubitkom podataka.
  4980.  
  4981. RAID-0 se koriste:
  4982. kod superkompjutera
  4983. koji su više nego pouzdani
  4984. gde su performanse i kapacitet
  4985. osnovni zahtev
  4986. Optimal Stripe Unit- RAID-0
  4987. RAID-0
  4988. Stripe unit- minimalna jedinica podataka=
  4989.  
  4990.  
  4991.  
  4992.  
  4993.  
  4994. Gde je:
  4995. P prosečno vreme pozicioniranja
  4996. X prosečna brzina transfera
  4997. L (concurrency)
  4998. Z veličina zahteva
  4999. N veličina reda na disku
  5000.  
  5001. MTTF(RAID-0) = MTTF(disk) / N
  5002. Mirrored - Ogledalo (RAID Level 1)
  5003. Koristi duplo
  5004. više diskova nego
  5005. disk redovi bez redundanse
  5006.  
  5007. svaki upis povlači 2 upisa
  5008.  
  5009. najsporiji za upis (duplo =100%), ali ne uvek
  5010.  
  5011. Kada se podatak čita,
  5012. može biti pročitan sa diska
  5013. sa kraćim pravljenjem redovima, vremenom pozicioniranja i rotacionim kašnjenjem
  5014.  
  5015. Ako disk otkaže, druga kopija se koristi za opsluženje zahteva
  5016.  
  5017. Mirroring se često koristi za baze podataka
  5018. gde su raspoloživost i stopa transakcije
  5019. mnogo važnije od efikasnosti skladištenja
  5020. Stil Memorije ECC (RAID Level 2)
  5021. Memorijski sistemi imaju predviđen oporavak
  5022. izgubljenih komponenti
  5023. sa mnogo manje štete od mirroring-a korišćenjem Hamming kodova.
  5024.  
  5025. Hamming kodovi
  5026. sadrže parnost
  5027. za različita prekoračenja sadržaja komponenti.
  5028.  
  5029. U jednoj verziji ove šeme,
  5030. 4 diska podataka zahtevaju 3 pridodata diska,
  5031. jedan manje od mirroring-a.
  5032.  
  5033. Pošto je broj pridodatih diskova
  5034. proporcionalan logaritmu ukupnog broja diskova u sistemu,
  5035. efikasnost smeštanja se uvećava kada se uveća broj diskova podataka.
  5036.  
  5037. Stil Memorije ECC (RAID Level 2)
  5038. Ako se jedna komponenta otkaže,
  5039. nekoliko komponenata parnosti će imati netačne vrednosti,
  5040. i
  5041. izgubljena komponenta
  5042. važi kao zajednička za svaki netačan sadržaj.
  5043.  
  5044. Izgubljen informacija se vraća
  5045. Čitanjem drugih komponenti iz sadržaja,
  5046. uključujući i komponentu parnosti,
  5047. i setovanje bita koji nedostaje na 0 ili 1
  5048. da bi se dobila odgovarajuća parnost za taj sadržaj.
  5049.  
  5050. Prema tome,
  5051. višestruki pridodati diskovi su za identifikaciju greške,
  5052. ali
  5053. samo jedan potreban za povratak izgubljene informacije.
  5054. Bit-Isprepletana Parnost (RAID Level 3) Bit-Interleaved Parity
  5055. Može da poboljša memory-style ECC raspored diskova
  5056. zato što,
  5057. za razliku od otkaza memorijskih komponenti,
  5058. disk kontroleri mogu lako da otkriju
  5059. koji disk je otkazao
  5060.  
  5061. Prema tome,
  5062. može da koristi samo jedan disk parnosti
  5063. pre nego set diskova parnosti
  5064. da bi povratio izgubljenu informaciju
  5065.  
  5066. Stripe unit(minimalna jedinica podataka) < 512 bajtova (1bajt ili 1 bit)
  5067. Svako čitanje zahteva pristup svim diskovima podataka
  5068. svaki zahtev za upis pristupa svim diskovima podataka i diskovima parnosti.
  5069.  
  5070. Prema tome samo jedan zahtev može biti opslužen u datom trenutku
  5071. Bit-Isprepletana Parnost (RAID Level 3) Bit-Interleaved Parity
  5072. Zato što disk parnosti sadrži samo parnost bez podataka,
  5073. disk parnosti ne može učestvovati u čitanju,
  5074. što dovodi do nešto slabijih performansi čitanja
  5075. od
  5076. redudansnih šema
  5077. koje distribuiraju parnost i podatke preko celog diska (RAID5).
  5078.  
  5079. RAID-3
  5080. se često koristi kod aplikacija
  5081. koje zahtevaju
  5082. veliku brzinu disk transfera (bandwidth)
  5083. a ne velike I/O brzine
  5084.  
  5085. Block-Isprepletana Parnost (RAID Level 4) Block-Interleaved Parity
  5086. N diskova podataka + 1 disk parnosti
  5087. Sličan RAID3, ali striping unit = N disk blokova.
  5088. Zahtevi za čitanje
  5089. su manji od minimalne jedinice podataka (striping unit)
  5090. pristupaju
  5091. samo jednom disku podataka
  5092.  
  5093. Zahtevi za upis
  5094. mora da ažurira blokove podataka za zahteve
  5095. takođe mora da proračuna i ažurira blokove parnosti
  5096.  
  5097. Zato što RAID4, ima samo jedan disk parnosti,
  5098. koji mora da se ažurira na svakoj upisnoj operaciji,
  5099. disk parnosti može lako da postane usko grlo.
  5100.  
  5101. Zbog ovog ograničenja,
  5102. RAID-5, block-interleaved distributed-parity
  5103. je u opštem slučaju bolji od RAID-4, block-interleaved parity
  5104.  
  5105. Block-Interleaved Parity (RAID Level 4)
  5106.  
  5107. Za velike upise
  5108. koji dodiruju blokove na celom disku,
  5109. parnost se lako proračunava
  5110. preko ekskluzivne OR ili funkcije novog podatka za svaki disk.
  5111.  
  5112. Za male zahteve upisa
  5113. koji ažuriraju samo jedan disk podataka
  5114. parnost se izračunava
  5115. beleženjem
  5116. kako se novi podatak razlikuje od starog i
  5117. stavlja ove razlike u blok parnosti
  5118.  
  5119. Mali upisni zahtevi zahtevaju 4 disk I/O-a:
  5120. jedan za upis novog podatka
  5121. dva za čitanje starog podatka i stare parnosti da bi proračunao novu parnost
  5122. jedan za upis nove parnosti
  5123. Ovo upućuje ka čitaj-promeni-upiši (read-modify-write) proceduri.
  5124. Block-Interleaved Distributed-Parity (RAID Level 5)
  5125.  
  5126. Distribuirani disk parnosti eliminiše usko grlo parnosti
  5127. Podaci su na svim diskovima
  5128. Bitovi parnosti na svim diskovima
  5129.  
  5130. svi diskovi su jednako opterećeni pri operacijama čitanja
  5131. RAID 5 je najbolji za:
  5132. mala čitanja
  5133. velika čitanja
  5134. performanse velikih upisa bilo kog pridodatog reda diska
  5135.  
  5136. Mali zahtevi upisa su i dalje neefikasni
  5137. u poređenju sa šemama kao što je mirroring,
  5138. zbog potrebe za izvođenjem read-modify-write operacija
  5139. za ažuriranje parnosti
  5140.  
  5141. Ova slabost u performansama
  5142. RAID level 5 disk redova
  5143. je bila tema intenzivnih ispitivanja.
  5144.  
  5145. RAID-5
  5146. stripe jedinica=
  5147. 0.5K+1/4 * prosečno vreme pozicioniranja * brzine prenosa podataka * (konkurentnost-1))
  5148. stripe jedinica=
  5149. 0.5 * prosečno vreme pozicioniranja * brzina prenosa podataka
  5150.  
  5151. MTTF(RAID-5) = MMTF2(disk) / MTTR(disk)xNx(G-1)
  5152. N - ukupan broj diskova
  5153. G – grupa parnosti
  5154. MTTF(RAID-1) = MMTF2(disk) / 2xMMTR(disk)
  5155. N = 2
  5156. G = 2
  5157. RAID5 Problem Performansi Malih Upisa
  5158.  
  5159. Logovanje parnosti (Parity Log)
  5160.  
  5161.  
  5162. RAID keširanje
  5163. P+Q Redundansa (RAID Level 6)
  5164. Parnost
  5165. je kod redudanse
  5166. sposoban za ispravku bilo koje greške
  5167.  
  5168. Kod velikih RAID sistema se uzimaju u obzir,
  5169. mogućnost višestrukih grešaka
  5170. tu su potrebni jači kodovi
  5171.  
  5172. Prema tome, aplikacije sa strožijim zahtevima
  5173. zahtevaju
  5174. jače kodove za ispravljanje grešaka.
  5175.  
  5176. Jedna takva šema, nazvana P+Q redudansa
  5177. koristi Reed-Solomon kodove
  5178. za zaštitu
  5179. od dva otkaza diska
  5180. korišćenjem
  5181. neophodan minimum od dva pridodata diska
  5182. P+Q Redundancy (RAID Level 6)
  5183. P+Q RAID su
  5184. po strukturi veoma slični
  5185. RAID sa block-interleaved distributedparnosti
  5186. rade na sličan način
  5187.  
  5188. U suštini, P+Q RAID takođe
  5189. izvode male operacije upisa
  5190. koristeći read-modify-write proceduru,
  5191. očekivano je da umesto 4 pristupa disku za upis,
  5192. P+Q RAID zahtevaju 6 pristupa disku
  5193. usled
  5194. potrebe za ažuriranjem obe ‘P’ i ‘Q’ informacije
  5195.  
  5196. RAID (0 + 1) and (1 + 0)
  5197. Priključivanje Diskova
  5198. Disk može da se priključi na dva načina:
  5199.  
  5200. Host attached (server) preko I/O porta
  5201.  
  5202. Network attached (mrežni) preko mrežne konekcije
  5203. Mrežni Način Priključivanja
  5204. Storage-Area Network
  5205. Realizavija Stabilnih Sistema
  5206. Upis-ispred logaritamske šeme zahteva stabilni sistem
  5207. Da bi se realizovao stabilni sistem potrebna je:
  5208. kopija informacije
  5209. o više nepromenljivih mediuma
  5210. sa nezavisnim modovima otkaza
  5211.  
  5212. Informacija o ažuriranju
  5213. da bi se kontrolisano obezbedilo
  5214. da možemo da povratimo
  5215. stabilni podatak
  5216. posle bilo kog otkaza za vreme transfera podataka
  5217. Tercijalna memorija
  5218. Osnovne karakteristike tercijalne memorije je niska cena
  5219.  
  5220. Generalno, tercijalna memorija je napravljena
  5221. korišćenjem
  5222. izmenljivih mediuma
  5223. Opšti primeri izmenljivih mediuma su
  5224. floppy diskovi
  5225. CD-ROM-ovi; DVD-ovi
  5226. i neki drugi tipovi
  5227. Izmenljivi Diskovi
  5228. Floppy disk —
  5229.  
  5230. tanak fleksibilan disk obložen sa magnetnim materijalom,
  5231. upakovan u plastični omot.
  5232. Većina je kapaciteta oko 1 MB
  5233.  
  5234. slična tehnologija se koristi kod izmenjivih diskova
  5235. čiji je kapacitet veći od 1 GB.
  5236. Izmenljivi magnetni diskovi mogu biti
  5237. približne brzine kao hard diskovi,
  5238. ali se lakše oštećuju
  5239. Izmenljivi Diskovi (Nastavak)
  5240. Magnetno-optički diskovi
  5241. upisuju podatke
  5242. na čvrst disk
  5243. obložen magnetnim materialom.
  5244.  
  5245. Korišćenjem toplote lasera na disk se
  5246. upisuju podaci
  5247. Laser se takođe koristi za čitanje podataka.
  5248.  
  5249. Magneto-optička glava
  5250. datoteke su mnogo udaljenije
  5251. od površine diska
  5252. nego kod glave magnetnog diska, i
  5253. magnetni materijal je prekriven zaštitnim (plastičnim ili staklenim) slojem.
  5254.  
  5255. Optički diskovi ne koriste magnetizam;
  5256. oni koriste specijalne materijale
  5257. koji se menjaju laserskim svetlom.
  5258. WORM Diskovi
  5259. Podaci na R/W diskovima
  5260. mogu da se menjaju iznova i iznova.
  5261.  
  5262. WORM (“Upiši jednom čitaj mnogo puta”) diskovi
  5263. Podaci mogu samo jednom da se upišu.
  5264.  
  5265. Tanki aluminijumski film smešten
  5266. između dva staklena
  5267. ili plastična diska.
  5268.  
  5269. Za upis bita,
  5270. uređaj koristi lasersku svetlost
  5271. za utiskivanje male rupe u aluminumu;
  5272. Informacije mogu biti uništene ako se neprepravljaju
  5273.  
  5274. Veoma su izdržljivi i pouzdani.
  5275.  
  5276. Read Only diskovi, kao što su CD-ROM i DVD,
  5277. Dolaze iz fabrike
  5278. sa podacima koji su već upisani.
  5279. Trake
  5280. U poređenju sa diskom,
  5281. trake su jeftinije i
  5282. čuvaju više podataka,
  5283. ali nasumičan pristup je mnogo sporiji.
  5284. Traka je ekonomičan medium
  5285. pod pretpostavkom da se ne zahteva brz nasumičan pristup,
  5286. npr., backup disk podataka,
  5287. smešta velike količine podataka.
  5288. Instalacija velikih traka
  5289. obično koristi robotiske menjače traka
  5290. koji pomeraju trake izmežu uređaja i
  5291. smeštaju slotove u biblioteku.
  5292. stacker – biblioteka koja čuva nekoliko traka
  5293. silo – Biblioteka koja čuva na hiljade traka
  5294. datoteka koja se nalazi na disku može biti arhivirana na traci po niskoj ceni smeštanja; kompjuter može ponovo da ih vrati na disk za aktivnu upotrebu
  5295. Proglemi Operativnog Sistema
  5296. Osnovni zadaci Operativnog Sistema
  5297. su da upravlja fizičkim uređajima i
  5298. da predstavi abstrakciju virtuelne mašine
  5299. Aplikacijama
  5300.  
  5301. Za hard disk, OS sprovodi dve apstrakcije:
  5302.  
  5303. Sirov uređaj –
  5304. niz blokova podataka.
  5305.  
  5306. Sistem fajlovi –
  5307. Redovi čekanja OS i uređenja
  5308. ispreplitanje zahteva nekoliko aplikacija.
  5309. Aplikacioni Inteffejs
  5310. Većina OS-a rukovodi izmenljivim diskovima skoro isto kao sa fiksnim diskovima
  5311. novi kertridž je formatiran
  5312. i prazan fajl sistem generisan na disku
  5313.  
  5314. Trake se predstavljaju kao sirov medium
  5315. aplikacija ne otvara fajl na traci
  5316. već otvara ceo uređaj kao sirov uređaj
  5317.  
  5318. Obično je uređaj za traku rezervisan samo za tu aplikaciju.
  5319. Pošto OS ne sprovodi file sistem servis,
  5320. aplikacija mora da odluči kako da koristi niz blokova.
  5321. Pošto svaka aplikacija
  5322. stvara sopstvena pravila
  5323. kako da organizuje traku,
  5324. traka puna podataka
  5325. generalno može biti korišćena samo
  5326. od strane programa koji je napravio te podatke
  5327. Tape Drives
  5328. Osnovne operacije uređaja za traku
  5329. se razlikuju od
  5330. onih na disk uređaju.
  5331.  
  5332. lociranje
  5333. pozicionira traku određen logički blok,
  5334. (odgovara pozicionranju kod diska).
  5335. operacija čitanja pozicije
  5336. vraća broj logičkog bloka gde se nalazi glava
  5337.  
  5338. space operacija
  5339. omogućuje relativno kretanje
  5340.  
  5341. Uređaji za trake su “append-only” uređaji;
  5342. ažuriranje blokova u sredini
  5343. briše sve iza tog bloka
  5344.  
  5345. EOT znak se postavlja nakon bloka koji je upisan
  5346. Imenovanje Fajlova
  5347. Imenovanje fajlova na izmenljivim diskovima
  5348. je naročito teško
  5349. kada želimo da upišemo podatak na promenljivi kertridž
  5350. na jednom kompjuteru,
  5351. i
  5352. kasnije koristimo taj kertridž na drugom kompjuteru
  5353.  
  5354. Savremeni OS-i generalno
  5355. ostavljaju problem imenovanja nerešen za izmenljive mediume,
  5356. i
  5357. u zavisnosti od aplikacije i korisnika
  5358. shvata kako da pristupi i interpretira podatke
  5359.  
  5360. Neke vrste izmenljivih mediuma (npr. CD-ovi)
  5361. su tako dobro standardizovani
  5362. tako da ih svi kompjuteri
  5363. koriste na isti način
  5364. Upravljanje Hierarhijom Skladištenja(HSM)
  5365. Hierarhijski sistem memorije
  5366. nastavlja
  5367. memorijsku hijerarhiju
  5368. iza primarne i sekundarne memorije
  5369. za objedinjavanje tercijalne memorije —
  5370. obično je implementirana kao jukebox traka ili izmenljivih diskova.
  5371.  
  5372. obično objedinjuje tercijalnu memoriju proširivanjem sistema fajlova sa
  5373. Malim i često korišćenim fajlovima koji su ostali na disku.
  5374. Velikim, starim, ne aktivnim fajlovima koji su arhivirani u jukebox-u.
  5375.  
  5376. HSM se obično nalazi
  5377. u centrima sa superkompjuterima i
  5378. drugim velikim ustanovama
  5379. koje poseduju ogromnu količinu podataka.
  5380. Brzina
  5381. Dva aspekta brzine tercijalne memorije su
  5382. Brzina disk transfera (bandwidth)
  5383. and
  5384. latentnost.
  5385. Brzina disk transfera je izražena brojem bajtova po sekundi.
  5386. Podržana brzina disk transfera –
  5387. Prosečna brzina protoka podataka za vreme velikog transfera;
  5388. # bajtovi/vreme transfera.
  5389. To je brzina podataka kada tok podataka bukvalno protiče.
  5390.  
  5391. Efektivna brzina disk transfera –
  5392. Prosečna za ukupno I/O vreme,
  5393. uključuje pozicioniranje ili lociranje, i menjanje kertridža.
  5394. To je stvarna brzina protoka podataka.
  5395. Brzina (Nastavak)
  5396. Latentnost pristupa –predstavlja vreme potrebno da se locira podatak.
  5397. Pristupno vreme za disk –
  5398. Pomera ruku do izabranog cilindra
  5399. i čeka za rotaciono kašnjenje; < 35 milisekundi
  5400.  
  5401. Pristup traci zahteva
  5402. namotavanje kotura trake
  5403. dok izabrani blok ne dođe do glave;
  5404. desetine ili stotine sekundi.
  5405.  
  5406. Brzina (Nastavak)
  5407. Generalno važi da je
  5408. nasumičan pristup kod trake
  5409. oko hiljadu puta sporiji od
  5410. nasumičnog pristupa kod diska.
  5411.  
  5412. Niska cena tercijalne memorije
  5413. daje za rezultat mnogo jeftinih kertridža
  5414. koje dele
  5415. nekoliko skupih uređaja.
  5416.  
  5417. Prenosiva biblioteka je najzahvalnija za
  5418. smeštanje podataka koji se ne koriste često,
  5419. zato što biblikoteka može da zadovolji
  5420. relativno male brojeve I/O zahteva po satu.
  5421. Pouzdanost
  5422. Fiksni disk uređaj je
  5423. pouzdaniji
  5424. od izmenljivog disk uređaja ili trake.
  5425. Optički disk je
  5426. pouzdaniji
  5427. od magnetnog diska ili trake.
  5428. Kvar glave
  5429. kod fiksnih hard diskova uništava sve podatke,
  5430. dok kod trake ili optičkog uređaja
  5431. najčešće
  5432. neoštećuje podatke unutar kertridža.
  5433. Cena
  5434. Gavna memorija
  5435. je mnogo skuplja
  5436. od sekundarne (disk memorije)
  5437. cena po megabajtu kod hard diska
  5438. može da se poredi sa
  5439. magnetnom trakom
  5440. samo kada se koristi jedna traka po uređaju
  5441. Najjeftiniji uređaji za trake i
  5442. najjeftiniji disk uređaji
  5443. godinama imaju iste kapacitete.
  5444. Tercijalna memorija pruža
  5445. smanjenje troškova
  5446. samo kad je broj broj kertridža srazmerno veći
  5447. od broja uređaja
  5448. Cena po Megabajtu DRAM, od 1981 do 2000
  5449. Cena po Megabajtu Magnetnog Hard Diska, od 1981 do 2000
  5450. Cena po Megabajtu Uređaja za Traku, od 1984 do 2000
  5451.  
  5452.  
  5453.  
  5454.  
  5455. Mrežne Strukture
  5456. Pozadina
  5457.  
  5458. Topologija
  5459.  
  5460. Tipovi mreže
  5461.  
  5462. Komunikacija
  5463.  
  5464. Komunikacioni protokoli
  5465.  
  5466. Robusnost
  5467.  
  5468. Strategija dizajniranja
  5469. Distribuirani Sistem
  5470. Motivacija (4 beneficije)
  5471. 1. Deljenje resursa
  5472. deljenje i štampanje datoteka
  5473. procesiranje informacija u distribuiranoj bazi
  5474. korišćenje udaljenog specijalizovanog hardvera
  5475.  
  5476. 2. Ubrzavanje Izračunavanja (computation speedup)
  5477.  
  5478. 3. Pouzdanost:
  5479. detektovanje i oporavak neispravnog sajta
  5480. oporavak neispravnog sajta
  5481.  
  5482. 3. Komunikacije: prenošenje poruka
  5483. Mrežni Operativni Sistemi
  5484. Korisnici su upoznati sa različitim računarima na mreži
  5485.  
  5486. Pristup resursima različitih mašina se radi preko:
  5487. Daljinskog logovanja na odgovarajuću daljinsku mašinu
  5488.  
  5489. FTP: Prenošenje podataka sa daljinskih na lokalne mašine, preko File Transfer Protocol (FTP) mehanizma
  5490. Distribuirani Operativni sistemi
  5491. Korisnici nisu upoznati sa različitim računarima, sve se vidi kao jedan. Pristup daljinskim resursima sličan je pristupu lokalnim resursima
  5492.  
  5493. 1. Migracija podataka (data migration):
  5494. prenos podataka kao prenos cele datoteke (AFS),
  5495. ili
  5496. prenos samo onih delova podataka neophodnih za sledeći zadatak (NFS)
  5497.  
  5498. 2. Migracija Izračunavanja (compute migration):
  5499. transfer izračunavanja, umesto prenos podataka, kroz sistem
  5500.  
  5501. 3. Migracija procesa (process migration)
  5502. Distribuirani Operativni Sistemi (Nastavak)
  5503. Migracija procesa: izvršava ceo proces, ili samo deo, na različitim sajtovima
  5504. Beneficije:
  5505. Load balancing: distribuira procese preko mreže
  5506.  
  5507. Computation speedup: podprocesi se mogu izvršavati konkurentno na različitim sajtovima
  5508.  
  5509. Hardware preference: izvršavanje procesa može da zahteva specijalizovani sajt
  5510.  
  5511. Sotfware preference: zahtevani softver može biti samo na posebnim sajtovima
  5512.  
  5513. Data access: pokreće proces daljinski, umesto prebacivanja svih podataka lokalno
  5514. Topologija
  5515. Računari u sistemu mogu biti fizički povezana na različite načine; ona se porede poštovanjem sledećih kriterijuma:
  5516. Osnovna cena. Kolika je cena povezivanja različitih mesta u sistemu?
  5517. Cena komunikacije. Koliko vremena treba da se prenese poruka od mesta A do mesta B?
  5518. Pouzdanost. Ako je veza ili mesto u sistemu otkazalo, da li ostatak može da komunicira međusobno?
  5519.  
  5520. Različite topologije su prikazane kao grafovi čiji čvorovi odgovaraju mestima gde su. Ivica čvora A do čvora B odgovara direktnoj konekciji između dva mesta.
  5521.  
  5522. Sledećih 6 slika prikazuju različite topologije mreža.
  5523. Topologija Mreže
  5524. Tipovi Mreže
  5525. Local-Area Network (LAN): dizajnirana da pokrije malo geografsko područje.
  5526. Višepristupna magistrala, prsten ili zvezda.
  5527. Brzina  10 megabita/sekudi, ili više
  5528. Broadcast: brzo i jeftino
  5529. Čvorovi:
  5530. Obično stanice i/ili personalni računari
  5531. Nekoliko(obično jedan ili dva) glavna računara-mainfrafes
  5532. Tipovi Mreže (nastavak)
  5533. Prikaz tipične LAN mreže:
  5534. Tipovi Mreže (nastavak)
  5535. Wide-Area Network (WAN): povezuje geografski šire područje.
  5536. Veza tačka do tačke preko dugačkih linija (često iznajmljena iz telefonske kompanije)
  5537. Brzina  100 kilobita/sekundi
  5538. Broadcast obično zahteva više poruka
  5539. Čvorovi:
  5540. Obično veliki procenat glavnih računara
  5541. Komunikacioni Procesori u Wide-Area Network-u
  5542. Komunikacija
  5543. Naming and name resolution : Kako procesi nalaze jedan drugog da bi komunicirali?
  5544.  
  5545. Routing strategies. Kako se poruke šalju kroz mrežu?
  5546.  
  5547. Connection strategies. Kako dva procesa šalju više poruka?
  5548.  
  5549. Contention. Mreža je izvor koji se deli, pa kako rešiti konfliktne zahteve za njenu upotrebu?
  5550. Odlučivanje o Imenima
  5551. Sistemi za imenovanje u mreži
  5552.  
  5553. Adresne poruke sa ID-om procesa
  5554.  
  5555. Identifikacija procesa na daljinskom sistemu preko:
  5556. <host-name, identifier> pair
  5557. Domain name service (DNS):
  5558. određuje strukturu imenovanja host-a,
  5559. kao i način adresne rezolucije (Internet)
  5560. Strategije Rutiranja
  5561. Fixed routing: Ruta od A do B je određena unapred; putanja se menja samo ako je hardverski otkaz obustavi
  5562. Pošto se obično bira najkraća staza, cene komunikacija su svedene na minimum
  5563. Fiksne rute se ne mogu prilagoditi promenama
  5564. Osiguravaju da poruke budu dostavljene u redu po kome su slate
  5565.  
  5566. Virtual circuit: Putanja od A do B je određena u trajanju od jedne sesije. Različite sesije koje uključuju poruke od A do B mogu imati različite rute.
  5567. prilagođenje mrežnim opterćenjima
  5568. osiguravaju da poruke budu dostavljene u redu po kome su slate.
  5569. Strategije rutiranja (nastavak)
  5570. Dinamično rutiranje. Ruta koja se koristi za prenošenje poruke od sajta A do sajta B se bira samo kada se poruka pošalje
  5571.  
  5572. Obično site šalje poruku na drugo mesto na bazi prethodne rute
  5573.  
  5574. Prilagođava se opterećenjima, izbegavajući rute koje su opterećene
  5575.  
  5576. Poruke mogu stići bez reda. Ovaj problem može biti ispravljen dodeljivanjem određenog broja svakoj poruci
  5577. Strategije Konekcije
  5578. Circuit switching: Stalni fizički link se uspostavlja u trajanju komunikacije (npr.telefonski sistem).
  5579.  
  5580. Message switching: Privremeni link se uspostavlja za vreme transfera jedne poruke (npr.poštanski sistem).
  5581.  
  5582. Packet switching: Poruke različitih dužina su podeljene u pakete fiksne dužine koji se šalju na određenu destinaciju. Svaki paket može imati različitu putanju kroz mrežu. Paketi moraju biti ponovo sastavljeni u poruke kada stignu.
  5583.  
  5584. Circuit switching requires setup time, but incurs less overhead for shipping each message, and may waste network bandwidth.
  5585. Message and packet switching require less setup time, but incur more overhead per message.
  5586. Sudari
  5587. Neka mesta mogu zahtevati istovremeni prenos informacija preko linka:
  5588.  
  5589. 1. CSMA/CD
  5590. Carrier sense with multiple access (CSMA);
  5591. collision detection (CD)
  5592.  
  5593. 2. Token passing
  5594.  
  5595. 3. Message slots
  5596. Sudari-CSMA/CD
  5597. CSMA/CD. Carrier sense with multiple access (CSMA); collision detection (CD)
  5598. Sajt određuje da li se još neka poruka trenutno prenosi preko linka.
  5599. Ako dva ili više mesta počnu prenos u istom trenutku, oni će detektovati sudar i prekinuti prenos
  5600. Kada je mreža optrećena, mogu se pojaviti mnogi sudari i zbog toga opadaju preformanse
  5601.  
  5602. SCMA/CD
  5603. se uspešno koristi u Ethernet sistemu,
  5604. najčešćem mrežnom sistemu
  5605. Sudari (Nastavak)
  5606. Token passing. A unique message type, known as a token, continuously circulates in the system (usually a ring structure)
  5607. A site that wants to transmit information must wait until the token arrives
  5608. When the site completes its round of message passing, it retransmits the token
  5609. A token-passing scheme is used by the IBM and Apollo systems
  5610.  
  5611. Message slots. A number of fixed-length message slots continuously circulate in the system (usually a ring structure).
  5612. Since a slot can contain only fixed-sized messages, a single logical message may have to be broken down into a number of smaller packets, each of which is sent in a separate slot.
  5613. This scheme has been adopted in the experimental Cambridge Digital Communication Ring
  5614. Komunikacioni Protokoli
  5615. Fizički sloj: rukuje mehaničkim i električnim detaljima prenosa bitova
  5616.  
  5617. Data-link sloj: rukuje okvirima ili delovima paketa fiksne dužine, koji uključuje svaku detekciju greške i oporavlja svaku koja se dogodila u tom sloju
  5618.  
  5619. Mrežni sloj: Omogućava vezu i rutiranje paketa u mrežnim komunikacijama, uključujući rukovanje adresama odlazećih paketa, dekodiranje adresa dolazećih paketa, i održavanje puteva informacija i odgovor na promene opterećenja
  5620. Komunikacioni Protokoli (Nastavak)
  5621. Transportni sloj: odgovoran za low-level mrežni pristup i za transfer poruka između klijenata, uključuje deljenje poruka u pakete, održavanje redosleda paketa, kontrolu protoka i generisanje fizičkih adresa
  5622.  
  5623. Sesioni sloj: implementira sesiju, ili process-to-process komunikacioni protokol
  5624.  
  5625. Prezentacioni sloj: Rešava razlike u formatima između raznih mesta u mreži uključujući promenu karaktera i half duplex/full duplex (echoing)
  5626.  
  5627. Aplikacioni sloj: u direktnom je dodiru sa korisnikom, radi sa prenosom datoteka, remote-login protokoli i elektronska pošta, kao i šeme za distribuirane baze podataka
  5628. Komunikacija Preko ISO Mrežnog Modela
  5629. ISO Sloj Protokola
  5630. ISO Mrežne Poruke
  5631. TCP/IP Skup Protokola
  5632. Robustnost
  5633. Detektovanje greške
  5634. Rekonfiguracija
  5635. Detekcija Greške
  5636. Detektovanje hardverske greške je teško
  5637.  
  5638. Detektovati prekid veze, handshaking protokol se koristi
  5639. Predpostavimo da su mesto A i B uspostavili vezu
  5640. u fiksnim intervalima,
  5641. svako mesto će razmeniti <I-am-up> poruku
  5642. to upućuje da su i dalje povezani
  5643.  
  5644. Ako mesto A ne primi poruku fiksnom intervalu predpostavlja da :
  5645. (a) drugo mesto nije u funkciji
  5646. ili
  5647. (b) je poruka izgubljena
  5648.  
  5649. Mesto A može da pošalje <Are-you-up>? poruku za mesto B.
  5650. Ako mesto A ne primi odgovor,
  5651. može ponoviti poruku
  5652. ili pokušati preko druge rute do mesta B
  5653. Detekcija Greške (Nastavak)
  5654. Ako mesto A ne primi odgovor od mesta B, ono zaključuje da je došlo do greške
  5655. Tipovi greške:
  5656. mesto B je u otkazu
  5657. direktna veza od A do B je prekinuta
  5658. alternativna veza od A do B je prekinuta
  5659. poruka je izgubljena
  5660. Mesto A ne može da odredi zašto je došlo do greške
  5661. Rekonfiguracija
  5662. Kada mesto A utvrdi da je došlo do kvara sistem se mora rekonfigurisati:
  5663. 1. Ako je pao link-ruta od A do B, mora biti objavljeno (broadcast) za svako mesto u sistemu.
  5664.  
  5665. 2. Ako je lokacija B pala, svako mesto mora biti obavešteno da usluge servisa više nisu dostupne
  5666. Kada se veza ponovo uspostavi, informacija ponovo mora biti poslata svim lokacijama
  5667. Problemi Dizajna
  5668. Transparentnost: distribuirani sistemi treba da izgledaju kao centralizovani sistemi za korisnika.
  5669. Tolerancija greške: distribuirani sistem treba da nastavi da funkcioniše posle pada bilo kog dela sistema
  5670. Skalabilnost: Kako se zahtevi povećavaju, sistem bi trebalo lako da prihvati dodavanje novih resursa da bi zadovoljili povećanu tražnju
  5671. Clusters:
  5672. Kolekcija polu-autonomnih mašina
  5673. koje se ponašaju kao jedinstven sistem.
  5674. Primer Mreže
  5675. Prenos mrežnog paketa između hostova u Ethernet mreži
  5676.  
  5677. Svaki host ima jedinstvenu IP adresu i a odgovarajuću Ethernet (MAC) adresu.
  5678.  
  5679. Komunikacija zahteva obe adrese.
  5680.  
  5681. Domain Name Service (DNS) može biti upotrebljen da bi dobili sve IP adrese.
  5682.  
  5683. Address Resolution Protocol (ARP) se koristi da mapira MAC adrese u IP adrese.
  5684.  
  5685. Ako su hostovi na istoj mreži, ARP može biti upotrebljen.
  5686. Ako su hostovi na različitim mrežama, izvorišni host će poslati paket ruteru koji rutira paket do odredišne mreže.
  5687. Ethernet paket
  5688.  
  5689.  
  5690.  
  5691.  
  5692.  
  5693.  
  5694. Distribuirani FS (Sistemi Datoteka)
  5695. Pozadina
  5696.  
  5697. Imenovanje i Transparentnost
  5698.  
  5699. Udaljni Pristup datotekema
  5700.  
  5701. Statefull v Stateless Services
  5702.  
  5703. File Replikacije
  5704.  
  5705. Primeri Sistema
  5706. Pozadina
  5707. Distribuirani FS (DFS):
  5708. distribuirana implementacija
  5709. klasičnog time-sharing modela FS (file system),
  5710. gde više korisnika dele datoteke i memorijske resurse
  5711. DFS upravlja skupom udaljenih memorijskih uređaja (diskova)
  5712.  
  5713. Ukupan memorijski-disk prostor sa kojim upravlja DFS
  5714. je sastavljen od različitih
  5715. udaljenih
  5716. manjih memorijskih prostora (diskova i mašina)
  5717.  
  5718. Obično postoji korespodencija između:
  5719. konzistetnog disk-memorijskog prostora i
  5720. skupa datoteka.
  5721. Struktura DFS-a
  5722. Servis:
  5723. softverska celina tj softver
  5724. Koji se koristi na jednoj ili više mašina
  5725. obavlja određene funkcije
  5726. da obezbedi uslugu nepoznatim klijentima
  5727. Server:
  5728. softver koji se koristi za servis se nalazi na jednoj mašini.
  5729. Client:
  5730. proces koji može da pozove servis
  5731. korišćenjem skupa operacija
  5732. koje formulišu njegov klijentski interfejs.
  5733. Klijentski interfejs za FS
  5734. je formiran od
  5735. seta primitivnih FS operacija (create, delete, read, write).
  5736. Klijentski interfejs DFS-a
  5737. treba da bude transparentan,
  5738. ne sme da bude različit između lokalnih i udaljenih datoteka
  5739. Imenovanje i Transparentnost
  5740. Imenovanje: mapiranje između logičkih i fizičkih objekata
  5741.  
  5742. Multilevel mapping:
  5743. apstrakcija datoteke
  5744. koja krije detalje o tome kako i i gde su
  5745. na disku datoteke smeštene
  5746.  
  5747.  
  5748.  
  5749.  
  5750. Transparentni DFS
  5751. krije lokaciju
  5752. gde unutar mreže je datoteka smeštena.
  5753. Za datoteke koji su iskopirane na više sajtova,
  5754. mapiranje vraća set lokacija kopija te datoteke;
  5755. kopije i njihove lokacije
  5756. su sakrivene.
  5757. Imenovanje Struktura
  5758. Transparentnost lokacija:
  5759. ime datoteke ne pokazuje
  5760. fizičku lokaciju te datoteke
  5761. Karakteristike
  5762. Ime datoteke i dalje označava specifičan, mada skriven,
  5763. set fizičkih disk blokova
  5764. Pogodan način za deljenje podataka
  5765. Može da otkrije korespodentnost između
  5766. komponenti i mašina.
  5767. Nezavisnost lokacija:
  5768. ime datoteke ne treba da se menja
  5769. kada se promeni njena fizička lokacija.
  5770. Karakteristike
  5771. Bolje izdavajanje datoteka
  5772. Unapređuje deljenje memorijskog prostora.
  5773. Odvaja hierarhiju imenovanja
  5774. od memorijske hijerarhije
  5775. Šeme Imenovanja — Tri Osnovne Metode
  5776. I Jedinstven system-wide name
  5777. datoteke dobijaju imena
  5778. kombinacijom njihovog host imena i lokalnog imena;
  5779. Garantuje jedinstveno ime unutar sistema.
  5780. II Dodaje udaljene direktorijume lokalnim direktorijumima
  5781. daje izgled jedinstvenog stabla ditektorijuma;
  5782. samo prethodno mount-ovanim udaljenim direktorijumima
  5783. može transparentno da se pristupi
  5784. III Sveobuhvatna integracija komponenti FS (sistema datoteka)
  5785. Jedinstveno globalno ime strukture obuhvata sve datoteke u sistemu.
  5786. ako server nije dostupan,
  5787. neki proizvoljan set direktorijuma na različitim mašinama
  5788. takođe postaje nedostupan
  5789. Pristup udaljenim datotekema
  5790. 1. remote access
  5791. 2. using cache
  5792. Pristup Udaljenim datotekema
  5793. 1. Remote Service
  5794. koristi rpc pozive
  5795. za upis ili čitanje
  5796. dela datoteke koji je klijent dobio preko mreže
  5797.  
  5798. 2. Keširanje za globalno poboljšanje performansi (ali…)
  5799. ako potrebni podatak već nije keširan
  5800. kopija podatka se dobija od servera do korisnika
  5801. uvek se pristupa keširanoj kopiji
  5802.  
  5803. datoteke se indentifikuju sa jednom master kopijom
  5804. MC je smeštena na jednom serveru,
  5805. ali
  5806. kopije(delovi) su rasuti po različitim mestima.
  5807.  
  5808. Cache-consistency problem
  5809. čuvanje keširanih kopija je koizistentno master datoteci.
  5810. Lokacija Keša – Disk vs. Glavne Memorije
  5811.  
  5812.  
  5813. Prednosti disk keša (DCD)
  5814. Mnogo pouzdaniji
  5815. Keširani podaci se čuvaju na disku
  5816. su i dalje tu za vreme oporavka
  5817. nije potrebno da se ponovo dovlače (fecth)
  5818. Prednosti memorijskog keša:
  5819. Dozvoljava da radne stanice budu bez diska
  5820. Brži pristup podacima
  5821. Veća memorija i može da se izvodi ubrzanje.
  5822. Serverski keš (koji se koriste da ubrzaju disk I/O) je u glavnoj memoriji
  5823. bez obzira gde je korisnički keš lociran;
  5824. korišćenjem memorijskog keša na korisničkoj mašini se omogućava
  5825. jedinstven keš mehanizam za servere i korisnike
  5826. Cache Update Policy
  5827. Write-through: upis kroz
  5828. Upisivanje podataka kroz disk
  5829. umesto u bilo koji keš.
  5830. Pouzdano, ali slabijih performansi
  5831. Delayed-write – odloženi upis
  5832. modifikacije se upisuju u keš
  5833. a zatim na server.
  5834. Brži pristup za upis;
  5835. neki podaci mogu biti prekucani pre nego što se upišu ponovo
  5836. tako da oni uopšte ne treba da se upisuju.
  5837. nepouzdan;
  5838. neupisani podatak će se izgubiti kad god se mašina blokira.
  5839.  
  5840. Variation – flushing
  5841. keš se skenira u regularnim intervalima
  5842. prazni blokove koji su bili modifikovani nakon poslednjeg skeniranja
  5843. Variation – write-on-close,
  5844. upisuje blokove podataka na server
  5845. kada se datoteka zatvara.
  5846. najbolje za podatke koji su otvoreni na duže vreme i često se menjaju
  5847. Konzistencija
  5848. Konzistencija
  5849. Da li je lokalno keširana kopija
  5850. podatka konzistentna master kopiji?
  5851. Pristup iniciran od strane klijenta (Client-initiated approach)
  5852. Klijent započinje proveru vrednosti
  5853. Server proverava da li
  5854. su lokalni podaci konzistentni
  5855. master kopiji
  5856. Pristup iniciran od strane servera (Server-initiated approach)
  5857. Server vodi zapis,
  5858. o svakom klijentu,
  5859. o (delovima datoteka) datotekema koje dobije
  5860. Kada server detektuje potencijalnu nekonzistenciju, mora da reaguje
  5861. Poređenje Keširanja i Udaljenog Servisa
  5862. Kod keširanja,
  5863. lokalni keš efikasno rukovodi većinom udaljenih pristupa;
  5864. većina udaljenih pristupa se opsluđuje istom brzinom kao i lokalni.
  5865. Kod keširanja serverima se pristupa samo s vremena na vreme
  5866. (pre nego za svaki upis).
  5867. Smanjuju serverski i mrezni saobraćaj
  5868. Povećava potencijal za scalability
  5869.  
  5870. Metod udaljenog servera
  5871. rukovodi svim udaljenim pristupima preko mreže;
  5872. o obara performanse zbog mrežnog saobraćaju, čitanje/upis sa servera
  5873.  
  5874. Total network overhead
  5875. in transmitting big chunks of data (caching)
  5876. is lower than
  5877. a series of responses to specific requests (remote-service)
  5878. Keširanje i Udaljeni Servisi (Nastavak)
  5879. Keširanje je najbolje
  5880. kod pristupa delovima sa ređim upisima (read dominant).
  5881. kod čestih upisa,
  5882. su bitni opšti troškovi
  5883. da bi se prevazišao problem konzistencije keša.
  5884.  
  5885. Keširanje je dobro za mašine sa:
  5886. lokalnim diskovima
  5887. velikim RAM memorijama.
  5888.  
  5889. Udaljeni pristup je dobar za:
  5890. mašine bez diska,
  5891. sa malim memorijskim RAM kapacitetom
  5892. Stateful File Services
  5893. Mehanizam:
  5894. Klijent otvara datoteku.
  5895. Server fečuje informaciju o datoteci sa svog diska,
  5896. smešta je na svoju memoriju
  5897. daje klijentu identifikator konekcije
  5898. jedinstven za klijenta i otvara datoteku.
  5899.  
  5900. Identifikator se koristi za sledeće pristupe dok se ne sesija ne završi .
  5901.  
  5902. Server mora da podesi informaciju u glavnoj memoriji
  5903. koju je koristio klijent
  5904. koji više nije aktivan
  5905. Povećane performanse:
  5906. Smanjeni pristup disku
  5907. Stateful server zna:
  5908. da li je datoteka bila otvorena za sekvencijalni pristup
  5909. pa može da čita unapred sledeće blokove.
  5910. Stateless File-Server
  5911. Izbegava informacije o stanju
  5912. pravljenjem
  5913. nezavisnih zahteva
  5914. Svaki zahtev
  5915. identifikuje datoteku
  5916. i
  5917. poziciju u datoteci
  5918. Nema potrebe za uspostavljanje i raskidanje veze
  5919. operacijama open i close
  5920. Razlika Između Stateful & Stateless Servisa
  5921. Oporavak od otkaza:
  5922. Stateful server gubi sve svoje memorijske informacije usled pada
  5923. obnavlja stanje
  5924. preko recovery protokola, zasnovanog na dialogu sa klijentom,
  5925. i prekinute operacije
  5926. koje su bile u toku kada se dogodio pad
  5927.  
  5928. Server treba da bude svestan otkaza od strane klijenta
  5929. zbog zahteva za popravljanje prostora
  5930. dodeljenog za upis mesta oktazalih klijent procesa
  5931. (detekcija i eliminacija siročića).
  5932.  
  5933. Kod stateless servera,
  5934. oporavak je skoro neprimetan.
  5935. Oporavljeni server
  5936. može da odgovori
  5937. nezavisnim zahtevima bez ikakvih poteškoća
  5938. Razlike (Nastavak)
  5939. Nedostaci korišćenje snažnih stateless servisa:
  5940. duže request poruke
  5941. sporije procesiranje zahteva
  5942. dodatna ograničenja nametnuta na dizajn DFS
  5943. Neki okruženja zahtevaju stateful servise:
  5944. Server koji koristi server-initiated cache validation
  5945. Ne može da sprovodi stateless servis,
  5946. pošto sadrži zapis
  5947. koji datoteke su keširani od strane kog klijenta
  5948.  
  5949. UNIX koristi fajl deskriptore i implicitne ofsete
  5950. i to je stateful servis;
  5951. serveri moraju da sadrže tabele
  5952. za mapiranje fajl deskriptora za inode,
  5953. i
  5954. smeštanje konkretnog ofseta unutar datoteke
  5955. Replikacija datoteka
  5956. Replikacije iste datoteke
  5957. smeštene na failure-independent mašinama
  5958.  
  5959. Povećava korisnost i može da skrati vreme servisiranja.
  5960.  
  5961. Šeme za imenovanje mapiraju replicirano ime datoteke za određenu repliku
  5962. Postojenje replika bi trebalo da bude nevidljivo za više nivoe.
  5963. Replikacije moraju da se odlikuju
  5964. različitim imenima nižih nivoa
  5965.  
  5966. Ažuriranje:
  5967. replike datoteke označavaju isti logički smisao,
  5968. i zbog toga
  5969. ažuriranje bilo koje replike
  5970. mora da se reflektuje na sve ostale replike.
  5971.  
  5972. Demand replication:
  5973. ažuriranje samo unutar primarne replike,
  5974. onda obaveštavanje drugih replikcija o invalidaciji
  5975.  
  5976.  
  5977.  
  5978.  
  5979.  
  5980.  
  5981. Distribuirana Sinhronizacija
  5982. Distribuirana sinhronizacija procesa
  5983.  
  5984. Međusobno Isključenje
  5985.  
  5986. Atomatske Transakcije
  5987.  
  5988. Konkurentne Atomske Transakcije
  5989.  
  5990. Upravljanje Zastojima
  5991.  
  5992. Election Algoritmi
  5993. Distribuirana Sinhronizacija Procesa
  5994. Happened-before relacija ( označena kao )
  5995. Ako su A i B
  5996. događaji istog procesa,
  5997. i
  5998. A je izvršen pre B,
  5999. onda A  B
  6000.  
  6001. Ako je A:događaj slanje poruke jednog procesa
  6002. B je događaj primanja poruke od strane drugog procesa,
  6003. onda A  B
  6004.  
  6005. Ako A  B i B  C onda A  C
  6006. Povezano Vreme za Tri Konkurentna Procesa
  6007. Imlpementacija 
  6008. Dodeljivanje vremenske oznake (timestamp) svakom sistemskom događaju
  6009.  
  6010. Zahteva da svaki par događaja A i B,
  6011. ako A  B,
  6012. onda
  6013. vremenska oznaka za A je manja od vremenske oznake za B.
  6014.  
  6015. Unutar svakog procesa Pi
  6016. se dodeljuje logički časovnik, LC
  6017.  
  6018. Logički časovnik može biti implementiran:
  6019. kao jednostavan brojač
  6020. koji se inkrementira
  6021. između
  6022. bilo koja dva uspela događaja
  6023. izvršena unutar procesa
  6024. (na završetak prvog)
  6025. Implementacija 
  6026. Proces pokreće svoj logički sat
  6027. kada primi poruku
  6028. čija vremenska oznaka TS je veća
  6029. od trenutne vrednosti njegovog logičkog sata
  6030.  
  6031. Ako su vremenske oznake dva događaja A i B iste,
  6032. onda su događaji konkurentni
  6033.  
  6034. Možemo da koristimo identifikacione brojeve procesa
  6035. da prekinemo veze
  6036. i
  6037. da stvorimo totalno uređenje (total ordering)
  6038. Distributed Mutual Exclusion (DME)
  6039. Pretpostavke:
  6040. Sistem se sastoji od n procesa;
  6041. svaki proces Pi se izvršava
  6042. na različitom procesoru
  6043. Svaki proces ima kritičnu sekciju
  6044. koji zahteva međusobno isključenje
  6045.  
  6046. Uslov
  6047. Ako Pi , izvršava svoj kritičnu sekciju
  6048. onda
  6049. ni jedan proces Pj nemože da izvršava svoju kritičnu sekciju
  6050.  
  6051. dva algoritma za DME
  6052. Centralizovano rešenje (centralized approach)
  6053. Distribuirano rešenje (distributed approach)
  6054. DME: Centralizovano rešenje
  6055. Jedan od procesa unutar sistema
  6056. je izabran
  6057. da koordinira pristup kritičnim sekcijama
  6058. 1. Proces
  6059. koji želi da uđe u svoj kritični deo
  6060. šalje request poruku koordinatoru.
  6061.  
  6062. 2. Koordinator odlučuje
  6063. koji proces može da uđe u kritičnu sekciju,
  6064. šalje poruku tom procesu reply poruku.
  6065.  
  6066. 3. Kada proces primi
  6067. reply poruku od koordinatora,
  6068. on ulazi u svouj kritičnu sekciju.
  6069.  
  6070. 4. Nakon izlaska iz kritičnog dela,
  6071. proces šalje
  6072. release poruku koordinatoru
  6073. nastavlja sa izvršavanjm
  6074.  
  6075. Ova šema zahteva tri poruke po ulasku u kritičan deo:
  6076. request
  6077. reply
  6078. release
  6079. DME: Centralizovano rešenje
  6080. DME: Puno Distribuirano Rešenje
  6081. Kada proces Pi želi da uđe u svoju kritičnu sekciju,
  6082. on stvara new vremensku oznaku, TS
  6083. šalje poruku request (Pi, TS)
  6084. svim drugim procesima u sistemu.
  6085.  
  6086. Kada proces Pj primi request poruku,
  6087. može odmah da odgovori
  6088. ili
  6089. može da odloži slanje odgovora.
  6090.  
  6091. Kada proces Pi primi reply poruku
  6092. od svih ostalih procesa u sistemu,
  6093. može da uđe u svoju kritičnu sekciju
  6094.  
  6095. Nakon izlaska iz kritične sekcije,
  6096. proces šalje reply poruku
  6097. DME: Puno Distribuirano Rešenje
  6098. DME: Puno Distribuirano Rešenje(Odluka)
  6099. Odluka da li proces Pj
  6100. odgovara istog trenutka na request(Pi, TS) poruku
  6101. ili
  6102. da odloži svoj odgovor se zasniva na tri faktora:
  6103.  
  6104. 1. Out of CS, do not want-in
  6105. Ako Pj ne želi da uđe u svoju kritičnu sekciju,
  6106. on šalje odgovor odmah ka Pi
  6107.  
  6108. 2. In-CS
  6109. Ako se Pj nalazi u svojoj kritičnoj sekciji,
  6110. onda on odlaže odgovor ka Pi.
  6111.  
  6112. 3. Out of CS, want-in
  6113. Ako Pj želi da uđe u svoju kritičnu sekciju
  6114. ali još nije ušao,
  6115. onda poredi svoju vremensku oznaku sa vremenskom oznakom TS.
  6116. ako je njegova vremenska oznaka veća od TS,
  6117. onda šalje odgovor istog trenutka ka Pi (Pi je prvi tražio)
  6118. U suprotnom, odgovor se odlaže
  6119. Poželjno Ponašanje Punog Distribuiranog Rešenja
  6120. Oslobođeno od zastoja (Deadlock)
  6121.  
  6122. Oslobođeno od zakucavanja (starvation)
  6123. nakon ulaska u kritičnu sekciju
  6124. se raspoređuje
  6125. prema rasporedu vremenskih oznaka
  6126.  
  6127. Raspored vremenskih oznaka osigurava
  6128. ti procesi se opslužuju FIFO način:
  6129. prvi ušao, prvi opslužen (FIFO)
  6130.  
  6131. broj poruka po ulasku u kritičnu sekciju je 2 x (n – 1). Ovo je minimalan broj
  6132. zahtevanih poruka za ulazak u kritičnu sekciju
  6133. kad se proces ponaša nezavisno i konkurentno
  6134. Tri Neželjene Posledice
  6135. 1. Proces mora da zna
  6136. identitet svih ostalih procesa u sistemu,
  6137. što čini
  6138. dinamičko dodavanje i uklanjanje procesa
  6139. još komplikovanijim
  6140. 2. Ako jedan proces otkaže,
  6141. onda cela šema propada.
  6142. Ovo može da bude prevaziđeno
  6143. konstantnim monitoring-om
  6144. stanja svih procesa u sistemu.
  6145. 3. Procesi koji nisu ušli u svoje kritične delove
  6146. moraju se često pauzirati (zbog slanja poruka)
  6147. da bi osigurali ostale procese
  6148. one koji nameravaju da uđu u kritičan deo.
  6149.  
  6150. Ovaj protokol je dakle zadovoljavajući
  6151. za male,
  6152. stabilne setove kooperativnih procesa.
  6153. Atomske Transakcije
  6154. Transakcija =
  6155. Kolekcija instrukcija
  6156. koja čini jednu logičku funkciju
  6157.  
  6158. U sistemima baza podataka
  6159. beleže čitanje
  6160. beleže upisivanje
  6161.  
  6162. Kraj transakcije = status
  6163. izvršeno - commit (uspešna transakcija)
  6164. prekinuto - abort
  6165. Atomska transakcija
  6166. u slučaju greške =>T treba da se vrati na početak (roll-back)
  6167.  
  6168. log implementacija
  6169. log zapis za T sadrži:
  6170. ime T
  6171. ime zapisa za upis (R)
  6172. stare vrednosti R (pre upisivanja)
  6173. nove vrednosti R (nakon upisivanja)
  6174. Atomske Transakcije-Log
  6175.  
  6176.  
  6177.  
  6178.  
  6179.  
  6180.  
  6181.  
  6182.  
  6183.  
  6184.  
  6185. Nakon pada sistema => Atomska transakcija
  6186. undo(T) if not exist <commit T>
  6187. vraća na stanje R pre Ti (roll-back)
  6188.  
  6189. redo (T) if exist <commit T>
  6190. upisuje poslednje vrednosti R preko T da bi zapisao R
  6191. Atomske Transakcije - Checkpoint
  6192.  
  6193.  
  6194.  
  6195.  
  6196.  
  6197.  
  6198.  
  6199.  
  6200.  
  6201.  
  6202. Checkpoint = sve uspele transakcije
  6203. nakon pada -> traži checkpoint
  6204. za sve Tk sa <Tcommit>
  6205. radi redo(Tk)
  6206. za sve Tk bez <Tcommit>
  6207. radi undo(Tk)
  6208.  
  6209. Konkurentne Atomske Transakcije
  6210. Conflict mode transakcija
  6211. minimum dve transakcije Ti, Tj
  6212. za isto R,
  6213. bar jedna od njih = upis T
  6214.  
  6215.  
  6216.  
  6217.  
  6218.  
  6219.  
  6220. Dve šeme:
  6221. lock - protocoli za zaključavanje
  6222.  
  6223. TS redosled izvršavanja
  6224.  
  6225. Lock Protokol
  6226. T će da zaključa (lock) R pre korišćenja
  6227. zahtev za lock
  6228. koristi R
  6229. nakon što je odobren lock
  6230. Otključavanje R (release a lock)
  6231.  
  6232. Shared lock (samo za čitanje)
  6233. posle odobrenog zaključavanja,
  6234. Ti će da koristi R, samo za čitanje
  6235. nekoliko deljenih zaključavanja istovremeno
  6236.  
  6237. Exclusive lock (za upisivanje)
  6238. posle odobrenog zakljčavanja,
  6239. Ti može da upisuje u R
  6240. samo jedno ekskluzivno zaključavanje istovremeno
  6241.  
  6242. TS ordering
  6243. log based + TS
  6244. TS (timestamp protokol obezbeđuje)
  6245. da konfliktno čitanje i upis obave u TS poretku,
  6246. koja isključuje preklapanje konflikta
  6247.  
  6248. TS funkcioniše na sledeći način:
  6249.  
  6250. Svakoj transakciji dodeljujemo vremensku oznaku TS,
  6251. a to je vreme kada počinje se izvršava.
  6252.  
  6253. Takođe svakom zapisu dodeljujemo dva vremenska parametra:
  6254. W-timestamp(Q)
  6255. predstavlja vreme poslednje transakcije
  6256. koja je uspešno obavila upis u Q
  6257.  
  6258. R-timestamp(Q)
  6259. prestavlja vreme poslednje transakcije
  6260. koja je uspešno obavila čitanje iz Q
  6261.  
  6262. Ova dva parametra se stalno ažuziraju
  6263.  
  6264. TS protocol-reading case
  6265. transakcija Ti pošalje zahtev read(Q).
  6266.  
  6267. Moguće su dve situacije:
  6268.  
  6269. 1. TS(Ti) >= W-TS(Q)
  6270. tada je zahtev korektan
  6271. čitanje se obavlja iz Q
  6272. a posle toga se ažurira R-timestamp(Q)
  6273.  
  6274. 2. TS(Ti)< W-TS(Q),
  6275. T traži vrednost Q iz nekog prošlog vremena,
  6276. a vrednost je prepisana
  6277. čitanje iz Q odbaci
  6278. cita se iz log zapisa
  6279. Ili roll-back za sve koje su pogresne
  6280. TS protocol-writing case
  6281. transakcija Ti pošalje zahtev write(Q).
  6282. Moguće su 3 situacije:
  6283.  
  6284. 1. TS(Ti) < R-TS(Q)
  6285. pokušava da se upiše nešto
  6286. što je već trebalo da bude pročitano.
  6287. rool-back za onu Tk koja je procitala pogresno, restart za Tk
  6288.  
  6289. 2. TS(Ti)< W-TS(Q),
  6290. tada transakcija pokušava da upiše
  6291. staru vrednost za Q
  6292. upis ide u log
  6293. ili roll-back za pogresne, restart
  6294.  
  6295. 3. U svim ostalim slučajevima
  6296. TS(Ti) > R-TS(Q) i TS(Ti) > W-TS(Q)
  6297. upis u Q se obavlja
  6298. Timestamping
  6299. Stvara jedinstvenu vremensku oznaku u distribuiranoj šemi:
  6300. Svaki sajt generiše
  6301. jedinstvenu lokalnu vremensku oznaku.
  6302. globalna jedinstvena vremenska oznaka se koristi
  6303. vezivanjem
  6304. the unique local timestamp
  6305. with the unique site identifier
  6306.  
  6307. Use a logical clock defined within each site
  6308. to ensure
  6309. the fair generation of timestamps.
  6310. Generation of Unique Timestamps
  6311. Vremanska Oznaka – Šema Rasporeda
  6312.  
  6313. Ova šema kombinuje
  6314. centralizovanu timestamp metodu
  6315. sa 2PC protokolom
  6316. da obezbedi poredak
  6317. bez velikog broja kaskadnih roll-back operacije.
  6318.  
  6319. Baferuju (log) se različiti zahtevi za čitanje i upis
  6320. a onda se izvršavaju preko timestamp poretka, koji glasi:
  6321.  
  6322. reading:
  6323. record x Ti {read(x)}
  6324. tada read(x) mora biti odloženo
  6325. ako postoji transakcija Tj {write(x)} i ako je TS(Tj) < TS(Ti)
  6326.  
  6327. writing:
  6328. record x Ti {write(x)}
  6329. tada write(x) mora biti odloženo
  6330. ako postoji transakcija Tj {read(x)} i ako je TS(Tj) < TS(Ti)
  6331. Atomičnost Distribuiranih Sistema
  6332.  
  6333. Osiguravanje atomičnosti u distribuiranim sistemima
  6334.  
  6335. zahteva koordinatora transakcije
  6336.  
  6337. koji je odgovoran za sledeće:
  6338.  
  6339. startovanje izvršenja transakcije
  6340.  
  6341. deljenje transakcije na više podtransakcija
  6342.  
  6343. distribucija tih podtransakcija
  6344. na odgovarajuća mesta za izvršenje
  6345.  
  6346. Koordiniranje završetkom transakcije
  6347. čiji rezultat može da bude:
  6348. transakcija izvršena na svim mestima
  6349. ili
  6350. prekinuta na svim mestima
  6351. Two-Phase Commit Protocol (2PC)
  6352. Preuzima fail-stop model
  6353.  
  6354. Izvršenje protokola se inicijalizuje
  6355. od strane koordinatora
  6356.  
  6357. Kada je protokol inicijalizovan,
  6358. transakcija može da se izvršava
  6359. na nekim lokalnim mestima
  6360. Protokol obuhvata
  6361. sva lokalna mesta
  6362. na kojima se izvršava transakcija
  6363. Primer:
  6364. Neka T bude transakcija
  6365. inicijalizovana na mestu Si i
  6366. neka koordinator transakcije na Si bude Ci
  6367. Two-Phase Commit Protocol (2PC)
  6368. Faza 1: Dodavanje Odluka
  6369. Ci dodaje <prepare T> zapis
  6370. za log
  6371.  
  6372. Ci šalje <prepare T> poruku
  6373. Svim mestima.
  6374.  
  6375. Mesto K:
  6376. Kada sajt primi <prepare T> poruku,
  6377. upravljač(menager) transakcije odlučuje
  6378. da li može da izvrši transakciju.
  6379.  
  6380. Ako ne može (neće da radi):
  6381. dodaje <no T> zapis u log
  6382. odgovara Ci sa <abort T> porukom.
  6383.  
  6384. Ako može (hoće da radi):
  6385. dodaje <ready T> zapis u log.
  6386. izbacuje sve log zapise za T u stabilnu memoriju-log
  6387. šalje <ready T>poruku do Ci
  6388. Faza 1 (Nastavak)
  6389. Koordinator sakuplja odgovore
  6390.  
  6391. 1. Ako su svi odgovori “ready”, => odluka je commit (izvrši)
  6392.  
  6393. 2. Bar jedan odgovor “abort”, => odluka je prekini
  6394.  
  6395. 3. Bar jedan učesnik neuspe da odgovori
  6396.  
  6397. unutar time out perioda, => odluka je prekini
  6398. Faza 2: Zapisivanje Odluke u Bazu
  6399. Koordinator dodaje zapis o odluci
  6400. <abort T>
  6401. ili
  6402. <commit T>
  6403. u svoj log
  6404. izbacuje zapis u stabilnu memoriju-log
  6405.  
  6406. Kada zapis stigne do stabilne memorije
  6407. on je neopoziv
  6408. (čak i ako se desi neuspeh prilikom upisa)
  6409.  
  6410. Koordinator šalje poruku
  6411. svakom učesniku
  6412. obaveštavajući ga
  6413. o odluci (commit ili abort).
  6414.  
  6415. Učesnici izvode određenu radnju, lokalno.
  6416. Faza 2: Zapisivanje Odluke u Bazu
  6417. abort T
  6418. koordinator šalje poruku
  6419. svakom učesniku
  6420. obaveštavajući ga o odluci (abort)
  6421. commit T
  6422. koordinator šalje poruku
  6423. svakom učesniku
  6424. obaveštavajući ga o odluci (commit)
  6425.  
  6426. Učesnici izvode određenu radnju lokalno
  6427. nakon završetka,
  6428. učesnik šalje poruku
  6429. <acknowledge T> koordinatoru Ci
  6430.  
  6431. Nakon svega, Ci dodaje zapis <complete T>
  6432. Manipulisanje Neuspesima u 2PC – Site Failure
  6433. Site failed and recover, look at the log
  6434. Log sadrži <commit T> zapis.
  6435. U ovom slučaju, sajt izvršava redo(T).
  6436.  
  6437. Log sadrži <abort T> zapis.
  6438. U ovom slučaju, sajte izvršava undo(T).
  6439.  
  6440. Log sadrži <ready T> zapis; konsultuje Ci
  6441. Ako je Ci pao-otkazao,
  6442. sajt šalje <query-status T> poruku drugim sajtovima
  6443.  
  6444. Log ne sadrži kontrolne zapise koji se tiču T
  6445. U ovom slučaju,
  6446. sajt izvršava undo(T)
  6447. Manipulisanje Neuspesima u 2PC – Koordinator failed Ci
  6448. Koordinator failed Ci
  6449.  
  6450. Čekanje na oporavak Ci
  6451.  
  6452. Ako aktivno mesto (sajt)
  6453. sadrži <commit T> zapis u svom logu
  6454. T mora da se izvrši
  6455.  
  6456. Svi aktivni sajtovi
  6457. imaju <ready T> zapis u svojim logovima,
  6458. ali bez dodatnih kontrolnih zapisa.
  6459. u ovom slučaju moramo da sačekamo koordinatora da se oporavi.
  6460. Blocking problem:
  6461. T je blokiran do oporavka sajta Si
  6462.  
  6463. Ako nema oporavka Ci
  6464. sve transakcije izvršavaju undo()
  6465. Locking Protokoli
  6466. mogu da koriste
  6467. 2PC locking protokol
  6468. u distribuiranom okruženju
  6469. menjanjem načina na koji je lock menadžer implementiran
  6470. Šema bez replikacije
  6471. samo jedna replika
  6472. svaki sajt održava lokalni lock menadžer
  6473.  
  6474. LM upravlja lock i unlock zahtevima
  6475. za one stavke podataka
  6476. koje su smeštene na tom sajtu
  6477. Jednostavna implementacija obuhvata
  6478. dva transfera poruka za manipulisanje lock zahtevima,
  6479. lock request, lock acknowledge
  6480. jedan transfer poruka za manipulisanje unlock zahtevima.
  6481.  
  6482. Manipulisanje zastojima je još komplikovanije.
  6483. Locking Protokoli - Šeme sa Replikacijama
  6484. Metod sa jednim koordinatorom
  6485.  
  6486. Metod sa više koordinatora
  6487. Metod sa Jednim Koordinatorom
  6488. Centralizovani lock menadžer
  6489.  
  6490. Jedan lock menadžer je smešten na jedan izabrani sajt,
  6491. svi lock i unlock zahtevi
  6492. čine taj sajt.
  6493. Jednostavna implementacija
  6494. Jednostavna manipulacija zastojima
  6495. mogućnost uskog grla
  6496. Podložan gubitku sinhronizacije procesa
  6497. ako jedan sajt otkaže
  6498.  
  6499. Moguć pad sistema
  6500. Metod sa Više Koordinatora
  6501. distribuira lock meadžer funkciju
  6502. preko
  6503. više sajtova.
  6504.  
  6505. Majority protocol – Protokol većine
  6506.  
  6507. Biased protocol – Pristrasni protokol
  6508.  
  6509. Primary copy – Primarna kopija
  6510. Majority Protocol
  6511. LM na svakom sajtu
  6512. koji kontroliše svoje lokalne podatke i njihove replike
  6513.  
  6514. kada transakcija trazi lock(Q)
  6515. koji repliciran na n različitih sajtova
  6516. transakcija mora da pošaje lock zahtev
  6517. za više od n/2 sajtova
  6518.  
  6519. Svaki sajt odlučuje
  6520. hoće li da ispuni lock zahtev
  6521. a transakcija je dobiti dozvolu
  6522. ako većina dozvoljava
  6523.  
  6524. Dobra osobina ove šeme je
  6525. što se poštuje većina
  6526. izbegava centralizovanu kontrola
  6527.  
  6528. Međutim postoje 2 loše osobine:
  6529. komplikovanija je za realizaciju
  6530. zastoji se mnogo teže kontorlišu
  6531. Biased Protocol
  6532. .
  6533. Ovaj metod je sličan većinskom protokolu
  6534. ovde postoji LM za svaki sajt,
  6535. ali deljivi i eksluzivni lock se opslužiju drugačije
  6536. lock zahtevi za deljivi lock, favorizuju
  6537. u odnosu na zahteve za ekskluzivni lock.
  6538.  
  6539. Deljivi lock zahtevi (svaki zahtev za čitanje) su takvi
  6540. da kada transakcija traži lock Q zapisa,
  6541. on se upućuje samo jednom sajtu koji sadrži repliku od Q
  6542.  
  6543. Ekskluzivni lock zahtevi (svaki zahtev za upis) su takvi
  6544. da kada transakcija traži lock Q zapisa,
  6545. on se upućuje svim sajtovima koji sadrži repliku od Q
  6546.  
  6547. Šema ima prednosti u odnosu na većinski protokol
  6548. ima manje kašnjenje (overhead) na operacije čitanja
  6549. u odnosu na većinski protokol, jer su lock zathevi deljivi
  6550. ali za ciklus upisa je lošiji
  6551. jer mora da se obrati svakom sajtu koji sadrži repliku
  6552. Primarna Kopija
  6553. U slučaju replika,
  6554. jedan od sajtova koji sadrzi repliku datoteke
  6555. ce se proglasiti za njegovu primarnu repliku (primary site).
  6556.  
  6557. Uvek se lock zahtev prosleđuje
  6558. samo za primarnu repliku (tom sajtu),
  6559. čiji će sajt obezbediti konkurentnu lock kontrolu
  6560.  
  6561. Slično jednoj LM metodi
  6562.  
  6563. Ali ako primarni sajt otkaže,
  6564. tada će Q zapis da budu neraspoloživ,
  6565. bez obzira što postoji ostale replike na različitim računarima.
  6566. Sprečavanje Zastoja
  6567. Raspoređivanje resursa - sprečavanje zastoja:
  6568. definisanje globalnog raspoređivanja resursa sistema
  6569. Zadavanje jedinstvenog broja svim resursima sistema
  6570. Proces može da zahteva resurs sa jedinstvenim brojem
  6571. samo ako već ne poseduje resurs sa jedinstvenim brojem većim od trazenog
  6572. Jednostavno za implementaciju; zahteva male troškove
  6573. Banker’s algoritam:
  6574. označava jedan proces u sistemu
  6575. kao proces koji sadrži informaciju
  6576. neophodnu za sprovođenje Banker’s algoritma
  6577. takođe se lako implementira
  6578. ali može da zahteva mnogo više troškova
  6579. Timestamped Deadlock-Šema Prevencije
  6580. Svaki proces Pi je označen
  6581. jedinstvenim brojem prioriteta
  6582. Brojevi prioriteta se koriste za odlučivanje da li
  6583. proces Pi treba da sačeka proces Pj;
  6584. inače za Pi se obavi roll-back
  6585. Šema sprečava deadlock ako:
  6586. Za svaku ivicu Pi  Pj
  6587. u wait for grafiku,
  6588. Pi ima veći prioritet od Pj.
  6589.  
  6590. U tom slučaju krug je nemoguć
  6591. Wait-Die Šema
  6592. Zasnovana na non-preemptive tehnici
  6593.  
  6594. Ako Pi zahteva resurs
  6595. koji trenutno drži Pj,
  6596. Pi je dozvoljeno da čeka samo
  6597. ako ima manju vremensku oznaku nego Pj
  6598. (Pi je stariji od Pj)
  6599. Inače, za Pi se obavi roll-back (umire)
  6600. Primer: Pretpostavimo da procesi P1, P2, i P3
  6601. imaju vremenske oznake 5, 10, i 15 redom.
  6602. ako P1 zahteva resurs koji drži P2, onda će P1 da čeka.
  6603. akoP3 zahteva resurs koji drži P2, onda će P3 biti roll-backed
  6604. Would-Wait Šema
  6605. Zasnovana na preemptive tehnici; kopija wait-die sistema
  6606. Ako Pi zahteva resurs
  6607. koji drži Pj,
  6608. Pi je dozvoljeno da čeka samo
  6609. ako ima veću vremensku oznaku nego Pj
  6610. (Pi je mlađi od Pj)
  6611. Inače za Pj se obavlja roll-back (Pj je preempt od strane Pi).
  6612. Primer: Pretpostavimo da procesi P1, P2, i P3
  6613. imaju vremenske oznake 5, 10, i 15 redom.
  6614. ako P1 zahteva resurs koji drži P2,
  6615. onda će resurs biti oduzet od P2
  6616. P2 će biti roll-back
  6617. ako P3 zahteva resurs koji drži P2, onda će P3 čekati
  6618. Detekcija zastoja
  6619. wait for graf
  6620.  
  6621. Centralizovano rešenje
  6622.  
  6623. Puno distribuirano rešenje
  6624.  
  6625. Dva Lokalna Wait-For Grafika
  6626. Globalni Wait-For Grafik
  6627. Detekcija Zakočenja – Centralizovano Rešenje
  6628. Svaki sajt čuva lokalni wait-for graf
  6629.  
  6630. čvorovi grafa odgovaraju
  6631. svim procesima
  6632. od kojih bilo ko može da drži ili zahteva
  6633. bilo koji resurs koji je lociran na tom sajtu
  6634.  
  6635.  
  6636. Globalni wait-for graf je onaj koji se kreira
  6637. u jednom procesu koordinacije;
  6638. ovaj grafik je unija svih lokalnih wait-for grafika
  6639.  
  6640. Detekcija zastoja – Centralizovano Rešenje
  6641.  
  6642. Postoje tri različite opcije (tačke u vremenu)
  6643. kada wait-for graf može stvori:
  6644.  
  6645. Kad god se ubaci ili izbaci nova ivica
  6646. u neki od lokalnih wait-for grafa
  6647. Periodično, kada se neki broj promena dogodio u wait-for graph
  6648. Kad god koordinator treba da pozove cycle-detection algoritam..
  6649.  
  6650. Mogu da se dogode nepotrebni rollback-ovi
  6651. kao rezultat false cycles
  6652. Lokalni i Globalni Wait-For Grafici
  6653. Potpuno Distribuirano Rešenje
  6654. Svi kontroleri dele podjednako
  6655. odgovornost detektovanje zakočenja
  6656.  
  6657. Svaki sajt obrazuje wait-for graph
  6658. koji predstavlja deo ukupnog grafika.
  6659.  
  6660. Uvodimo dodatni čvor Pex
  6661. za svaki lokalni wait-for graf
  6662.  
  6663. Ako lokalni wait-for grafik sadrži krug
  6664. koji ne sadrži čvor Pex,
  6665. onda je sistem u stanju zakočenja
  6666.  
  6667. Ako ciklus sadrži cvor Pex to podrazmeva
  6668. mogućnost zakočenja
  6669.  
  6670. Da bi se saznalo da li postoji zakočenje,
  6671. distributed deadlock-detection algoritam
  6672. mora da se pozove
  6673. Uvećani Lokalni Wait-For Grafovi
  6674. Election Algoritmi
  6675. Determine
  6676. Gde nova kopija koordinatora
  6677. treba da bude restart
  6678. Preuzma jedinstveni broj prioriteta
  6679. koji je vezan za svaki aktivni proces u sistemu,
  6680. broj prioriteta od procesa Pi , je i.
  6681. Preuzima jedan-na-jedan korespodenciju
  6682. između procesa i sajtova.
  6683. Koordinator je uvek proces
  6684. sa najvećim brojem prioriteta.
  6685. Kada koordinator neuspe,
  6686. algoritam mora da izabere
  6687. onaj aktivni proces sa najvećim brojem prioriteta.
  6688. Dva algoritma,
  6689. bully algorithm i ring algorithm,
  6690. mogu da se koriste pri izboru novog koordinatora u slučaju neuspeha.
  6691. Bully Algoritam
  6692. Primenljiv kod sistema
  6693. gde svaki proces može da pošalje poruku
  6694. svakom drugom procesu u sistemu.
  6695. Ako proces Pi šalje zahtev
  6696. na koji koordinator nije odgovorio
  6697. unutar vremenskog intervala T,
  6698. pretpostavlja da je koordinator pao;
  6699. Pi pokušava da izabere samog sebe
  6700. kao novog koordinatora.
  6701. Pi šalje election (biranje) poruku
  6702. svakom procesu sa većim brojem prioriteta,
  6703. Pi zatim čeka sa bilo koji od ovih procesa
  6704. odgovori unutar intervala T.
  6705. Bully Algoritam (Nastavak)
  6706. Ako nema odgovora unutar T,
  6707. pretpostavlja da su svi procesi
  6708. sa brojevima većim od i pali;
  6709. Pi postavlja sebe kao novog koordinatora.
  6710. Ako primi odgovor,
  6711. Pi započine vremenski interval T´,
  6712. čeka da primi poruku
  6713. da je proces
  6714. sa većim brojem prioritata izabran.
  6715. Ako nije poslata poruka unutar T´,
  6716. pretpostavlja da proces
  6717. sa višim brojem nije uspeo;
  6718. Pi će da restartuje algoritam
  6719. Bully Algoritam (Nastavak)
  6720. Ako Pi nije koordinator,
  6721. onda, bilo kad za vreme izvršenja,
  6722. Pi može da primi jednu od sledeće dve poruke
  6723. od procesa Pj.
  6724. 1. Pj je novi koordinator (j > i).
  6725. 2. Pj započeo biranje (j > i).
  6726. Pi, sends a response to Pj and
  6727. započinje sopstveni election algoritam,
  6728. ako taj Pi nije već inicijalizovao takav izbor.
  6729. Nakon što se neuspeli proces povrati,
  6730. odmah počinje izvršenje istog algoritma.
  6731. ako nema aktivnog procesa sa većim brojevima,
  6732. povraćeni proces izbacuje sve procese
  6733. sa manjim brojebvima
  6734. da bi postao koordinator procesa,
  6735. čak i ako već postoji koordinator sa manjim brojem.
  6736. Ring Algoritam
  6737. Primenjiv na sistemima koji su organizovani
  6738. kao prsten (ring)
  6739. (logički ili fizički).
  6740. Pretpostavlja da su linkovi sjedinjeni,
  6741. i
  6742. da procesi šalju svoje poruke
  6743. svom desnom susedu.
  6744. Svaki proces sadrži aktivnu listu,
  6745. u kojoj se nalaze svi brojevi prioriteta
  6746. svih aktivnih procesa u sistemu
  6747. kada se algoritam završi.
  6748. Ako proces Pi detektuje neuspeh koordinatora,
  6749. Stvara novu aktivnu listu koja je na početku prazna.
  6750. zatim šalje poruku elect(i) svom desnom susedu,
  6751. i
  6752. dodaje broj i svojoj aktivnoj listi.
  6753. Ring Algoritam (Nastavak)
  6754. Ako Pi primi poruku elect(j)
  6755. od procesa sa leve strane,
  6756. mora da odgovori na jedan od tri načina:
  6757. Ako je ovo prva elect koja je viđena ili poslata,
  6758. Pi stvara novu aktivnu listu sa brojevima i i j.
  6759. zatim šalje poruku elect(i),
  6760. a posle nje poruku elect(j).
  6761.  
  6762. 2. Ako i  j,
  6763. onda aktivna lista za Pi sada sadrži brojeve
  6764. svih aktivnih procesa u sistemu.
  6765. Pi može sada da determinira najveći broj
  6766. u aktivnu listu
  6767. da bi identifikovao novi koordinator proces.
  6768.  
  6769. 3. Ako i = j,
  6770. onda Pi proma poruku elect(i).
  6771. Aktivna lista za Pi sadrži sve aktivne procese u sistemu.
  6772. Pi može sada da determinira novi koordinator proces.
Add Comment
Please, Sign In to add comment