pismeni Flashcards
Što je operacijski sustav, od čega se sastoji i čemu služi?
Program ili skup programa koji upravljaju svim uređajima u sustavu i omogućuju jednostavno sučelje korisničkim programima prema sklopovlju. Današnji operacijski sustavi omogućuju višekorisnički i višezadaćni rad.
Sastoji se od:
1) jezgre operacijskog sustava (eng. kernel) – dio koji upravlja sklopovljem
2) ljuske za izvođenje programa (eng. command shell) - spona korisničkog sučelja i kernela
3) datotečnog sustav (eng. file system)
4) sustavskih programa (eng. system utilities) - programi i programski jezici za dogradnju i razvoj OS-a
5) korisničkih programa - isporučuju se zajedno sa OS-om da bi korisniku bilo dostupno što više usluga bez
dodatne nabave programa
Navedite, skicirajte i ukratko objasnite razine između kojih je smješten OS.
Compilers | Editors | Command interpreter
——————————————————————-
Operating system
——————————————————————-
Machine language
——————————————————————-
Microarchitecture
——————————————————————-
physical devices
——————————————————————-
Smještaj OS-a:
– fizička razina - uređaji (IC-i, sklopovi, PCB, ožičenja, posebne komp.)
– razina mikroarhitekture - tu fizički uređaji zajedno formiraju pojedine funkcijske cjeline: registri - ALU – CPU
– razina strojnog jezika - mikroprogram u asembleru, upravlja tijekom podataka između registara CPU i registara U/I
uređaja
– operacijski sustav - sloj programske podrške koji djelomično skriva ovu sklopovsku složenost i programeru omogućuje
skup instrukcija kojima će lakše pristupiti do tog sklopovlja
– ostali sustavski programi - ljuska, kor. sučelje, prevoditelji, editori, ostali
– korisnički programi - kupljeni, “kupljeni” ili pisani od strane korisnika
Navedite 5 generacija operacijskih sustava i ukratko opišite njihova osnovna obilježja.
Prva generacija(1945 - 1955):
relejna tehnologija I vakumske cijevi, bušene kartice
Druga generacija(1955 - 1965):
Tranzistori,batch sustavi, pojavljuje se FORTRAN (OS), a podatke je bilo moguće snimiti na magnetske trake
Treća generacija(1965 - 1980):
pojava IC-a, multiprogramiranje, time sharing, spooling, MULTICS,UNIX,MINIX,Linux
Multiprogramiranje je dijeljenje memorije za različite poslove. (Uz to CPU ne stoji dok čeka podatke sa U/I sučelja. Nego dok čeka, obavlja drugi posao.) Spooling (Simultaneous Peripheral Operation On Line) - pri završetku posla, se učitava sljedeći posao.
Time Sharing je dijeljenje vremena korištenja CPU-a svakom poslu.
Četvrta generacija(1980 - danas):
LSI čipovi, osobna računala, mikroračunala
pojava operacijskih sustava MS-DOS,WIN NT/98/ME/2000/XP,Vista,W7,W8,W10
UNIX: X Windows, Motif, Niz Linux distribucija…
NOS (mrežni), DOS (raspodijeljeni)
Peta generacija(1990 - danas):
PDA, smartphone, Android iOS, Windows Phone, Symbian, RIM Blackberry
Navedite i ukratko opišite najznačajnije vrste operacijskih sustava prema računalnoj okolini i prema namjeni.
Operacijski sustavi velikih računala (mainframe, vratili se kao veliki web poslužitelji)
- slijed poslova, obrada transakcija, podjela vremena, posluga brojnih korisnika
Operacijski sustavi poslužitelja
- jači PC-i, radne stanice ili mainframe računala, posluga velikog broja korisnika koji dijele sklopovlje, programe i podatke
Višeprocesorski operacijski sustavi
- razlika u načinu spajanja i dijeljenu resursa: paralelna računala, višeračunalni i višeprocesorski sustavi (posebnost: komunikacija, spajanje)
Operacijski sustavi osobnih računala
- dobro sučelje prema korisniku (Windows, Linux)
Operacijski sustavi za rad u stvarnom vremenu (real-time)
- strogi, ublaženi i postojani vremenski zahtjevi, mobilni, ECos
Operacijski sustavi ugradbenih računalnih sustava (embedded)
- smanjeni resursi: kućanski aparati, TV, automobili: Windows CE, Windows Embedded, TV OS, Linux, Embedded Linux, QNX, VxWorks
Operacijski sustavi senzorskih čvorova
- Tiny OS
Operacijski sustavi pametnih kartica (smart card)
- pokreću se na kartici, JVM interpreter, Java Appleti, jedna ili više jednostavnih mogućnosti
Operacijski sustavi ručnih računala i mobilnih uređaja
- PDA, mali uređaji, pametni telefoni
Ukratko objasnite što je jezgrin, a što korisnički način rada operacijskog sustava i kako se postižu.
Jezgrin način rada ima ovlasti pristupati svim mogućnostima sklopovlja
Korisnički način rada je ograničen način rada I štiti sklopovlje od korisnika, samo podskup instrukcija i podskup mogučnosti
Navedite i ukratko opišite svaki od koncepata (načela) rada OS-a.
1) Procesi - proces je program u izvođenju. Svakom procesu pridružujemo:
- adresni prostor, odnosno listu memorijskih lokacija u koje i iz kojih proces može pisati i čitati; adresni prostor sadrži izvršni program, podatke programa i stog
- Skup registara (PC, SP i drugi) (Program Counter, Stack Pointer)
prekinuti proces može se ponovo pokrenuti samo ako su svi navedeni podaci sačuvani (čuvaju se u tablici procesa)
2) Zastoji (deadlocks)
- kada dva ili više procesa međudjeluju, mogu izazvati situacije iz kojih ne mogu izaći.
- Primjer: Proces A treba resurs D1, Proces B treba resurs D2, potom Proces A treba resurs D2, i Proces B treba resurs D1, time se dogodi da proces A nemože dobiti resurs D2 dok proces B ga koristi, a proces B neće otpustiti resurs D2, dok ne dobije D1. I time se dobije prekid.
3) Rukovanje memorijom
- zbog više programa istovremeno u memoriji OS mora rukovati memorijom i zaštiti glavnu memoriju (fizička i prividna (virtualna) memorija), te osigurati memorijski prostor procesima
4) Ulaz/izlaz podataka
- OS ima U/I podsustav koji brine o vrlo različitim i zahtjevnim U/I uređajima (pogonski programi – dio neovisan o uređaju, a dio poseban za svaki uređaj i za svakog proizvođača)
5) Datotečni sustav
- sakriva složenost U/I uređaja i pruža korisniku čisti apstraktni model datoteka i direktorija neovisnih o uređaju
- organiziran hijerarhijski u obliku stabala
- definirane ovlasti korisnika
- “UNIX – mounting file system: omogućuje rad s prenosivim U/I uređajima (CD, FDD)
- Posebne datoteke: UNIX – posebne datoteke omogućuju pristup I/O uređajima kao datotekama
- postoje blok datoteke (diskovi) i znakovne datoteke (pisač, modem)
- Cjevovod - vrsta pseudo-datoteke koja se može koristiti za spajanje dva procesa -
- ako proces A želi poslati podatke procesu B, on piše u cjevovod kao u izlaznu datoteku -
- proces B može čitati te podatke iz cjevovoda kao iz ulazne datoteke
6) Sigurnost
- tajni podaci dostupni samo ovlaštenim korisnicima
- datoteke u UNIX-u zaštićene 9-bitnim binarnim kodom: 3-bitno polje i to jedno za vlasnika, jedno za druge članove vlasnikove grupe i jedno za sve ostale; bitovi poznati kao rwx bitovi (read, write, execute)
- zaštita od nametljivaca (ljudi, virusa)
7) Ljuska (shell)
- OS je kod koji izvodi sustavske pozive
- UNIX ima shell interpreter naredbi – shell (sh, csh, ksh….), odzivni znak (prompt)
8) Recikliranje koncepata
Što je sustavski poziv? Nabrojite ili skicirajte korake nastanka sustavskog poziva. Pokažite na nekom primjeru izvođenje sustavskog poziva (npr. printf() – write ())
Sustavski poziv je sučelje između OS-a i korisničkih programa definirano skupom sustavskih poziva koje omogućuje OS.
Ti pozivi različiti su za svaki OS, pri čemu trebaju zadovoljiti zajedničke zahtjeve i posebnosti svakog OS-a.
Ti pozivi su ovisni o stroju.
Dok su oni često ostvareni u asembleru, biblioteka procedura omogućuje njihovo korištenje iz C-a i drugih VPJ.
(Viših Programskih Jezika)
Koraci nastanka sustavskih poziva:
1., 2. i 3. Pozivajući program najprije stavlja parametre na stog (1. i 2. parametar pozivaju se po vrijednosti, a treći po referenci)
4. Poziv bibliotečne procedure (instrukcija jednaka za pozivanje svih proc.)
5. Bibliotečna procedura stavlja broj sustavskog poziva u registar.
6. OS izvodi instrukciju TRAP s ciljem prijelaza iz korisničkog u jezgrin način rada.
7. Jezgrin kod utvrđuje broj poziva i dodjeljuje ga odgovarajućem rukovatelju poziva (handleru)
8. Pokreće se rukovatelj sustavskog poziva.
9. Kada rukovatelj odradi, nadzor se vraća bibliotečnoj proceduri korisničkog prostora, odnosno instrukciji koja slijedi TRAP instrukciju. (software interrupt)
10. Ta procedura vraća se na razinu korisničkog programa.
11. Za potpuni završetak, korisnički program briše stog i to poslije svakog poziva procedure.
Primjer:
void typefile(char* filename){
int fd, nread;
char buf[1024];
fd = open(filename,O_RDONLY);
if(fd == -1){
perror(filename);
return;
}
while( (nread = read(fd, buf, sizeof(buf) ) ) > 0 )
write(1,buf,nread);
close(fd);
}
Navedite i objasnite barem po dva sustavska poziva za:
a) rukovanje procesima
b) rad s datotekama
c) rad s direktorijima
d) razne zadaće
rukovanje procesima: fork (kreira novi proces dijete kao kopija procesa roditelja), waitpid (čeka da dijete završi)
rad s datotekama: close, open
rad s direktorijima: mkdir (stvara novi direktorij), rmdir (briše prazan direktorij)
razne zadaće: kill (ubija proces), time (vraća vrijeme u sekundama)
a) rukovanje procesima
- fork
- kreiranje novog procesa djeteta kao kopije procesa roditelja sa svim opisnicima, registrima itd
- Novi proces nastavlja samostalan put izvođenja, ali im je zajednički tekst programa.
- fork vraća vrijednost koja je 0 za proces dijete i odgovara njegovom PID-u, dok je za roditelja 1 (tako ih sustav razlikuje).
- nakon fork, dijete često treba izvršavati kod različit od roditelja(slika-Shell): čita naredbu s terminala, stvara proces dijete, čeka dijete da izvede naredbu i kada dijete završi, čita sljedeću naredbu s terminala.
- zbog čekanja da dijete (djeca) završi(e), roditelj izvodi poziv waitpid, a čeka postavljajući prvi parametar u -1.
- Kada waitpid završi, adresa na koju pokazuje parametar statloc, bit će postavljena na status za izlazak djeteta (exit).
- exit
- proces ga koristi kad završi izvođenje.
- Ima 1 parametar (0 - 255), koji se vraća roditelju preko statloc u waitpid pozivu.
b) rad s datotekama
- open
- zahtjeva ime datoteke, apsolutnu ili relativnu putanju i kod načina otvaranja:
- za čitanje(O_RDONLY),
- pisanje (O_WRONLY),
- ili oboje (O_RDWR),
- za kreiranje (O_CREATE).
- close
- zatvaranje datoteke, nakon čega je moguće ponovno otvaranje s open.
- lseek
- mijenja vrijednost pokazivača trenutnog položaja datoteke kod uzastopnog pisanja i čitanja i smješta ga u poziciju
- Ima 3 parametra: (opisnik datoteke, položaj datoteke relativni položaj datoteke u odnosu na njen početak)
- stat
- za dohvaćanje informacija o vrsti datoteke (obična, posebna, direktorij itd.), duljini, vremenu izmjene itd., a parametri su ime datoteke i pokazivač na strukturu gdje će se smjestiti informacija
c) rad s direktorijima
- mkdir i rmdir
- kreiranje i uklanjanje praznog direktorija
- link i unlink
- omogućuje da se ista datoteka pojavljuje pod više imena u različitim direktorijima (dijeljenje datoteka među više korisnika), unlink obrnuto.
- mount i unmount
- Dva sustava datoteka mogu biti spojeni u jedan, unmount obrnuto.
d) razne zadaće
- chdir
- mijenja trenutni radni direktorij
- chmod
- mijenja način korištenja datoteka (mode)
- kill
- način na koji korisnici ili korisnički procesi šalju signale.
- Ako je proces pripremljen za hvatanje nekog signala, kada se signal pojavi, pokreće se rukovatelj signala.
- Ako nije pripremljen za rukovanje signalom, njegov dolazak ubija proces.
- time
- vraća trenutno vrijeme u sekundama, a 0 odgovara 1.1.1970. 32-bitni PC ima maks. vrijednost vremena 232-1 sekundu (preko 136 godina – do 2106.)
Objasnite osnovne razlike između sustavskih poziva u Unix-u/Linux-u i Windowsima.
- UNIX program sastoji se od koda koji nešto radi, a sustavski pozivi omogućuju pojedinu uslugu
- Windows programi su obično pokretani događajima, odnosno glavni program čeka da dođe do nekog događaja, a zatim poziva proceduru koja će ga poslužiti.
- Obično su događaji: pritisak tipke, pomak miša, pritisak tipke miša, umetanje diska itd. Rukovatelji se pozivaju kako bi obradili događaj, osvježili zaslon i obnovili unutarnje stanje programa.
- UNIX ima 1-1 vezu između sustavskog poziva i procedure iz biblioteke koja ga poslužuje.
- u Windowsima su pozivi biblioteke i sustavski pozivi vrlo isprepleteni i povezani.
- Microsoft je definirao skup procedura zvanih Win32 API (Application Program Interface), a programer ih mora koristiti kako bi tražio usluge od OSa.
- Postoji na tisuće Win32 API poziva, pa je u Windowsima često nemoguće znati što je sustavski poziv (omogućen od jezgre), a što poziv biblioteke (u korisničkom prostoru)
Što su procesi i kako se modeliraju?
Procesi su apstrakcije programa u izvođenju. Prilikom izvođenja imamo dojam pseudoparalelizma.
(zbog brzine izvođenja čini nam se da se procesi izvode paralelno, no oni se zapravo izvode jedan po jedan.)
Model procesa:
- Svi izvršni programi računala (ponekad uključujući i OS), organizirani su kao određeni broj slijednih procesa
Proces
- program u izvođenju, uključujući trenutna stanja PC, registara i varijabli.
- Recimo, svaki proces ima svoju virtualnu CPU, a zapravo se na njoj procesi brzo izmjenjuju.
Navedite uobičajene događaje (i primjere) koji dovode do stvaranja procesa, te objasnite razliku u stvaranju procesa u UNIX-u/Linux-u i Windowsima.
- Inicijalizacija sustava
- kod boot-a stvaraju se prednji (sučelje prema korisniku)
- i pozadinski(daemons) (primanje e-mail-a, zahtjev za web stranicom) procesi.
- Lista procesa: UNIX - ps, Windows - CTRL-ALT-DEL CTRL-SHIFT-ESC (prečac za Task Manager)
(to je prečac za menu za; zaključavanje, odjavljivanje, i task manager.) - Izvođenje sustavskog poziva za stvaranje procesa od strane pokrenutog procesa (postojeći proces izaziva sustavski poziv za stvaranje novog procesa – npr. 1 proces dohvaća podatke s mreže, a drugi i dodjeljuje )
- Zahtjev korisnika za stvaranje novog procesa (u interaktivnim sustavima, korisnik s ENTER ili dvoklik pokreće program. To pokreće novi proces i pripadajuće zadatke – više otvorenih prozora u Windowsima)
- Iniciranje nakupine poslova (batch job) – korisnik postavlja poslove sustavu na izvođenje, a kada OS odluči da ima resursa za neki posao,kreira novi proces i pokreće sljedeći posao iz reda čekanja.
Sustavski poziv:
- u UNIX-u fork nakon kojega imamo dva procesa (roditelj i dijete) koji imaju jednaku sliku u memoriji, okolinu i otvorene datoteke. Dijete izvodi execve ili sličan poziv koji mijenja sliku u memoriji i pokreće novi program.
- u Windows-ima CreateProcess obavlja kreiranje procesa i učitavanje odgovarajućeg programa u novi proces. Poziv ima 10 parametara
U oba OS-a, nakon što je proces kreiran, i dijete i roditelj imaju vlastite odvojene adresne prostore
Navedite uobičajene razloge (i primjere) i uvjete završetka procesa
- Normalni izlazak (svojevoljno), nakon obavljenog posla. Npr. kada prevoditelj prevede program, on izvodi sustavski poziv kojim OS-u govori da je gotov (exit ili ExitProcess), ali i da nešto treba ukloniti.
- Izlazak zbog pogreške (svojevoljno), odnosno otkrivene pogreške. Npr. pokrenemo prevoditelj cc foo.c, a programa foo.c nema (Pop-Up prozor)
- Fatalna pogreška (nije svojevoljno), često zbog pogreške u programu. Npr. izvođenje nepostojeće instrukcije, referenciranje nepostojeće adrese u memoriji, dijeljenje s 0.
- Ubijanje od strane drugog procesa (nije svojevoljno), gdje proces izvodi sustavski poziv koji OS-u govori da ubije neki drugi proces. Ubojica mora biti ovlašten za ubijanje. U UNIX-u je to kill, a u Windows TerminateProcess.
Ukratko objasnite hijerarhiju procesa i razliku između Windowsa i UNIXa.
- Proces roditelj kreira proces dijete, a onda svaki ima svoj put izvođenja. Dijete može također kreirati više procesa, stvarajući hijerarhiju. Pri tome ima jednog roditelja, nijedno, jedno ili više djece.
- UNIX:
- proces, njegova djeca i daljnji nasljednici čine skupinu procesa.
- Kada korisnik tipkovnicom pošalje signal, on se prosljeđuje svim članovima skupine pridruženima tipkovnici, a proces ga može uhvatiti, ignorirati ili poduzeti neku “default” akciju.
- Posebni proces init nalazi se u boot-u. Kad se pokrene, gleda broj terminala, a onda stvara jednog ili više novih procesa po terminalu. Oni čekaju da se netko prijavi, što opet može razgranati stablo procesa.
- Windows:
- nema hijerarhije procesa - svi su procesi jednaki.
- Ipak, kreiranom procesu roditelj daje posebnu oznaku (token), zvanu rukovatelj (handle) koju koristi za nadzor djeteta.
- Dijete može oznaku dati drugom procesu.
Navedite moguća stanja procesa, te skicirajte i objasnite dijagram prijelaza stanja procesa.
Moguća stanja procesa:
- Pokrenut (trenutno koristi CPU)
- Pripravan (pokretljiv, ali zaustavljen da bi se mogao izvesti drugi proces)
- Blokiran (ne može se pokrenuti dok ne dođe do nekog vanjskog događaja)
Running / \ Blocked --> Ready
- Proces otkriva da se ne može pokrenuti, jer nema ulaznog podatka.
- Raspoređivač oduzima CPU trenutnom i dodjeljuje je nekom drugom procesu
- Raspoređivač vraća CPU procesu koji je bio pokretan prije trenutnog procesa
- Dogodio se događaj izvana na kojeg je proces čekao da bi se pokrenuo (npr. raspoloživost ulaznog podatka
Navedite barem 10 parametara iz svih skupina parametara iz tablice procesa potrebnih pri implementiranju procesa.
Process management:
- Registers
- Program counter
- Program status word
- Stack pointer
- Process state
- Priority
- Scheduling parameters
- Process ID
- Parent process
- Process group
Memory management:
- Pointer to text segment
- Pointer to data segment
- Pointer to stack segment
File Management:
- Root directory
- Working directory
- File descriptors
- User ID
- Group ID
Što su niti i kako se modeliraju?
Nit je dio procesa koji obavlja rad, niti se raspoređuju i izvode na CPU. Proces objedinjuje resurse potrebne za izvršavanje.
Sve niti u jednom procesu dijele isti adresni prostor (time i globalne varijable, otvorene datoteke, child procese)pa nisu neovisne. Niti kao i procesi, mogu biti u stanjima: Ready, Running, Blocked, Finished.
Navedite osnovne razlike između procesa i niti, te navedite parametre koji su nužni pri implementiranju niti.
Osnovne razlike između procesa i niti:
- Procesi su obično nezavisni, dok niti postoje kao podsetovi procesa.
- Procesi nose znatno više informacija stanja nego niti, dok niti u procesu dijele stanje procesa te memoriju i druge resurse.
- Procesi imaju zasebne adresne prostore, dok niti dijele adresni prostor.
- Procesi komuniciraju samo kroz sistemski dodijeljene IPC mehanizme.
- Zamjena konteksta je obično brža među nitima nego među procesima.
- Niti istog procesa su pokrenute u istom adresnom prostoru, procesi će postojati pojedinačno u svojim adresnim prostorima.
Parametri potrebni za implementiranje niti:
- Program counter
- Registers
- Stack
- State
Navedite razloge korištenja niti i ukratko opišite jedan primjer korištenja niti, te mogući način programskog ostvarenja višenitnosti.
include <Windows.h></Windows.h>
Razlozi za korištenje niti:
- Omogućavaju paralelne entitete u istom adresnom prostoru
- Niti nemaju pridružene resurse, pa ih je 100 puta brže kreirati i uništiti nego procese
- Znatno poboljšanje performansi pri korištenju U/I
- Vrlo pogodne pri višestrukim procesorima gdje je moguć pravi paralelizam
Primjer: Korištenje uređivača dokumenta. - Jedna nit se koristi za naredbu zamijeni, gdje zamijeni string u dokumentu, sa drugim stringom. - Ako bi korisnik u slučaju gdje se zamjena predao nekakvu naredbu, bilo sa tipkovnice ili miša, ta naredba bi bila ignorirana sve dok nit ne obavi svoje. - Da imamo više niti, to se ne bi dogodilo. Ta naredba bi se dovršila sve dok za nit koja zamjenjuje stringove, vrši. - U ovom slučaju više procesa na isti dokument ne bi bio moguć, jer procesi ne dijele isti adresni prostor i datoteke.
Primjer višenitnosti:
#include <iostream>
using namespace std;</iostream>
DWORD WINAPI thread1(__in LPVOID lpParameter) {
while (1) {
std::cout «_space;” From Thread 1 \n”; Sleep(1500);
}
}
DWORD WINAPI thread2(__in LPVOID lpParameter) {
while (1) {
std::cout «_space;” From thread 2\n”; Sleep(5000);
}
}
WORD WINAPI thread3(__in LPVOID lpParameter) {
while (1) {
std::cout «_space;” From thread 3\n”; Sleep(2000);
}
}
int main() {
DWORD threadID1, threadID2, threadID3;
HANDLE h1 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread1, 0, 0, &threadID1);
HANDLE h2 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread2, 0, 0, &threadID2);
HANDLE h3 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread3, 0, 0, &threadID3);
getchar();
return 0;
}
Što su Pthreads i kojim pozivima se njima upravlja.
Pthreads
- POSIX threads, dozvoljavaju programu da kontrolira više različitih tokova rada koji se odvijaju u isto vrijeme
Poziv - Opis:
Pthread_create | Create a new thread
Pthread_exit | Terminate the calling thread
Pthread_join | Wait for specific thread to exit
Pthread_yield | Release the CPU to let another thread run
Pthread_attr_init | Create and initialize a thread’s attribute structure
Pthread_attr_destroy | Remove a thread’s attribute structure
Što je kritični odsječak i zašto je potreban? Objasnite po potrebi i slikom.
Kritični odsječak je dio programa u kojem proces pristupa dijeljenoj memoriji. Služi za sprečavanje utrkivanja, tj. zabranjuje da više od jednog procesa čitaju ili pišu iz ili u dijeljeni prostor podataka u isto vrijeme - osigurati međusobno isključivanje (mutual exclusion)
Navedite četiri uvjeta koji omogućuju međusobno isključivanje.
Uvjeti sprečavanja isključivanja:
1. Dva procesa istovremeno ne mogu biti u kritičnom odsječku
2. Ne rade se pretpostavke o brzinama i broju procesora
3. Proces pokrenut izvan kritičnog odsječka ne može blokirati drugi proces
4. Proces ne mora beskonačno čekati do ulaska u svoj kritični odsječak
Navedite zahtjeve za komuniciranjem među procesima, te zahtjeve za komuniciranjem među nitima.
Prosljeđivanje informacije jednog procesa drugom
Sprječavanje ulaska procesa u kritične odsječke jedno drugom
Omogućavanje redoslijeda izvođenja koji poštuje međusobnu zavisnost među procesima
Za niti: komuniciranje među procesima treba biti jednako primjenjivo na niti, još lakše za niti u istom adresnom prostoru
Navedite postupke koji postižu međusobno isključivanje čekanjem, te ukratko opišite barem tri od njih. (Busy Waiting)
Zabrana prekida
Najjednostavnije je da svaki proces zabrani svaki prekid odmah kada uđe u K.O., a dozvoli čim izađe. CPU se samo prebacuje s procesa na proces prema takta ili na prekid. Postupak je nepopularan, jer nije zgodno korisničkom procesu dati mogućnost dozvole/zabrane prekida (može ga zaraniti i više nikad ne dozvoliti - crash). Zabrana prekida korisna, ali unutar OS-a, a ne na razini korisnika.
Varijable Ključanja
Imamo dijeljenu (lock) varijablu inicijalno u 0. Kada proces želi ući u K.O., ispituje lock. Ako je lock 0, proces ga postavlja u 1 u ulazi u K.O. Ako je lock već u 1, proces mora čekati dok ne bude 0.
Nedostatak: proces čita lock i vidi da je 0. Prije nego ga postavi u 1, drugi proces je raspoređen za izvođenje i postavlja lock u 1. Kada se prvi proces ponovo pokrene, on također postavi lock u 1 i oba su u K.O.
Strogo Izmjenjivanje Kod OS-a najčešće i je pisan u C ili C++ jeziku. Cjelobrojna varijabla turn je početno u 0, a postavlja se za ulaz u K.O. Proces 0 ispituje turn, utvrđuje da je 0, te ulazi u K.O. Proces 1 također vidi da je turn 0 i u petlji ispituje turn da vidi kad će biti 1. Stalno ispitivanje varijable do pojave neke vrijednosti naziva se busy waiting. Uglavnom se sprječava, jer troši vrijeme CPU. Kada proces 0 napusti K.O., postavlja turn u 1 kako bi u K.O. ušao proces1. S obzirom da narušava zahtjev 3., nije uvijek stvarno primjenjiv postupak.
Objasnite na čemu se zasniva Petersonovo rješenje međusobnog isključivanja?
Prije upotrebe dijeljenih varijabli (prije ulaska u K.O.), svaki proces poziva enter_region sa svojim vlastitim brojem procesa, 0 ili 1, kao parametrom.
Taj poziv uzrokuje njihovo čekanje do sigurnog ulaska u K.O. Nakon završetka s dijeljenim varijablama, proces zove leave_region da pokaže daje gotov i dozvoli drugom procesu ulazak u K.O.
Početno nijedan proces nije u K.O. Tada proces 0 poziva enter_region. To pokazuje njegov interes postavljanjem turn u 0. Ako proces 1 pozove enter_region, on tamo ostaje dok interested[0] ne bude FALSE…