ОС1/Јун 2011 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
(јун 2011)
 
м (→‎1. zadatak: Razrešeno preusmerenje)
 
(Нису приказане 2 међуизмене 2 корисника)
Ред 7: Ред 7:


=== Rešenje ===
=== Rešenje ===
Multiprocesorski sistem je računarski sistem sa više procesora koji imaju zajedničku (deljenu) operativnu memoriju (''engl. shared memory''). Procesori mogu da pristupaju toj deljenoj memoriji, tj. da čitaju iz nje i u nju upisuju, npr. preko zajedničke magistrale na koju su povezani.
Videti [[ОС1/Јул 2012#1. zadatak|prvi zadatak iz julskog roka 2012. godine]].


Distribuirani sistem je računarski sistem sa više procesora koji nemaju zajedničku operativnu memoriju, već svaki procesor ima svoju, ali su svi povezani komunikacionom mrežom.
== 2. zadatak ==
== 2. zadatak ==
=== Postavka ===
=== Postavka ===
Ред 30: Ред 28:


=== Rešenje ===
=== Rešenje ===
<syntaxhighlight lang="ada">
<syntaxhighlight lang="pascal">
var mutex : Semaphore := N;
var mutex : Semaphore := N;
process P
process P
begin
begin
loop
    loop
wait(mutex);
        wait(mutex);
<critical section>
        <critical section>
signal(mutex);
        signal(mutex);
<non-critical section>
        <non-critical section>
    end
end
end
end P
</syntaxhighlight>
</syntaxhighlight>


Ред 50: Ред 48:
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
int main(int argc, char* argv[]) {
int main(int argc, char* argv[]) {
if(argc < 2)
    if (argc < 2) {
return -1;
        return -1;
    }
pid_t pid = fork();
    pid_t pid = fork();
    if (pid < 0) {
if(pid < 0)
        return -2;
return -2;
    } else if (pid == 0) {
else if(pid == 0)
        execlp(argv[1]);
execlp(argv[1]);
    } else {
else wait(0);
        wait(0);
    }
return 0;
    return 0;
}
}
</syntaxhighlight>
</syntaxhighlight>
Ред 71: Ред 68:


=== Rešenje ===
=== Rešenje ===
{{delimično rešeno}}
* VA(32): 10, 10, 12
* Ulaz je veličine 32b tj. 4B
* <math>2^{10} \cdot 4B = 2^{12}B</math>


== 7. zadatak ==
== 7. zadatak ==
Ред 91: Ред 90:
Neki proces izvršava redom sledeće sistemske pozive. Pod pretpostavkom da korisnik u čije ime se izvršava ovaj proces ima pravo pristupa do oba fajla i na čitanje i na upis, i da oba poziva za otvaranje fajlova uspevaju, navesti koji od preostalih poziva će biti uspešan, a koji neuspešan (upisati na liniji pored poziva).
Neki proces izvršava redom sledeće sistemske pozive. Pod pretpostavkom da korisnik u čije ime se izvršava ovaj proces ima pravo pristupa do oba fajla i na čitanje i na upis, i da oba poziva za otvaranje fajlova uspevaju, navesti koji od preostalih poziva će biti uspešan, a koji neuspešan (upisati na liniji pored poziva).
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
FHANDLE f1 = fopen(“x.doc”,read);
FHANDLE f1 = fopen("x.doc", read);
FHANDLE f2 = fopen(“y.doc”,read|write);
FHANDLE f2 = fopen("y.doc", read | write);
</syntaxhighlight>
</syntaxhighlight>
#<code>fread(f1,buffer1,n1);</code>
# <syntaxhighlight lang="c" inline>fread(f1, buffer1, n1);</syntaxhighlight>
#<code>fwrite(f1,buffer2,n2);</code>
# <syntaxhighlight lang="c" inline>fwrite(f1, buffer2, n2);</syntaxhighlight>
#<code>fread(f2,buffer1,n1);</code>
# <syntaxhighlight lang="c" inline>fread(f2, buffer1, n1);</syntaxhighlight>
#<code>fwrite(f2,buffer2,n2);</code>
# <syntaxhighlight lang="c" inline>fwrite(f2, buffer2, n2);</syntaxhighlight>


=== Rešenje ===
=== Rešenje ===
#uspešan
# uspešan
#neuspešan
# neuspešan
#uspešan
# uspešan
#uspešan
# uspešan


== 10. zadatak ==
== 10. zadatak ==

Тренутна верзија на датум 19. јул 2022. у 21:59

Zadaci na stranici predmeta.

1. zadatak

Postavka

Dati kratke definicije multiprocesorskog sistema i distribuiranog sistema.

Rešenje

Videti prvi zadatak iz julskog roka 2012. godine.

2. zadatak

Postavka

Koji je razlog deobe procesorskog vremena (time sharing) kod interaktivnih sistema?

Rešenje

Ravnomerniji odziv na akcije više korisnika nego bez deobe vremena.

3. zadatak

Postavka

Zašto je stek deo konteksta izvršavanja programa?

Rešenje

Stek predstavlja deo konteksta izvršavanja programa zato što se prilikom poziva bilo kog potprograma u programu na steku pamti mesto odakle je potprogram pozvan kako bi se po povratku moglo nastaviti odakle se stalo.

4. zadatak

Postavka

Napisati deo koda koji obezbeđuje kritičnu sekciju pomoću brojačkih semafora, uz dozvolu konkurentnog izvršavanja kritične sekcije do N uporednih procesa.

Rešenje

var mutex : Semaphore := N;
process P
begin
    loop
        wait(mutex);
        <critical section>
        signal(mutex);
        <non-critical section>
    end
end

5. zadatak

Postavka

Korišćenjem sistemskih poziva fork() i execlp() napisati C program koji kreira proces nad programom u fajlu čije je ime zadato argumentom komandne linije.

Rešenje

int main(int argc, char* argv[]) {
    if (argc < 2) {
        return -1;
    }
    pid_t pid = fork();
    if (pid < 0) {
        return -2;
    } else if (pid == 0) {
        execlp(argv[1]);
    } else {
        wait(0);
    }
    return 0;
}

6. zadatak

Postavka

Memorija nekog računara organizovana je stranično, sa stranicom veličine 4KB. Adresibilna jedinica je bajt, a virtuelna adresa je 32-bitna. Fizička adresa je veličine 32 bita. Ako je PMT organizovana u dva nivoa, s tim da su veličine polja za broj ulaza u tabele oba nivoa isti, kolika je veličina (u bajtovima) PMT prvog nivoa?

Rešenje

  • VA(32): 10, 10, 12
  • Ulaz je veličine 32b tj. 4B

7. zadatak

Postavka

Da li linker prilikom povezivanja sa ciljem dobijanja izvršnog programa (.exe) pravi razliku između fajlova tipa .obj i tipa .lib?

Rešenje

Linker ne pravi razliku između .obj i .lib fajlova prilikom povezivanja. Razlika je jedino što je .obj fajl nastao prevođenjem jednog fajla dok je lib fajl nastao povezivanjem više objektnih, moguće i više drugih fajlova.

8. zadatak

Postavka

Kojom tehnikom se znakovno orijentisani ulazni uređaj može učiniti logički (virtuelno) blokovski orijentisanim?

Rešenje

Tehnikom baferisanja.

9. zadatak

Postavka

Neki proces izvršava redom sledeće sistemske pozive. Pod pretpostavkom da korisnik u čije ime se izvršava ovaj proces ima pravo pristupa do oba fajla i na čitanje i na upis, i da oba poziva za otvaranje fajlova uspevaju, navesti koji od preostalih poziva će biti uspešan, a koji neuspešan (upisati na liniji pored poziva).

FHANDLE f1 = fopen("x.doc", read);
FHANDLE f2 = fopen("y.doc", read | write);
  1. fread(f1, buffer1, n1);
  2. fwrite(f1, buffer2, n2);
  3. fread(f2, buffer1, n1);
  4. fwrite(f2, buffer2, n2);

Rešenje

  1. uspešan
  2. neuspešan
  3. uspešan
  4. uspešan

10. zadatak

Postavka

Korišćenjem podataka iz koje tabele otvorenih fajlova sistem proverava pravo pristupa za pozive iz prethodnog zadatka (fread i fwrite), u globalnoj tabeli ili u tabeli koja je deo konteksta datog procesa?

Rešenje

U tabeli koja je kontekst datog procesa.