<?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%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2013</id>
	<title>ОС1/Фебруар 2013 - Историја измена</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%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2013"/>
	<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2013&amp;action=history"/>
	<updated>2026-06-04T02:12:21Z</updated>
	<subtitle>Историја измена ове странице на пројекту</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2013&amp;diff=4648&amp;oldid=prev</id>
		<title>KockaAdmiralac: Formatiranje</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2013&amp;diff=4648&amp;oldid=prev"/>
		<updated>2022-07-19T23:13:20Z</updated>

		<summary type="html">&lt;p&gt;Formatiranje&lt;/p&gt;
&lt;a href=&quot;https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2013&amp;amp;diff=4648&amp;amp;oldid=3018&quot;&gt;Прикажи измене&lt;/a&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2013&amp;diff=3018&amp;oldid=prev</id>
		<title>IvnSvc: /* Rešenje */  Опис пресликавања странице у оквир</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2013&amp;diff=3018&amp;oldid=prev"/>
		<updated>2021-10-03T14:00:54Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Rešenje: &lt;/span&gt;  Опис пресликавања странице у оквир&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 3. октобар 2021. у 16:00&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l69&quot;&gt;Ред 69:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 69:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Rešenje ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Rešenje ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{delimično rešeno}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Нема потребе, код страничне организације величина странице у виртуелној меморији је иста као величина оквира у физичкој меморији тако да се не може десити да исти оквир деле 2 различита процеса, нити да је једна страница пресликана у 2+  oквира.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 7. zadatak ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 7. zadatak ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>IvnSvc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2013&amp;diff=2895&amp;oldid=prev</id>
		<title>Ivan Pešić: додата решења</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2013&amp;diff=2895&amp;oldid=prev"/>
		<updated>2021-09-18T21:37:49Z</updated>

		<summary type="html">&lt;p&gt;додата решења&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/2013/feb/OS1%20Feb%202013.pdf Zadaci na stranici predmeta.]&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Neki interaktivni višeprocesni i višekorisnički sistem ne podržava raspodelu vremena (&amp;#039;&amp;#039;time sharing&amp;#039;&amp;#039;). Šta je njegov osnovni problem? &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Osnovni problem je nejednakost u vremenu odziva na korisničku akciju. Ukoliko je više procesa spremno i treba da obradi korisničku akciju, oni procesi koji ranije dobiju procesor imaće kraće vreme odziva, dok oni koji kasnije dobiju procesor imaju duže vreme odziva. Još gore, vreme odziva istog procesa na sukcesivne korisničke akcije potpuno je nedeterminističko i zavisi od toga kako se rasporede procesi čineći da se korinsici osećaju kao da &amp;quot;smetaju&amp;quot; jedni drugima.&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Ako  se nad sledećim programom kreira jedan proces, koliko će ukupno biti elemenata sa vrednošću 0 u nizovima pid svih kreiranih procesa (uključujući i taj jedan početni) kada svi ti procesi izađu iz petlje, 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 int N=2; &lt;br /&gt;
int pid[N]; &lt;br /&gt;
void main () {  &lt;br /&gt;
	for (int i=0; i&amp;lt;N; i++) &lt;br /&gt;
		pid[i] = fork(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Biće ukupno 4 elemenata sa vrednošću 0.&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Šta je problem sledeće implementacije kritične sekcije uposlenim čekanjem?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ada&amp;quot;&amp;gt;&lt;br /&gt;
process P1 &lt;br /&gt;
  loop &lt;br /&gt;
    while flag2 = true do null end; (* Busy wait *) &lt;br /&gt;
    flag1 := true; &lt;br /&gt;
    &amp;lt;critical section&amp;gt;          (* Critical section *) &lt;br /&gt;
    flag1 := false;             (* Exit protocol *) &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;
  loop &lt;br /&gt;
    while flag1 = true do null end; (* Busy wait *) &lt;br /&gt;
    flag2 := true; &lt;br /&gt;
    &amp;lt;critical section&amp;gt;          (* Critical section *) &lt;br /&gt;
    flag2 := false;             (* Exit protocol *) &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;
=== Rešenje ===&lt;br /&gt;
Problem je u tome što ovo rešenje uopšte ne obezbeđuje međusobno isključenje jer oba procesa mogu da uđu u kritičnu sekciju.&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Dva procesa &amp;#039;&amp;#039;X&amp;#039;&amp;#039; i &amp;#039;&amp;#039;Y&amp;#039;&amp;#039; &amp;quot;proizvode&amp;quot; cele brojeve uporedo, nezavisnim i promenljivim brzinama. Proces &amp;#039;&amp;#039;Z&amp;#039;&amp;#039; treba da uzima po dva proizvedena broja, i to uvek tačno jedan koji je proizveo &amp;#039;&amp;#039;X&amp;#039;&amp;#039; i jedan koji je proizveo  &amp;#039;&amp;#039;Y&amp;#039;&amp;#039;, i njihov zbir ispisuje na standardni izlaz. Važno je obezbediti da proces Z uvek uzima samo &amp;quot;sveže&amp;quot; proizvedene brojeve, tj. nikada ne uzme više puta isti proizvedeni broj. Korišćenjem deljenih promenljivih i klasičnih brojačkih semafora, napisati sve potrebne deklaracije i kod procesa &amp;#039;&amp;#039;X&amp;#039;&amp;#039; i &amp;#039;&amp;#039;Z&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Potrebno je &amp;#039;&amp;#039;X&amp;#039;&amp;#039; i &amp;#039;&amp;#039;Y&amp;#039;&amp;#039; implementirati kao bounded buffer jer mogu proizvoditi cele brojeve različitim brzinama. Proces &amp;#039;&amp;#039;Z&amp;#039;&amp;#039; će jednostavno pozivati operaciju take() nad tim dvama baferima.&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
U prvom prolazu kroz ulazne .obj fajlove, linker nailazi na izvezeni simbol koji se već nalazi u njegovoj tabeli simbola. Da li će to prijaviti kao grešku? &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Da, jer ako se nalazi u tabeli simbola znači da je već definisan i dolazi do sukoba imena.&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Da li kod stranične organizacije virtuelne memorije ima smisla hardverski vršiti proveru prekoračenja  granice  opsega  dozvoljenih  adresa  unutar  stranice  radi  zaštite  od  nedozvoljenog pristupa fizičkim adresama koje koriste drugi procesi? Kratko obrazložiti. &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
U nekom sistemu postoje sledeći sistemski pozivi:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int async_write (char* buffer);&lt;br /&gt;
void wait (int request_id);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Operacija &amp;lt;code&amp;gt;async_write&amp;lt;/code&amp;gt; asinhrono zadaje operaciju izlaza datog niza znakova na neki izlazni uređaj i vraća interni sistemski identifikator tog zahteva (veći od 0), odnosno kod greške (manji od nula). Operacija wait suspenduje pozivajući proces sve dok operacija sa datim identifikatorom nije završena. Korišćenjem ovih sistemskih poziva, realizovati sinhroni izlaz:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int sync_write (char* buffer);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int sync_write (char* buffer) {&lt;br /&gt;
	int id = async_write(buffer);&lt;br /&gt;
	if(id &amp;lt; 0) return id;&lt;br /&gt;
	wait(id);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Ukratko objasniti šta je &amp;#039;&amp;#039;spooling&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Kada neki nedeljivi spori uređaj želi da odradi posao, prvo se zatraži korišćenje tog uređaja sistemskim pozivom, OS tada pravi poseban fajl na određenom mestu u svom fajl sistemu u koji će preusmeriti sve ulazne operacije tog procesa sa štampaem i vraća kontrolu procesu. OS predaje fajl na obradu posebnom procesu ili niti (spuleru) koji će jedan po jedan fajl da uzima i njihove sadržaje da šalje datom uređaju.&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Neki  fajl  sistem  podržava  implicitno  zaključavanje  fajla  prilikom  njegovog  otvaranja. Postoje dve vrste ključa: deljeni (&amp;#039;&amp;#039;shared&amp;#039;&amp;#039;), koji se traži prilikom otvaranja fajla samo za čitanje (proces koji je tako otvorio fajl ima pravo samo da čita iz fajla) i ekskluzivni (&amp;#039;&amp;#039;exclusive&amp;#039;&amp;#039;),  koji  se traži prilikom otvaranja fajla i za upis (proces koji je otvorio fajl ima pravo upisa). Popuniti sledeću tabelu upisivanjem oznaka onih procesa čiji će zahtev za otvaranjem istog fajla biti ispunjen, za svaki od dva data slučaja. Procesi postavljaju zahteve redom navedenim u drugoj koloni, pri čemu oznaka npr. A-Rd označava da proces A postavlja zahtev za otvaranjem fajla za čitanje, a B-Wr da proces B postavlja zahtev za otvaranjem fajla za upis&lt;br /&gt;
&lt;br /&gt;
1. A-Rd, B-Wr, C-Rd, D-Rd, E-Wr &lt;br /&gt;
&lt;br /&gt;
2. A-Wr, B-Rd, C-Wr, D-Rd, E-Rd&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
U 1. slučaju A, C i D su uspeli da otvore fajl.&lt;br /&gt;
&lt;br /&gt;
U 2. slučaju samo A je uspeo da otvori fajl.&lt;br /&gt;
&lt;br /&gt;
== 10. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Neki  fajl  sistem  koristi  indeksirani  pristup  alokaciji  blokova  za  fajlove  sa  indeksima  u  dva nivoa.  Prvi nivo indeksa smešten je u sam FCB (&amp;#039;&amp;#039;file  control  block&amp;#039;&amp;#039;)  i  ima  256  ulaza  koji  direktno referenciraju blokove sa podacima, a još jedan ulaz u FCB ukazuje na jedan blok sa indeksom drugog nivoa čiji ulazi takođe ukazuju na blokove sa podacima. Veličina ulaza u indeksnom bloku (reference na blok diska) je 8 bajtova, a veličina bloka na disku je 512KB. Kolika  je  maksimalna veličina fajla u ovom fajl sistemu? &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
512KB / 8B = 64K ulaza&lt;br /&gt;
&lt;br /&gt;
(256 + 2^16) * 512KB = 2^27 + 2^35 = 32GB + 128MB = 32.125GB&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОС1]]&lt;/div&gt;</summary>
		<author><name>Ivan Pešić</name></author>
	</entry>
</feed>