ОС1/Фебруар 2012 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
(Ispravka)
 
(Није приказано 5 међуизмена 3 корисника)
Ред 6: Ред 6:
Na asembleru nekog dvoadresnog RISC procesora sa LOAD/STORE arhitekturom napisati prevod sledeće funkcije:
Na asembleru nekog dvoadresnog RISC procesora sa LOAD/STORE arhitekturom napisati prevod sledeće funkcije:
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
int log (int n) {
int log(int n) {
  if (n<2) return 0;
    if (n < 2) return 0;
  else return 1+log(n/2);
    else return 1 + log(n / 2);
}
}
</syntaxhighlight>
</syntaxhighlight>
=== Rešenje ===
=== Rešenje ===
<syntaxhighlight lang="asm">
<syntaxhighlight lang="asm">
log: LD R1, #n[SP]
log:   LD R1, #n[SP]
CMP R1, #2
        CMP R1, #2
JGE else
        JGE else
LD R0, #0
        LD R0, #0
RTS
        RTS
else: LD R0, #1
else:   LD R0, #1
ASL R1, R0
        SHR R1, R0
PUSH R1
        PUSH R1
CALL log
        CALL log
POP R1
        POP R1
ADD R0, R1
        ADD R0, #1 //zato sto se nakon poziva f-je log, povratna vrednost nalazi u registru R0
RTS
        RTS
</syntaxhighlight>
</syntaxhighlight>


Ред 32: Ред 33:


=== Rešenje ===
=== Rešenje ===
#Ispitivanjem indikatora u statusnom registru DMA kontrolera.
# Ispitivanjem indikatora u statusnom registru DMA kontrolera.
#Kada DMA kontroler završi sa radom, generiše prekid.
# Kada DMA kontroler završi sa radom, generiše prekid.


== 3. zadatak ==
== 3. zadatak ==
Ред 40: Ред 41:


=== Rešenje ===
=== Rešenje ===
#Eksplicitnim zahtevom za promenu konteksta - dispatch, yield - sinhrono.
# Eksplicitnim zahtevom za promenu konteksta - dispatch, yield - sinhrono.
#Isteklo je dodeljeno CPU vreme - time exceeded - asinhrono.
# Isteklo je dodeljeno CPU vreme - time exceeded - asinhrono.
#Prekid - maskirajući ili nemaskirajući - asinhrono.
# Prekid - maskirajući ili nemaskirajući - asinhrono.
#Zbog operacije na nekoj sinhronizacionoj primitivi tj. semaforu ili događaju - sinhrono.
# Zbog operacije na nekoj sinhronizacionoj primitivi tj. semaforu ili događaju - sinhrono.


== 4. zadatak ==
== 4. zadatak ==
Ред 50: Ред 51:


=== Rešenje ===
=== Rešenje ===
<syntaxhighlight lang="ada">
<syntaxhighlight lang="pascal">
var sem : Semaphore := 0, semX, semY, semZ : Semaphore := 1;
var sem : Semaphore := 0, semX, semY, semZ : Semaphore := 1;


process P
process P
begin
    begin
...
        ...
wait(sem);
        wait(sem);
wait(sem);
        wait(sem);
wait(sem);
        wait(sem);
...
        ...
signal(semX);
        signal(semX);
signal(semY);
        signal(semY);
signal(semZ);
        signal(semZ);
end
    end
end P;
end P;


process X // ali isto i Y i Z
process X         (* ali isto i Y i Z *)
begin
    begin
wait(semX);
        wait(semX);
...
        ...
signal(sem);
        signal(sem);
...
        ...
end
    end
end X;
end X;
</syntaxhighlight>
</syntaxhighlight>
Ред 78: Ред 79:
== 5. zadatak ==
== 5. zadatak ==
=== Postavka ===
=== Postavka ===
<syntaxhighlight lang = "c">
<syntaxhighlight lang="c">
float base = 2.0;  
float base = 2.0;  
float log(float);  
float log(float);  
float ln(float);
float ln(float);
float log(float x) {
float log(float x) {
  return ln(x)/ln(base);  
    return ln(x) / ln(base);
}
}
</syntaxhighlight>
</syntaxhighlight>
#Koliko nerazrešenih adresnih polja instrukcija prevodilac ostavlja u ovom fajlu?
# Koliko nerazrešenih adresnih polja instrukcija prevodilac ostavlja u ovom fajlu?
#Koje simbole izvozi ovaj fajl?  
# Koje simbole izvozi ovaj fajl?  
#Koje simbole uvozi ovaj fajl?
# Koje simbole uvozi ovaj fajl?


=== Rešenje ===
=== Rešenje ===
{{delimično rešeno}}
# Prevodilac ostavlja 2 nerazrešena polja, jer se dva puta poziva funkcija ln, pa će se u asemblerskom kodu dva puta naći red call ?.
# Izvoze se <code>log</code> i <code>base</code>.
# Uvozi se <code>ln</code>.


== 6. zadatak ==
== 6. zadatak ==
=== Postavka ===
=== Postavka ===
Navesti osnovne sličnosti i osnovne razlike između tehnike dinamičkog učitavanja memorije i preklopa (''overlays'').
Navesti osnovne sličnosti i osnovne razlike između tehnike dinamičkog učitavanja memorije i preklopa (''overlays'').
=== Rešenje ===
=== Rešenje ===
{{delimično rešeno}}
Videti rešenje [[ОС1/Јул 2011#5. zadatak|5. zadatka iz julskog roka 2011. godine]].


== 7. zadatak ==
== 7. zadatak ==
=== Postavka ===
=== 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. U koje ulaze PMT prvog nivoa i drugog nivoa se preslikava stranica broj 5423Dh?
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. U koje ulaze PMT prvog nivoa i drugog nivoa se preslikava stranica broj 5423Dh?
=== Rešenje ===
=== Rešenje ===
{{delimično rešeno}}
Prvih 8 bita stranice je ulaz u PMT prvog nivoa, a ostalih 12 bita je ulaz u PMT drugog nivoa. Dakle, preslikavaće se u ulaz 54 PMT prvog nivoa i ulaz  23D PMT drugog nivoa.
 


== 8. zadatak ==
== 8. zadatak ==
Ред 111: Ред 115:


=== Rešenje ===
=== Rešenje ===
U jedan bafer proizvođač upisuje podatke a iz drugog potrošač izvlači podatke. Kada oba učesnika završe fazu - punjenje odnosno pražnjenje, baferi zamenjuju uloge.
Videti [[ОС1/Јун 2013#8. zadatak|8. zadatak iz junskog roka 2013. godine]].


== 9. zadatak ==
== 9. zadatak ==
=== Postavka ===
=== Postavka ===
Da li je veličina fajla ograničena ako je način alokacije blokova za fajlove na disku:
Da li je veličina fajla ograničena ako je način alokacije blokova za fajlove na disku:
#ulančani
# ulančani
#indeksirani
# indeksirani


=== Rešenje ===
=== Rešenje ===
#ne
# Ne
#da
# Da


== 10. zadatak ==
== 10. zadatak ==

Тренутна верзија на датум 26. јануар 2024. у 20:24

Zadaci na stranici predmeta.

1. zadatak

Postavka

Na asembleru nekog dvoadresnog RISC procesora sa LOAD/STORE arhitekturom napisati prevod sledeće funkcije:

int log(int n) {
    if (n < 2) return 0;
    else return 1 + log(n / 2);
}

Rešenje

log:    LD R1, #n[SP]
        CMP R1, #2
        JGE else
        LD R0, #0
        RTS
else:   LD R0, #1
        SHR R1, R0
        PUSH R1
        CALL log
        POP R1
        ADD R0, #1 //zato sto se nakon poziva f-je log, povratna vrednost nalazi u registru R0
        RTS

2. zadatak

Postavka

Na koji način se u programu koga izvršava procesor može znati da je DMA završio operaciju koja mu je zadata?

Rešenje

  1. Ispitivanjem indikatora u statusnom registru DMA kontrolera.
  2. Kada DMA kontroler završi sa radom, generiše prekid.

3. zadatak

Postavka

Navesti najmanje tri slučaja (uzroka) u kojima tekući proces gubi procesor.

Rešenje

  1. Eksplicitnim zahtevom za promenu konteksta - dispatch, yield - sinhrono.
  2. Isteklo je dodeljeno CPU vreme - time exceeded - asinhrono.
  3. Prekid - maskirajući ili nemaskirajući - asinhrono.
  4. Zbog operacije na nekoj sinhronizacionoj primitivi tj. semaforu ili događaju - sinhrono.

4. zadatak

Postavka

Proces P treba da sačeka da sva tri procesa X, Y i Z ispune neki svoj uslov, u bilo kom redosledu. Napisati deo koda procesa P i bilo kog od druga tri procesa, uz potrebne deklaracije, koji obezbeđuju ovu uslovnu sinhronizaciju pomoću jednog standardnog brojačkog semafora.

Rešenje

var sem : Semaphore := 0, semX, semY, semZ : Semaphore := 1;

process P
    begin
        ...
        wait(sem);
        wait(sem);
        wait(sem);
        ...
        signal(semX);
        signal(semY);
        signal(semZ);
    end
end P;

process X         (* ali isto i Y i Z *)
    begin
        wait(semX);
        ...
        signal(sem);
        ...
    end
end X;

5. zadatak

Postavka

float base = 2.0; 
float log(float); 
float ln(float);
float log(float x) {
    return ln(x) / ln(base);
}
  1. Koliko nerazrešenih adresnih polja instrukcija prevodilac ostavlja u ovom fajlu?
  2. Koje simbole izvozi ovaj fajl?
  3. Koje simbole uvozi ovaj fajl?

Rešenje

  1. Prevodilac ostavlja 2 nerazrešena polja, jer se dva puta poziva funkcija ln, pa će se u asemblerskom kodu dva puta naći red call ?.
  2. Izvoze se log i base.
  3. Uvozi se ln.

6. zadatak

Postavka

Navesti osnovne sličnosti i osnovne razlike između tehnike dinamičkog učitavanja memorije i preklopa (overlays).

Rešenje

Videti rešenje 5. zadatka iz julskog roka 2011. godine.

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. U koje ulaze PMT prvog nivoa i drugog nivoa se preslikava stranica broj 5423Dh?

Rešenje

Prvih 8 bita stranice je ulaz u PMT prvog nivoa, a ostalih 12 bita je ulaz u PMT drugog nivoa. Dakle, preslikavaće se u ulaz 54 PMT prvog nivoa i ulaz 23D PMT drugog nivoa.

8. zadatak

Postavka

Ukratko objasniti princip dvostrukog baferisanja kod ulazno-izlaznih operacija.

Rešenje

Videti 8. zadatak iz junskog roka 2013. godine.

9. zadatak

Postavka

Da li je veličina fajla ograničena ako je način alokacije blokova za fajlove na disku:

  1. ulančani
  2. indeksirani

Rešenje

  1. Ne
  2. Da

10. zadatak

Postavka

Neki fajl sistem koristi indeksirani pristup alokaciji blokova za fajlove na disku, sa kombinovanom tehnikom indeksiranja u jednom, dva i tri nivoa, kao kod UNIX inode strukture. Pretpostavljajući da disk ima uniformno srednje vreme pristupa do bilo kog bloka na disku, da li je vreme pristupa do različitih delova veoma velikih fajlova jednako? Ako jeste, precizno objasniti zašto jeste, a ako nije, objasniti kako se i zašto razlikuje.

Rešenje

Nije. Vreme pristupa za blokove bliže kraju velikog fajla je veće nego na početni deo fajla jer se mora prolaziti kroz višestruke indekse.