ОС1/Фебруар 2015 — разлика између измена
м (→Rešenje) |
мНема описа измене |
||
Ред 87: | Ред 87: | ||
Odgovoriti na sledeća pitanja koja se odnose na stanje memorije nakon ove sekvence zahteva: | Odgovoriti na sledeća pitanja koja se odnose na stanje memorije nakon ove sekvence zahteva: | ||
#Koliko je ukupno slobodnih fragmenata? | |||
#Kolika je veličina najmanjeg slobodnog fragmenta? | |||
#Kolika je veličina najvećeg slobodnog fragmenta? | |||
=== Rešenje === | === Rešenje === | ||
#2 | |||
#16KB | |||
#96KB | |||
== 7. zadatak == | == 7. zadatak == |
Верзија на датум 19. септембар 2021. у 10:57
1. zadatak
Postavka
Šta je bio osnovni motiv za uvođenje multiprogramiranja u računarske sisteme?
Rešenje
Videti zadatak iz septembarskog roka 2011.
2. zadatak
Postavka
Na asembleru nekog zamišljenog dvoadresnog RISC procesora sa load/store arhitekturom napisati program koji vrši prenos bloka podataka iz memorije na izlazni uređaj tehnikom programiranog izlaza korišćenjem prekida. Samostalno usvojiti potrebne detaljne pretpostavke.
Rešenje
main: LD R1, blockAddr
LD R2, cnt
LD R3, #0
ST [ctrl], #0..1
wait: CMP R3, #1
JNZ wait
intr: LD R0, [R1]
ST [data], R0
INC R1
DEC R2
JNZ ret
ST R3, #1
ST [ctrl], #0
ret: RTI
3. zadatak
Postavka
Korišćenjem Unix sistemskih poziva fork()
i execlp()
napisati program koji prima jedan celobrojni argument i koji, ukoliko se proces pokrene sa parametrom -c, kreira još jedan isti takav proces, samo bez parametra, a u suprotnom se samo završava. Sistemski poziv execlp
prima argumente komandne linije:
int execlp(char const *file, char const *arg0, ...)
Rešenje
int main(int argc, char* argv) {
if(argc < 2) return -1;
if(argv[2][1] == 'c') {
int pid = fork();
if(pid < 0) return -1;
else if(pid == 0) execlp(argv[0], 0);
else wait(0);
}
return 0;
}
4. zadatak
Postavka
Napisati kod za međusobno isključenje kritične sekcije korišćenjem binarnih semafora.
Rešenje
var mutex : Semaphore := 1;
process P
begin
loop
wait(mutex);
<critical>
signal(mutex);
<non-critical>
end
end P;
5. zadatak
Postavka
Objasniti zašto linkeru ne predstavlja nikakav problem prilikom povezivanja to što fajl a.obj uvozi simbol koji je definisan u b.obj, a b.obj uvozi simbol koji je definisan u a.obj. Kako se ova situacija rešava?
Rešenje
U prvom prolazu će se napraviti tabele simbola, a u drugom prolazu razrešiti imena pa ova situacija nije nikakav problem sem ako se ne radi o istom simbolu kada će doći do linkerske greške ako simbol nije nigde definisan.
6. zadatak
Postavka
U nekom sistemu primenjuje se best-fit algoritam kontinualne alokacije memorije. Inicijalno je prostor veličine 512KB potpuno slobodan za alokaciju korisničkih procesa. Potom su različiti procesi zadavali sledeće zahteve (slovna oznaka označava proces koji je postavio zahtev, brojna oznaka označava veličinu alociranog prostora u KB, a minus označava gašenje procesa i oslobađanje njegove memorije)
A128, B32, C256, D64, A-, E16, F64, B-
Odgovoriti na sledeća pitanja koja se odnose na stanje memorije nakon ove sekvence zahteva:
- Koliko je ukupno slobodnih fragmenata?
- Kolika je veličina najmanjeg slobodnog fragmenta?
- Kolika je veličina najvećeg slobodnog fragmenta?
Rešenje
- 2
- 16KB
- 96KB
7. zadatak
Postavka
Virtuelna memorija organizovana je stranično, a adresibilna jedinica je bajt. Virtuelna adresa je 32-bitna, stranica je veličine 4KB, deskriptor stranice je 32-bitni, a PMT je organizovana u dva nivoa, pri čemu je polje za straničenje prvog nivoa veličine 8 bita. Koliki prostor bi ukupno zauzimala PMT nekog procesa kada bi:
Rešenje
VA(32) page 4KB -> 12b, descriptor 4B
pmt1 -> 8b
VA(32) : page1(8) : page2(12) : offset(12)
a) ceo prostor: 2^8 * 4 + 2^8 * 2^12 * 4 = 4MB + 1KB
b) prva i poslednja stranica u v. a. prostoru: 2^8 * 4 + 2^12 * 4 * 2 = 1KB + 32KB = 33KB
8. zadatak
Postavka
Umesto tehnike spooling, pristup uporednih procesa štampaču u nekom sistemu omogućuje se međusobnim isključenjem pomoću operacije rezervacije: svaki proces, pre nego što zatraži bilo koju operaciju sa štampačem, mora da ga rezerviše, a tu rezervaciju otpušta tek kada završi sa celim jednim poslom štampe. Pored eventualnog sprečavanja mrtve blokade, o čemu još mora da vodi računa operativni sistem da se ne bi dešavalo neograničeno zauzeće štampača
Rešenje
- Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.
9. zadatak
Postavka
Izvod iz jednog uputstva za Unix fajl sistem i dodelu prava pristupa fajlu iz komandne linije:
To change the mode of a file, use the chmod command. The general form is chmod X@Y file1 file2 ... where: X is any combination of the letters 'u' (for owner), 'g' (for group), 'o' (for others), 'a' (for all; that is, for 'ugo'); @ is either '+' to add permissions, '-' to remove permissions, or '=' to assign permissions absolutely; and Y is any combination of 'r', 'w', 'x'.
Na primer, komanda chmod u=rx file
daje vlasniku prava rx, ali ne i pravo w.
Napisati komande koje za dati fajl postavljaju prava na sledeći način:
Rešenje
a) grupi i ostalima oduzimaju prava na rx, ali ne i na w: chmod go-rx file
b) svima dodaju pravo na izvršavanje: chmod a+x file
10. zadatak
Postavka
Neki fajl sistem podržava kombinovano indeksiran pristup alokaciji fajlova, pri čemu FCB sadrži 256 ulaza sa direktnim indeksom (sadrže brojeve blokova za podatke). Ako sadržaj fajla preraste veličinu koju podržava ovaj indeks nultog nivoa, za blokove preko te veličine postoji indeks prvog nivoa sa 256 ulaza u FCB; svaki od tih ulaza sadrži pokazivač na indeks drugog nivoa u kome je po 256 ulaza sa pokazivačima na blokove sa sadržajem. Koliki je maksimalni kapacitet fajla u blokovima? (Odgovor dati kao izraz.)
Rešenje
(256 + 256*256) * blockSize