ОС1/Октобар 2011

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

Zadaci na stranici predmeta.

1. zadatak

Postavka

Ukratko objasniti osnovni motiv uvođenja raspodele vremena (time sharing) u multiprogramiranje.

Rešenje

U zavisnosti od toga u kom hronološkom poretku su se dogodile akcije korisnika, što je potpuno proizvoljno, korisnici bi dobijali odzive nakon različitog vremena i zavisili bi od broja i aktivnosti drugih korisnika, te bi korisnici imali osećaj da smetaju jedni drugima. Mehanizmom raspodele vremena korisniku se odaje utisak da računar radi samo za njega sa dovoljno dobrim i ujednačenim vremenom odziva, iako opslužuje više korisnika istovremeno.

2. zadatak

Postavka

Na asembleru nekog zamišljenog RISC procesora sa LOAD/STORE arhitekturom napisati program koji vrši učitavanje bloka podataka sa ulaznog uređaja tehnikom programiranog ulaza korišćenjem prekida. Samostalno usvojiti potrebne detaljne pretpostavke.

Rešenje

main:   LD R1, blockAddr
        LD R2, count
        LD R3, #0
        ST [ctrl], #00..01
wait:   CMP R3, #1
        JNZ wait
        HALT

intr:   LD R0, [data]
        ST [R1], R0
        INC R1
        DEC R2
        JNZ ret
        LD R3, #1
        ST [ctrl], #0
ret:    RTI

3. zadatak

Postavka

Navesti najmanje četiri uzroka zbog kojih proces može izgubiti procesor. Za svaki od navedenih načina navesti da li se dešava sinhrono (kao posledica operacije koju je izvršio sam proces) ili asinhrono (nezavisno od izvršavanja procesa).

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

Korišćenjem standardnih brojačkih semafora u školskom jezgru, na jeziku C++ u potpunosti realizovati klasu za ograničeni bafer (bounded buffer).

Rešenje

Videti zadatak iz julskog roka 2011.

5. zadatak

Postavka

Dati primer delova koda dva fajla sa izvornim C/C++ kodom za koje će linker generisati grešku tipa višestrukih simbola i nedefinsanih simbola, pod pretpostavkom da su to jedina dva fajla koja se linkuju.

Rešenje

// a.c
#include <stdio.h>

int a;
extern int b;

int main(void) {
    printf("%d", b);
    return 0;
}

// b.c
double a;

6. zadatak

Postavka

Virtuelna memorija nekog računara organizovana je stranično. Veličina virtuelnog adresnog prostora je 2 MB, adresibilna jedinica je 16-bitna reč, a veličina stranice je 128 KB. Veličina fizičkog adresnog prostora je 32 MB. Operativni sistem učitava stranice na zahtev, tako što se stranica učitava u prvi slobodni okvir fizičke memorije kada joj se pristupi. Kada se kreira proces, ni jedna njegova stranica se ne učitava odmah, već tek kad joj se prvi put pristupi. U početnom trenutku, slobodni okviri fizičke memorije su okviri počev od 10h zaključno sa 1Fh. Neki proces generiše sledeću sekvencu virtuelnih adresa tokom svog izvršavanja (sve vrednosti su heksadecimalne):

30F00, 30F02, 30F04, 922F0, 922F2, 322F0, 322F2, 322F4, 522F0, 522F2, 402F0, 402F2

Prikazati izgled cele tabele preslikavanja stranica (PMT) za ovaj proces nakon izvršavanja ove sekvence. Za svaki ulaz u PMT prikazati indikator prisutnosti stranice u fizičkoj memoriji (0 ili 1) i broj okvira u fizičkoj memoriji u koji se stranica preslikava, ukoliko je stranica učitana; ukoliko nije, prikazati samo ovaj indikator.

Rešenje

  • VAS: 2MB = 2^21B -> VA: 20b
  • page = 128KB = 64K AU -> 16b
  • VA: page(4) : offset(16)

7. zadatak

Postavka

Navesti tipične operacije apstrakcije blokovski orijentisanog ulazno/izlaznog uređaja sa direktnim pristupom.

Rešenje

Tipične operacije su:

  • int readBlock(BlockNo block, void* buffer);
  • int writeBlock(BlockNo block, void* buffer);

8. zadatak

Postavka

Neki proces izvršava sistemski poziv za upis u fajl koji je prethodno uspešno otvorio i sistem mu to ne dozvoljava, sa porukom da tom procesu nije dozvoljena ta operacija, iako je korisniku u čije ime se taj proces izvršava dozvoljena operacija upisa u taj fajl. Objasnite zašto se ovo dogodilo.

Rešenje

Fajl je otvoren u režimu čitanja.

9. zadatak

Postavka

Šta znači termin „presna particija“ (raw partition)?

Rešenje

Presna particija je particija koja nije formatizovana, na njoj nije organizovan fajl sistem. Može se upotrebljavati za posebne namene, npr. za zamenu stranica.

10. zadatak

Postavka

Koliko pristupa blokovima na disku treba izvršiti za pristup n-tom logičkom bloku sadržaja fajla ako je alokacija fajla

  1. ulančana lista,
  2. kontinualna

Rešenje

  1. n
  2. 1