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

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

Zadaci sa stranice predmeta.

1. zadatak

Postavka

Korišćenjem makroa test_and_set koji u svojoj implementaciji izvršava odgovarajuću instrukciju procesora tipa test-and-set, implementirati međusobno isključenje kritične sekcije za višeprocesorski pristup.

Rešenje

// Globalna
bool lock;

// Ulazak u kritičnu sekciju
while (test_and_set(&lock));
// Kritična sekcija
lock = false;
// ...

2. zadatak

Postavka

Korišćenjem standardnih brojačkih semafora implementirati klasu sa dve operacije, tick i tock, tako da se one mogu izvršavati iz konkurentnih procesa međusobno isključivo i samo u sledećem poretku: tick, tick, tock, tick, tick, tock...

Rešenje

#include <iostream>

class Clock {
    public:
        Clock() : tickSem(0), tockSem(2), mutex(1),
                  allowedTock(false) {}
        void tick();
        void tock();
    private:
        Semaphore tickSem;
        Semaphore tockSem;
        Semaphore mutex;
        bool allowedTock;
};

void Clock::tick() {
    tockSem.wait();
    mutex.wait();
    std::cout << "tick" << std::endl;
    if (allowedTock) {
        tickSem.signal();
    }
    allowedTock = !allowedTock;
    mutex.signal();
}

void Clock::tock() {
    tickSem.wait();
    mutex.wait();
    std::cout << "tock" << std::endl;
    tockSem.signal();
    tockSem.signal();
    mutex.signal();
}

3. zadatak

Postavka

U definiciji semantike jezika C++ piše da pokušaj indirektnog upisa u objekat konstantnog tipa (označen kao const), recimo preko pokazivača na nekonstantu, ima „nedefinisan efekat“, što zapravo znači da se ostavlja mogućnost da različite implementacije prevodioca i različite platforme (hardver i OS) ovakve situacije tretiraju na različite načine. Navesti i precizno objasniti kakve tačno efekte ovakav upis može da ima i na koji način dolazi do tih efekata.

Rešenje

  1. Može da se desi da prevodilac više konstanti iste vrednosti alocira na istom mestu (kao što na primer postoji string pool u Javi) pa se upisom u jednu konstantu menjaju i sve ostale.
  2. Može da se desi da se te konstante čuvaju na stranici koja nije dozvoljena za upis (stranica sa kodom) pa se prilikom tog upisa generiše greška u pristupu stranici i operativni sistem ugasi proces.

4. zadatak

Postavka

U nekom sistemu sa straničnom organizacijom virtuelne memorije virtuelna i fizička adresa su 30-bitne, adresibilna jedinica je bajt, a stranica je veličine 64 KB. PMT je organizovana u dva nivoa i jedan ulaz u PMT oba nivoa zauzima po jednu 32-bitnu reč. PMT oba nivoa su iste veličine. Koliko ukupno zauzimaju PMT za proces koji je alocirao prvih 256 i poslednjih 256 stranica?

Rešenje

  • VA(30): Page1(7) Page2(7) Offset(16)
  • PA(30): Frame(14) Offset(16)

Pošto se iz jednog PMT može adresirati ukupno ulaza u PMT, i svaki ulaz zauzima , to znači da jedan PMT ukupno zauzima . Za adresiranje 256 stranica potrebno je dva PMT drugog nivoa, tako da se ukupno stvara 5 PMT, i ukupna zauzeta veličina je .

5. zadatak

Postavka

Da li je drajver uređaja (device driver) softverska ili hardverska komponenta računara? Ako je softverska, da li je komponenta operativnog sistema ili korisničkog programa? Ako je hardverska, da li je komponenta vezana za funkcionisanje operativne memorije ili ulazno/izlaznog uređaja?

Rešenje

Drajver je softverska komponenta koja može ali ne mora biti deo operativnog sistema (npr. mikrokernelski operativni sistemi) i služi za standardizovanu komunikaciju sa ulaznim i izlaznim uređajima. Drajvere obično proizvode proizvođači uređaja za koji su ti drajveri pravljeni i obično se pokreću u privilegovanom režimu (ali to ne mora biti slučaj).

6. zadatak

Postavka

Ukratko objasniti koncept „tvrde veze“ (hard link) u fajl sistemu koji podržava strukture direktorijuma tipa usmerenog acikličkog grafa (DAG).

Rešenje

Tvrda veza je veza na datoteku koja služi tome da održava datoteku u fajl sistemu, jer dok god postoje tvrde veze na neku datoteku ona i dalje postoji, i kad se sve tvrde veze obrišu ona prestaje da postoji.

7. zadatak

Postavka

Kako se kod FAT fajl sistema implementira evidencija slobodnih blokova?

Rešenje

Kod FAT fajl sistema se u FAT tabeli mogu ulančavati slobodni blokovi, ili jednostavno biti označeni posebnim null vrednostima.