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

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
мНема описа измене
м (Formatiranje)
 
Ред 7: Ред 7:


=== Rešenje ===
=== Rešenje ===
OS može da pristupa disku direktno, u proizvoljnom redosledu, bez značajnih razlika u vremenu odziva kao kod traka (zbog premotavanja) bez obzira na to kako su podaci smešteni na samom disku. Disk je blokovski orijentisan ulazno-izlazni uređaj. Podaci se mogu i učitavati sa diska i upisivati na njega, ali se prenose isključivo u blokovima fiksne veličine. Zbog ovoga je skup poslova koji su podneti na izvršavanje mogao da se snimi na disk a da OS sa njega učitava one koje odluči da će se izvršavati, na osnovu zauzeća procesora i memorije, a ne na osnovu redosleda kojim su podneti.  
Operativni sistem može da pristupa disku direktno, u proizvoljnom redosledu, bez značajnih razlika u vremenu odziva kao kod traka (zbog premotavanja) bez obzira na to kako su podaci smešteni na samom disku. Disk je blokovski orijentisan ulazno-izlazni uređaj. Podaci se mogu i učitavati sa diska i upisivati na njega, ali se prenose isključivo u blokovima fiksne veličine. Zbog ovoga je skup poslova koji su podneti na izvršavanje mogao da se snimi na disk a da OS sa njega učitava one koje odluči da će se izvršavati, na osnovu zauzeća procesora i memorije, a ne na osnovu redosleda kojim su podneti.


== 2. zadatak ==
== 2. zadatak ==
=== Postavka ===
=== Postavka ===
Objasniti kako se međusobno isključenje kritičnih sekcija jezgra operativnog sistema može  
Objasniti kako se međusobno isključenje kritičnih sekcija jezgra operativnog sistema može obezbediti kod jednosprocesorskih, a kako kod višeprocesorskih sistema.  
obezbediti kod jednosprocesorskih, a kako kod višeprocesorskih sistema.  


=== Rešenje ===
=== Rešenje ===
#jednosprocesorski sistemi:
# jednosprocesorski sistemi:
#*maskirati prekide
#* maskirati prekide
#*zabraniti preuzimanje
#* zabraniti preuzimanje
#*optimistički pristup
#* optimistički pristup
#višeprocesorski sistemi:
# višeprocesorski sistemi:
#*test-and-set
#* test-and-set
#*swap
#* swap


== 3. zadatak ==
== 3. zadatak ==
=== Postavka ===
=== Postavka ===
Korišćenjem standardnih sistemskih poziva <code>fork()</code> i <code>wait()</code> napisati C program koji kreira tačno ''N'' procesa svoje dece, gde je ''N'' parametar programa, a potom čeka da se sva deca završe. Procesi-deca samo ispišu neku poruku na standardni izlaz i potom se završavaju.
Korišćenjem standardnih sistemskih poziva <code>fork()</code> i <code>wait()</code> napisati C program koji kreira tačno ''N'' procesa svoje dece, gde je ''N'' parametar programa, a potom čeka da se sva deca završe. Procesi-deca samo ispišu neku poruku na standardni izlaz i potom se završavaju.


=== Rešenje ===
=== Rešenje ===
Ред 31: Ред 30:
#include <stdio.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
int main(int argc, char* argv[]) {
if(argc < 2)
    if (argc < 2) {
return -1;
        return -1;
int N = atoi(argv[1]);
    }
int pid[N];
    int N = atoi(argv[1]);
for(int i = 0; i < N; i++) {
    int pid[N];
pid[i] = fork();
    for (int i = 0; i < N; i++) {
if(pid[i] < 0)
        pid[i] = fork();
return -2;
        if (pid[i] < 0) {
else if(pid[i] == 0) {
            return -2;
printf("Child %d", i);
        } else if (pid[i] == 0) {
exit(0);
            printf("Child %d", i);
}
            exit(0);
}
        }
for(int i = 0; i < N; i++)
    }
wait(pid[i]);
    for (int i = 0; i < N; i++) {
return 0;
        wait(pid[i]);
    }
    return 0;
}
}
</syntaxhighlight>
</syntaxhighlight>
Ред 59: Ред 60:


void append(Data* d) {
void append(Data* d) {
spaceAvailable.wait();
    spaceAvailable.wait();
mutex.wait();
    mutex.wait();
<add>
    <add>
mutex.signal();
    mutex.signal();
itemAvailable.signal();
    itemAvailable.signal();
}
}


Data* take() {
Data* take() {
itemAvailable.wait();
    itemAvailable.wait();
mutex.wait();
    mutex.wait();
<get data>
    <get data>
mutex.signal();
    mutex.signal();
spaceAvailable.signal();
    spaceAvailable.signal();
return data;
    return data;
}
}
</syntaxhighlight>
</syntaxhighlight>
Ред 88: Ред 89:


=== Rešenje ===
=== Rešenje ===
Eksterna fragmentacija nastaje kada se procesi učitavaju u memoriju a zatim dealociraju. Kako se delovi proizvoljnih dimenzija zauzimaju i oslobađaju dinamički, slobodni fragmenti se stvaraju i nazivaju eksternim.  
Eksterna fragmentacija nastaje kada se procesi učitavaju u memoriju a zatim dealociraju. Kako se delovi proizvoljnih dimenzija zauzimaju i oslobađaju dinamički, slobodni fragmenti se stvaraju i nazivaju eksternim.
 
Nije moguća eksterna fragmentacija kod segmentno-stranične organizacije jer alociraju blokovi iste veličine.
Nije moguća eksterna fragmentacija kod segmentno-stranične organizacije jer alociraju blokovi iste veličine.


== 7. zadatak ==
== 7. zadatak ==
=== Postavka ===
=== Postavka ===
U nekom sistemu sa straničnom organizacijom virtuelne memorije virtuelna i fizička adresa su 32-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 samo svoju prvu i poslednju stranicu?
U nekom sistemu sa straničnom organizacijom virtuelne memorije virtuelna i fizička adresa su 32-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 samo svoju prvu i poslednju stranicu?


=== Rešenje ===
=== Rešenje ===
Videti zadatak iz [[ОС1/Јануар 2015#7. zadatak|januarskog roka 2015]].
Videti 7. zadatak iz [[ОС1/Јануар 2015#7. zadatak|januarskog roka 2015]].


== 8. zadatak ==
== 8. zadatak ==
Ред 103: Ред 105:


=== Rešenje ===
=== Rešenje ===
Kada neki nedeljivi spori uređaj želi da odradi posao, prvo se zatraži korišćenje tog uređaja sistemskim pozivom, OS tada pravi poseban fajl na određenom mestu u svom fajl sistemu u koji će preusmeriti sve ulazne operacije tog procesa sa štampačem i vraća kontrolu procesu. OS predaje fajl na obradu posebnom procesu ili niti (spuleru) koji će jedan po jedan fajl da uzima i njihove sadržaje da šalje datom uređaju.
Videti rešenje [[ОС1/Фебруар 2013#6. zadatak|6. zadatka iz februara 2013. godine]].


== 9. zadatak ==
== 9. zadatak ==
=== Postavka ===
=== Postavka ===
Dati procenu kompleksnosti u najgorem slučaju sledećih operacija sa direktorijumom u odnosu na broj postojećih fajlova n u direktorijumu, za navedene implementacije direktorijuma.
Dati procenu kompleksnosti u najgorem slučaju sledećih operacija sa direktorijumom u odnosu na broj postojećih fajlova ''n'' u direktorijumu, za navedene implementacije direktorijuma.


=== Rešenje ===
=== Rešenje ===
Ред 117: Ред 119:


=== Rešenje ===
=== Rešenje ===
a) 3
<div class="abc-list">
b) 1
# 3
# 1
</div>


[[Категорија:Рокови]]
[[Категорија:Рокови]]
[[Категорија:ОС1]]
[[Категорија:ОС1]]

Тренутна верзија на датум 20. јул 2022. у 01:25

Zadaci na stranici predmeta.

1. zadatak

Postavka

Objasniti zašto je i kako uvođenje magnetnih diskova bilo od ključnog značaja kod prelaska sa paketnih sistema na sisteme sa multiprogramiranjem.

Rešenje

Operativni sistem može da pristupa disku direktno, u proizvoljnom redosledu, bez značajnih razlika u vremenu odziva kao kod traka (zbog premotavanja) bez obzira na to kako su podaci smešteni na samom disku. Disk je blokovski orijentisan ulazno-izlazni uređaj. Podaci se mogu i učitavati sa diska i upisivati na njega, ali se prenose isključivo u blokovima fiksne veličine. Zbog ovoga je skup poslova koji su podneti na izvršavanje mogao da se snimi na disk a da OS sa njega učitava one koje odluči da će se izvršavati, na osnovu zauzeća procesora i memorije, a ne na osnovu redosleda kojim su podneti.

2. zadatak

Postavka

Objasniti kako se međusobno isključenje kritičnih sekcija jezgra operativnog sistema može obezbediti kod jednosprocesorskih, a kako kod višeprocesorskih sistema.

Rešenje

  1. jednosprocesorski sistemi:
    • maskirati prekide
    • zabraniti preuzimanje
    • optimistički pristup
  2. višeprocesorski sistemi:
    • test-and-set
    • swap

3. zadatak

Postavka

Korišćenjem standardnih sistemskih poziva fork() i wait() napisati C program koji kreira tačno N procesa svoje dece, gde je N parametar programa, a potom čeka da se sva deca završe. Procesi-deca samo ispišu neku poruku na standardni izlaz i potom se završavaju.

Rešenje

#include <stdio.h>
int main(int argc, char* argv[]) {
    if (argc < 2) {
        return -1;
    }
    int N = atoi(argv[1]);
    int pid[N];
    for (int i = 0; i < N; i++) {
        pid[i] = fork();
        if (pid[i] < 0) {
            return -2;
        } else if (pid[i] == 0) {
            printf("Child %d", i);
            exit(0);
        }
    }
    for (int i = 0; i < N; i++) {
        wait(pid[i]);
    }
    return 0;
}

4. zadatak

Postavka

Korišćenjem standardnih brojačkih semafora napisati kod za sinhronizaciju proizvođača i potrošača sa neograničenim baferom. (Kod za smeštanje i uzimanje elemenata ne treba pisati, već samo naznačiti njegovo mesto.)

Rešenje

Semaphore mutex(1), spaceAvailable(N), itemAvailable(0);

void append(Data* d) {
    spaceAvailable.wait();
    mutex.wait();
    <add>
    mutex.signal();
    itemAvailable.signal();
}

Data* take() {
    itemAvailable.wait();
    mutex.wait();
    <get data>
    mutex.signal();
    spaceAvailable.signal();
    return data;
}

5. zadatak

Postavka

Ukratko objasniti osnovnu razliku između tehnika dinamičkog učitavanja (dynamic loading) i preklopa (overlays).

Rešenje

Videti zadatak iz julskog roka 2011.

6. zadatak

Postavka

Šta je eksterna fragmentacija kod alokacije memorije? Da li je ona moguća kod segmentno-stranične alokacije memorije?

Rešenje

Eksterna fragmentacija nastaje kada se procesi učitavaju u memoriju a zatim dealociraju. Kako se delovi proizvoljnih dimenzija zauzimaju i oslobađaju dinamički, slobodni fragmenti se stvaraju i nazivaju eksternim.

Nije moguća eksterna fragmentacija kod segmentno-stranične organizacije jer alociraju blokovi iste veličine.

7. zadatak

Postavka

U nekom sistemu sa straničnom organizacijom virtuelne memorije virtuelna i fizička adresa su 32-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 samo svoju prvu i poslednju stranicu?

Rešenje

Videti 7. zadatak iz januarskog roka 2015.

8. zadatak

Postavka

Ukratko objasniti tehniku spooling.

Rešenje

Videti rešenje 6. zadatka iz februara 2013. godine.

9. zadatak

Postavka

Dati procenu kompleksnosti u najgorem slučaju sledećih operacija sa direktorijumom u odnosu na broj postojećih fajlova n u direktorijumu, za navedene implementacije direktorijuma.

Rešenje

Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

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 a) indeksna, pri čemu je indeks fajla uvek u dva nivoa, a na blok sa indeksom prvog nivoa ukazuje polje u FCB, b) FAT, pri čemu je cela FAT u memoriji? FCB fajla je u memoriji.

Rešenje

  1. 3
  2. 1