ОС1/Октобар 2013 — разлика између измена
м (Formatiranje) |
|||
Ред 7: | Ред 7: | ||
=== Rešenje === | === Rešenje === | ||
Videti [[ОС1/Јул 2012#1. zadatak|prvi zadatak iz julskog roka 2012. godine]]. | |||
== 2. zadatak == | == 2. zadatak == | ||
=== Postavka === | === Postavka === | ||
Korišćenjem operacije < | Korišćenjem operacije <syntaxhighlight lang="c" inline>yield(jmp_buf old, jmp_buf new)</syntaxhighlight> koja čuva kontekst niti čiji je <code>jmp_buf</code> dat kao prvi argument, oduzima joj procesor i restaurira kontekst niti čiji je <code>jmp_buf</code> dat kao drugi argument, kojoj predaje procesor, realizovati operaciju <code>Semaphore::wait()</code> u školskom jezgru. | ||
=== Rešenje === | === Rešenje === | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="cpp"> | ||
Semaphore::wait() { | Semaphore::wait() { | ||
lock(); | |||
if (--val < 0) { | |||
jmp_buf old = Thread::running->context; | |||
blocked.put(Thread::running); | |||
Thread::running = Scheduler::get(); | |||
jmp_buf new = Thread::running->context; | |||
yield(old, new); | |||
} | |||
unlock(); | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Ред 37: | Ред 37: | ||
== 4. zadatak == | == 4. zadatak == | ||
=== Postavka === | === Postavka === | ||
Korišćenjem standardnih brojačkih semafora, napisati kod za inicijalizaciju i potrebnu | Korišćenjem standardnih brojačkih semafora, napisati kod za inicijalizaciju i potrebnu sinhronizaciju kritične sekcije u koju može ući najviše ''N'' uporednih procesa. | ||
=== Rešenje === | === Rešenje === | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="pascal"> | ||
var mutex : Semaphore := N; | var mutex : Semaphore := N; | ||
process P: | process P: | ||
begin | |||
loop | |||
wait(mutex); | |||
<critical> | |||
signal(mutex); | |||
<non-critical> | |||
end | |||
end | |||
end P; | end P; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Ред 66: | Ред 67: | ||
=== Rešenje === | === Rešenje === | ||
Best fit algoritam ima cilj da nakon alokacije ostane što manji slobodan fragment kako bi se smanjila eksterna fragmentacija. | ''Best fit'' algoritam ima cilj da nakon alokacije ostane što manji slobodan fragment kako bi se smanjila eksterna fragmentacija. | ||
Worst fit algoritam ima cilja da preostali slobodan fragment bude što upotrebljiviji, odnosno takav da se poveća šansa da se može upotrebiti za dalju alokaciju, tj. ostavlja najveći slobodan fragment nakon alokacije. | |||
''Worst fit'' algoritam ima cilja da preostali slobodan fragment bude što upotrebljiviji, odnosno takav da se poveća šansa da se može upotrebiti za dalju alokaciju, tj. ostavlja najveći slobodan fragment nakon alokacije. | |||
== 7. zadatak == | == 7. zadatak == | ||
=== Postavka === | === Postavka === | ||
U | U nekom sistemu sa virtuelnom memorijom broj stranice u virtuelnoj adresi je veličine 48 bita. Da bi čuvanje PMT učinio izvodljivim, sistem koristi ''hash'' tabelu sa 64K ulaza za smešanje PMT svakog procesa. ''Hash'' funkcija je prosta modulo funkcija: ulaz u tabelu određuje se pomoću 16 najnižih bita broja stranice. U svakom ulazu ''hash'' tabele nalazi se 64-bitna glava ulančane liste zapisa za alocirane stranice koje se preslikavaju u taj ulaz. Svaki zapis sadrži viših 32 bita broja stranice, broj okvira u koji je ta stranica preslikana (32 bita, vrednost 0 označava da stranica ne može da se preslika) i pokazivač na sledeći zapis (64 bita, vrednost 0 označava kraj liste). Neki proces je alocirao 256 najnižih i 256 najviših stranica svog virtuelnog adresnog prostora. Koliko prostora (u bajtovima) ukupno zauzima PMT ovog procesa? | ||
=== Rešenje === | === Rešenje === | ||
Ред 78: | Ред 80: | ||
== 8. zadatak == | == 8. zadatak == | ||
=== Postavka === | === Postavka === | ||
U nekom sistemu podržan je samo asinhroni izlaz na izlazni uređaj pomoću sledeće funkcije | U nekom sistemu podržan je samo asinhroni izlaz na izlazni uređaj pomoću sledeće funkcije <syntaxhighlight lang="c" inline>IOReqID output (IODevID deviceID, IOReq* request);</syntaxhighlight> koja zadaje (asinhrono) izlaznu operaciju specifikovanu drugim argumentom na uređaju identifikovanom prvim argumentom. Ova funkcija odmah vraća kontrolu pozivaocu, uz identifikaciju zadate operacije (rezultat tipa <code>IOReqID</code> je veći od 0 u slučaju ispravno zadatog zahteva). | ||
< | |||
Funkcija <syntaxhighlight lang="c" inline>void ioWait (IOReqID);</codesyntaxhighlight blokira pozivajući proces sve dok operacija identifikovana argumentom nije završena u potpunosti. Pomoću ovih funkcija realizovati funkciju koja, u odnosu na jedan argument, može zadati operaciju sinhrono ili asinhrono, prema želji pozivaoca. | |||
Funkcija | |||
< | |||
blokira pozivajući proces sve dok operacija identifikovana argumentom nije završena u potpunosti. Pomoću ovih funkcija realizovati funkciju koja, u odnosu na jedan argument, može zadati operaciju sinhrono ili asinhrono, prema želji pozivaoca. | |||
=== Rešenje === | === Rešenje === | ||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> | ||
IOReqID output_user(IODevID deviceID, IOReq* request, bool synchronous) { | IOReqID output_user(IODevID deviceID, IOReq* request, bool synchronous) { | ||
IOReqID id = output(deviceID, request); | |||
if (synchronous && id > 0) { | |||
wait(id); | |||
} | |||
return id; | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Ред 107: | Ред 104: | ||
== 10. zadatak == | == 10. zadatak == | ||
=== Postavka === | === Postavka === | ||
Koja | Koja metoda alokacije fajlova je efikasnija za direktni pristup, ulančana ili indeksirana i zašto? | ||
=== Rešenje === | === Rešenje === | ||
Efikasnija je indeksirana; kod ulančane alokacije je efikasan sekvencijalan pristup, ali direktni pristup nekom bloku <b>n</b> podrazumeva pristup svim blokovima počev od prvog pa do njega. Jedna od najvecih pogodnosti indeksne alokacije je upravo direktni pristup, jer indeksna alokacija podrazumeva postojanje indeksnog bloka u kome se nalazi spisak brojeva blokova sa sadržajem fajla redom, koji omogućava vrlo efikasan direktan pristup. | Efikasnija je indeksirana; kod ulančane alokacije je efikasan sekvencijalan pristup, ali direktni pristup nekom bloku <b>n</b> podrazumeva pristup svim blokovima počev od prvog pa do njega. Jedna od najvecih pogodnosti indeksne alokacije je upravo direktni pristup, jer indeksna alokacija podrazumeva postojanje indeksnog bloka u kome se nalazi spisak brojeva blokova sa sadržajem fajla redom, koji omogućava vrlo efikasan direktan pristup. | ||
[[Категорија:Рокови]] | [[Категорија:Рокови]] | ||
[[Категорија:ОС1]] | [[Категорија:ОС1]] |
Верзија на датум 19. јул 2022. у 21:13
1. zadatak
Postavka
Koja je razlika između multiprocesorskih i distribuiranih računarskih sistema?
Rešenje
Videti prvi zadatak iz julskog roka 2012. godine.
2. zadatak
Postavka
Korišćenjem operacije yield(jmp_buf old, jmp_buf new)
koja čuva kontekst niti čiji je jmp_buf
dat kao prvi argument, oduzima joj procesor i restaurira kontekst niti čiji je jmp_buf
dat kao drugi argument, kojoj predaje procesor, realizovati operaciju Semaphore::wait()
u školskom jezgru.
Rešenje
Semaphore::wait() {
lock();
if (--val < 0) {
jmp_buf old = Thread::running->context;
blocked.put(Thread::running);
Thread::running = Scheduler::get();
jmp_buf new = Thread::running->context;
yield(old, new);
}
unlock();
}
3. zadatak
Postavka
Koja je razlika između (teškog) procesa i niti (thread)?
Rešenje
Teški proces je izvršavanje jednog programa sa sopstvenim adresnim prostorom dok se nitima, tj. lakim procesima zove svaki tok kontrole koji koristi taj adresni prostor.
4. zadatak
Postavka
Korišćenjem standardnih brojačkih semafora, napisati kod za inicijalizaciju i potrebnu sinhronizaciju kritične sekcije u koju može ući najviše N uporednih procesa.
Rešenje
var mutex : Semaphore := N;
process P:
begin
loop
wait(mutex);
<critical>
signal(mutex);
<non-critical>
end
end
end P;
5. zadatak
Postavka
Ako tokom svog prvog prolaza linker u svojoj tabeli ne pronađe simbol koji je definisan u tekućem fajlu (izvozi se), da li će prijaviti grešku? Obrazložiti.
Rešenje
Ne jer ako se ne nalazi u tabeli simbola znači da simbol nije definisan i ne dolazi do konflikta imena.
6. zadatak
Postavka
Koja je razlika između best fit i worst fit algoritma kontinualne alokacije memorije?
Rešenje
Best fit algoritam ima cilj da nakon alokacije ostane što manji slobodan fragment kako bi se smanjila eksterna fragmentacija.
Worst fit algoritam ima cilja da preostali slobodan fragment bude što upotrebljiviji, odnosno takav da se poveća šansa da se može upotrebiti za dalju alokaciju, tj. ostavlja najveći slobodan fragment nakon alokacije.
7. zadatak
Postavka
U nekom sistemu sa virtuelnom memorijom broj stranice u virtuelnoj adresi je veličine 48 bita. Da bi čuvanje PMT učinio izvodljivim, sistem koristi hash tabelu sa 64K ulaza za smešanje PMT svakog procesa. Hash funkcija je prosta modulo funkcija: ulaz u tabelu određuje se pomoću 16 najnižih bita broja stranice. U svakom ulazu hash tabele nalazi se 64-bitna glava ulančane liste zapisa za alocirane stranice koje se preslikavaju u taj ulaz. Svaki zapis sadrži viših 32 bita broja stranice, broj okvira u koji je ta stranica preslikana (32 bita, vrednost 0 označava da stranica ne može da se preslika) i pokazivač na sledeći zapis (64 bita, vrednost 0 označava kraj liste). Neki proces je alocirao 256 najnižih i 256 najviših stranica svog virtuelnog adresnog prostora. Koliko prostora (u bajtovima) ukupno zauzima PMT ovog procesa?
Rešenje
- Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.
8. zadatak
Postavka
U nekom sistemu podržan je samo asinhroni izlaz na izlazni uređaj pomoću sledeće funkcije IOReqID output (IODevID deviceID, IOReq* request);
koja zadaje (asinhrono) izlaznu operaciju specifikovanu drugim argumentom na uređaju identifikovanom prvim argumentom. Ova funkcija odmah vraća kontrolu pozivaocu, uz identifikaciju zadate operacije (rezultat tipa IOReqID
je veći od 0 u slučaju ispravno zadatog zahteva).
Funkcija void ioWait (IOReqID);</codesyntaxhighlight blokira pozivajući proces sve dok operacija identifikovana argumentom nije završena u potpunosti. Pomoću ovih funkcija realizovati funkciju koja, u odnosu na jedan argument, može zadati operaciju sinhrono ili asinhrono, prema želji pozivaoca. === Rešenje === <syntaxhighlight lang="c"> IOReqID output_user(IODevID deviceID, IOReq* request, bool synchronous) { IOReqID id = output(deviceID, request); if (synchronous && id > 0) { wait(id); } return id; }
9. zadatak
Postavka
Šta označava skraćenica FTP? Ukratko objasniti čemu služi ovaj protokol.
Rešenje
File Transfer Protocol - u razmeni fajlova učestvuju 2 računara. Jedan igra ulogu servera a drugi ulogu klijenta. Na oba računara se izvršavaju programi koji implementiraju ovaj protokol.
10. zadatak
Postavka
Koja metoda alokacije fajlova je efikasnija za direktni pristup, ulančana ili indeksirana i zašto?
Rešenje
Efikasnija je indeksirana; kod ulančane alokacije je efikasan sekvencijalan pristup, ali direktni pristup nekom bloku n podrazumeva pristup svim blokovima počev od prvog pa do njega. Jedna od najvecih pogodnosti indeksne alokacije je upravo direktni pristup, jer indeksna alokacija podrazumeva postojanje indeksnog bloka u kome se nalazi spisak brojeva blokova sa sadržajem fajla redom, koji omogućava vrlo efikasan direktan pristup.