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

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
м (→‎5. zadatak: Rešenje već postoji)
м (Formatiranje)
Ред 7: Ред 7:


=== Rešenje ===
=== Rešenje ===
Multiprocesni OS je OS koji podržava izvršavanje više procesa uporedo (nad istim procesorom).
Multiprocesni operativni sistem je operativni sistem koji podržava izvršavanje više procesa uporedo (nad istim procesorom).


Multiprocesorski sistem je računarski sistem sa više procesora koji imaju deljenu memoriju. Procesori mogu da pristupaju toj deljenoj memoriji preko zajedničke magistrale na koju su povezani.
Multiprocesorski sistem je računarski sistem sa više procesora koji imaju deljenu memoriju. Procesori mogu da pristupaju toj deljenoj memoriji preko zajedničke magistrale na koju su povezani.
Ред 16: Ред 16:


=== Rešenje ===
=== Rešenje ===
<syntaxhighlight lang = "c">
Videti [[ОС1/Јануар 2013#2. zadatak|2. zadatak iz januarskog roka 2013. godine]].
Semaphore::wait() {
lock();
if(--val < 0) {
PCB* old = Thread::running->myPCB;
blocked.put(Thread::running);
Thread::running = Scheduler::get();
PCB* new = Thread::running->myPCB;
yield(old, new);
}
}
</syntaxhighlight>


== 3. zadatak ==
== 3. zadatak ==
=== Postavka ===
=== Postavka ===
Na jeziku C, korišćenjem sistemskih poziva <code>fork()</code> i <code>execlp()</code> za Unix, napisati program koji pokreće drugi program iz fajla čiji je naziv zadat kao parametar komandne linije prvog programa.
Na jeziku C, korišćenjem sistemskih poziva <code>fork()</code> i <code>execlp()</code> za Unix, napisati program koji pokreće drugi program iz fajla čiji je naziv zadat kao parametar komandne linije prvog programa.


=== Rešenje ===
=== Rešenje ===
<syntaxhighlight lang = "c">
Videti [[ОС1/Јун 2021#4. zadatak|4. zadatak iz junskog roka 2021. godine]].
int main(int argc, char* argv[]) {
if(argc < 2)
return -1;
int pid = fork();
if(pid < 0)
return -2;
else if(pid == 0) {
execlp(argv[1]);
return -3;
}
else
wait(0);
return 0;
}
</syntaxhighlight>


== 4. zadatak ==
== 4. zadatak ==
=== Postavka ===
=== Postavka ===
Korišćenjem standardnih brojačkih semafora u školskom jezgru, na jeziku C++ napisati globalne deklaracije i inicijalizacije, kao i kod tela dve uporedne niti A i B koje ciklično rade sledeće:  
Korišćenjem standardnih brojačkih semafora u školskom jezgru, na jeziku C++ napisati globalne deklaracije i inicijalizacije, kao i kod tela dve uporedne niti A i B koje ciklično rade sledeće:  
 
* A: upisuje vrednost u deljene promenljive x i y, a zatim čeka da proces B upiše zbir x i y u promenljivu z čiju vrednost onda ispisuje na standardni izlaz;  
A: upisuje vrednost u deljene promenljive x i y, a zatim čeka da proces B upiše zbir x i y u promenljivu z čiju vrednost onda ispisuje na standardni izlaz;  
* B: čeka da proces A upiše vrednosti u deljene promenljive x i y, zatim ove dve vrednosti sabira i zbir upisuje u deljenu promenljivu z.  
 
B: čeka da proces A upiše vrednosti u deljene promenljive x i y, zatim ove dve vrednosti sabira i zbir upisuje u deljenu promenljivu z.  


=== Rešenje ===
=== Rešenje ===
<syntaxhighlight lang = "c">
Videti [[ОС1/Јун 2021#5. zadatak|5. zadatak iz junskog roka 2021. godine]].
#include <iostream>
 
Semaphore semA(0), semB(0);
int x, y, z;
 
class A : public Thread {
protected:
void run() {
while(1) {
x = ...
y = ...
semB.signal();
semA.wait();
}
}
};
 
class B : public Thread {
protected:
void run() {
while(1) {
semB.wait();
z = x + y;
semA.signal();
}
}
};
</syntaxhighlight>


== 5. zadatak ==
== 5. zadatak ==
Ред 99: Ред 43:
== 6. zadatak ==
== 6. zadatak ==
=== Postavka ===
=== Postavka ===
Navesti najmanje tri sličnosti (npr. zajednički zahtevi, ograničenja ili problemi) između kontinualne alokacije memorije i segmentne alokacije memorije procesa.
Navesti najmanje tri sličnosti (npr. zajednički zahtevi, ograničenja ili problemi) između kontinualne alokacije memorije i segmentne alokacije memorije procesa.


=== Rešenje ===
=== Rešenje ===
# OS mora da organizuje i održava strukturu podataka za evidenciju slobodnih fragmenata
# Operativni sistem mora da organizuje i održava strukturu podataka za evidenciju slobodnih fragmenata
# OS mora da sprovodi neku od tehnika dinamičke alokacije
# Operativni sistem mora da sprovodi neku od tehnika dinamičke alokacije
# problem eksterne fragmentacije
# Problem eksterne fragmentacije


== 7. zadatak ==
== 7. zadatak ==
=== Postavka ===
=== Postavka ===
Kojom tehnikom se nedeljivi uređaj može učiniti virtuelno deljivim? Navesti klasičan primer takvog uređaja za koji se najčešće primenjuje ova tehnika.  
Kojom tehnikom se nedeljivi uređaj može učiniti virtuelno deljivim? Navesti klasičan primer takvog uređaja za koji se najčešće primenjuje ova tehnika.


=== Rešenje ===
=== Rešenje ===
Spooling-om. Klasičan primer je štampač.
Videti [[ОС1/Јун 2021#6. zadatak|6. zadatak iz junskog roka 2021. godine]].


== 8. zadatak ==
== 8. zadatak ==
=== Postavka ===
=== Postavka ===
U fajl podsistemu nekog operativnog sistema ne vodi se tabela otvorenih fajlova za svaki proces, već postoji samo jedna globalna tabela otvorenih fajlova za ceo sistem. Drugim rečima, ne postoji nikakva informacija o upotrebi otvorenog fajla lokalna (privatna) za pojedinačni proces, već su sve takve informacije globalno deljene. Da li pojam pokazivača trenutne lokacije (kurzora) za čitanje/upis u fajl ima smisla čuvati u globalnoj tabeli otvorenih fajlova i zašto?
U fajl podsistemu nekog operativnog sistema ne vodi se tabela otvorenih fajlova za svaki proces, već postoji samo jedna globalna tabela otvorenih fajlova za ceo sistem. Drugim rečima, ne postoji nikakva informacija o upotrebi otvorenog fajla lokalna (privatna) za pojedinačni proces, već su sve takve informacije globalno deljene. Da li pojam pokazivača trenutne lokacije (kurzora) za čitanje/upis u fajl ima smisla čuvati u globalnoj tabeli otvorenih fajlova i zašto?


=== Rešenje ===
=== Rešenje ===
Не, јер се више различитих процеса могу имати различиту вредност курзора.
Ne, jer više različitih procesa mogu imati različitu vrednost kurzora.


== 9. zadatak ==
== 9. zadatak ==
=== Postavka ===
=== Postavka ===
Dati procenu kompleksnosti datih operacija sa direktorijumom u odnosu na broj postojećih fajlova n u direktorijumu, za navedene implementacije direktorijuma, ukoliko u slučaju hash tabele nema nijedne kolizije.
Dati procenu kompleksnosti datih operacija sa direktorijumom u odnosu na broj postojećih fajlova ''n'' u direktorijumu, za navedene implementacije direktorijuma, ukoliko u slučaju hash tabele nema nijedne kolizije.


=== Rešenje ===
=== Rešenje ===
Ред 129: Ред 73:
== 10. zadatak ==
== 10. zadatak ==
=== Postavka ===
=== Postavka ===
Neki fajl sistem koristi indeksirani pristup alokaciji fajlova sa indeksima u dva nivoa, blokom veličine 256KB i 64-bitnim adresama fizičkih blokova. Kolika je maksimalna veličina fajla u ovom sistemu?  
Neki fajl sistem koristi indeksirani pristup alokaciji fajlova sa indeksima u dva nivoa, blokom veličine 256KB i 64-bitnim adresama fizičkih blokova. Kolika je maksimalna veličina fajla u ovom sistemu?  


=== Rešenje ===
=== Rešenje ===
Broj ulaza: 256KB / 8B = 2^15
* Broj ulaza: <math>\frac{256KB}{8B} = 2^{15}</math>
 
* Maksimalna veličina fajla: <math>2^{15} \cdot 2^{15} \cdot 2^{18} = 2^{48}</math>
Maksimalna veličina fajla: 2^15 * 2^15 * 2^18 = 2^48


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

Верзија на датум 19. јул 2022. у 22:43

Zadaci na stranici predmeta.

1. zadatak

Postavka

Šta je multiprocesni, a šta multiprocesorski operativni sistem?

Rešenje

Multiprocesni operativni sistem je operativni sistem koji podržava izvršavanje više procesa uporedo (nad istim procesorom).

Multiprocesorski sistem je računarski sistem sa više procesora koji imaju deljenu memoriju. Procesori mogu da pristupaju toj deljenoj memoriji preko zajedničke magistrale na koju su povezani.

2. zadatak

Postavka

Korišćenjem operacije yield(PCB* old, PCB* new) koja čuva kontekst izvršavanja prvog i restaurira kontekst izvršavanja drugog datog procesa, implementirati operaciju wait na semaforu koji je realizovan klasom Semaphore poput one u školskom jezgru.

Rešenje

Videti 2. zadatak iz januarskog roka 2013. godine.

3. zadatak

Postavka

Na jeziku C, korišćenjem sistemskih poziva fork() i execlp() za Unix, napisati program koji pokreće drugi program iz fajla čiji je naziv zadat kao parametar komandne linije prvog programa.

Rešenje

Videti 4. zadatak iz junskog roka 2021. godine.

4. zadatak

Postavka

Korišćenjem standardnih brojačkih semafora u školskom jezgru, na jeziku C++ napisati globalne deklaracije i inicijalizacije, kao i kod tela dve uporedne niti A i B koje ciklično rade sledeće:

  • A: upisuje vrednost u deljene promenljive x i y, a zatim čeka da proces B upiše zbir x i y u promenljivu z čiju vrednost onda ispisuje na standardni izlaz;
  • B: čeka da proces A upiše vrednosti u deljene promenljive x i y, zatim ove dve vrednosti sabira i zbir upisuje u deljenu promenljivu z.

Rešenje

Videti 5. zadatak iz junskog roka 2021. godine.

5. zadatak

Postavka

Šta je osnovni razlog za to da linker obavlja zadatak u dva prolaza? Precizno objasniti.

Rešenje

Videti rešenje 5. zadatka iz jula 2017. godine.

6. zadatak

Postavka

Navesti najmanje tri sličnosti (npr. zajednički zahtevi, ograničenja ili problemi) između kontinualne alokacije memorije i segmentne alokacije memorije procesa.

Rešenje

  1. Operativni sistem mora da organizuje i održava strukturu podataka za evidenciju slobodnih fragmenata
  2. Operativni sistem mora da sprovodi neku od tehnika dinamičke alokacije
  3. Problem eksterne fragmentacije

7. zadatak

Postavka

Kojom tehnikom se nedeljivi uređaj može učiniti virtuelno deljivim? Navesti klasičan primer takvog uređaja za koji se najčešće primenjuje ova tehnika.

Rešenje

Videti 6. zadatak iz junskog roka 2021. godine.

8. zadatak

Postavka

U fajl podsistemu nekog operativnog sistema ne vodi se tabela otvorenih fajlova za svaki proces, već postoji samo jedna globalna tabela otvorenih fajlova za ceo sistem. Drugim rečima, ne postoji nikakva informacija o upotrebi otvorenog fajla lokalna (privatna) za pojedinačni proces, već su sve takve informacije globalno deljene. Da li pojam pokazivača trenutne lokacije (kurzora) za čitanje/upis u fajl ima smisla čuvati u globalnoj tabeli otvorenih fajlova i zašto?

Rešenje

Ne, jer više različitih procesa mogu imati različitu vrednost kurzora.

9. zadatak

Postavka

Dati procenu kompleksnosti datih operacija sa direktorijumom u odnosu na broj postojećih fajlova n u direktorijumu, za navedene implementacije direktorijuma, ukoliko u slučaju hash tabele nema nijedne kolizije.

Rešenje

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

10. zadatak

Postavka

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

Rešenje

  • Broj ulaza:
  • Maksimalna veličina fajla: