<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sr">
	<id>https://siwiki.rs/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9E%D0%A11%2F%D0%88%D1%83%D0%BD_2020</id>
	<title>ОС1/Јун 2020 - Историја измена</title>
	<link rel="self" type="application/atom+xml" href="https://siwiki.rs/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9E%D0%A11%2F%D0%88%D1%83%D0%BD_2020"/>
	<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%88%D1%83%D0%BD_2020&amp;action=history"/>
	<updated>2026-06-04T07:52:05Z</updated>
	<subtitle>Историја измена ове странице на пројекту</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%88%D1%83%D0%BD_2020&amp;diff=2647&amp;oldid=prev</id>
		<title>KockaAdmiralac: Moja rešenja junskog roka 2020</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%88%D1%83%D0%BD_2020&amp;diff=2647&amp;oldid=prev"/>
		<updated>2021-07-06T20:42:44Z</updated>

		<summary type="html">&lt;p&gt;Moja rešenja junskog roka 2020&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{tocright}}&lt;br /&gt;
[http://os.etf.bg.ac.rs/OS1/rokovi/2020/jun/Jun%202020.pdf Zadaci na stranici predmeta.]&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Ako se nad sledećim programom kreira jedan proces, koliko će ukupno procesa biti kreirano (uključujući i taj jedan početni) u funkciji &amp;#039;&amp;#039;N&amp;#039;&amp;#039;, pod pretpostavkom da su svi sistemski pozivi uspeli?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
const unsigned N = ...;&lt;br /&gt;
void f (unsigned n) {&lt;br /&gt;
    if (n==0) return;&lt;br /&gt;
    if (n%2) f(n-1);&lt;br /&gt;
    else if (!fork()) f(n-1);&lt;br /&gt;
}&lt;br /&gt;
void main { f(N); }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Ova funkcija zove samu sebe ukoliko je argument neparan broj, a pravi novi proces (a trenutni se završava) ako je paran. Ovaj proces se nastavlja sve dok argument ne dostigne 0, a argument se smanjuje svakog poziva za 1. To znači da će svakog, osim prvog, neparnog poziva biti napravljen novi proces, pa se ukupan broj napravljenih procesa može izračunati kao &amp;lt;math&amp;gt;\left\lfloor\frac{N}{2}\right\rfloor + 1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Šta je problem sledeće implementacije kritične sekcije uposlenim čekanjem (obratiti pažnju na to da procesi nisu sasvim simetrični)?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ada&amp;quot;&amp;gt;&lt;br /&gt;
shared var flag1, flag2 : boolean = false;&lt;br /&gt;
process P1&lt;br /&gt;
begin&lt;br /&gt;
    loop&lt;br /&gt;
        while flag2 = true do null end;&lt;br /&gt;
        flag1 := true;&lt;br /&gt;
        &amp;lt;critical section&amp;gt;&lt;br /&gt;
        flag1 := false;&lt;br /&gt;
        &amp;lt;non-critical section&amp;gt;&lt;br /&gt;
     end&lt;br /&gt;
end P1;&lt;br /&gt;
&lt;br /&gt;
process P2&lt;br /&gt;
begin&lt;br /&gt;
    loop&lt;br /&gt;
        flag2 := true;&lt;br /&gt;
        while flag1 = true do null end;&lt;br /&gt;
        &amp;lt;critical section&amp;gt;&lt;br /&gt;
        flag2 := false;&lt;br /&gt;
        &amp;lt;non-critical section&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
end P2;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Može da se desi sledeća situacija:&lt;br /&gt;
# P1 uradi proveru za &amp;lt;code&amp;gt;flag2&amp;lt;/code&amp;gt;, vidi da je &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, prođe proveru i promeni se kontekst&lt;br /&gt;
# P2 postavi &amp;lt;code&amp;gt;flag2&amp;lt;/code&amp;gt; na &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; očekujući kako je zaključao sekciju od P1, uradi proveru za &amp;lt;code&amp;gt;flag1&amp;lt;/code&amp;gt;, vidi da je &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, prođe proveru, uđe u kritičnu sekciju i promeni se kontekst dok je u kritičnoj sekciji&lt;br /&gt;
# P1 postavi &amp;lt;code&amp;gt;flag1&amp;lt;/code&amp;gt; na &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; (ali sa zakašnjenjem, jer je P2 već ušao u kritičnu sekciju) i uđe u kritičnu sekciju&lt;br /&gt;
# Sada su oba procesa u kritičnoj sekciji&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Šta je osnovna razlika između tehnike dinamičkog učitavanja i tehnike preklopa (&amp;#039;&amp;#039;overlays&amp;#039;&amp;#039;)?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Dinamičko učitavanje nam samo kaže da neki deo učitavamo kasnije kada je potreban, preklopi zahtevaju da se jedan isti segment memorije koristi za više različitih strukture u različitim vremenima (vremensko multipleksiranje).&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Virtuelni adresni prostor je veličine 1MB i organizovan je stranično, adresibilna jedinica je bajt, a veličina stranice je 256B. Neki proces je alocirao dva logička segmenta, oba su veličine po 16 stranica, jedan zauzima najniže, a drugi najviše adrese u adresnom prosturu. Stranice se učitavaju na zahtev, a trenutno nije učitana nijedna stranica ovog procesa. Posmatraju se tri date virtuelne adrese nezavisno (svaka za sebe kao da se izvrši sama u opisanom stranju); hardver je prilikom preslikavanja adrese generisao izuzetak zbog nemogućnosti preslikavanja (&amp;#039;&amp;#039;page fault&amp;#039;&amp;#039;). Navesti kako će operativni sistem obraditi svaki od ovih izuzetaka.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Virtuelna adresa (hex) !! Način obrade&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;004CA&amp;lt;/code&amp;gt; || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FF745&amp;lt;/code&amp;gt; || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;F0745&amp;lt;/code&amp;gt; || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Virtuelna adresa ima 20 bita, od kojih je viših 12 za adresiranje stranice a nižih 8 za offset. Zauzete stranice su onda od &amp;lt;code&amp;gt;000&amp;lt;/code&amp;gt; do &amp;lt;code&amp;gt;00F&amp;lt;/code&amp;gt; i od &amp;lt;code&amp;gt;FF0&amp;lt;/code&amp;gt; do &amp;lt;code&amp;gt;FFF&amp;lt;/code&amp;gt;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Virtuelna adresa (hex) !! Način obrade&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;004CA&amp;lt;/code&amp;gt; || Učitaće stranicu &amp;lt;code&amp;gt;004&amp;lt;/code&amp;gt; nižeg logičkog segmenta.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FF745&amp;lt;/code&amp;gt; || Učitaće stranicu &amp;lt;code&amp;gt;FF7&amp;lt;/code&amp;gt; višeg logičkog segmenta.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;F0745&amp;lt;/code&amp;gt; || Generisaće grešku u pristupu memoriji jer stranica &amp;lt;code&amp;gt;F07&amp;lt;/code&amp;gt; nije alocirana.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
Videti isti ovaj zadatak iz [[ОС1/Август 2020#5. zadatak|avgusta 2020]].&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Dat je rezultat komande &amp;#039;&amp;#039;ls&amp;#039;&amp;#039; za neki direktorijum na nekom sistemu nalik sistemu Unix. Korisnik &amp;lt;code&amp;gt;Jane&amp;lt;/code&amp;gt; koji pripada grupi &amp;lt;code&amp;gt;staff&amp;lt;/code&amp;gt; izvršava proces koji otvara fajl &amp;lt;code&amp;gt;WideTable.pdf&amp;lt;/code&amp;gt; za upis. Da li će taj proces moći da otvori ovaj fajl?&lt;br /&gt;
 $ ls -l&lt;br /&gt;
 -rw-r--rw- 1 JohnDoe staff 549387 Jul 8 2019 WideTable.pdf&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Neće, jer grupa korisnika &amp;lt;code&amp;gt;Jane&amp;lt;/code&amp;gt; nema pristup fajlu.&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Navesti razlog zašto bi neki fajl sistem koristio klastere na disku različite veličine.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Za manji fajl se upotrebljava manji klaster a za veći fajl veći klaster pa je manja interna fragmentacija.&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОС1]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
</feed>