ОС1/Септембар 2012 — разлика између измена
м (Formatiranje) |
|||
Ред 60: | Ред 60: | ||
=== Rešenje === | === Rešenje === | ||
{{ | VA(32): Page(18), Offset(14) | ||
PA(30): Block(16), Offset(14) | |||
Pošto imamo <math>2^{18}</math> (256K) stranica,a svaki PMT drugog nivoa sadrži pokazivač na 1K stranica, treba nam 256 PMT-a drugog nivoa, što znači da PMT prvog nivoa ima 256 ulaza. '''Obratite pažnju da svaki od ulaza u sebi sadrži samo broj bloka tj samo 16 bita odnosno dva bajta.''' | |||
PMT Prvog Nivoa: <math>2^{8} * 2 = 512B</math> | |||
PMT Drugog Nivoa: <math>2^{10} * 2 = 4KB</math> | |||
== 7. zadatak == | == 7. zadatak == |
Верзија на датум 30. јануар 2024. у 20:03
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
- Segment Base pokazivač - govori koja je početna adresa od koje se preslikava memorija
- Limit pokazivač - sadrži ili veličinu segmenta ili poslednju adresu u njemu, zavisno od implementacije hardvera
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
VA(32): Page(18), Offset(14)
PA(30): Block(16), Offset(14)
Pošto imamo (256K) stranica,a svaki PMT drugog nivoa sadrži pokazivač na 1K stranica, treba nam 256 PMT-a drugog nivoa, što znači da PMT prvog nivoa ima 256 ulaza. Obratite pažnju da svaki od ulaza u sebi sadrži samo broj bloka tj samo 16 bita odnosno dva bajta.
PMT Prvog Nivoa:
PMT Drugog Nivoa:
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
blokova