ОС1/Јул 2017

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

Zadaci sa stranice predmeta.

1. zadatak

Postavka

Šta je hard, a šta soft sistem za rad u realnom vremenu (real-time system)?

Rešenje

Tvrdi sistemi za rad u realnom vremenu su sistemi u kojima odziv mora da stigne u određenom vremenu (deadline). Prekoračenje može dovesti do rezličitih katastrofa. Meki sistemi za rad u realnom vremenu su sistemi kojima je rok bitan ali smeju ga prekoračiti dok god performanse ulaze u zadate okvire.

2. zadatak

Postavka

Objasniti značenje mašinske instrukcije tipa test-and-set i njenu upotrebu u jezgru operativnog sistema.

Rešenje

test_and_set je instrukcija koja omogućava sinhronizaciju na hardverskom nivou. Služi za međusobno isključenje izvršavanja na više procesora. Ona atomično čita i vraća sadržaj zadate memorijske lokacije, i u tu lokaciju upisuje vrednost 1. Može da se koristi u implementaciji lock() funkcije.

3. zadatak

Postavka

Korišćenjem školskog jezgra napisati program koji u n uporednih niti izračunava kvadrat svakog elementa nekog celobrojnog niza (a[i]*=a[i]) veličine n*k, tako što svaka nit obrađuje k elemanata[sic] (jednu particiju niza).

Rešenje

class ArrThread : Thread {
    public:
        ArrThread(int* a, int s, int f): arr(a), start(s), finish(f) {}
    protected:
        void run() {
            for (int i = start; i < finish; i++) {
                arr[i] *= arr[i];
            }
        }
    private:
        int* arr;
        int start;
        int finish;
};

int main() {
    ArrThread* t[n];
    int start = 0;
    for (int i = 0; i < n; i++) {
        t[i] = new ArrThread(array, start, start + k);
        start += k;
    }
    for (int i = 0; i < n; i++) {
        delete t[i];
    }
    return 0;
}

4. zadatak

Videti zadatak iz julskog roka 2019.

5. zadatak

Postavka

Precizno objasniti zašto klasičan linker svoj posao obavlja u dva prolaza (a ne može samo ujednom). Obrazloženje ilustrovati primerom.

Rešenje

Linkerov zadatak je da spoji sve fajlove u jedan izvršni, ali da bi to uradio, linker mora naći sve simbole koji se uvoze odnosno izvoze.

U prvom prolazu analizira ulazne fajlove, veličinu njihovog binarnog sadržaja (prevoda), i pravi mapu exe fajla; osim toga, sakuplja infomacije iz tabela simbola obj fajlova i izgrađuje svoju tabelu simbola; u tu tabelu simbola unosi izvezene simbole iz obj fajlova, za koje odmah može da izračuna adresu u odnosu na ceo exe fajl. U drugom prolazu spaja sve te fajlove u jedan, i ujedno razrešava nerazrešena adresna polja mašinskih instrukcija na osnovu informacija o adresama u koje se preslikavaju simboli iz njegove tabele simbola.

Primer: Recimo da imamo dva objektna fajla, a.obj i b.obj. a.obj izvozi simbol f i uvozi simbol c. Linker će iz prvog objektnog fajla dodati u tabelu simbol f. b.obj uvozi simbol f i izvozi simbol c, pa će linker u svoju tabelu dodati simbol c. U drugom prolazu će linker razrešiti c polje u a.obj i polje f u b.obj.

6. zadatak

Postavka

Objasniti uslugu koju program očekuje od operativnog sistema ako koristi preklope (overlay).

Rešenje

Obaveza OS-a je samo da obezbedi uslugu (sistemski poziv) koji alocira deo (virtuelnog) adresnog prostora procesa, kao i uslugu kojom u dati prostor procesa učitava sadržaj iz nekog binarnog fajla i sadržaj iz memorije upisuje u neki fajl (uobičajene sistemske usluge za rad sa fajlovima); OS ne zna za šta se te usluge koriste, tj. ne zna da se one upotrebljavaju baš za dinamičko učitavanje i zamenu delova procesa.

7. zadatak

Postavka

Virtuelni adresni prostor je veličine 1GB, organizovan je segmentno, sa maksimalnom veličinom segmenta od 4KB, adresibilna jedinica je bajt. Svi segmenti nekog procesa su stvarne veličine od po 2KB i u fizičku memoriju smešteni su odmah jedan iza drugog, pri čemu segment broj 0 počinje od fizičke adrese F000h. Prikazati logičku strukturu virtuelne adrese i izračunati u koju fizičku adresu se preslikava virtuelna adresa 2543h.

Rešenje

VA(30) : seg(18) offset(12)

Virtuelna adresa 2543h tj. 0010 | 0101 0100 0011b pripada 2. segmentu koji počinje od fizičke adrese 10000h i završava na 10800h.

Fizička adresa se dobija sabiranjem bazne adrese u fizičkom adresnom prostoru i offsetnog dela virtuelne adrese: PA = 10000h + 543h = 10543h.

8. zadatak

Videti zadatak iz junskog roka 2021. godine.

9. zadatak

Videti zadatak iz junskog roka 2020. godine.

10. zadatak

Postavka

Neki fajl sistem koristi indeksirani pristup alokaciji fajlova sa indeksima u dva nivoa, blokom veličine 512KB i 64-bitnim adresama fizičkih blokova. Kolika je maksimalna veličina fajla u ovom sistemu?

Rešenje

Pošto je blok veličine a adresa to znači da u jedan indeks može da stane adresa blokova. Konačan broj bajtova koji je na ovaj način mogu adresirati jeste .