<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sr">
	<id>https://siwiki.rs/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SrdjanKuzmanovic</id>
	<title>SI Wiki - Кориснички доприноси [sr]</title>
	<link rel="self" type="application/atom+xml" href="https://siwiki.rs/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SrdjanKuzmanovic"/>
	<link rel="alternate" type="text/html" href="https://siwiki.rs/wiki/%D0%9F%D0%BE%D1%81%D0%B5%D0%B1%D0%BD%D0%BE:%D0%94%D0%BE%D0%BF%D1%80%D0%B8%D0%BD%D0%BE%D1%81%D0%B8/SrdjanKuzmanovic"/>
	<updated>2026-06-04T09:50:44Z</updated>
	<subtitle>Кориснички доприноси</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%9A1_2017&amp;diff=4942</id>
		<title>Програмски преводиоци 1/К1 2017</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%9A1_2017&amp;diff=4942"/>
		<updated>2022-10-29T20:33:30Z</updated>

		<summary type="html">&lt;p&gt;SrdjanKuzmanovic: /* Rešenje */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Prvi kolokvijum 2017. godine&#039;&#039;&#039; održan je 28. oktobra i trajao je dva sata. Radna verzija postavke roka je [http://ir4pp1.etf.rs/Rokovi/2017-2018/si4pp1-1718-k1k2.zip dostupna sa stranice predmeta] (arhiva).&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Projektovati potisni automat koji prepoznaje sledeći skup sekvenci: &amp;lt;math&amp;gt;\left\{a^k b^m c^{k-1}\right\} k &amp;gt; 0, m \geq 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Iz zadatog skupa izabrati jednu sekvencu dužine veće od tri i prikazati proces njenog prepoznavanja.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Prvo stanje potisne mašine za prepoznavanje sekvence&lt;br /&gt;
!&lt;br /&gt;
! a&lt;br /&gt;
! b&lt;br /&gt;
! c&lt;br /&gt;
! ─┤&lt;br /&gt;
|-&lt;br /&gt;
! ∇&lt;br /&gt;
|&lt;br /&gt;
* PUSH(A)&lt;br /&gt;
* ADVANCE&lt;br /&gt;
| REJECT&lt;br /&gt;
| REJECT&lt;br /&gt;
| REJECT&lt;br /&gt;
|-&lt;br /&gt;
! A&lt;br /&gt;
|&lt;br /&gt;
* PUSH(B)&lt;br /&gt;
* ADVANCE&lt;br /&gt;
|&lt;br /&gt;
* ADVANCE&lt;br /&gt;
* STATE(S2)&lt;br /&gt;
|&lt;br /&gt;
* RETAIN&lt;br /&gt;
* STATE(S3)&lt;br /&gt;
| ACCEPT&lt;br /&gt;
|-&lt;br /&gt;
! B&lt;br /&gt;
|&lt;br /&gt;
* PUSH(B)&lt;br /&gt;
* ADVANCE&lt;br /&gt;
|&lt;br /&gt;
* ADVANCE&lt;br /&gt;
* STATE(S2)&lt;br /&gt;
|&lt;br /&gt;
* RETAIN&lt;br /&gt;
* STATE(S3)&lt;br /&gt;
| REJECT&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Drugo stanje potisne mašine za prepoznavanje sekvence&lt;br /&gt;
!&lt;br /&gt;
! a&lt;br /&gt;
! b&lt;br /&gt;
! c&lt;br /&gt;
! ─┤&lt;br /&gt;
|-&lt;br /&gt;
! A&lt;br /&gt;
| REJECT&lt;br /&gt;
| ADVANCE&lt;br /&gt;
| REJECT&lt;br /&gt;
| ACCEPT&lt;br /&gt;
|-&lt;br /&gt;
! B&lt;br /&gt;
| REJECT&lt;br /&gt;
| ADVANCE&lt;br /&gt;
|&lt;br /&gt;
* RETAIN&lt;br /&gt;
* STATE(S3)&lt;br /&gt;
| REJECT&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Treće stanje potisne mašine za prepoznavanje sekvence&lt;br /&gt;
!&lt;br /&gt;
! a&lt;br /&gt;
! b&lt;br /&gt;
! c&lt;br /&gt;
! ─┤&lt;br /&gt;
|-&lt;br /&gt;
! A&lt;br /&gt;
| REJECT&lt;br /&gt;
| REJECT&lt;br /&gt;
| REJECT&lt;br /&gt;
| ACCEPT&lt;br /&gt;
|-&lt;br /&gt;
! B&lt;br /&gt;
| REJECT&lt;br /&gt;
| REJECT&lt;br /&gt;
|&lt;br /&gt;
* POP&lt;br /&gt;
* ADVANCE&lt;br /&gt;
| REJECT&lt;br /&gt;
|}&lt;br /&gt;
Rad ovog automata možemo prikazati na sekvenci &#039;&#039;&#039;aabbbc&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Stek&lt;br /&gt;
! Sekvenca&lt;br /&gt;
! Stanje&lt;br /&gt;
! Operacije&lt;br /&gt;
|-&lt;br /&gt;
| ∇&lt;br /&gt;
| aabbbc─┤&lt;br /&gt;
| 1&lt;br /&gt;
| PUSH(A), ADVANCE&lt;br /&gt;
|-&lt;br /&gt;
| ∇A&lt;br /&gt;
| abbbc─┤&lt;br /&gt;
| 1&lt;br /&gt;
| PUSH(B), ADVANCE&lt;br /&gt;
|-&lt;br /&gt;
| ∇AB&lt;br /&gt;
| bbbc─┤&lt;br /&gt;
| 1&lt;br /&gt;
| ADVANCE, STATE(S2)&lt;br /&gt;
|-&lt;br /&gt;
| ∇AB&lt;br /&gt;
| bbc─┤&lt;br /&gt;
| 2&lt;br /&gt;
| ADVANCE&lt;br /&gt;
|-&lt;br /&gt;
| ∇AB&lt;br /&gt;
| bc─┤&lt;br /&gt;
| 2&lt;br /&gt;
| ADVANCE&lt;br /&gt;
|-&lt;br /&gt;
| ∇AB&lt;br /&gt;
| c─┤&lt;br /&gt;
| 2&lt;br /&gt;
| RETAIN, STATE(S3)&lt;br /&gt;
|-&lt;br /&gt;
| ∇AB&lt;br /&gt;
| c─┤&lt;br /&gt;
| 3&lt;br /&gt;
| POP, ADVANCE&lt;br /&gt;
|-&lt;br /&gt;
| ∇A&lt;br /&gt;
| ─┤&lt;br /&gt;
| 3&lt;br /&gt;
| ACCEPT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
[[Datoteka:PPR K1 2017 zadatak 2 postavka.svg|thumb|Stablo iz postavke drugog zadatka.]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Direktno na zadatom sintaksnom stablu jednog regularnog izraza naznačiti poništivost, i funkcije prva i poslednja pozicija.&lt;br /&gt;
# Nacrtati tabelu sa vrednostima funkcije sledeća pozicija.&lt;br /&gt;
# Na osnovu zadatog stabla i rezultata pod a) odrediti konačni automat. Obavezno navesti postupak. Nije potrebna minimizacija.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
[[Datoteka:PPR K1 2017 zadatak 2 rešenje.svg|thumb|Stablo iz rešenja drugog zadatka.]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Tabela sledećih pozicija&lt;br /&gt;
! Pozicija&lt;br /&gt;
! Sledeća pozicija&lt;br /&gt;
|-&lt;br /&gt;
! 1&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
! 3&lt;br /&gt;
| 4, 5, 8&lt;br /&gt;
|-&lt;br /&gt;
! 4&lt;br /&gt;
| 4, 5, 8&lt;br /&gt;
|-&lt;br /&gt;
! 5&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
! 6&lt;br /&gt;
| 7, 8&lt;br /&gt;
|-&lt;br /&gt;
! 7&lt;br /&gt;
| 7, 8&lt;br /&gt;
|-&lt;br /&gt;
! 8&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Postupak pretvaranja sintaksnog stabla u deterministički konačni automat&lt;br /&gt;
!&lt;br /&gt;
! +&lt;br /&gt;
! -&lt;br /&gt;
! d&lt;br /&gt;
! .&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! 1, 2, 3&lt;br /&gt;
| 3&lt;br /&gt;
| 3&lt;br /&gt;
| 4, 5, 8&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! 3&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4, 5, 8&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! 4, 5, 8&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4, 5, 8&lt;br /&gt;
| 6&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 7, 8&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! 7, 8&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 7, 8&lt;br /&gt;
|&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Deterministički konačni automat&lt;br /&gt;
!&lt;br /&gt;
! +&lt;br /&gt;
! -&lt;br /&gt;
! d&lt;br /&gt;
! .&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! A&lt;br /&gt;
| B&lt;br /&gt;
| B&lt;br /&gt;
| C&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| C&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| C&lt;br /&gt;
| D&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! D&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| E&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! E&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| E&lt;br /&gt;
|&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
[[Datoteka:PPR K1 2017 zadatak 3 postavka.svg|thumb|Nedeterministički konačni automat iz postavke trećeg zadatka pod b.]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Da li su dati automati ekvivalentni? Obavezno prikazati postupak.&lt;br /&gt;
# Konvertovati zadati nedeterministički automat u deterministički. Obavezno prikazati postupak. Nije potrebna minimizacija.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Prvi automat iz postavke trećeg zadatka pod a&lt;br /&gt;
!&lt;br /&gt;
! 0&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! → Ax&lt;br /&gt;
| Ax&lt;br /&gt;
| Ax&lt;br /&gt;
| Bx&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Bx&lt;br /&gt;
| Bx&lt;br /&gt;
| Ax&lt;br /&gt;
| Bx&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Drugi automat iz postavke trećeg zadatka pod a&lt;br /&gt;
!&lt;br /&gt;
! 0&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! → Az&lt;br /&gt;
| Cz&lt;br /&gt;
| Az&lt;br /&gt;
| Bz&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Bz&lt;br /&gt;
| Bz&lt;br /&gt;
| Az&lt;br /&gt;
| Az&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! Cz&lt;br /&gt;
| Cz&lt;br /&gt;
| Az&lt;br /&gt;
| Bz&lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Postupak provere ekvivalencije automata iz trećeg zadatka pod a&lt;br /&gt;
!&lt;br /&gt;
! 0&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
|-&lt;br /&gt;
! Ax, Az&lt;br /&gt;
| Ax, Cz&lt;br /&gt;
| Ax, Az&lt;br /&gt;
| Bx, Bz&lt;br /&gt;
|-&lt;br /&gt;
! Ax, Cz&lt;br /&gt;
| Ax, Cz&lt;br /&gt;
| Ax, Az&lt;br /&gt;
| Bx, Bz&lt;br /&gt;
|-&lt;br /&gt;
! Bx, Bz&lt;br /&gt;
| Bx, Bz&lt;br /&gt;
| Ax, Az&lt;br /&gt;
| &#039;&#039;&#039;Bx, Az&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
Zbog toga što stanja Bx i Az nisu kompatibilna, ova dva automata &#039;&#039;&#039;nisu ekvivalentna&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Postupak pretvaranja nedeterminističkog konačnog automata u deterministički&lt;br /&gt;
!&lt;br /&gt;
! +&lt;br /&gt;
! -&lt;br /&gt;
! d&lt;br /&gt;
! .&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! → 1, 2, 4, 7, 8, 9&lt;br /&gt;
| 3, 8, 9&lt;br /&gt;
| 5, 8, 9&lt;br /&gt;
| 9, 10, 11, 12, 17, 18, 19&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! 3, 8, 9&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 9, 10, 11, 12, 17, 18, 19&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! 5, 8, 9&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 9, 10, 11, 12, 17, 18, 19&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! 9, 10, 11, 12, 17, 18, 19&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 9, 10, 11, 12, 17, 18, 19&lt;br /&gt;
| 13, 14&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! 13, 14&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 14, 15, 16, 19&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! 14, 15, 16, 19&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 14, 15, 16, 19&lt;br /&gt;
|&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Deterministički konačni automat&lt;br /&gt;
!&lt;br /&gt;
! +&lt;br /&gt;
! -&lt;br /&gt;
! d&lt;br /&gt;
! .&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! → A&lt;br /&gt;
| B&lt;br /&gt;
| C&lt;br /&gt;
| D&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! B&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| D&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| D&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! D&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| D&lt;br /&gt;
| E&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! E&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| F&lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! F&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| F&lt;br /&gt;
|&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
?????&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
?????&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Програмски преводиоци 1]]&lt;/div&gt;</summary>
		<author><name>SrdjanKuzmanovic</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D1%98%D0%B5%D0%BA%D1%82%D0%BE%D0%B2%D0%B0%D1%9A%D0%B5_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80%D0%B0/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2022&amp;diff=4032</id>
		<title>Пројектовање софтвера/Фебруар 2022</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D1%98%D0%B5%D0%BA%D1%82%D0%BE%D0%B2%D0%B0%D1%9A%D0%B5_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80%D0%B0/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2022&amp;diff=4032"/>
		<updated>2022-02-22T17:27:25Z</updated>

		<summary type="html">&lt;p&gt;SrdjanKuzmanovic: /* 8. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{nerešeno}}&lt;br /&gt;
&#039;&#039;&#039;Februarski ispit 2022. godine&#039;&#039;&#039; održan je 22. februara. Tekst zadataka ispod je po sećanju studenata.&lt;br /&gt;
{{rešenja}}&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
Povezati definicije principa OO modela sa njihovim nazivima:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;tipizacija,konkurentnost,perzistencija,modularnost,hijerarhija&amp;quot;&amp;gt;&lt;br /&gt;
# Osobina koja razlikuje aktivne objekte od pasivnih: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;konkurentnost&amp;lt;/span&amp;gt;&lt;br /&gt;
# Osobina sistema da se razlaže na skup kohezivnih i slabo spregnutih modula: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;modularnost&amp;lt;/span&amp;gt;&lt;br /&gt;
# Osobina da se objekti različitih klasa ne mogu uopšte ili mogu zamenjivati na ograničene načine: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;tipizacija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Osobina po kojoj se postojanje objekta može protezati kroz vreme ili prostor: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;perzistencija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Rangiranje ili uređivanje apstrakcija: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;hijerarhija&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
Označiti tačne tvrdnje za dati dijagram:&lt;br /&gt;
[[Датотека:PS februar 2022 zadatak 2 dijagram sekvence.svg|мини|Dijagram iz drugog zadatka.]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Prikazani dijagram je dijagram sekvence.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Objekat sa &amp;lt;code&amp;gt;{transient}&amp;lt;/code&amp;gt; ograničenjem se stvara i uništava u toku sekvence.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Metoda &amp;lt;code&amp;gt;promptKomanda()&amp;lt;/code&amp;gt; je sinhrona.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Metoda &amp;lt;code&amp;gt;&amp;lt;&amp;lt;create&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; stvara objekat tipa &amp;lt;code&amp;gt;Transakcija&amp;lt;/code&amp;gt;.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Metoda &amp;lt;code&amp;gt;provera()&amp;lt;/code&amp;gt; nema parametre.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
Koji dijagram se koristi za modeliranje izvršnog okruženja?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# raspoređivanja&lt;br /&gt;
# klasa&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;komponenata&amp;lt;/span&amp;gt;&lt;br /&gt;
# interakcija&lt;br /&gt;
# aktivnosti&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
Kolika je multiplikativnost sa suprotne strane kvalifikatora na datom dijagramu?&lt;br /&gt;
[[Датотека:PS februar 2022 zadatak 4 dijagram klasa.svg|мини|Dijagram klasa iz četvrtog zadatka.]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;&lt;br /&gt;
# 0..1&lt;br /&gt;
# 1&lt;br /&gt;
# 1..*&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
Označiti tačna tvrđenja za dijagram klasa:&lt;br /&gt;
[[Датотека:PS februar 2022 zadatak 5 dijagram klasa.svg|мини|Dijagram klasa iz petog zadatka.]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Objekat klase B može da preko asocijacije pristupi objektu klase A.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Metod klase A može preko asocijacije da pristupi objektima klase C.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Metod klase B može preko asocijacije da pristupi objektima klase C.&lt;br /&gt;
# Objekat klase A može da poziva privatne metode objekta klase C.&lt;br /&gt;
# Metod klase C može preko asocijacije da pristupi objektima klase A.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
Sa kojim projektnim uzorcima se slaže projektni uzorak Prototip:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Sastav&amp;lt;/span&amp;gt;&lt;br /&gt;
# Unikat&lt;br /&gt;
# Fabrički metod&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Dekorater&amp;lt;/span&amp;gt;&lt;br /&gt;
# Strategija&lt;br /&gt;
# Podsetnik&lt;br /&gt;
# ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
Koju ulogu u Podsetniku ima Konkretna komanda u slučaju da se komanda koristi za poništavanje operacija (undo)?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Klijent&lt;br /&gt;
# Subjekat&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Čuvar&amp;lt;/span&amp;gt;&lt;br /&gt;
# Podsetnik&lt;br /&gt;
# Fabrika&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
Označiti tačne tvrdnje za projektni uzorak Fabrički metod.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Uzorak eliminiše potrebu da se klijentski kod vezuje za aplikativno-specifične klase.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Apstraktna fabrika se često implementira pomoću Fabričkog metoda.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Učesnik Fabrika mora da zna za postojanje Konkretnih proizvoda.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Drugo ime za Fabrički metod je virtuelni konstruktor.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Fabrički metod je objektni uzorak kreiranja.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
Označiti tačne tvrdnje u vezi sa projektnim uzorkom Graditelj.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Graditelj stvara cele objekte odjednom.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Graditelj stvara objekte iz delova.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Upravljač stvara objekte Konkretnog graditelja.&lt;br /&gt;
# ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 10. zadatak ==&lt;br /&gt;
Označiti tačne tvrdnje u vezi sa projektnim uzorkom Zastupnik.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Virtuelni zastupnik je ambasador.&lt;br /&gt;
# Svaki zastupnik mora da što duže odlaže kreiranje objekta kojeg zastupa.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Uzorak Zastupnik često ima sličnu objektnu i klasnu strukturu kao Dekorater.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Zastupnik je klasni uzorak strukture.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Zastupnik se koristi za implementaciju copy-on-write funkcionalnosti.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Пројектовање софтвера]]&lt;/div&gt;</summary>
		<author><name>SrdjanKuzmanovic</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D1%98%D0%B5%D0%BA%D1%82%D0%BE%D0%B2%D0%B0%D1%9A%D0%B5_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80%D0%B0/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2022&amp;diff=4031</id>
		<title>Пројектовање софтвера/Фебруар 2022</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D1%98%D0%B5%D0%BA%D1%82%D0%BE%D0%B2%D0%B0%D1%9A%D0%B5_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80%D0%B0/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2022&amp;diff=4031"/>
		<updated>2022-02-22T17:24:25Z</updated>

		<summary type="html">&lt;p&gt;SrdjanKuzmanovic: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{nerešeno}}&lt;br /&gt;
&#039;&#039;&#039;Februarski ispit 2022. godine&#039;&#039;&#039; održan je 22. februara. Tekst zadataka ispod je po sećanju studenata.&lt;br /&gt;
{{rešenja}}&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
Povezati definicije principa OO modela sa njihovim nazivima:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;tipizacija,konkurentnost,perzistencija,modularnost,hijerarhija&amp;quot;&amp;gt;&lt;br /&gt;
# Osobina koja razlikuje aktivne objekte od pasivnih: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;konkurentnost&amp;lt;/span&amp;gt;&lt;br /&gt;
# Osobina sistema da se razlaže na skup kohezivnih i slabo spregnutih modula: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;modularnost&amp;lt;/span&amp;gt;&lt;br /&gt;
# Osobina da se objekti različitih klasa ne mogu uopšte ili mogu zamenjivati na ograničene načine: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;tipizacija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Osobina po kojoj se postojanje objekta može protezati kroz vreme ili prostor: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;perzistencija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Rangiranje ili uređivanje apstrakcija: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;hijerarhija&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
Označiti tačne tvrdnje za dati dijagram:&lt;br /&gt;
[[Датотека:PS februar 2022 zadatak 2 dijagram sekvence.svg|мини|Dijagram iz drugog zadatka.]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Prikazani dijagram je dijagram sekvence.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Objekat sa &amp;lt;code&amp;gt;{transient}&amp;lt;/code&amp;gt; ograničenjem se stvara i uništava u toku sekvence.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Metoda &amp;lt;code&amp;gt;promptKomanda()&amp;lt;/code&amp;gt; je sinhrona.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Metoda &amp;lt;code&amp;gt;&amp;lt;&amp;lt;create&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; stvara objekat tipa &amp;lt;code&amp;gt;Transakcija&amp;lt;/code&amp;gt;.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Metoda &amp;lt;code&amp;gt;provera()&amp;lt;/code&amp;gt; nema parametre.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
Koji dijagram se koristi za modeliranje izvršnog okruženja?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# raspoređivanja&lt;br /&gt;
# klasa&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;komponenata&amp;lt;/span&amp;gt;&lt;br /&gt;
# interakcija&lt;br /&gt;
# aktivnosti&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
Kolika je multiplikativnost sa suprotne strane kvalifikatora na datom dijagramu?&lt;br /&gt;
[[Датотека:PS februar 2022 zadatak 4 dijagram klasa.svg|мини|Dijagram klasa iz četvrtog zadatka.]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;&lt;br /&gt;
# 0..1&lt;br /&gt;
# 1&lt;br /&gt;
# 1..*&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
Označiti tačna tvrđenja za dijagram klasa:&lt;br /&gt;
[[Датотека:PS februar 2022 zadatak 5 dijagram klasa.svg|мини|Dijagram klasa iz petog zadatka.]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Objekat klase B može da preko asocijacije pristupi objektu klase A.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Metod klase A može preko asocijacije da pristupi objektima klase C.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Metod klase B može preko asocijacije da pristupi objektima klase C.&lt;br /&gt;
# Objekat klase A može da poziva privatne metode objekta klase C.&lt;br /&gt;
# Metod klase C može preko asocijacije da pristupi objektima klase A.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
Sa kojim projektnim uzorcima se slaže projektni uzorak Prototip:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Sastav&amp;lt;/span&amp;gt;&lt;br /&gt;
# Unikat&lt;br /&gt;
# Fabrički metod&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Dekorater&amp;lt;/span&amp;gt;&lt;br /&gt;
# Strategija&lt;br /&gt;
# Podsetnik&lt;br /&gt;
# ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
Koju ulogu u Podsetniku ima Konkretna komanda u slučaju da se komanda koristi za poništavanje operacija (undo)?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Klijent&lt;br /&gt;
# Subjekat&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Čuvar&amp;lt;/span&amp;gt;&lt;br /&gt;
# Podsetnik&lt;br /&gt;
# Fabrika&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
Označiti tačne tvrdnje za projektni uzorak Fabrički metod.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Uzorak eliminiše potrebu da se klijentski kod vezuje za aplikativno-specifične klase.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Apstraktna fabrika se često implementira pomoću Fabričkog metoda.&lt;br /&gt;
# Učesnik Fabrika mora da zna za postojanje Konkretnih proizvoda.&lt;br /&gt;
# Drugo ime za Fabrički metod je virtuelni konstruktor.&lt;br /&gt;
# Fabrički metod je objektni uzorak kreiranja.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
Označiti tačne tvrdnje u vezi sa projektnim uzorkom Graditelj.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Graditelj stvara cele objekte odjednom.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Graditelj stvara objekte iz delova.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Upravljač stvara objekte Konkretnog graditelja.&lt;br /&gt;
# ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 10. zadatak ==&lt;br /&gt;
Označiti tačne tvrdnje u vezi sa projektnim uzorkom Zastupnik.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Virtuelni zastupnik je ambasador.&lt;br /&gt;
# Svaki zastupnik mora da što duže odlaže kreiranje objekta kojeg zastupa.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Uzorak Zastupnik često ima sličnu objektnu i klasnu strukturu kao Dekorater.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Zastupnik je klasni uzorak strukture.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Zastupnik se koristi za implementaciju copy-on-write funkcionalnosti.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Пројектовање софтвера]]&lt;/div&gt;</summary>
		<author><name>SrdjanKuzmanovic</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D1%98%D0%B5%D0%BA%D1%82%D0%BE%D0%B2%D0%B0%D1%9A%D0%B5_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80%D0%B0/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2022&amp;diff=4028</id>
		<title>Пројектовање софтвера/Фебруар 2022</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D1%98%D0%B5%D0%BA%D1%82%D0%BE%D0%B2%D0%B0%D1%9A%D0%B5_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80%D0%B0/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2022&amp;diff=4028"/>
		<updated>2022-02-22T16:40:04Z</updated>

		<summary type="html">&lt;p&gt;SrdjanKuzmanovic: /* 4. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{nerešeno}}&lt;br /&gt;
&#039;&#039;&#039;Februarski ispit 2022. godine&#039;&#039;&#039; održan je 22. februara. Tekst zadataka ispod je po sećanju studenata.&lt;br /&gt;
{{rešenja}}&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
Povezati definicije principa OO modela sa njihovim nazivima:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;tipizacija,konkurentnost,perzistencija,modularnost,hijerarhija&amp;quot;&amp;gt;&lt;br /&gt;
# Osobina koja razlikuje aktivne objekte od pasivnih: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;konkurentnost&amp;lt;/span&amp;gt;&lt;br /&gt;
# Osobina sistema da se razlaže na skup kohezivnih i slabo spregnutih modula: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;modularnost&amp;lt;/span&amp;gt;&lt;br /&gt;
# Osobina da se objekti različitih klasa ne mogu uopšte ili mogu zamenjivati na ograničene načine: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;tipizacija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Osobina po kojoj se postojanje objekta može protezati kroz vreme ili prostor: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;perzistencija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Rangiranje ili uređivanje apstrakcija: &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;hijerarhija&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
Označiti tačne tvrdnje za dati dijagram:&lt;br /&gt;
[[Датотека:PS februar 2022 zadatak 2 dijagram sekvence.svg|мини|Dijagram iz drugog zadatka.]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Prikazani dijagram je dijagram sekvence.&lt;br /&gt;
# Objekat sa &amp;lt;code&amp;gt;{transient}&amp;lt;/code&amp;gt; ograničenjem se stvara i uništava u toku sekvence.&lt;br /&gt;
# Prva poruka koja se šalje je sinhrona.&lt;br /&gt;
# ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
Izabrati dijagram raspoređivanja od sledećih dijagrama:&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
Kolika je multiplikativnost sa suprotne strane kvalifikatora na datom dijagramu?&lt;br /&gt;
[[Датотека:PS februar 2022 zadatak 4 dijagram klasa.svg|мини|Dijagram klasa iz četvrtog zadatka.]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;&lt;br /&gt;
# 0..1&lt;br /&gt;
# 1&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;1..*&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
Označiti tačna tvrđenja za dijagram klasa:&lt;br /&gt;
[[Датотека:PS februar 2022 zadatak 5 dijagram klasa.svg|мини|Dijagram klasa iz petog zadatka.]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Metod klase A može da pristupi objektu klase C.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Metod klase B može da pristupi objektu klase C.&lt;br /&gt;
# Metod klase C može da pristupi objektu klase A.&lt;br /&gt;
# Metod klase B može da pozove metod objekta C.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
Sa kojim projektnim uzorcima se slaže projektni uzorak Prototip:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Sastav&amp;lt;/span&amp;gt;&lt;br /&gt;
# Unikat&lt;br /&gt;
# Fabrički metod&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Dekorater&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
Koju ulogu ima operacija za poništavanje Komande u slučaju da se za čuvanje stanja koristi Podsetnik?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Subjekat&lt;br /&gt;
# Čuvar&lt;br /&gt;
# ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
Označiti tačne tvrdnje za projektni uzorak Fabrički metod.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
Označiti tačne tvrdnje u vezi sa projektnim uzorkom Graditelj.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Graditelj stvara cele objekte odjednom.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Graditelj stvara objekte iz delova.&amp;lt;/span&amp;gt;&lt;br /&gt;
# ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 10. zadatak ==&lt;br /&gt;
Označiti tačne tvrdnje u vezi sa projektnim uzorkom Zastupnik.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Virtuelni zastupnik je ambasador.&lt;br /&gt;
# Zastupnik mora da što duže odlaže kreiranje objekta kojeg zastupa.&lt;br /&gt;
# Zastupnik je klasni uzorak strukture.&lt;br /&gt;
# ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Пројектовање софтвера]]&lt;/div&gt;</summary>
		<author><name>SrdjanKuzmanovic</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A12/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2016&amp;diff=3677</id>
		<title>ОС2/Јануар 2016</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A12/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2016&amp;diff=3677"/>
		<updated>2022-02-10T19:10:59Z</updated>

		<summary type="html">&lt;p&gt;SrdjanKuzmanovic: /* Rešenje */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{rešenja}}&lt;br /&gt;
[http://os.etf.rs/OS2/rokovi/2016/jan/Jan%202016.pdf Zadaci na stranici predmeta.]&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
Zaokružiti slovo ispred onih karakteristika koje važe za MFQS raspoređivanje procesa u osnovnom/najčešćem obliku.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Za izvršavanje se uzima proces iz prvog sledećeg nepraznog reda u odnosu na onaj iz kog je prethodno uzet proces za izvršavanje (po &#039;&#039;round-robin&#039;&#039; politici)&amp;lt;/span&amp;gt;&lt;br /&gt;
# Za izvršavanje se uzima proces iz nepraznog reda najvišeg prioriteta, a unutar njega po &#039;&#039;round-robin&#039;&#039; politici&lt;br /&gt;
# Procesu iz reda višeg prioriteta daje se kraći interval vremena izvršavanja&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Procesu iz reda višeg prioriteta daje se duži interval vremena izvršavanja&amp;lt;/span&amp;gt;&lt;br /&gt;
# Proces koji ponovo postaje spreman nakon I/O operacije smešta se u red nižeg prioriteta od onog iz koga je taj proces prethodno uzet za izvršavanje&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Proces koji ponovo postaje spreman nakon I/O operacije smešta se u red višeg prioriteta od onog iz koga je taj proces prethodno uzet za izvršavanje.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Na jeziku Java napisati kod za monitor koji realizuje standardni brojački semafor.&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Semaphore {&lt;br /&gt;
	private int count;&lt;br /&gt;
	&lt;br /&gt;
	public synchronized void waitx() {&lt;br /&gt;
		while (--count &amp;lt; 0)&lt;br /&gt;
			try {&lt;br /&gt;
				wait();&lt;br /&gt;
			} catch (InterruptedException e) {}&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public synchronized void signal() {&lt;br /&gt;
		if (++count &amp;lt;= 0) notifyAll();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Da li serverski osluškivač (engl. &#039;&#039;listener&#039;&#039;) na istoj serverskoj priključnici (engl. &#039;&#039;socket&#039;&#039;) može uporedo da obavlja komunikaciju sa više klijenata? Ako može, na koji način?&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Može, tako što klijentu odredi neki drugi port na kom treba da uspostavi priključnicu sa serverom i onda komunicira sa njim u odvojenoj niti.&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
U koji model međuprocesne komunikacije (&#039;&#039;shared object&#039;&#039; ili &#039;&#039;message passing&#039;&#039;) spada tehnika:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;message passing, shared object&amp;quot;&amp;gt;&lt;br /&gt;
# veb servisa (&#039;&#039;Web service&#039;&#039;) &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;message passing&amp;lt;/span&amp;gt;&lt;br /&gt;
# razmene podataka preko memorijski preslikanog fajla (&#039;&#039;memory-mapped file&#039;&#039;) &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;shared object&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
U nekom sistemu postoje dva procesa, P1 i P2, koji koriste resurse R1, R2 i R3 na način dat dole. Pretpostavlja se da odmah nakon operacije zauzeća određenih resursa dati proces vrši operacije sa tim resursom, odnosno da je proces ovako konstruisan da bi resurse držao zauzete najmanje moguće (alocira ih najkasnije što može, pre same operacije). Prestrukturirati ove procese tako da se spreči njihova mrtva blokada (deadlock) ukidanjem uslova cirkularnog čekanja (&#039;&#039;circular wait&#039;&#039;). Prestrukturiranje podrazumeva da proces može da zauzme resurs i ranije nego što je to neophodno za operaciju sa tim resursom, ali ne pre nego što je neophodno za sprečavanje mrtve blokade.&lt;br /&gt;
{|&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
P1:&lt;br /&gt;
request(R1);&lt;br /&gt;
request(R2, R3);&lt;br /&gt;
release(R1, R2, R3); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; || &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
P2:&lt;br /&gt;
request(R2);&lt;br /&gt;
request(R1, R3);&lt;br /&gt;
release(R1, R2, R3); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Data je sledeća sekvenca referenciranja stranica od strane nekog procesa:&lt;br /&gt;
&amp;lt;code&amp;gt;3, 2, 6, 8, 5, 6, 9, 8, 2, 6, 4, 9, 3, 6, 7, 9, 8, 6, 7, 8&amp;lt;/code&amp;gt;&lt;br /&gt;
Procesu su dodeljena 4 okvira, zamena se vrši lokalno, samo u skupu stranica dodeljenih tom procesu, a inicijalno nije učitana nijedna stranica ovog procesa. Koliko puta ovaj proces generiše straničnu grešku (&#039;&#039;page fault&#039;&#039;) ako je algoritam zamene stranica LRU?&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;12&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Koji osnovni problem alokacije memorije rešava &#039;&#039;slab&#039;&#039; alokator?&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&#039;&#039;Slab&#039;&#039; alokator rešava problem fragmentacije, pošto se objekti iste veličine smeštaju u tačno dimenzionisane odeljke.&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Na kom disku 0 do 15 se nalazi logički blok broj 67 (blokovi su numerisani počev od 0) kod strukture RAID5 / 4+1 (na svaka 4 bloka 1 blok parnosti)?&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Ako ima 16 diskova i redom se distribuiraju blokovi na 4 i onda se jedan koristi kao blok parnosti, to znači da je do 67. bloka bilo 67 / 4 = 16 blokova za parnosti. Bez njih, 67. blok bi bio na 3. disku, ali je do tad bilo još 16 za parnost. (67 % 16 + 16)% 16 = 3, što znači da je 67. blok na 3. disku.&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
: &#039;&#039;Isti zadatak se našao i na [[ОС2/Јануар 2022#8. zadatak|januarskom roku iz 2022]].&#039;&#039;&lt;br /&gt;
Ukratko objasniti šta je .Net CLR.&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&#039;&#039;Common Language Runtime&#039;&#039; (CLR) je komponenta virtuelne mašine koja pokreće .NET programe.&lt;br /&gt;
&lt;br /&gt;
== 10. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Navesti osnovne slojeve arhitekture Android sistema i kratko navesti šta koji sloj predstavlja-sadrži.&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
* Linux kernel - sadrži drajvere, kontrolu napajanja, alokaciju memorije itd.&lt;br /&gt;
* Biblioteke - napisane u C/C++ i služe programima na sloju aplikacija preko JNI (&#039;&#039;Java Native Interface&#039;&#039;)&lt;br /&gt;
* &#039;&#039;Android Runtime&#039;&#039; - okruženje koje sadrži virtuelnu mašinu koja izvršava programe&lt;br /&gt;
* &#039;&#039;Application Framework&#039;&#039; - sadrži Java aplikacije i servise koje služe sloju aplikacija&lt;br /&gt;
* Sloj aplikacija - sadrži korisničke aplikacije&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОС2]]&lt;/div&gt;</summary>
		<author><name>SrdjanKuzmanovic</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80_2013&amp;diff=2971</id>
		<title>ОС1/Септембар 2013</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80_2013&amp;diff=2971"/>
		<updated>2021-09-22T23:26:42Z</updated>

		<summary type="html">&lt;p&gt;SrdjanKuzmanovic: Greska u racunu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
[http://os.etf.bg.ac.rs/OS1/rokovi/2013/sep/Sep%202013.pdf Zadaci na stranici predmeta.]&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Šta  je  bio osnovni  motiv  uvođenja  multiprogramiranja  u  do tada paketne računarske sisteme?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Ovo pitanje pojavilo se na septembarskom roku 2011. godine kao 1. pitanje.&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Korišćenjem standardnih bibliotečnih funkcija &amp;lt;code&amp;gt;setjmp()&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;longjmp()&amp;lt;/code&amp;gt;, realizovati operaciju &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;void yield(jmp_buf old, jmp_buf new);&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
koja čuva kontekst niti čiji je &amp;lt;code&amp;gt;jmp_buf&amp;lt;/code&amp;gt; dat kao prvi argument, oduzima joj procesor i restaurira kontekst niti čiji je &amp;lt;code&amp;gt;jmp_buf&amp;lt;/code&amp;gt; dat kao drugi argument, kojoj predaje procesor. &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void yield(jmp_buf old, jmp_buf new) {&lt;br /&gt;
	if(setjmp(old) == 0) {&lt;br /&gt;
		longjmp(new, 1);	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Korišćenjem  sistemskih  poziva &amp;lt;code&amp;gt;fork()&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;execlp()&amp;lt;/code&amp;gt; napisati program &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; koji, kada se pokrene kao proces, kreira procese-decu nad svim programima koji se nalaze u fajlovima čija su imena data argumentima programa &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; (npr. &amp;lt;code&amp;gt;run p1.exe p2.exe p3.exe&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int main(int argc, char* argv[]) {&lt;br /&gt;
	for(int i = 1; i &amp;lt; argc; i++) {&lt;br /&gt;
		int pid = fork();&lt;br /&gt;
		if(pid == 0) {&lt;br /&gt;
			execlp(argv[i]);&lt;br /&gt;
			return -1;&lt;br /&gt;
		}&lt;br /&gt;
		else if(pid &amp;lt; 0)&lt;br /&gt;
			return -2;&lt;br /&gt;
	}&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Korišćenjem standardnih brojačkih semafora, napisati kod za inicijalizaciju i potrebnu sinhronizaciju između dva procesa koji u svoje kritične sekcije treba da ulaze strogo naizmeničn&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;ada&amp;quot;&amp;gt;&lt;br /&gt;
var semA : Semaphore := 1;&lt;br /&gt;
	semB : Semaphore := 0;&lt;br /&gt;
&lt;br /&gt;
process A:&lt;br /&gt;
	begin&lt;br /&gt;
		loop&lt;br /&gt;
			wait(semA);&lt;br /&gt;
			&amp;lt;critical&amp;gt;&lt;br /&gt;
			signal(semB);&lt;br /&gt;
			&amp;lt;non-critical&amp;gt;&lt;br /&gt;
	end&lt;br /&gt;
end A;&lt;br /&gt;
&lt;br /&gt;
process B:&lt;br /&gt;
	begin&lt;br /&gt;
		loop&lt;br /&gt;
			wait(semB);&lt;br /&gt;
			&amp;lt;critical&amp;gt;&lt;br /&gt;
			signal(semA);&lt;br /&gt;
			&amp;lt;non-critical&amp;gt;&lt;br /&gt;
	end&lt;br /&gt;
end B;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Koju uslugu operativni sistem treba da obezbedi procesima da bi oni koristili preklope (&#039;&#039;overlays&#039;&#039;)?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Preklopi ne zahtevaju podršku OS-a. Sve obavlja prevodilac i generisani kod. OS samo obezbeđuje usluge za alokaciju dela virtuelnog adresnog prostora.&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Ako  je  učestanost  pogotka  u  TLB  90%,  a  vreme  pristupa  TLB  iznosi  20%  od  vremena pristupa  fizičkoj  memoriji,  koliko  (procentualno)  je  duže  efektivno  vreme  pristupa  virtuelnoj memoriji u odnosu na pristup fizičkoj memoriji kod straničenja u dva nivoa?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
0.9 * ( 0.2t_ram + t_ram) + 0.1 * ( 0.2t_ram + 3t_ram) = 1.40 t_ram&lt;br /&gt;
&lt;br /&gt;
Odnos: 40%&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Šta je svrha tehnike &#039;&#039;copy-on-write&#039;&#039; kod stranične organizacije virtuelne memorije? &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Služi sa uštedu memorije koja bi se bespotrebno trošila sve dok jedan od procesa ne zatraži promenu te stranice kada se alocira nova stranica i kopira se sadržaj. Ukoliko više procesa dele istu stranicu, samo će onaj koji je napravio izmenu dobiti novu stranicu dok će ostali nastaviti da dele istu stranicu.&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Koja je razlika između sinhronog i asinhronog slanja podataka na izlazni uređaj? &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Sinhronim slanjem podataka proces zadaje operaciju i po potrebi se suspenduje i nastavlja tek kada se zahtevana operacija završi.&lt;br /&gt;
Kod asinhronog poziva pozivajući proces samo zadaje operaciju i nastavlja izvršavanje.&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
U  nekom  fajl  sistemu  u  sistemskom  pozivu  za  otvaranje  fajla  proces  navodi  da  li  će  fajl samo čitati ili ga i na bilo koji način menjati. U zavisnosti od toga, taj  sistemski  poziv  zaključava fajl sa jednim  od dve vrste ključa.  Ako  se  fajl  otvara  samo  za čitanje,  fajl  se  zaključava deljenim ključem; ako se fajl otvara za izmenu, zaključava se ekskluzivnim ključem. Ukoliko poziv ne može da se izvrši zbog toga što ključ ne može da se dobije, poziv se otkazuje bez izmena u fajl sistemu i vraća se greška. &lt;br /&gt;
&lt;br /&gt;
Procesi  A,  B,  C  i  D  izvršavaju  sistemske  pozive  otvaranja  i  zatvaranja  istog  fajla  u  sledećem redosledu (neki proces izvršava poziv zatvaranja fajla samo ako ga je uspešno otvorio): &lt;br /&gt;
&lt;br /&gt;
# A: open(READ) &lt;br /&gt;
# B: open(WRITE) &lt;br /&gt;
# C: open(READ) &lt;br /&gt;
# A: close &lt;br /&gt;
# C: close &lt;br /&gt;
# D: open(WRITE) &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Uspešno: 1, 3, 4, 5, 6&lt;br /&gt;
&lt;br /&gt;
Neuspešno: 2&lt;br /&gt;
&lt;br /&gt;
== 10. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Šta je najveći nedostatak organizacije fajl sistema pomoću FAT?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Veoma velika osetljivost na otkaze. Bilo kakvo oštećenje u FAT uzrokuje štetu. Moguće je uništiti ceo fajlsistem.&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОС1]]&lt;/div&gt;</summary>
		<author><name>SrdjanKuzmanovic</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80_2013&amp;diff=2970</id>
		<title>ОС1/Септембар 2013</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80_2013&amp;diff=2970"/>
		<updated>2021-09-22T23:25:37Z</updated>

		<summary type="html">&lt;p&gt;SrdjanKuzmanovic: Ispravka resenja&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
[http://os.etf.bg.ac.rs/OS1/rokovi/2013/sep/Sep%202013.pdf Zadaci na stranici predmeta.]&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Šta  je  bio osnovni  motiv  uvođenja  multiprogramiranja  u  do tada paketne računarske sisteme?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Ovo pitanje pojavilo se na septembarskom roku 2011. godine kao 1. pitanje.&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Korišćenjem standardnih bibliotečnih funkcija &amp;lt;code&amp;gt;setjmp()&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;longjmp()&amp;lt;/code&amp;gt;, realizovati operaciju &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;void yield(jmp_buf old, jmp_buf new);&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
koja čuva kontekst niti čiji je &amp;lt;code&amp;gt;jmp_buf&amp;lt;/code&amp;gt; dat kao prvi argument, oduzima joj procesor i restaurira kontekst niti čiji je &amp;lt;code&amp;gt;jmp_buf&amp;lt;/code&amp;gt; dat kao drugi argument, kojoj predaje procesor. &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void yield(jmp_buf old, jmp_buf new) {&lt;br /&gt;
	if(setjmp(old) == 0) {&lt;br /&gt;
		longjmp(new, 1);	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Korišćenjem  sistemskih  poziva &amp;lt;code&amp;gt;fork()&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;execlp()&amp;lt;/code&amp;gt; napisati program &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; koji, kada se pokrene kao proces, kreira procese-decu nad svim programima koji se nalaze u fajlovima čija su imena data argumentima programa &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; (npr. &amp;lt;code&amp;gt;run p1.exe p2.exe p3.exe&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int main(int argc, char* argv[]) {&lt;br /&gt;
	for(int i = 1; i &amp;lt; argc; i++) {&lt;br /&gt;
		int pid = fork();&lt;br /&gt;
		if(pid == 0) {&lt;br /&gt;
			execlp(argv[i]);&lt;br /&gt;
			return -1;&lt;br /&gt;
		}&lt;br /&gt;
		else if(pid &amp;lt; 0)&lt;br /&gt;
			return -2;&lt;br /&gt;
	}&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Korišćenjem standardnih brojačkih semafora, napisati kod za inicijalizaciju i potrebnu sinhronizaciju između dva procesa koji u svoje kritične sekcije treba da ulaze strogo naizmeničn&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;ada&amp;quot;&amp;gt;&lt;br /&gt;
var semA : Semaphore := 1;&lt;br /&gt;
	semB : Semaphore := 0;&lt;br /&gt;
&lt;br /&gt;
process A:&lt;br /&gt;
	begin&lt;br /&gt;
		loop&lt;br /&gt;
			wait(semA);&lt;br /&gt;
			&amp;lt;critical&amp;gt;&lt;br /&gt;
			signal(semB);&lt;br /&gt;
			&amp;lt;non-critical&amp;gt;&lt;br /&gt;
	end&lt;br /&gt;
end A;&lt;br /&gt;
&lt;br /&gt;
process B:&lt;br /&gt;
	begin&lt;br /&gt;
		loop&lt;br /&gt;
			wait(semB);&lt;br /&gt;
			&amp;lt;critical&amp;gt;&lt;br /&gt;
			signal(semA);&lt;br /&gt;
			&amp;lt;non-critical&amp;gt;&lt;br /&gt;
	end&lt;br /&gt;
end B;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Koju uslugu operativni sistem treba da obezbedi procesima da bi oni koristili preklope (&#039;&#039;overlays&#039;&#039;)?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Preklopi ne zahtevaju podršku OS-a. Sve obavlja prevodilac i generisani kod. OS samo obezbeđuje usluge za alokaciju dela virtuelnog adresnog prostora.&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Ako  je  učestanost  pogotka  u  TLB  90%,  a  vreme  pristupa  TLB  iznosi  20%  od  vremena pristupa  fizičkoj  memoriji,  koliko  (procentualno)  je  duže  efektivno  vreme  pristupa  virtuelnoj memoriji u odnosu na pristup fizičkoj memoriji kod straničenja u dva nivoa?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
0.9 * ( 0.2t_ram + t_ram) + 0.1 * ( 0.2t_ram + 3t_ram) = 1.49 t_ram&lt;br /&gt;
&lt;br /&gt;
Odnos: 49%&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Šta je svrha tehnike &#039;&#039;copy-on-write&#039;&#039; kod stranične organizacije virtuelne memorije? &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Služi sa uštedu memorije koja bi se bespotrebno trošila sve dok jedan od procesa ne zatraži promenu te stranice kada se alocira nova stranica i kopira se sadržaj. Ukoliko više procesa dele istu stranicu, samo će onaj koji je napravio izmenu dobiti novu stranicu dok će ostali nastaviti da dele istu stranicu.&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Koja je razlika između sinhronog i asinhronog slanja podataka na izlazni uređaj? &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Sinhronim slanjem podataka proces zadaje operaciju i po potrebi se suspenduje i nastavlja tek kada se zahtevana operacija završi.&lt;br /&gt;
Kod asinhronog poziva pozivajući proces samo zadaje operaciju i nastavlja izvršavanje.&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
U  nekom  fajl  sistemu  u  sistemskom  pozivu  za  otvaranje  fajla  proces  navodi  da  li  će  fajl samo čitati ili ga i na bilo koji način menjati. U zavisnosti od toga, taj  sistemski  poziv  zaključava fajl sa jednim  od dve vrste ključa.  Ako  se  fajl  otvara  samo  za čitanje,  fajl  se  zaključava deljenim ključem; ako se fajl otvara za izmenu, zaključava se ekskluzivnim ključem. Ukoliko poziv ne može da se izvrši zbog toga što ključ ne može da se dobije, poziv se otkazuje bez izmena u fajl sistemu i vraća se greška. &lt;br /&gt;
&lt;br /&gt;
Procesi  A,  B,  C  i  D  izvršavaju  sistemske  pozive  otvaranja  i  zatvaranja  istog  fajla  u  sledećem redosledu (neki proces izvršava poziv zatvaranja fajla samo ako ga je uspešno otvorio): &lt;br /&gt;
&lt;br /&gt;
# A: open(READ) &lt;br /&gt;
# B: open(WRITE) &lt;br /&gt;
# C: open(READ) &lt;br /&gt;
# A: close &lt;br /&gt;
# C: close &lt;br /&gt;
# D: open(WRITE) &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Uspešno: 1, 3, 4, 5, 6&lt;br /&gt;
&lt;br /&gt;
Neuspešno: 2&lt;br /&gt;
&lt;br /&gt;
== 10. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Šta je najveći nedostatak organizacije fajl sistema pomoću FAT?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Veoma velika osetljivost na otkaze. Bilo kakvo oštećenje u FAT uzrokuje štetu. Moguće je uništiti ceo fajlsistem.&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОС1]]&lt;/div&gt;</summary>
		<author><name>SrdjanKuzmanovic</name></author>
	</entry>
</feed>