ОС1/Септембар 2012 — разлика између измена
(средити 10. задатак) |
м (→Postavka: 8. losa postavka) |
||
| Ред 71: | Ред 71: | ||
== 8. zadatak == | == 8. zadatak == | ||
=== Postavka === | === Postavka === | ||
Na asembleru nekog zamišljenog RISC procesora sa LOAD/STORE arhitekturom napisati program koji prenosi blok podataka zadate dužine na zadatu adresu sa ulaznog uređaja korišćenjem programiranog ulaza/izlaza sa prozivanjem (''polling'') | Na asembleru nekog zamišljenog RISC procesora sa LOAD/STORE arhitekturom napisati program koji prenosi blok podataka zadate dužine na zadatu adresu sa ulaznog uređaja korišćenjem programiranog ulaza/izlaza sa prozivanjem (''polling''). | ||
=== Rešenje === | === Rešenje === | ||
Верзија на датум 25. септембар 2021. у 23:32
1. zadatak
Postavka
Kod kakvih sistema se najpre pojavljuje time sharing i sa kakvim motivom?
Rešenje
Time sharing se najpre pojavljuje kod interaktivnih višekorisničkih sistema. Motiv je da se postigne ravnomerniji odziv na akcije više korisnika nego bez time sharing-a.
2. zadatak
Postavka
Korišćenjem funkcija setjmp i longjmp iz standardne C biblioteke realizovati operaciju wait na binarnom semaforu u školskom jezgru
Rešenje
Videti zadatak iz julskog roka 2012.
3. zadatak
Postavka
Korišćenjem sistemskih poziva fork() i execlp() napisati program P koji pokreće proces nad programom u fajlu čiji je naziv zadat kao argument izvršavanja programa P.
Rešenje
int main(int argc, char* argv[]) {
if(argc < 2) return -1;
pid_t pid = fork();
if(pid < 0) return -2;
if(pid == 0) {
execlp(argv[1]);
return -3;
}
else wait(0);
return 0;
}
4. zadatak
Postavka
Proces P treba da sačeka da sva tri procesa X, Y i Z ispune neki svoj uslov, u bilo kom redosledu. Napisati deo koda procesa P i bilo kog od druga tri procesa, uz potrebne deklaracije, koji obezbeđuju ovu uslovnu sinhronizaciju pomoću jednog standardnog brojačkog semafora.
Rešenje
Videti zadatak iz februarskog roka 2012.
5. zadatak
Postavka
Koja dva podatka čine memorijski kontekst procesa kod kontinualne alokacije memorije za proces sa dinamičkim preslikavanjem adresa?
Rešenje
- Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.
6. zadatak
Postavka
Virtuelni adresni prostor sistema je 8GB, adresibilna jedinica je 16-bitna reč, a virtuelni adresni prostor je organizovan stranično sa stranicom veličine 32KB. Fizički adresni prostor je veličine 2GB. Tabele preslikavanja stranica su organizovane u dva nivoa, s tim da tabela drugog nivoa ima 1K ulaza. Ako deskriptori u PMT i prvog i drugog nivoa sadrže samo broj okvira u koji se stranica preslikava i ništa više (posebna vrednost označava da preslikavanje nije moguće), koliko bajtova zauzima jedna PMT prvog, a koliko drugog nivoa?
Rešenje
- Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.
7. zadatak
Postavka
Zaokružiti slovo ispred one ili onih podataka koji nisu neophodni u deskriptoru stranice u PMT koji koristi hardver za preslikavanje adresa kod virtuelne memorije:
- Informacija da preslikavanje nije moguće izvršiti
- Adresa bloka na disku u kome se nalazi stranica
- Informacija da je stranica deljena sa drugim procesom tehnikom copy-on-write
- Informacija da je stranica zabranjena za izbacivanje jer se koristi kao I/O bafer
- Da li je dozvoljen upis u stranicu
- Broj okvira u koji se stranica preslikava.
Rešenje
- Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.
8. zadatak
Postavka
Na asembleru nekog zamišljenog RISC procesora sa LOAD/STORE arhitekturom napisati program koji prenosi blok podataka zadate dužine na zadatu adresu sa ulaznog uređaja korišćenjem programiranog ulaza/izlaza sa prozivanjem (polling).
Rešenje
main: LD R1, blockAddr
LD R2, cnt
ST [ctrl], #0..1
wait: LD R0, [status]
AND R0, #1..0
JZ wait
LD R0, [data]
INC R1
DEC R2
JNZ wait
ST [ctrl], #0
9. 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. Kako treba da izgleda API funkcija za čitanje bloka podataka dužine len iz nekog fajla, da bi se procesu obezbedila mogućnost sekvencijalnog čitanja svih podataka iz fajla?
Rešenje
IOStatus readFile(FHANDLE fh, void* buffer, long len, long offset);
10. zadatak
Postavka
Posmatra se disk kapaciteta 80MB i blokom veličine 1KB. Ako se za evidenciju slobodnog prostora koristi bit-vektor sa maksimalnom kompakcijom (svih 8 bita u bajtu su iskorišćeni itd.), koliko celih blokova treba zauzeti na disku za smeštanje ovog vektora?
Rešenje
80MB / 1KB = 80K blokova
80K / 8b/B = 10KB