<?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=BogdanW3</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=BogdanW3"/>
	<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/BogdanW3"/>
	<updated>2026-06-03T23:53:19Z</updated>
	<subtitle>Кориснички доприноси</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%9C%D0%B0%D1%81%D1%82%D0%B5%D1%80_-_%D0%B7%D0%B8%D0%BC%D1%81%D0%BA%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8316</id>
		<title>Категорија:Мастер - зимски семестар</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%9C%D0%B0%D1%81%D1%82%D0%B5%D1%80_-_%D0%B7%D0%B8%D0%BC%D1%81%D0%BA%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8316"/>
		<updated>2026-03-01T13:26:02Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Odvajanje mastera u sortiranju semestara&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Листа предмета који се држе на мастер студијама у зимском семестру.&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Семестри|M1]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%9F%D0%B5%D1%82%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8315</id>
		<title>Категорија:Пети семестар</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%9F%D0%B5%D1%82%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8315"/>
		<updated>2026-03-01T13:21:56Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Popravka pogresno unetog sortkey-ja&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Категорија за предмете из петог семестра.&lt;br /&gt;
[[Категорија:Семестри|05]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%9C%D0%B0%D1%81%D1%82%D0%B5%D1%80_-_%D0%B7%D0%B8%D0%BC%D1%81%D0%BA%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8314</id>
		<title>Категорија:Мастер - зимски семестар</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%9C%D0%B0%D1%81%D1%82%D0%B5%D1%80_-_%D0%B7%D0%B8%D0%BC%D1%81%D0%BA%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8314"/>
		<updated>2026-03-01T13:21:09Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Sortiranje semestara&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Листа предмета који се држе на мастер студијама у зимском семестру.&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Семестри|09]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%9E%D1%81%D0%BC%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8313</id>
		<title>Категорија:Осми семестар</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%9E%D1%81%D0%BC%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8313"/>
		<updated>2026-03-01T13:21:01Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Sortiranje semestara&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Категорија за предмете из осмог семестра.&lt;br /&gt;
[[Категорија:Семестри|08]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%A1%D0%B5%D0%B4%D0%BC%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8312</id>
		<title>Категорија:Седми семестар</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%A1%D0%B5%D0%B4%D0%BC%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8312"/>
		<updated>2026-03-01T13:20:52Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Sortiranje semestara&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Категорија за предмете из седмог семестра.&lt;br /&gt;
[[Категорија:Семестри|07]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%A8%D0%B5%D1%81%D1%82%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8311</id>
		<title>Категорија:Шести семестар</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%A8%D0%B5%D1%81%D1%82%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8311"/>
		<updated>2026-03-01T13:20:43Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Sortiranje semestara&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Категорија за предмете из шестог семестра.&lt;br /&gt;
[[Категорија:Семестри|06]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%9F%D0%B5%D1%82%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8310</id>
		<title>Категорија:Пети семестар</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%9F%D0%B5%D1%82%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8310"/>
		<updated>2026-03-01T13:20:36Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Sortiranje semestara&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Категорија за предмете из петог семестра.&lt;br /&gt;
[[Категорија:Семестри]|05]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%A7%D0%B5%D1%82%D0%B2%D1%80%D1%82%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8309</id>
		<title>Категорија:Четврти семестар</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%A7%D0%B5%D1%82%D0%B2%D1%80%D1%82%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8309"/>
		<updated>2026-03-01T13:20:24Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Sortiranje semestara&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Категорија за предмете из четвртог семестра.&lt;br /&gt;
[[Категорија:Семестри|04]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%A2%D1%80%D0%B5%D1%9B%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8308</id>
		<title>Категорија:Трећи семестар</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%A2%D1%80%D0%B5%D1%9B%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8308"/>
		<updated>2026-03-01T13:20:06Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Sortiranje semestara&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Категорија за предмете из трећег семестра.&lt;br /&gt;
[[Категорија:Семестри|03]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=SI_Wiki&amp;diff=8307</id>
		<title>SI Wiki</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=SI_Wiki&amp;diff=8307"/>
		<updated>2026-03-01T13:19:53Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Sortiranje semestara se izgubilo, pokusavam da popravim&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Добродошли на СИ Вики! ==&lt;br /&gt;
Овај вики је намењен за размену материјала везаних за СИ одсек. Овде можете наћи предавања, вежбе, решења рокова и сл.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Тренутно имамо {{NUMBEROFUSERS}} корисника и одржавамо {{PAGESINCAT:Рокови}} {{plural:{{PAGESINCAT:Рокови}}|страница|странице|страница}} рокова, {{PAGESINCAT:Лабораторијске вежбе}} {{plural:{{PAGESINCAT:Лабораторијске вежбе}}|страница|странице|страница}} лабораторијских вежби и {{PAGESINCAT:Предмети}} {{plural:{{PAGESINCAT:Предмети}}|страница|странице|страница}} предмета.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Позивамо вас да [[Project:Потребна помоћ|допринесете]] овом викију. Неопходно је само &#039;&#039;&#039;[[Посебно:RequestAccount|послати захтев за налог]]&#039;&#039;&#039;, и можете да почнете са уређивањем.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage__columns&amp;quot;&amp;gt;&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| category        = Семестри&lt;br /&gt;
| ordermethod     = sortkey&lt;br /&gt;
| order           = ascending&lt;br /&gt;
| format          = ,&amp;lt;div class=&amp;quot;mainpage__column&amp;quot;&amp;gt;\n== %TITLE% ==\n²{#dpl:¦category = %TITLE%¦namespace = ¦noresultsheader = &amp;lt;nowiki /&amp;gt;¦format = ²{главна страна СИ линк}²}²²{#dpl:¦category = %TITLE% (РТИ)¦notcategory = %TITLE%¦namespace = ¦noresultsheader = &amp;lt;nowiki /&amp;gt;¦format = ²{главна страна РТИ линк}²}²,&amp;lt;/div&amp;gt;\n,&lt;br /&gt;
| noresultsheader = &amp;lt;nowiki /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage__column&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Остали чланци ==&lt;br /&gt;
* [[Остали материјали]]&lt;br /&gt;
* [[Општи водичи]]&lt;br /&gt;
* [[Буџет]]&lt;br /&gt;
* [[Демонстратура]]&lt;br /&gt;
* [[:Категорија:Рокови|Рокови (категорија)]]&lt;br /&gt;
* [[:Категорија:Лабораторијске вежбе|Лабораторијске вежбе (категорија)]]&lt;br /&gt;
* [[:Категорија:Водичи|Водичи (категорија)]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mainpage__column&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== О пројекту ==&lt;br /&gt;
* [[Project:О нама|О пројекту]]&lt;br /&gt;
* &#039;&#039;&#039;[[Project:Потребна помоћ|Потребна помоћ]]&#039;&#039;&#039;&lt;br /&gt;
* [[Project:Упутства|Упутства]]&lt;br /&gt;
* [[Project:Направи|Направи страницу]]&lt;br /&gt;
* [[Project:Анкета|Резултати анкета]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
[[Категорија:SI Wiki]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%9F%D1%80%D0%B2%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8306</id>
		<title>Категорија:Први семестар</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%9F%D1%80%D0%B2%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8306"/>
		<updated>2026-03-01T13:19:15Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Sortiranje semestara&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Категорија за предмете из првог семестра.&lt;br /&gt;
[[Категорија:Семестри|01]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%94%D1%80%D1%83%D0%B3%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8305</id>
		<title>Категорија:Други семестар</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:%D0%94%D1%80%D1%83%D0%B3%D0%B8_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%80&amp;diff=8305"/>
		<updated>2026-03-01T13:18:59Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Sortiranje semestara&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Категорија за предмете из другог семестра.&lt;br /&gt;
[[Категорија:Семестри|02]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%88%D1%83%D0%BD_2023&amp;diff=7673</id>
		<title>Заштита података/Јун 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%88%D1%83%D0%BD_2023&amp;diff=7673"/>
		<updated>2024-06-13T12:11:46Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: /* 2. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Ispit u junskom roku 2023.&#039;&#039;&#039; održan je 16. juna. Održan je u dva termina (jedan SI, jedan RTI). Na RTI bilo je dostupno okruženje PyCharm kao i dokumentacija za Python. Ispit na RTI trajao je 90 minuta, a na SI sat vremena.&lt;br /&gt;
&lt;br /&gt;
== SI G1 ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
Koji od navedenih kriptografskih algoritama će moći da se koriste i nakon široke dostupnosti kvantnih računara?&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;
# RSA&lt;br /&gt;
# DSS&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;XMSS - extended Merkle Signature Scheme&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Lamport Diffie&amp;lt;/span&amp;gt;&lt;br /&gt;
# Diffie-Hellman&lt;br /&gt;
# AES&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;SPHINCS+&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
Potrebno je obezbediti zaštitu transfera veb sadržaja između veb servera A i veb klijenta B koji se nalaze povezani na internet. Ono što je neophodno obezbediti je da strana koja prima poruke u svakom trenutku bude sigurna da podatke koji se prenose niko nije promenio niti pročitao tokom prenosa, kao i sa koje tačno IP adrese su paketi došli. Pri tome potrebno je obezbediti minimalno opterećenje, kako procesora, tako i mrežne veze veb servera. Protokol koji zadovoljava sve prethodno postavljene kriterijume je:&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;
# AH u transportnom režimu rada&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;ESP u tunel režimu rada&amp;lt;/span&amp;gt;&lt;br /&gt;
# IKE&lt;br /&gt;
# TLS&lt;br /&gt;
# AH u tunel režimu rada&lt;br /&gt;
# QUIC&lt;br /&gt;
# ESP u transportnom režimu rada&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
Na slici je dat prvi deo Kerberos v4 autentikacije:&lt;br /&gt;
* &amp;lt;math&amp;gt; (1) \quad \mathbf{C \rightarrow AS} \quad ID_c \parallel ID_{tgs} \parallel TS_1 &amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt; (2) \quad \mathbf{AS \rightarrow C} \quad E\left( K_c, \left[ \qquad \parallel TS_2 \parallel Lifetime_2 \parallel Ticket_{tgs} \right] \right) &amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt; \qquad Ticket_{tgs} = E\left( K_{tgs}, \left[ \qquad \parallel TS_2 \parallel Lifetime_2 \right]  \right) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elementi koji nedostaju u Ticket&amp;lt;sub&amp;gt;tgs&amp;lt;/sub&amp;gt; (ne i u poruci (2)) su:&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;
# identifikator servera AS&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;identifikator TGS&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;identifikator klijenta C&amp;lt;/span&amp;gt;&lt;br /&gt;
# IP adresa servera V&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;IP adresa klijenta C&amp;lt;/span&amp;gt;&lt;br /&gt;
# IP adresa servera AS&lt;br /&gt;
# ključ kojim komuniciraju klijent i autentikacioni server AS&lt;br /&gt;
# ključ kojim komuniciraju klijent i server V&lt;br /&gt;
# identifikator servera V&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;ključ kojim komuniciraju klijent i TGS&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
U AMD SEV lancu sertifikata par ključeva koji je jedinstven za svaki čip je:&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;
# PEK&lt;br /&gt;
# ASK&lt;br /&gt;
# ARK&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;CEK&amp;lt;/span&amp;gt;&lt;br /&gt;
# PDH&lt;br /&gt;
# OCA&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Ovaj ključ, zvani &#039;&#039;Chip Endorsement Key&#039;&#039;, pravi proizvođač čipa (AMD) i potpisuje svojim ključem (ASK).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
Ključ(evi) koji se slučajno generišu u AMD SEV sigurnoj komunikaciji između klijenta i servera je/su:&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;TEK&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;TIK&amp;lt;/span&amp;gt;&lt;br /&gt;
# KEK&lt;br /&gt;
# KIK&lt;br /&gt;
# VEK&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;logička bomba,zadnja vrata,rootkit,spamer,keylogger,flooder,downloader,adware,ransomware&amp;quot;&amp;gt;&lt;br /&gt;
# Nikola je primetio da i kada ugasi pretraživač i mejl servis, količina saobraćaja prema njegovom računaru ostaje izraženo povišena. Radi se o tipu malicioznog softvera koji se naziva &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;flooder&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Tip propusta koji se nalazi u sledećem kodu naziva se &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;zadnja vrata&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
if password = &amp;quot;aUtH h4ck3r&amp;quot; then login = USER_OK&lt;br /&gt;
else if correct_login(user, password) then login = USER_OK&lt;br /&gt;
else login = USER_FAILED&lt;br /&gt;
if login == USER_OK then login()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
Šta se sve nalazi u strukturi RecipientInfo prilikom slanja S/MIME poruke tipa obmotani podaci? Ukoliko se broj primalaca poveća, da li se i kako menja broj ovih struktura? Obrazložiti.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
Blok o primaocu sadrži sledeće podatke:&lt;br /&gt;
* identifikator sertifikata javnog ključa primaoca,&lt;br /&gt;
* identifikatori algoritama korišćenih da se šifruje ključ sesije i sadržaj poruke, i&lt;br /&gt;
* šifrovani ključ sesije.&lt;br /&gt;
Ukoliko se broj primalaca poveća, potrebno je dodati još ovih blokova, jer svaki primalac ima različit javni ključ pa se sa svakim uspostavlja različit ključ sesije.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
Sledeći algoritmi omogućavaju dobijanje različitih kriptografskih ključeva u svakoj TLS razmeni i to takvih da je moguća verifikacija porekla ključeva.&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;RSA&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ephemeral Diffie Hellman&amp;lt;/span&amp;gt;&lt;br /&gt;
# Anonymous Diffie Hellman&lt;br /&gt;
# Fixed Diffie Hellman&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovom porukom se predlažu kriptografski algoritmi koji će biti korišćeni u toku TLS sesije:&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;
# Server Hello&lt;br /&gt;
# Server Hello Done&lt;br /&gt;
# Client Hello Done&lt;br /&gt;
# Certificate Verify&lt;br /&gt;
# Certificate Request&lt;br /&gt;
# Finished&lt;br /&gt;
# Client Key Exchange&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Client Hello&amp;lt;/span&amp;gt;&lt;br /&gt;
# Change Cipher Specification&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
Prikazano je zaglavlje jednog bloka transakcija na bitcoin blokčejnu. Ako prikazani hash odslikava zahtevanu težinu problema potvrde bloka, koliko je prosečno potrebno različitih Nonce vrednosti da bude isprobano dok se ne dobije odgovarajuća potvrda transakcije? Smatrati da je raspodela hash funkcije uniformna. Odgovor dati u obliku &#039;&#039;2^n&#039;&#039;.&lt;br /&gt;
* Number Of Transactions: 1502&lt;br /&gt;
* Transaction Volume: 316.33241479 BTC&lt;br /&gt;
* Transaction Fees: 0.06640796 BTC&lt;br /&gt;
* Height: 685698&lt;br /&gt;
* Time: 2021-05-31 22:38:48&lt;br /&gt;
* Bits: 386752379&lt;br /&gt;
* Size: 896,885(bytes)&lt;br /&gt;
* Version: 536870916&lt;br /&gt;
* Nonce: 432023578&lt;br /&gt;
* Block Reward: 6.25 BTC&lt;br /&gt;
* Days Destroyed: 6,678&lt;br /&gt;
* Hash: 000000000000000000027e3d890d8487f45f409c6b9e3a1321a82577f00d5126&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;2^78&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Videti objašnjenje za [[#9. zadatak 2|deveti zadatak iz G2]].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SI G2 ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
Koji od navedenih algoritama mogu da daju ispravne digitalne potpise koji mogu da imaju različite vrednosti za istu poruku potpisanu istim ključem?&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;
# Lamport Diffie&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;DSS&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;ElGamal&amp;lt;/span&amp;gt;&lt;br /&gt;
# Winternitz&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;RSA PSS&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
Potrebno je obezbediti zaštitu transfera veb sadržaja između veb servera A i veb klijenta B koji se nalaze povezani na internet. Ono što je neophodno obezbediti je da strana koja prima poruke u svakom trenutku bude sigurna da podatke koji se prenose niko nije promenio tokom prenosa, kao i sa koje tačno IP adrese su paketi došli. Pri tome potrebno je obezbediti minimalno opterećenje, kako procesora, tako i mrežne veze veb servera. Protokol koji zadovoljava sve prethodno postavljene kriterijume je:&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;AH u transportnom režimu rada&amp;lt;/span&amp;gt;&lt;br /&gt;
# ESP u tunel režimu rada&lt;br /&gt;
# IKE&lt;br /&gt;
# TLS&lt;br /&gt;
# AH u tunel režimu rada&lt;br /&gt;
# QUIC&lt;br /&gt;
# ESP u transportnom režimu rada&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Authentication Header nam obezbeđuje samo autentičnost podataka, što je nama ovde potrebno, kao i zaštitu nepromenljivih polja IP zaglavlja (iako je na snimcima predavanja možda rečeno da se IP adrese mogu menjati, ovaj odgovor je bio označen kao tačan). Kako se podaci prenose između jednog servera i klijenta, i kako je potrebno obezbediti minimalno opterećenje, dovoljno je da u ovom slučaju koristimo transportni režim rada.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
* &amp;lt;math&amp;gt;(1) \quad \mathbf{C \rightarrow AS} \quad ID_c \parallel ID_{tgs} \parallel TS_1&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(2) \quad \mathbf{AS \rightarrow C} \quad E\left( K_c, \left[ K_{c,tgs} \parallel ID_{tgs} \parallel TS_2 \parallel Lifetime_2 \parallel Ticket_{tgs} \right] \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Ticket_{tgs} = E\left( K_{tgs}, \left[ K_{c,tgs} \parallel ID_c \parallel AD_c \parallel ID_{tgs} \parallel TS_2 \parallel Lifetime_2 \right]  \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(3) \quad \mathbf{C \rightarrow TGS} \quad ID_v \parallel Ticket_{tgs} \parallel Authenticator_c&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(4) \quad \mathbf{TGS \rightarrow C} \quad E\left(K_{c,tgs}, \left[ K_{c,v} \parallel ID_v \parallel TS_4 \parallel Ticket_v \right]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Ticket_{tgs} = E\left( K_{tgs}, \left[ K_{c,tgs} \parallel ID_c \parallel AD_c \parallel ID_{tgs} \parallel TS_2 \parallel Lifetime_2 \right]  \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Ticket_v = E\left( K_v, \left[ K_{c,v} \parallel ID_c \parallel AD_c \parallel ID_v \parallel TS_4 \parallel Lifetime_4 \right]  \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Authenticator_c = E\left(K_{c,tgs}, \left[ ID_c \parallel AD_c \parallel TS_3 \right]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(5) \quad \mathbf{C \rightarrow V} \quad Ticket_v \parallel Authenticator_c&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(6) \quad \mathbf{V \rightarrow C} \quad E\left(K_{c,v}, \left[TS_5 + 1\right]\right) \text{(for mutual authentication)}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Ticket_v = E\left( K_v, \left[ K_{c,v} \parallel ID_c \parallel AD_c \parallel ID_v \parallel TS_4 \parallel Lifetime_4 \right]  \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Authenticator_c = E\left(K_{c,v}, \left[ ID_c \parallel AD_c \parallel TS_5 \right]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Na slici je data Kerberos v4 autentikacija. Sledeći stavovi su tačni:&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;Vreme &amp;lt;math&amp;gt;TS_3&amp;lt;/math&amp;gt; služi za to da spreči &#039;&#039;Replay&#039;&#039; napad tokom vremena trajanja tiketa &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# Vreme &amp;lt;math&amp;gt;TS_4&amp;lt;/math&amp;gt; služi za to da spreči &#039;&#039;Replay&#039;&#039; napad tokom vremena trajanja tiketa &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;&lt;br /&gt;
# Vreme &amp;lt;math&amp;gt;TS_5&amp;lt;/math&amp;gt; služi za to da spreči &#039;&#039;Replay&#039;&#039; napad tokom vremena trajanja tiketa &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;&lt;br /&gt;
# Ključ &amp;lt;math&amp;gt;K_{tgs}&amp;lt;/math&amp;gt; je javni ključ TGS&lt;br /&gt;
# Ključ &amp;lt;math&amp;gt;K_{tgs}&amp;lt;/math&amp;gt; je privatni ključ TGS&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ključ &amp;lt;math&amp;gt;K_{tgs}&amp;lt;/math&amp;gt; je ključ TGS koji dele TGS i AS&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;Lifetime_2 &amp;lt; Lifetime_4&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;Lifetime_2 = Lifetime_4&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;math&amp;gt;Lifetime_2 &amp;gt; Lifetime_4&amp;lt;/math&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;&amp;lt;math&amp;gt;TS_3&amp;lt;/math&amp;gt; sprečava napadača da ponovi poruku 3 kako bi obnovio &amp;lt;math&amp;gt;Ticket_v&amp;lt;/math&amp;gt; dok traje &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;. Ključ &amp;lt;math&amp;gt;K_{tgs}&amp;lt;/math&amp;gt; ne može biti privatni ključ TGS jer ga mora posedovati i AS, a kako Kerberos koristi samo simetričnu enkripciju znači da nisu uključeni javni i privatni ključevi u komunikaciji. &amp;lt;math&amp;gt;Lifetime_2&amp;lt;/math&amp;gt; mora biti duži od &amp;lt;math&amp;gt;Lifetime_4&amp;lt;/math&amp;gt; kako bi klijent mogao više puta da obnovi &amp;lt;math&amp;gt;Ticket_v&amp;lt;/math&amp;gt; tokom trajanja &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
U AMD SEV lancu sertifikata par ključeva koji je jedini dvostruko potpisan je:&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;PEK&amp;lt;/span&amp;gt;&lt;br /&gt;
# ASK&lt;br /&gt;
# ARK&lt;br /&gt;
# CEK&lt;br /&gt;
# PDH&lt;br /&gt;
# OCA&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Ovaj ključ je potpisan od strane OCA (ključ vlasnika platforme) i CEK (ključ proizvođača čipa).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
Ključ(evi) koji se ne koristi/koriste u AMD SEV sigurnoj komunikaciji između klijenta i servera je/su:&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;
# TIK&lt;br /&gt;
# KIK&lt;br /&gt;
# KEK&lt;br /&gt;
# TEK&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;VEK&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;logička bomba,zadnja vrata,rootkit,spamer,keylogger,flooder,downloader,adware,ransomware&amp;quot;&amp;gt;&lt;br /&gt;
# Marko je pronašao novu interesantnu igricu za svoj telefon. Pretražujući internet, Marko je pronašao sajt sa kojeg može da preuzme igricu besplatno. Kada je Marko preuzeo i instalirao igricu, aplikacija je od Marka tražila dozvolu za korišćenje nekoliko funkcionalnosti telefona. Neke od traženih dozvola su: &amp;quot;Pristup kontaktima telefona&amp;quot; i &amp;quot;Slanje SMS poruka&amp;quot;. Kojim tipom malvera je zaražena igrica? &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;spamer&amp;lt;/span&amp;gt;&lt;br /&gt;
# Koji tip malvera predstavlja sledeći fragment koda? &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;logička bomba&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
if datum is Friday the 13th:&lt;br /&gt;
    crash_computer();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
Sledeći algoritmi ne omogućavaju verifikaciju porekla ključeva.&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;Anonymous Diffie Hellman&amp;lt;/span&amp;gt;&lt;br /&gt;
# RSA&lt;br /&gt;
# Ephemeral Diffie Hellman&lt;br /&gt;
# Fixed Diffie Hellman&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Anonymous Diffie Hellman je osnovna varijanta Diffie-Hellman algoritma gde obe strane nemaju način da verifikuju javne ključeve druge strane pa je zato podložna man-in-the-middle napadu.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovom porukom se potvrđuju kriptografski algoritmi koji će biti korišćeni u toku TLS sesije:&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;
# Client Hello Done&lt;br /&gt;
# Certificate Request&lt;br /&gt;
# Change Cipher Specification&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Server Hello&amp;lt;/span&amp;gt;&lt;br /&gt;
# Finished&lt;br /&gt;
# Server Hello Done&lt;br /&gt;
# Client Hello&lt;br /&gt;
# Certificate Verify&lt;br /&gt;
# Client Key Exchange&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Kada klijent uspostavlja komunikaciju, u svojoj Client Hello poruci šalje predloge algoritama za korišćenje u sesiji, dok server te algoritme potvrđuje svojom prvom porukom odgoovra, odnosno Server Hello.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
Kada formiramo SMIME potpisane podatke, šta sve treba da sadrži blok o pošiljaocu (&#039;&#039;signer info&#039;&#039;)? Da li broj ovih blokova zavisi od broja primalaca ili ne? Obrazložiti.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
Blok o pošiljaocu treba da sadrži:&lt;br /&gt;
* sertifikat javnog ključa potpisivača,&lt;br /&gt;
* identifikatore algoritama za kreiranje i šifrovanje potpisa poruke, i&lt;br /&gt;
* šifrovanog potpisa poruke.&lt;br /&gt;
Nije neophodno praviti više ovakvih blokova za svakog primaoca, jer se podaci u njemu ne razlikuju u zavisnosti od primaoca.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
Prikazano je zaglavlje jednog bloka transakcija na bitcoin blokčejnu. Ako prikazani hash odslikava zahtevanu težinu problema potvrde bloka, koliko je prosečno potrebno različitih Nonce vrednosti da bude isprobano dok se ne dobije odgovarajuća potvrda transakcije? Smatrati da je raspodela hash funkcije uniformna. Odgovor dati u obliku &#039;&#039;2^n&#039;&#039;.&lt;br /&gt;
* Number Of Transactions: 1502&lt;br /&gt;
* Transaction Volume: 316.33241479 BTC&lt;br /&gt;
* Transaction Fees: 0.06640796 BTC&lt;br /&gt;
* Height: 685698&lt;br /&gt;
* Time: 2021-05-31 22:38:48&lt;br /&gt;
* Bits: 386752379&lt;br /&gt;
* Size: 896,885(bytes)&lt;br /&gt;
* Version: 536870916&lt;br /&gt;
* Nonce: 432023578&lt;br /&gt;
* Block Reward: 6.25 BTC&lt;br /&gt;
* Days Destroyed: 6,678&lt;br /&gt;
* Hash: 00000000000000000007ab43dfc1a8f73101f5fa2cd85dea59cdaf8f8d858351&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;2^77&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Broj 00000000000000000007ab43dfc1a8f73101f5fa2cd85dea59cdaf8f8d858351 u binarnoj reprezentaciji ima 77 nula na početku. Priznavan je takođe bio i odgovor 2&amp;lt;sup&amp;gt;76&amp;lt;/sup&amp;gt;, jer se u zadatku tražio prosečan broj različitih Nonce vrednosti. Odgovori 2&amp;lt;sup&amp;gt;19&amp;lt;/sup&amp;gt; i 2&amp;lt;sup&amp;gt;18&amp;lt;/sup&amp;gt; bili su priznavani sa polovinom bodova.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RTI ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
: &#039;&#039;Ovaj zadatak nije potpun. Ukoliko se sećate tačnih brojeva, možete ga upotpuniti.&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;[5 poena]&#039;&#039;&#039; Isto zadatak kao i na četvrtom izazovu, samo drugačiji potpis. (Verifikacija &#039;&#039;El Gamal&#039;&#039; potpisa)&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[0 poena]&#039;&#039;&#039; Predaja koda korišćenog za rešavanje prvog zadatka.&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Šta je od navedenog tačno za eXtended Merkle Signature Scheme?&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;Manji ključ od RSA&amp;lt;/span&amp;gt;&lt;br /&gt;
# Veći ključ od RSA&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Mora da pamti stanje&amp;lt;/span&amp;gt;&lt;br /&gt;
# Ne mora da pamti stanje&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Može da potpisuje više dokumenata&amp;lt;/span&amp;gt;&lt;br /&gt;
# Ne može da potpisuje više dokumenata&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Isti zadatak kao i [[Заштита података/Јун 2022#4. zadatak|4. zadatak iz juna 2022.]]&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&#039;&#039;&#039;[5 poena]&#039;&#039;&#039; Dat je digitalni sertifikat sličan onom iz [[Заштита података/Јун 2022#2. zadatak|2. zadatka iz juna 2022.]]. Potrebno je objasniti precizno šta se sve i na koji način treba obaviti kako bi &#039;&#039;browser&#039;&#039; mogao da verifikuje sertifikat.&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Isti zadatak kao i [[Заштита података/Август 2021#6. zadatak|6. zadatak iz avgusta 2021.]]&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[2 poena]&#039;&#039;&#039; Koji ključ povezuje vlasnika platforme i proizvođača hardvera u AMD-SEV lancu sertifikata?&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;
# ARK&lt;br /&gt;
# ASK&lt;br /&gt;
# CEK&lt;br /&gt;
# OCA&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;PEK&amp;lt;/span&amp;gt;&lt;br /&gt;
# PDH&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Koji od navedenih sertifikata se generišu na osnovu glavne tajne?&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;
# VEK&lt;br /&gt;
# TIK&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;KIK&amp;lt;/span&amp;gt;&lt;br /&gt;
# TEK&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;KEK&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[5 poena]&#039;&#039;&#039; &amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;autentikaciju,tajnost,ne znam&amp;quot;&amp;gt;&lt;br /&gt;
* Dat je deo šeme PGP protokola. Ova šema obezbeđuje &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;autentikaciju&amp;lt;/span&amp;gt;. (Netačan odgovor donosi -1 poen, odgovor ne znam donosi 0 poena)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Датотека:ZP jun 2023 zadatak 9.svg|PGP šema uz deveti zadatak.|frame|center]]&lt;br /&gt;
Neka je pošiljalac X, a primalac Y.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;Enkriptovan(PUx), ID(PUx), Enkriptovan(PUy), ID(PYx), Enkriptovan(PRx), ID(PRx), Enkriptovan(PRy), ID(PRy), PRx, PRy, PUx, PUy, lozinka&amp;quot;&amp;gt;&lt;br /&gt;
* Deo &#039;&#039;&#039;1&#039;&#039;&#039; je zapravo &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;lozinka&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Deo &#039;&#039;&#039;2&#039;&#039;&#039; je zapravo &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;Enkriptovan(PRx)&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Deo &#039;&#039;&#039;3&#039;&#039;&#039; je zapravo &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;ID(PUx)&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Deo &#039;&#039;&#039;4&#039;&#039;&#039; je zapravo &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;PRx&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Greškom došao &#039;&#039;&#039;Chacha&#039;&#039;&#039;, to je kolokvijumsko gradivo.&lt;br /&gt;
&lt;br /&gt;
=== 11. zadatak ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&#039;&#039;&#039;[5 poena]&#039;&#039;&#039; Precizno objasniti kako se autentikuje klijent od strane servera ako ima autentikacije kod TLS &#039;&#039;Handshake&#039;&#039; protokola.&lt;br /&gt;
&lt;br /&gt;
=== 12. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; &amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot;&amp;gt;&lt;br /&gt;
# GCM za tajnost koristi &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-options=&amp;quot;ECB,CBC,CFB,OFB,Counter,CCM&amp;quot;&amp;gt;Counter&amp;lt;/span&amp;gt;.&lt;br /&gt;
# GCM za autentikaciju koristi &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-options=&amp;quot;ECB,CBC,CFB,OFB,Counter,CCM&amp;quot;&amp;gt;CBC&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Kod GCM u procesu dešifrovanja primenjuje se &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-options=&amp;quot;enkripcioni, dekripcioni&amp;quot;&amp;gt;enkripcioni&amp;lt;/span&amp;gt; algoritam.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 13. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Isti zadatak kao i [[Заштита података/Јун 2022#10. zadatak|4. zadatak iz juna 2022.]]&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%81%D0%BA%D0%B8_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80/%D0%9F%D1%80%D0%BE%D0%B1%D0%BD%D0%B8_%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B8_2022&amp;diff=7419</id>
		<title>Системски софтвер/Пробни тестови 2022</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%81%D0%BA%D0%B8_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80/%D0%9F%D1%80%D0%BE%D0%B1%D0%BD%D0%B8_%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B8_2022&amp;diff=7419"/>
		<updated>2024-03-12T07:28:54Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Mala popravka odgovora za 5. zadatak&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Пробни тестови 2022&#039;&#039;&#039; били су дати на &#039;&#039;Moodle&#039;&#039; курсу предмета.&lt;br /&gt;
{{решења}}&lt;br /&gt;
&lt;br /&gt;
== К1 - теорија ==&lt;br /&gt;
=== 1. задатак ===&lt;br /&gt;
У наставку су дате дефиниције неких типова података &amp;lt;code&amp;gt;StructTypeA&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;StructTypeB&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
typedef struct&lt;br /&gt;
{&lt;br /&gt;
  char  fA1;&lt;br /&gt;
  long  fA2;&lt;br /&gt;
  short fA3;&lt;br /&gt;
} StructTypeA;&lt;br /&gt;
&lt;br /&gt;
typedef struct&lt;br /&gt;
{&lt;br /&gt;
  int         fB1;&lt;br /&gt;
  int         fB2;&lt;br /&gt;
  short       fB3;&lt;br /&gt;
  StructTypeA fB4;&lt;br /&gt;
  char        fB5;&lt;br /&gt;
  short       fB6;&lt;br /&gt;
} StructTypeB;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Допунити следеће констатације уколико се посматра &#039;&#039;amd64&#039;&#039; архитектура и &#039;&#039;System V ABI&#039;&#039; конвенција:&lt;br /&gt;
* Величина структуре &amp;lt;code&amp;gt;StructTypeB&amp;lt;/code&amp;gt; изражено у бајтовима односно &amp;lt;code&amp;gt;sizeof(StructTypeB)&amp;lt;/code&amp;gt; износи &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;48&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Померај до поља &amp;lt;code&amp;gt;fB4.fA1&amp;lt;/code&amp;gt; гледано од почетка структуре &amp;lt;code&amp;gt;StructTypeB&amp;lt;/code&amp;gt; износи &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;16&amp;lt;/span&amp;gt; изражено у броју адресибилних јединица (бајтова).&lt;br /&gt;
* Најдужи континуални низ неискоришћених односно &#039;&#039;padding&#039;&#039; бајтова у оквиру структуре &amp;lt;code&amp;gt;StructTypeB&amp;lt;/code&amp;gt; почиње на померају &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;17&amp;lt;/span&amp;gt; изражено у броју адресибилних јединица (бајтова) гледано од почетка структуре &amp;lt;code&amp;gt;StructTypeB&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Структура &amp;lt;code&amp;gt;StructTypeB&amp;lt;/code&amp;gt; садржи укупно &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;24&amp;lt;/span&amp;gt; неискоришћених односно &#039;&#039;padding&#039;&#039; бајтова.&lt;br /&gt;
&#039;&#039;&#039;Напомене:&#039;&#039;&#039;&lt;br /&gt;
* Све одговоре треба унети у &amp;lt;u&amp;gt;децималном формату&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 2. задатак ===&lt;br /&gt;
У наставку је дата декларација функције &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; и дефиниције пратећих типова података:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
typedef struct&lt;br /&gt;
{&lt;br /&gt;
  long f1;&lt;br /&gt;
  long f2;&lt;br /&gt;
  long f3;&lt;br /&gt;
} StructType;&lt;br /&gt;
&lt;br /&gt;
extern StructType foo(&lt;br /&gt;
    char       param0,&lt;br /&gt;
    double     param1,&lt;br /&gt;
    StructType param2,&lt;br /&gt;
    void *     param3,&lt;br /&gt;
    StructType param4,&lt;br /&gt;
    float      param5,&lt;br /&gt;
    long       param6);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Допунити следеће констатације уколико се посматра amd64 архитектура и System V ABI конвенција:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;rax,rdx,комбинација rax и rdx,xmm0,xmm1,комбинација xmm0 и xmm1,комбинација GP/SSE,меморијски простор алоциран од стране позиваоца,меморијски простор алоциран од стране позване функције&amp;quot;&amp;gt;&lt;br /&gt;
* Повратна вредност функције &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; прослеђује се као &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;меморијски простор алоциран од стране позиваоца&amp;lt;/span&amp;gt; назад до позиваоца.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;rdi,rsi,rdx,rcx,r8,r9,xmm0,xmm1,xmm2,xmm3,xmm4,xmm5,xmm6,xmm7,комбинација GP,комбинација SSE,комбинација GP/SSE,stackPushI,stackPushII,stackPushIII,stackPushIV,stackPushV,stackPushVI,stackPushVII&amp;quot;&amp;gt;&lt;br /&gt;
* Параметар &amp;lt;code&amp;gt;param0&amp;lt;/code&amp;gt; прослеђује се као &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;rsi&amp;lt;/span&amp;gt; у функцију &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; приликом њеног позива.&lt;br /&gt;
* Параметар &amp;lt;code&amp;gt;param1&amp;lt;/code&amp;gt; прослеђује се као &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;xmm0&amp;lt;/span&amp;gt; у функцију &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; приликом њеног позива.&lt;br /&gt;
* Параметар &amp;lt;code&amp;gt;param2&amp;lt;/code&amp;gt; прослеђује се као &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;stackPushII&amp;lt;/span&amp;gt; у функцију &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; приликом њеног позива.&lt;br /&gt;
* Параметар &amp;lt;code&amp;gt;param3&amp;lt;/code&amp;gt; прослеђује се као &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;rdx&amp;lt;/span&amp;gt; у функцију &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; приликом њеног позива.&lt;br /&gt;
* Параметар &amp;lt;code&amp;gt;param4&amp;lt;/code&amp;gt; прослеђује се као &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;stackPushI&amp;lt;/span&amp;gt; у функцију &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; приликом њеног позива.&lt;br /&gt;
* Параметар &amp;lt;code&amp;gt;param5&amp;lt;/code&amp;gt; прослеђује се као &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;xmm1&amp;lt;/span&amp;gt; у функцију &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; приликом њеног позива.&lt;br /&gt;
* Параметар &amp;lt;code&amp;gt;param6&amp;lt;/code&amp;gt; прослеђује се као &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;rcx&amp;lt;/span&amp;gt; у функцију &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; приликом њеног позива.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Напомене:&#039;&#039;&#039;&lt;br /&gt;
* Одговор &amp;lt;u&amp;gt;комбинација GP&amp;lt;/u&amp;gt; представља одређену комбинацију (више од једног) искључиво &#039;&#039;General Purpose&#039;&#039; регистара.&lt;br /&gt;
* Одговор &amp;lt;u&amp;gt;комбинација SSE&amp;lt;/u&amp;gt; представља одређену комбинацију (више од једног) искључиво &#039;&#039;Streaming SIMD Extension&#039;&#039; регистара.&lt;br /&gt;
* Одговор &amp;lt;u&amp;gt;комбинација GP/SSE&amp;lt;/u&amp;gt; представља одређену комбинацију (више од једног) &#039;&#039;General Purpose&#039;&#039; и &#039;&#039;Streaming SIMD Extension&#039;&#039; регистара.&lt;br /&gt;
* Одговор &amp;lt;u&amp;gt;stackPush&#039;&#039;&amp;amp;lt;roman-numeral&amp;gt;&#039;&#039;&amp;lt;/u&amp;gt;, где је &#039;&#039;&amp;lt;roman-numeral&amp;gt;&#039;&#039; римски број, представља аргумент који се прослеђује преко стека при чему римски број означава међусобни поредак &#039;&#039;push&#039;&#039; операција односно редослед стављања датог аргумента на врх стека у односу на друге аргументе који се такође прослеђују преко стека.&lt;br /&gt;
&lt;br /&gt;
=== 3. задатак ===&lt;br /&gt;
Да ли функција, која током свог извршавања позива друге функције, сме без претходне алокације да користи стек за чување локалних променљивих уколико се посматра &#039;&#039;amd64&#039;&#039; архитектура и &#039;&#039;System V ABI&#039;&#039; конвенција?&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;
# Да, јер надаље позване функције неће мењати садржај меморије који одговара врху стека.&lt;br /&gt;
# Да, услед постојања имплицитне алокације стека приликом уласка у функцију.&lt;br /&gt;
# Да, због постојања &amp;quot;црвене зоне&amp;quot;.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Не.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. задатак ===&lt;br /&gt;
У наставку је дат садржај датотеке &#039;&#039;syscall.s&#039;&#039; са изворним асемблерским кодом:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
.intel_syntax noprefix&lt;br /&gt;
&lt;br /&gt;
.data&lt;br /&gt;
message:&lt;br /&gt;
.asciz &amp;quot;Hello World!\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
.text&lt;br /&gt;
loop:&lt;br /&gt;
    jmp loop&lt;br /&gt;
entry:&lt;br /&gt;
    mov rax, 1&lt;br /&gt;
    mov rdi, 1&lt;br /&gt;
    mov rsi, offset message&lt;br /&gt;
    mov rdx, offset 13&lt;br /&gt;
    syscall&lt;br /&gt;
&lt;br /&gt;
    mov rax, 60&lt;br /&gt;
    mov rdi, 0&lt;br /&gt;
    syscall&lt;br /&gt;
.end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Посматра се &#039;&#039;amd64&#039;&#039; архитектура и &#039;&#039;System V ABI&#039;&#039; конвенција, а покренуте су следеће команде:&lt;br /&gt;
 as -o syscall.o syscall.s&lt;br /&gt;
 ld --entry=entry -o executable syscall.o&lt;br /&gt;
 ./executable&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;
# Није могуће добити извршну датотеку executable зато што у процес линковања нису укључене C runtime објектне датотеке.&lt;br /&gt;
# Није могуће добити извршну датотеку executable зато што у процес линковања није укључена стандардна C библиотека.&lt;br /&gt;
# Програм се регуларно извршава и исписује поруку Hello World! на стандардни излаз.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Програм се регуларно извршава, али неће исписати поруку Hello World! зато што се врти у бесконачној петљи.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Није могуће добити извршну датотеку executable зато што симбол који представља улазну тачку није видљив линкеру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. задатак ===&lt;br /&gt;
Посматра се програм описан садржајем дела меморије и сегментом изворног &#039;&#039;C&#039;&#039; кода.&lt;br /&gt;
&lt;br /&gt;
Иницијални садржај дела меморије (дат у &amp;quot;школском&amp;quot; формату приказаном на аудиторним вежбама):&lt;br /&gt;
     +7       +6       +5       +4       +3       +2       +1       +0&lt;br /&gt;
 &lt;br /&gt;
 |  0xAA  |  0xAA  |  0xAA  |  0xAA  |  0x99  |  0x99  |  0x99  |  0x99  | &amp;lt;--- 0x8000004500 + 0x20&lt;br /&gt;
 |  0x88  |  0x88  |  0x88  |  0x88  |  0x77  |  0x77  |  0x77  |  0x77  | &amp;lt;--- 0x8000004500 + 0x18&lt;br /&gt;
 |  0x66  |  0x66  |  0x66  |  0x66  |  0x55  |  0x55  |  0x00  |  0x00  | &amp;lt;--- 0x8000004500 + 0x10&lt;br /&gt;
 |  0x00  |  0x80  |  0x00  |  0x00  |  0x45  |  0x02  |  0x33  |  0x33  | &amp;lt;--- 0x8000004500 + 0x08&lt;br /&gt;
 |  0x22  |  0x22  |  0x22  |  0x22  |  0x11  |  0x11  |  0x11  |  0x11  | &amp;lt;--- 0x8000004500 + 0x00&lt;br /&gt;
Сегмент изворног &#039;&#039;C&#039;&#039; кода:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
extern uint64_t identifier;&lt;br /&gt;
&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
  printf(&amp;quot;%#lx&amp;quot;, identifier);&lt;br /&gt;
&lt;br /&gt;
  uint64_t *a = (uint64_t *)identifier;&lt;br /&gt;
  printf(&amp;quot;%p&amp;quot;, a);&lt;br /&gt;
  printf(&amp;quot;%#lx&amp;quot;, a[0]);&lt;br /&gt;
  printf(&amp;quot;%#lx&amp;quot;, a[1]);&lt;br /&gt;
&lt;br /&gt;
  uint64_t *b = (uint64_t *)&amp;amp;identifier;&lt;br /&gt;
  printf(&amp;quot;%p&amp;quot;, b);&lt;br /&gt;
  printf(&amp;quot;%#lx&amp;quot;, b[0]);&lt;br /&gt;
  printf(&amp;quot;%#lx&amp;quot;, b[1]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Допунити следеће констатације уколико се посматра &#039;&#039;amd64&#039;&#039; архитектура и &#039;&#039;System V ABI&#039;&#039; конвенција, а &amp;lt;u&amp;gt;симбол&amp;lt;/u&amp;gt; &amp;lt;code&amp;gt;identifier&amp;lt;/code&amp;gt; има вредност &amp;lt;code&amp;gt;0x800000450A&amp;lt;/code&amp;gt;:&lt;br /&gt;
* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%#lx&amp;quot;, identifier);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x8000004502&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%p&amp;quot;, a);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x8000004502&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%#lx&amp;quot;, a[0]);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x3333222222221111&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%#lx&amp;quot;, a[1]);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x8000004502&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%p&amp;quot;, b);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x800000450A&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%#lx&amp;quot;, b[0]);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x8000004502&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%#lx&amp;quot;, b[1]);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x7777666666665555&amp;lt;/span&amp;gt;.&lt;br /&gt;
&#039;&#039;&#039;Напомене:&#039;&#039;&#039;&lt;br /&gt;
* Уколико неку вредност није могуће одредити на основу датог садржаја дела меморије као одговор треба унети знак питања (?)&lt;br /&gt;
* Све одговоре за успешно одређене вредности треба унети у истом формату каквом их програм исписује.&lt;br /&gt;
* Формат &amp;lt;code&amp;gt;&amp;quot;%p&amp;quot;&amp;lt;/code&amp;gt; служи за испис вредности показивача у хексадецималном формату са префиксом &amp;lt;code&amp;gt;0x&amp;lt;/code&amp;gt; (након префикса не исписују се водеће нуле).&lt;br /&gt;
* Формат &amp;lt;code&amp;gt;&amp;quot;%#x&amp;quot;&amp;lt;/code&amp;gt; служи за испис неозначеног целог броја у хексадецималном формату са префиксом &amp;lt;code&amp;gt;0x&amp;lt;/code&amp;gt; (након префикса не исписују се водеће нуле).&lt;br /&gt;
&lt;br /&gt;
== К1 - задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
У наставку је дат сегмент изворног асемблерског кода написан за &#039;&#039;amd64&#039;&#039; архитектуру према &#039;&#039;System V ABI&#039;&#039; конвенцији:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
.intel_syntax noprefix&lt;br /&gt;
.extern bar&lt;br /&gt;
.text&lt;br /&gt;
.global foo&lt;br /&gt;
.type foo, @function&lt;br /&gt;
foo:&lt;br /&gt;
   endbr64&lt;br /&gt;
   sub rsp, 72&lt;br /&gt;
   mov rdi, rsp&lt;br /&gt;
   mov r8d, DWORD PTR 132[rsp]&lt;br /&gt;
   mov ecx, 9&lt;br /&gt;
   mov edx, DWORD PTR 96[rsp]&lt;br /&gt;
   mov esi, 2&lt;br /&gt;
   call bar&lt;br /&gt;
   mov eax, DWORD PTR 44[rsp]&lt;br /&gt;
   add eax, DWORD PTR 28[rsp]&lt;br /&gt;
   add rsp, 72&lt;br /&gt;
   ret&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Написати сегмент изворног C кода, који одговара наведеном сегменту изворног асемблерског кода, тако да садржи само следеће елементе:&lt;br /&gt;
* дефиниције потенцијално потребних типова података,&lt;br /&gt;
* &amp;lt;u&amp;gt;декларацију&amp;lt;/u&amp;gt; функције &amp;lt;code&amp;gt;bar&amp;lt;/code&amp;gt; и&lt;br /&gt;
* дефиницију функције &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&#039;&#039;&#039;Напомене:&#039;&#039;&#039;&lt;br /&gt;
* Уколико се текстуални едитор &#039;&#039;Ace&#039;&#039; не учита на исправан начин треба &amp;lt;u&amp;gt;освежити интернет страницу&amp;lt;/u&amp;gt; односно извршити &#039;&#039;refresh&#039;&#039; (претходно унети одговори на друга питања чувају се на серверу и неће бити изгубљени услед освежавања интернет странице).&lt;br /&gt;
* Кликом на дугме за проверу решења могуће је одмах, чак и пре предаје, испитати исправност решења. &#039;&#039;Penalty regime&#039;&#039; дефинише износ казне односно пенала за сваку проверу решења изражено у процентима максималног могућег броја поена за ово питање. У складу са вредношћу &#039;&#039;Penalty regime&#039;&#039; пенали за проверу решења редом износе 0%, 0%, 0%, 30%, 40%, 50% и 60%. Дакле, &amp;lt;strong class=&amp;quot;success&amp;quot;&amp;gt;само прве три провере решења не узрокују никакав пенал&amp;lt;/strong&amp;gt;, &amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;четврта провера решења узрокује пенал од 30%, пета пенал од 40%, шеста пенал од 50%, док свака провера решења почев од седме узрокује пенал од 60% (потпуно тачно решење које је проверавано седам или више пута биће оцењено са (100 - 60)% поена)&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
typedef struct&lt;br /&gt;
{&lt;br /&gt;
  int array[16];&lt;br /&gt;
} StructType;&lt;br /&gt;
&lt;br /&gt;
extern StructType bar(int a, int b, int c, int d);&lt;br /&gt;
&lt;br /&gt;
int foo(StructType param)&lt;br /&gt;
{&lt;br /&gt;
  StructType result = bar(2, param.array[4], 9, param.array[13]);&lt;br /&gt;
  return result.array[7] + result.array[11];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Системски софтвер]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D0%BB%D0%B8%D0%B3%D0%B5%D0%BD%D1%82%D0%BD%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8/%D0%9A_2023&amp;diff=7381</id>
		<title>Интелигентни системи/К 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D0%BB%D0%B8%D0%B3%D0%B5%D0%BD%D1%82%D0%BD%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8/%D0%9A_2023&amp;diff=7381"/>
		<updated>2024-02-17T16:58:39Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Bob tabele u isti red&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&lt;br /&gt;
&#039;&#039;&#039;Колоквијум 2023. године&#039;&#039;&#039; нема поставку доступну са странице предмета, одржан је 25. новембра и трајао је 90 минута.&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
&#039;&#039;&#039;[15 поена]&#039;&#039;&#039; Кевин, Стјуарт и Боб (Малци) спремају се да крену у потрагу за злим господаром. Али пре тога је потребно да се добро наједу. Имају две опције – банане и јабуке. Јабуке ће их држати ситим 2 сата, а банане ће их држати сите 12 сати. Да би се убрале банане потребна су двојица, док јабуке могу убрати сами. Како што пре желе да крену у потрагу, јер не могу да буду дуго без злог господара, мораће да раде донесу одлуку шта ће радити у истом тренутку. Добици зависно од избора дати су испод у виду матрица, за Кевина, Стјуарта и Боба, респективно:&lt;br /&gt;
{|&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Боб бира банану&lt;br /&gt;
|-&lt;br /&gt;
! Кевин/Стјуарт !! банана !! јабука&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;банана&#039;&#039;&#039; || (4,4,4) || (6,2,6)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;јабука&#039;&#039;&#039; || (2,6,6) || (2,2,0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Боб бира јабуку&lt;br /&gt;
|-&lt;br /&gt;
! Кевин/Стјуарт !! банана !! јабука&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;банана&#039;&#039;&#039; || (6,6,2) || (0,2,2)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;јабука&#039;&#039;&#039; || (2,0,2) || (2,2,2)&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
* Да ли неки од играча има доминантну стратегију? Да ли је стратегија (ако постоји) строго или слабо доминантна? Укратко образложити.&lt;br /&gt;
&lt;br /&gt;
* Да ли постоји и колико парова стратегија чине Нешов еквилибријум? Дати образложење за сваки пар.&lt;br /&gt;
&lt;br /&gt;
* Да ли постоји и колико парова стратегија су Парето оптимални? Дати образложење за сваки пар.&lt;br /&gt;
&lt;br /&gt;
* Одредити профил стратегија који представља Нешов еквилибријум. Приказати заступљеност чистих стратегија у мешовитом еквилибријуму. Детаљно приказати поступак добијања, као и коначне добитке за сваког од играча.&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
&#039;&#039;&#039;[20 поена]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Малци су се након што су се најели, нашли на вратима пећине. Међутим, морају да допуне стабло испод користећи &#039;&#039;Minimax&#039;&#039; алгоритам како би прошли кроз врата. Како су у журби, примењују и алфа бета одсецање.&lt;br /&gt;
[[Датотека:INTSIS K 2023 zadatak 2.svg|оквир|центар|Слика уз други задатак под а]]&lt;br /&gt;
* Након проласка кроз прва врата, наишли су на друга. Сачекало их је исто стабло, али у паници су заборавили да су га већ видели. Пошто су у још већој журби, користе &#039;&#039;Negascout&#039;&#039; алгоритам. За део који је потребно поново проћи, нацртати опет тај део стабла и приказати кораке алгоритма.&lt;br /&gt;
[[Датотека:INTSIS K 2023 zadatak 2.svg|оквир|центар|Слика уз други задатак под б]]&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
&#039;&#039;&#039;[15 поена]&#039;&#039;&#039; Након дуге потраге, нашли су шефицу, Скарлет Опакић. Међутим, након неког времена појавио се нови господар Гру. Малци сада треба да одлуче да ли да пређу да служе Груу или да остану код Скарлет.&lt;br /&gt;
&lt;br /&gt;
R1 – Ако је Гру добар послодавац и (ако је зао или амбициозан), Малци прелазе да служе Груу.&lt;br /&gt;
&lt;br /&gt;
R2 – Ако чини добра и егоиста је, Малци остају да служе Скарлет.&lt;br /&gt;
&lt;br /&gt;
R3 – Ако је Гру окрутан и зао, Малци прелазе да служе Груу.&lt;br /&gt;
&lt;br /&gt;
R4 – Ако није амбициозан и није добар послодавац, Малци остају да служе Скарлет.&lt;br /&gt;
&lt;br /&gt;
e1 – Гру је добар послодавац (0.9)&lt;br /&gt;
&lt;br /&gt;
e2 – Гру је зао (0.7)&lt;br /&gt;
&lt;br /&gt;
е3 – Гру је окрутан (0.5)&lt;br /&gt;
&lt;br /&gt;
e4 – Гру је амбициозан (0.8)&lt;br /&gt;
&lt;br /&gt;
e5 – Гру је егоиста (0.5) &lt;br /&gt;
&lt;br /&gt;
e6 – Гру чини добра дела (0.5)&lt;br /&gt;
&lt;br /&gt;
Одредити факторе извесности у оба случаја и који је извеснији. Детаљно приказати поступак а затим попунити таблицу.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Табела уз трећи задатак&lt;br /&gt;
|-&lt;br /&gt;
! !! MB !! MD&lt;br /&gt;
|-&lt;br /&gt;
| eR1 ||  || &lt;br /&gt;
|-&lt;br /&gt;
| h1, eR1 ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| eR3 ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| h1, eR3 ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| h1cum ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| eR2 ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| h1, eR2 ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| eR4 ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| h2, eR4 ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| h2cum ||  ||&lt;br /&gt;
|}&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Интелигентни системи]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</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_2020&amp;diff=7273</id>
		<title>ОС2/Јануар 2020</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_2020&amp;diff=7273"/>
		<updated>2024-02-08T11:38:03Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Algoritam rasporedjivanja zahteva za diskom je Look, ne C-Look&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
[http://os.etf.bg.ac.rs/OS2/rokovi/2020/januar/OS2%20Jan%202020.pdf Zadaci na stranici predmeta.]&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Ukratko objasniti tehniku predviđanja trajanja narednog naleta izvršavanja pomoću eksponencijalnog usrednjavanja kod SJF algoritma raspoređivanja procesa.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Tehnika predviđanja trajanja narednog naleta izvršavanja pomoću eksponencijalnog usrednjavanja teži da što preciznije proceni trajanje narednog naleta. To postiže težinskim faktorisanjem prethodnih procena i trajanja prethodnih naleta.&lt;br /&gt;
&lt;br /&gt;
Formula koja se koristi za predviđanje:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\tau_{n+1} = \alpha t_n + (1-\alpha)\tau_n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gde je:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\tau_n&amp;lt;/math&amp;gt;: predviđeno vreme izvršavanja &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;t_n&amp;lt;/math&amp;gt;: stvarno vreme izvršavanja &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt;: koeficijent koji predstavlja uticaj istorije na naredna predviđanja.&lt;br /&gt;
:* Na primer, ako je &amp;lt;math&amp;gt;\alpha=0&amp;lt;/math&amp;gt;, istorija nema nikakvog značaja, a ako je &amp;lt;math&amp;gt;\alpha=1&amp;lt;/math&amp;gt;, samo poslednje izvršavanje se uzima u obzir procene. Generalno se koristi &amp;lt;math&amp;gt;\alpha=\frac{1}{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Na jeziku Java implementirati monitor sa dve operacije, &#039;&#039;flip&#039;&#039; i &#039;&#039;flop&#039;&#039;, koje klijenti mogu da pozivaju strogo naizmenično.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Monitor {&lt;br /&gt;
	public boolean flipIsNext = true;&lt;br /&gt;
&lt;br /&gt;
	public synchronized void flip() {&lt;br /&gt;
    	while (!flipIsNext) {&lt;br /&gt;
        	try {&lt;br /&gt;
            	wait();&lt;br /&gt;
            } catch (InterruptedException e) {}&lt;br /&gt;
        }&lt;br /&gt;
        flipIsNext ^= true;&lt;br /&gt;
        // execute flip operation&lt;br /&gt;
        notifyAll();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
	public synchronized void flop() {&lt;br /&gt;
    	while (flipIsNext) {&lt;br /&gt;
        	try {&lt;br /&gt;
            	wait();&lt;br /&gt;
            } catch (InterruptedException e) {}&lt;br /&gt;
        }&lt;br /&gt;
        flipIsNext ^= true;&lt;br /&gt;
        // execute flop operation&lt;br /&gt;
        notifyAll();&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;
Šta je &#039;&#039;marshalling&#039;&#039;? Šta je SOAP?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
* &#039;&#039;marshalling&#039;&#039; je serijalizacija strukture podataka nekog izvornog jezika u niz bajtova pogodnih za prenos.&lt;br /&gt;
* &#039;&#039;SOAP&#039;&#039; je &#039;&#039;message&#039;&#039; protokol koji postoji kao &amp;quot;međujezik&amp;quot; za komunikaciju između veb aplikacija napisanih u različitim izvornim jezicima.&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Stanje zauzeća resursa nekog sistema u nekom trenutku definisano je sledećim strukturama:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Allocation&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Max&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Available&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
! A&lt;br /&gt;
! B&lt;br /&gt;
! C&lt;br /&gt;
! A&lt;br /&gt;
! B&lt;br /&gt;
! C&lt;br /&gt;
! A&lt;br /&gt;
! B&lt;br /&gt;
! C&lt;br /&gt;
|-&lt;br /&gt;
| P1&lt;br /&gt;
| 2&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| P2&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
| 3&lt;br /&gt;
| 3&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; colspan=&amp;quot;3&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| P3&lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Da li u datom stanju treba odobriti zahtev (1,0,0) procesu &#039;&#039;P1&#039;&#039; (sprovesti ceo postupak i obrazložiti odgovor)?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Stanje posle predloga:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Allocation&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Max&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Available&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
! A&lt;br /&gt;
! B&lt;br /&gt;
! C&lt;br /&gt;
! A&lt;br /&gt;
! B&lt;br /&gt;
! C&lt;br /&gt;
! A&lt;br /&gt;
! B&lt;br /&gt;
! C&lt;br /&gt;
|-&lt;br /&gt;
| P1&lt;br /&gt;
| 3&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| P2&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
| 3&lt;br /&gt;
| 3&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; colspan=&amp;quot;3&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| P3&lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
U ovom stanju nije moguće završiti ni jedan proces - &#039;&#039;P1&#039;&#039; zahteva još 3xB (nedostupan) i 1xA. &#039;&#039;P2&#039;&#039; zahteva još 2xA, 2xB i 2xC (svi nedostupni). &#039;&#039;P3&#039;&#039; zahteva 1xA (nedostupan) i 1xC. To znači da je mrtva blokada moguća.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;P3&#039;&#039; bi mogao da se završi da procesu &#039;&#039;P1&#039;&#039; nije bio odobren zahtev. Zaključak je da ne treba odobriti zahtev &#039;&#039;P1(1,0,0)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Jedna realizacija protokola više čitalaca-jedan pisac (&#039;&#039;multiple readers – single writer&#039;&#039;) radi tako što pušta novog čitaoca ako već postoji čitalac koji čita. Koji problem postoji u toj realizaciji?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Problem u ovoj realizaciji je slučaj u kome pisac dolazi i čeka da čitalac završi čitanje. Moguće je beskrajno izgladnjivanje pisca ako neprestano dolaze novi čitaoci dok god postoji makar jedan čitaoc u sistemu.&lt;br /&gt;
&lt;br /&gt;
Ovaj problem se može zaobići ako, dok neki čitaoc čita, ne puštamo nove čitaoce ako je u međuvremenu u red došao i pisac.&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;
&lt;br /&gt;
&amp;lt;code&amp;gt;2, 5, 7, 4, 5, 7, 5, 3, 2, 5, 6, 7, 5, 6, 7, 2, 4, 5, 7&amp;lt;/code&amp;gt;&lt;br /&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, a koliko ako je OPT?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Odgovor LRU: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odgovor OPT: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Ukratko objasniti tehniku korišćenja rezervoara (&#039;&#039;pool&#039;&#039;) slobodnih okvira.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Sistemi obično održavaju rezervoar (&#039;&#039;pool&#039;&#039;) slobodnih okvira: kada se traži slobodan okvir, odmah je raspoloživ u bazenu, tako da se nova stranica učitava pre nego što se pokrene izbacivanje neke druge radi dopune rezervoara (što je moguće uraditi kasnije).&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
U redu zahteva za pristup disku nalaze se zahtevi za pristup sledećim cilindrima (po redosledu pristizanja): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;57, 38, 90, 125, 65, 36, 46.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prethodno opsluženi zahtev je bio na cilindru 41, a glava se kreće prema cilindrima sa većim brojevima. Napisati redosled opsluživanja ovih zahteva ukoliko je algoritam raspoređivanja &#039;&#039;LOOK&#039;&#039;.&lt;br /&gt;
&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;46, 57, 65, 90, 125, 38, 36.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Ukratko opisati principe mikrokernel arhitekture operativnog sistema.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
* Motiv: svesti OS jezgro na minimum, sve nepotrebne delove pretvoriti u sistemske programe i procese koji rade u korisničkom modu.&lt;br /&gt;
:* U kernelu ostaje samo sistemi za upravljanje procesa i memorije.&lt;br /&gt;
* Prednosti: proširivost, promenljivost i prenosivost.&lt;br /&gt;
* Mane: lošije performanse.&lt;br /&gt;
&lt;br /&gt;
== 10. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Koji mehanizam koristi sistem Android da bi iz Java programa pozivao usluge iz C biblioteka?&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
JNI (&#039;&#039;Java Native Interface&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОС2]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_2_%D0%A0%D0%A2%D0%98_2023&amp;diff=7123</id>
		<title>КДП/Лаб 2 РТИ 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_2_%D0%A0%D0%A2%D0%98_2023&amp;diff=7123"/>
		<updated>2023-12-28T19:22:43Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
&lt;br /&gt;
У зависности од групе било је потребно решити један од следеће два проблема.&lt;br /&gt;
&lt;br /&gt;
1. Решити DiningPhilosopher проблем користећи &amp;lt;code&amp;gt;ExecutorService&amp;lt;/code&amp;gt;  и где је потребно да сервер враћа филозоферу информацију када му је дозвољено да једе. Користити &amp;lt;code&amp;gt;System.currentTimeMillis()&amp;lt;/code&amp;gt; за дохватање времена и дозвоњено је користити &amp;lt;code&amp;gt;Future&amp;lt;/code&amp;gt; и друге синхронизационе примитиве за решавање задатка.&lt;br /&gt;
&lt;br /&gt;
2. TODO.&lt;br /&gt;
&lt;br /&gt;
== Решење ==&lt;br /&gt;
&lt;br /&gt;
Испод је дато решење за DiningPhilosophers.&lt;br /&gt;
&lt;br /&gt;
Изглед хијерархије фајлова:&lt;br /&gt;
 .&lt;br /&gt;
 ├── client&lt;br /&gt;
 │   └── Philosopher.java&lt;br /&gt;
 ├── common&lt;br /&gt;
 │   └── Service.java&lt;br /&gt;
 └── server&lt;br /&gt;
     ├── RequestHandler.java&lt;br /&gt;
     └── Server.java&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;Philosopher.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package client;&lt;br /&gt;
&lt;br /&gt;
import common.Service;&lt;br /&gt;
&lt;br /&gt;
public class Philosopher extends Thread{&lt;br /&gt;
&lt;br /&gt;
    public static final int NUM_OF_PHILOSOPHERS = 30;&lt;br /&gt;
    public static int curr_id = 0;&lt;br /&gt;
    public int id = 0;&lt;br /&gt;
    public Service service;&lt;br /&gt;
&lt;br /&gt;
    public Philosopher(Service service) {&lt;br /&gt;
        this.id = curr_id++;&lt;br /&gt;
&lt;br /&gt;
        this.service = service;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void run() {&lt;br /&gt;
&lt;br /&gt;
        while(true) {&lt;br /&gt;
            // think&lt;br /&gt;
            try {&lt;br /&gt;
                Thread.sleep((long) (Math.random() * 1000));&lt;br /&gt;
            } catch (InterruptedException e) {&lt;br /&gt;
                throw new RuntimeException(e);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            this.service.eat(this.id);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
&lt;br /&gt;
        Philosopher[] arr = new Philosopher[NUM_OF_PHILOSOPHERS];&lt;br /&gt;
&lt;br /&gt;
        Service service = new Service(&amp;quot;localhost&amp;quot;, 4001);&lt;br /&gt;
&lt;br /&gt;
        for(int i = 0; i &amp;lt; NUM_OF_PHILOSOPHERS; i++) {&lt;br /&gt;
            arr[i] = new Philosopher(service);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        for(int i = 0; i &amp;lt; NUM_OF_PHILOSOPHERS; i++) {&lt;br /&gt;
            arr[i].start();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;Service.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package common;&lt;br /&gt;
&lt;br /&gt;
import java.io.BufferedReader;&lt;br /&gt;
import java.io.InputStreamReader;&lt;br /&gt;
import java.io.OutputStreamWriter;&lt;br /&gt;
import java.io.PrintWriter;&lt;br /&gt;
import java.net.Socket;&lt;br /&gt;
&lt;br /&gt;
public class Service {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    String host;&lt;br /&gt;
    int port;&lt;br /&gt;
&lt;br /&gt;
    public Service(String host, int port) {&lt;br /&gt;
        this.host = host;&lt;br /&gt;
        this.port = port;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void eat(int id) {&lt;br /&gt;
&lt;br /&gt;
        try (&lt;br /&gt;
                Socket socket = new Socket(this.host, this.port);&lt;br /&gt;
                BufferedReader buffered_reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));&lt;br /&gt;
                PrintWriter print_writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);&lt;br /&gt;
                ) {&lt;br /&gt;
&lt;br /&gt;
            print_writer.println(&amp;quot;eat&amp;quot;+&amp;quot;#&amp;quot;+id);&lt;br /&gt;
&lt;br /&gt;
            // Get the resource&lt;br /&gt;
            String time = buffered_reader.readLine();&lt;br /&gt;
            System.out.println(&amp;quot;Filozofer sa id: &amp;quot; + id + &amp;quot; je dobio pristup u trenutku: &amp;quot; + time);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            e.printStackTrace();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;RequestHandler.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package server;&lt;br /&gt;
&lt;br /&gt;
import java.io.*;&lt;br /&gt;
import java.net.Socket;&lt;br /&gt;
import java.util.Scanner;&lt;br /&gt;
&lt;br /&gt;
public class RequestHandler extends Thread {&lt;br /&gt;
&lt;br /&gt;
    Socket sock;&lt;br /&gt;
    Server server;&lt;br /&gt;
&lt;br /&gt;
    public RequestHandler(Socket sock, Server server) {&lt;br /&gt;
        this.sock = sock;&lt;br /&gt;
        this.server = server;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void run() {&lt;br /&gt;
&lt;br /&gt;
        try (&lt;br /&gt;
                Socket socket = this.sock;&lt;br /&gt;
                BufferedReader buffered_reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));&lt;br /&gt;
                PrintWriter print_writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);&lt;br /&gt;
        ) {&lt;br /&gt;
&lt;br /&gt;
            String in = buffered_reader.readLine();&lt;br /&gt;
&lt;br /&gt;
            String[] data = in.split(&amp;quot;#&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            String operation = data[0];&lt;br /&gt;
            int id = Integer.parseInt(data[1]);&lt;br /&gt;
&lt;br /&gt;
            if (&amp;quot;eat&amp;quot;.equalsIgnoreCase(operation)) {&lt;br /&gt;
                server.test(id);&lt;br /&gt;
                server.eat(buffered_reader, print_writer);&lt;br /&gt;
                server.signal(id);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            e.printStackTrace();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;Server.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package server;&lt;br /&gt;
&lt;br /&gt;
import java.io.BufferedReader;&lt;br /&gt;
import java.io.PrintWriter;&lt;br /&gt;
import java.net.ServerSocket;&lt;br /&gt;
import java.net.Socket;&lt;br /&gt;
import java.util.concurrent.ExecutorService;&lt;br /&gt;
import java.util.concurrent.Executors;&lt;br /&gt;
&lt;br /&gt;
public class Server {&lt;br /&gt;
&lt;br /&gt;
    ExecutorService pool;&lt;br /&gt;
    final static int MAX_THREADS = 10;&lt;br /&gt;
&lt;br /&gt;
    public static final int NUM_OF_PHILOSOPHERS = 30;&lt;br /&gt;
    int []forks;&lt;br /&gt;
    int port;&lt;br /&gt;
&lt;br /&gt;
    public Server(int port) {&lt;br /&gt;
        this.forks = new int[NUM_OF_PHILOSOPHERS];&lt;br /&gt;
&lt;br /&gt;
        for(int i = 0; i &amp;lt; NUM_OF_PHILOSOPHERS; i++) {&lt;br /&gt;
            forks[i] = 2;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        pool = Executors.newFixedThreadPool(MAX_THREADS);&lt;br /&gt;
&lt;br /&gt;
        this.port = port;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public synchronized void test(int id) {&lt;br /&gt;
        int left = (id - 1 + NUM_OF_PHILOSOPHERS) % NUM_OF_PHILOSOPHERS;&lt;br /&gt;
        int right = (id + 1 + NUM_OF_PHILOSOPHERS) % NUM_OF_PHILOSOPHERS;&lt;br /&gt;
&lt;br /&gt;
        while(forks[id] != 2) {&lt;br /&gt;
            try {&lt;br /&gt;
                wait();&lt;br /&gt;
            } catch (InterruptedException e) {&lt;br /&gt;
                throw new RuntimeException(e);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        forks[left]--;&lt;br /&gt;
        forks[right]--;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void eat(BufferedReader rd, PrintWriter pw) {&lt;br /&gt;
        pw.println(System.currentTimeMillis());&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    public synchronized void signal(int id){&lt;br /&gt;
        int left = (id - 1 + NUM_OF_PHILOSOPHERS) % NUM_OF_PHILOSOPHERS;&lt;br /&gt;
        int right = (id + 1 + NUM_OF_PHILOSOPHERS) % NUM_OF_PHILOSOPHERS;&lt;br /&gt;
        forks[left]++;&lt;br /&gt;
        forks[right]++;&lt;br /&gt;
&lt;br /&gt;
        notifyAll();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
&lt;br /&gt;
        Server server = new Server(4001);&lt;br /&gt;
&lt;br /&gt;
        try (&lt;br /&gt;
                ServerSocket listener = new ServerSocket(server.port)&lt;br /&gt;
                ) {&lt;br /&gt;
            while(true) {&lt;br /&gt;
                Socket sock = listener.accept();&lt;br /&gt;
&lt;br /&gt;
//                new RequestHandler(sock, server).start();&lt;br /&gt;
&lt;br /&gt;
                server.pool.execute(new RequestHandler(sock, server));&lt;br /&gt;
            }&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
            e.printStackTrace();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:КДП]]&lt;br /&gt;
[[Категорија:Лабораторијске вежбе]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_%D0%A0%D0%A2%D0%98_2023&amp;diff=7121</id>
		<title>КДП/Лаб 1 РТИ 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_%D0%A0%D0%A2%D0%98_2023&amp;diff=7121"/>
		<updated>2023-12-27T19:57:40Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Dodat Moodle ulazni test, jedna grupa&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
== Улазни тест (WIP) ==&lt;br /&gt;
&lt;br /&gt;
=== 1. задатак ===&lt;br /&gt;
Да ли ће доћи до грешке при позиву obj.a() у следећем коду?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class A {&lt;br /&gt;
	public synchronized void a() {&lt;br /&gt;
		//neki kod ...&lt;br /&gt;
		b();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public void b() {&lt;br /&gt;
		//neki kod..&lt;br /&gt;
		notifyAll();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	static A obj = new A();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&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;
# Не.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. задатак ===&lt;br /&gt;
&lt;br /&gt;
Који од следећег су валидни начини да се иницијализује нит?&lt;br /&gt;
&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;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;Runnable r = new Runnable() {&lt;br /&gt;
	void run(){ /*neki kod*/ }&lt;br /&gt;
	};&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; class=&amp;quot;solution&amp;quot;&amp;gt;Runnable r = new Runnable() {&lt;br /&gt;
		void run(){ /*neki kod*/}&lt;br /&gt;
	};&lt;br /&gt;
Thread t = new Thread(r);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; class=&amp;quot;solution&amp;quot;&amp;gt;Thread t = new Thread();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; class=&amp;quot;solution&amp;quot;&amp;gt;public class Nit extends Thread {&lt;br /&gt;
	void run(){ /*neki kod*/ }&lt;br /&gt;
}&lt;br /&gt;
Nit t = new Nit();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; class=&amp;quot;solution&amp;quot;&amp;gt;Thread t = new Thread() {&lt;br /&gt;
	void run(){ /*neki kod*/ }&lt;br /&gt;
};&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. задатак ===&lt;br /&gt;
&lt;br /&gt;
Који од следећих су коректни начини да се употреби &amp;lt;code&amp;gt;Lock&amp;lt;/code&amp;gt;?&lt;br /&gt;
&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;syntaxhighlight lang=&amp;quot;java&amp;quot; class=&amp;quot;solution&amp;quot;&amp;gt;public void criticalSection() {&lt;br /&gt;
	lock.lock();&lt;br /&gt;
	try {&lt;br /&gt;
		//...&lt;br /&gt;
	} finally {&lt;br /&gt;
		lock.unlock();&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;public synchronized void criticalSection() {&lt;br /&gt;
	lock.lock();&lt;br /&gt;
	//...&lt;br /&gt;
	lock.unlock();&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;public void criticalSection() {&lt;br /&gt;
	lock.lock();&lt;br /&gt;
	//...&lt;br /&gt;
	lock.unlock();&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;public synchronized void criticalSection() {&lt;br /&gt;
	lock.lock();&lt;br /&gt;
	try {&lt;br /&gt;
		//...&lt;br /&gt;
	} finally {&lt;br /&gt;
		lock.unlock();&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
&lt;br /&gt;
У зависности од групе било је потребно решити један од следећих проблема:&lt;br /&gt;
&lt;br /&gt;
1. Решити &amp;lt;code&amp;gt;Unisex Bathroom&amp;lt;/code&amp;gt; проблем користећи &amp;lt;code&amp;gt;ReentrantLock&amp;lt;/code&amp;gt;. Потребно је да програм буде максимално конкурентан.&lt;br /&gt;
&lt;br /&gt;
2. Решити &amp;lt;code&amp;gt;Atomic Broadcast&amp;lt;/code&amp;gt; проблем користећи &amp;lt;code&amp;gt;AtomicInteger&amp;lt;/code&amp;gt;. Потребно је да програм буде максимално конкурентан.&lt;br /&gt;
&lt;br /&gt;
== Решење ==&lt;br /&gt;
&lt;br /&gt;
Испод је решење за Unisex Bathroom.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;Test.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
package UnisexBathLocksLab1PrvaGrupa;&lt;br /&gt;
&lt;br /&gt;
public class Test {&lt;br /&gt;
	&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		&lt;br /&gt;
		int m = 5;&lt;br /&gt;
		int w = 5;&lt;br /&gt;
		&lt;br /&gt;
		int N = 4;&lt;br /&gt;
		&lt;br /&gt;
		Bathroom  b = new Bathroom(N);&lt;br /&gt;
		&lt;br /&gt;
		Thread mt[] = new Thread[m];&lt;br /&gt;
		Thread wt[] = new Thread[m];&lt;br /&gt;
		&lt;br /&gt;
		for(int i = 0; i &amp;lt; m; i++) {&lt;br /&gt;
			mt[i] = new Man(b);&lt;br /&gt;
			mt[i].start();&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		for(int i = 0; i &amp;lt; w; i++) {&lt;br /&gt;
			wt[i] = new Woman(b);&lt;br /&gt;
			wt[i].start();&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;Woman.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
package UnisexBathLocksLab1PrvaGrupa;&lt;br /&gt;
&lt;br /&gt;
public class Woman extends Thread{&lt;br /&gt;
	&lt;br /&gt;
	public int id;&lt;br /&gt;
	public static int running_id = 0;&lt;br /&gt;
	&lt;br /&gt;
	Bathroom bath;&lt;br /&gt;
	&lt;br /&gt;
	public Woman(Bathroom bath) {&lt;br /&gt;
		id = running_id++;&lt;br /&gt;
		this.bath = bath;&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	@Override&lt;br /&gt;
	public void run() {&lt;br /&gt;
		while(true) {&lt;br /&gt;
			&lt;br /&gt;
			bath.w_enter(id);&lt;br /&gt;
			&lt;br /&gt;
			try {&lt;br /&gt;
				Thread.sleep((int)(Math.random() * 1000));&lt;br /&gt;
			} catch (InterruptedException e) {&lt;br /&gt;
				e.printStackTrace();&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			bath.w_exit(id);&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;Man.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
package UnisexBathLocksLab1PrvaGrupa;&lt;br /&gt;
&lt;br /&gt;
public class Man extends Thread{&lt;br /&gt;
	&lt;br /&gt;
	public int id;&lt;br /&gt;
	public static int running_id = 0;&lt;br /&gt;
	&lt;br /&gt;
	Bathroom bath;&lt;br /&gt;
	&lt;br /&gt;
	public Man(Bathroom bath) {&lt;br /&gt;
		id = running_id++;&lt;br /&gt;
		this.bath = bath;&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	@Override&lt;br /&gt;
	public void run() {&lt;br /&gt;
		while(true) {&lt;br /&gt;
			&lt;br /&gt;
			bath.m_enter(id);&lt;br /&gt;
			&lt;br /&gt;
			try {&lt;br /&gt;
				Thread.sleep((int)(Math.random() * 1000));&lt;br /&gt;
			} catch (InterruptedException e) {&lt;br /&gt;
				e.printStackTrace();&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			bath.m_exit(id);&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;Bathroom.java&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
package UnisexBathLocksLab1PrvaGrupa;&lt;br /&gt;
&lt;br /&gt;
import java.util.concurrent.locks.Condition;&lt;br /&gt;
import java.util.concurrent.locks.Lock;&lt;br /&gt;
import java.util.concurrent.locks.ReentrantLock;&lt;br /&gt;
&lt;br /&gt;
public class Bathroom {&lt;br /&gt;
&lt;br /&gt;
	private int woman_cnt = 0;&lt;br /&gt;
	private int man_cnt = 0;&lt;br /&gt;
&lt;br /&gt;
	private int capacity = 0;&lt;br /&gt;
&lt;br /&gt;
	Lock lock = new ReentrantLock();&lt;br /&gt;
	Condition all = lock.newCondition();&lt;br /&gt;
&lt;br /&gt;
	private int ticket = 0;&lt;br /&gt;
	private int next = 0;&lt;br /&gt;
&lt;br /&gt;
	public Bathroom(int N) {&lt;br /&gt;
		this.ticket = 0;&lt;br /&gt;
		this.next = 0;&lt;br /&gt;
		this.man_cnt = 0;&lt;br /&gt;
		this.woman_cnt = 0;&lt;br /&gt;
		this.capacity = N;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public void m_enter(int id) {&lt;br /&gt;
		lock.lock();&lt;br /&gt;
&lt;br /&gt;
		try {&lt;br /&gt;
			int my_ticket = ticket++;&lt;br /&gt;
			&lt;br /&gt;
			System.out.println(&amp;quot;Man(&amp;quot; + id + &amp;quot;) waiting&amp;quot;);&lt;br /&gt;
			while (my_ticket != next || woman_cnt &amp;gt; 0 || man_cnt &amp;gt;= capacity) {&lt;br /&gt;
				all.awaitUninterruptibly();&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			System.out.println(&amp;quot;Man(&amp;quot; + id + &amp;quot;) entered&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
			man_cnt += 1;&lt;br /&gt;
			this.next += 1;&lt;br /&gt;
&lt;br /&gt;
		} finally {&lt;br /&gt;
			lock.unlock();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public void m_exit(int id) {&lt;br /&gt;
&lt;br /&gt;
		lock.lock();&lt;br /&gt;
&lt;br /&gt;
		try {&lt;br /&gt;
			System.out.println(&amp;quot;Man(&amp;quot; + id + &amp;quot;) left&amp;quot;);&lt;br /&gt;
			man_cnt -= 1;&lt;br /&gt;
			all.signalAll();&lt;br /&gt;
		} finally {&lt;br /&gt;
			lock.unlock();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public void w_enter(int id) {&lt;br /&gt;
		lock.lock();&lt;br /&gt;
&lt;br /&gt;
		try {&lt;br /&gt;
			int my_ticket = ticket++;&lt;br /&gt;
			&lt;br /&gt;
			&lt;br /&gt;
			System.out.println(&amp;quot;Woman(&amp;quot; + id + &amp;quot;) waiting&amp;quot;);&lt;br /&gt;
			while (my_ticket != next || man_cnt &amp;gt; 0 || woman_cnt &amp;gt;= capacity) {&lt;br /&gt;
				all.awaitUninterruptibly();&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			System.out.println(&amp;quot;Woman(&amp;quot; + id + &amp;quot;) entered&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
			woman_cnt += 1;&lt;br /&gt;
			next += 1;&lt;br /&gt;
&lt;br /&gt;
		} finally {&lt;br /&gt;
			lock.unlock();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public void w_exit(int id) {&lt;br /&gt;
&lt;br /&gt;
		lock.lock();&lt;br /&gt;
&lt;br /&gt;
		try {&lt;br /&gt;
			System.out.println(&amp;quot;Woman(&amp;quot; + id + &amp;quot;) left&amp;quot;);&lt;br /&gt;
			woman_cnt -= 1;&lt;br /&gt;
			all.signalAll();&lt;br /&gt;
		} finally {&lt;br /&gt;
			lock.unlock();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:КДП]]&lt;br /&gt;
[[Категорија:Лабораторијске вежбе]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A0%D0%A22/%D0%9A3_%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2023&amp;diff=6376</id>
		<title>ОРТ2/К3 Фебруар 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A0%D0%A22/%D0%9A3_%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2023&amp;diff=6376"/>
		<updated>2023-06-30T12:27:40Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Ispravka postavke, 2^16, ne 216&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Фебруарски испитни рок 2023. године&#039;&#039;&#039; одржан је 11. фебруара 2023.&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
Посматра се део рачунара који чине меморија и процесор. Меморија је капацитета 2&amp;lt;sup&amp;gt;16&amp;lt;/sup&amp;gt; бајтова. Ширина меморијске речи је 1 бајт. Процесор је са једноадресним форматом инструкција. Подаци и адресе су дужине 2 бајта и заузимају две суседне меморијске локације, при чему се старији бајт налази на нижој, а млађи на вишој адреси.&lt;br /&gt;
&lt;br /&gt;
У процесору постоји регистар програмског бројача PC дужине 2 бајта, адресни регистар меморије MAR дужине 2 бајта, прихватни регистар податка меморије MDR дужине 1 бајт, прихватни регистар инструкције IR дужине 4 бајта, акумулатор A дужине 2 бајта, прихватни регистар податка B дужине 2 бајта, регистри опште намене R0 до R15 дужине 2 бајта, програмска статусна реч PSW дужине 1 бајт. Инструкције су дужине 1, 2, 3 или 4 бајта.&lt;br /&gt;
&lt;br /&gt;
Битови 7, 6 и 5 првог бајта инструкције су 0 за све инструкције скока. Код инструкција условног скока бит 4 првог бајта инструкције је 0, док код инструкција безусловног скока бит 4 првог бајта инструкције је 1. Инструкција условног скока је инструкција условног скока уколико је резултат мање него или једнако (BLEQ), услов скока је (NxorV)orZ. Инструкција BLEQ се реализује као инструкција релативног скока у односу на PC. Други бајт инструкције садржи само осмобитни померај који је дат као целобројна величина са знаком. Дужина инструкције је два бајта. Инструкције безусловног скока су инструкција безусловног скока (ЈМР) и инструкција скока на потпрограм (JSR). Инструкције ЈМР и JSR се реализују као апсолутни скокови, при чему је адреса дата другим и трећим бајтом инструкције. Дужина инструкције је 3 бајта. Битовима 3 до 0 првог бајта инструкције специфицира се код операције и на основу тога су за инструкције BLEQ, ЈМР и JSR усвојени кодови операције 00000000, 00010000 и 00010001, респективно.&lt;br /&gt;
&lt;br /&gt;
Битови 7, 6 и 5 првог бајта инструкције су 1 за све безадресне инструкције. Безадресне инструкције су инструкције преноса садржаја акумулатора на стек (PUSH), инструкција пуњења акумулатора садржајем са стека (POP), инструкција декрементирања акумулатора (DEC) и инструкција повратка из потпрограма (RTS). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за безадресне инструкције. На основу тога су за инструкције PUSH, POP, DEC и RTS усвојени кодови операција 11100000, 11100001, 11100010 и 11100011, респективно. Дужина инстукција је 1 бајт.&lt;br /&gt;
&lt;br /&gt;
Битови 7, 6 и 5 првог бајта инструкције имају вредност 100 за све адресне инструкције. Адресне инстуркције су инструкција преноса у акумулатор (LD), инструкција преноса из акумулатора (ST), инструкција логичко ИЛИ (OR), инструкција ротирања садржаја операнда за једно место улево кроз бит PSWC програмске статусне речи где се резултат смешта само у акумулатор (ROLC), инструкција безусловног скока на срачунату адресу (JADR) и инстукција сабирања (ADD). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за адресне инструкције. На основу тога су за инструкције LD, ST, OR, ROLC, JADR и ADD усвојени кодови операција 10000000, 10000001, 10000010, 10000011, 10000100 и 10000101 респективно. Дужина инструкција је 2 или 4 бајта и зависи од специфицираног начина адресирања.&lt;br /&gt;
&lt;br /&gt;
Начини адресирања су специфицирани битовима 7, 6, 5 и 4 другог бајта инструкције и то на следећи начин: 0000-меморијско директно адресирање (memdir), 0001-меморијско индиректно адресирање (memind), 0010-регистарско директно адресирање (regdir), 0011-регистарско индиректно адресирање (regind), 0100-регистарско индиректно адресирање са постдекрементирањем (postdecr), 0101- регистарско индиректно адресирање са померајем (regindpom) и 0110-непосредно адресирање (immed). Код меморијског директног и индиректног адресирања 16 битна адреса меморијске локације је дата трећим и четвртим бајтом инструкције. Битови 3 до 0 другог бајта инструкције се не користе. Дужина инструкције је 4 бајта. Адресирања регистарско директно, регистарско индиректно и регистарско индиректно са постдекрементирањем користе неки од регистара опште намене R0 до R15 специфициран битовима од 3 до 0 другог бајта инструкције. Дужина инструкција је 2 бајта. Код регистарског индиректног адресирања са померајем трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина са знаком. Један од регистара опште намене R0 до R15 који се користи специфициран је битовима од 3 до 0 другог бајта инструкције. Дужина инструкције је 4 бајта. Код непосредног адресирања 16 битни операнд дат је трећим и четвртим бајтом инструкције. Битови 3 до 0 другог бајта инструкције се не користе. Дужина инструкције је 4 бајта.&lt;br /&gt;
&lt;br /&gt;
Стек расте према вишим меморијским локацијама, а регистар SP указује на последњу заузету меморијску локацију. Процесор нема могућност обраде прекида.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Пројектовати део операционе јединице процесора која је потребна да се изврши (FETCH + ADDR + EXEC) инструкција ADD (R0)-. Потребно је да се нацрта само једна минимална операциона јединица која је довољна да се изврши цела споменута инструкција.&lt;br /&gt;
# Дати су почетни садржаји регистара и индикатора: PC = 1000h, SP = 3009h, ACC = 3000h, R0 = C000h, R1 = 0010h, R1 = F000h, N = 0, Z = 0, C = 0 и V = 0. Индикатори статусне речи на које инструкција не утиче треба да остану непромењени. Извршити 7 сукцесивних наредби и за сваку наредбу одредити следеће: у фази читања инструкције – меморијске адресе са којих је прочитана инструкција, садржај регистра IR, инструкцију која је прочитана и нов садржај регистра PC; у фази одређивања адресе операнда и читања операнда – меморијске адресе са којих је прочитана адреса операнда, меморијске адресе са којих је прочитан операнд, вредност операнда и нови садржај регистара опште намене који су у овој фази промењени; у фази извршавања операције – меморијске адресе којима се у овој фази приступа, садржај акумулатора А и индикатора N, Z, V и C након извршавања инструкције и нови садржај регистара и меморијских локација који су у овој фази промењени.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Садржај дела меморије из поставке задатка&lt;br /&gt;
|-&lt;br /&gt;
| ЛОКАЦИЈА:&lt;br /&gt;
| 0000h&lt;br /&gt;
| 0001h&lt;br /&gt;
| 0002h&lt;br /&gt;
| 0003h&lt;br /&gt;
| 0004h&lt;br /&gt;
| 0005h&lt;br /&gt;
| 0006h&lt;br /&gt;
| 0007h&lt;br /&gt;
| 0008h&lt;br /&gt;
| 0009h&lt;br /&gt;
|-&lt;br /&gt;
| САДРЖАЈ:&lt;br /&gt;
| 00h&lt;br /&gt;
| 01h&lt;br /&gt;
| 02h&lt;br /&gt;
| 03h&lt;br /&gt;
| 00h&lt;br /&gt;
| 08h&lt;br /&gt;
| 11h&lt;br /&gt;
| 00h&lt;br /&gt;
| FFh&lt;br /&gt;
| FFh&lt;br /&gt;
|-&lt;br /&gt;
| ЛОКАЦИЈА:&lt;br /&gt;
| 1000h&lt;br /&gt;
| 1001h&lt;br /&gt;
| 1002h&lt;br /&gt;
| 1003h&lt;br /&gt;
| 1004h&lt;br /&gt;
| 1005h&lt;br /&gt;
| 1006h&lt;br /&gt;
| 1007h&lt;br /&gt;
| 1008h&lt;br /&gt;
| 1009h&lt;br /&gt;
|-&lt;br /&gt;
| САДРЖАЈ:&lt;br /&gt;
| E0h&lt;br /&gt;
| 83h&lt;br /&gt;
| 20h&lt;br /&gt;
| 85h&lt;br /&gt;
| 10h&lt;br /&gt;
| 00h&lt;br /&gt;
| 04h&lt;br /&gt;
| 00h&lt;br /&gt;
| 01h&lt;br /&gt;
| E2h&lt;br /&gt;
|-&lt;br /&gt;
| ЛОКАЦИЈА:&lt;br /&gt;
| 100Ah&lt;br /&gt;
| 100Bh&lt;br /&gt;
| 100Ch&lt;br /&gt;
| 100Dh&lt;br /&gt;
| 100Eh&lt;br /&gt;
| 100Fh&lt;br /&gt;
| 1010h&lt;br /&gt;
| 1011h&lt;br /&gt;
| 1012h&lt;br /&gt;
| 1013h&lt;br /&gt;
|-&lt;br /&gt;
| САДРЖАЈ:&lt;br /&gt;
| E3h&lt;br /&gt;
| E2h&lt;br /&gt;
| 80h&lt;br /&gt;
| 60h&lt;br /&gt;
| 11h&lt;br /&gt;
| 22h&lt;br /&gt;
| E2h&lt;br /&gt;
| 10h&lt;br /&gt;
| 10h&lt;br /&gt;
| 00h&lt;br /&gt;
|-&lt;br /&gt;
| ЛОКАЦИЈА:&lt;br /&gt;
| 3000h&lt;br /&gt;
| 3001h&lt;br /&gt;
| 3002h&lt;br /&gt;
| 3003h&lt;br /&gt;
| 3004h&lt;br /&gt;
| 3005h&lt;br /&gt;
| 3006h&lt;br /&gt;
| 3007h&lt;br /&gt;
| 3008h&lt;br /&gt;
| 3009h&lt;br /&gt;
|-&lt;br /&gt;
| САДРЖAJ:&lt;br /&gt;
| 82h&lt;br /&gt;
| 60h&lt;br /&gt;
| FFh&lt;br /&gt;
| 00h&lt;br /&gt;
| 81h&lt;br /&gt;
| 00h&lt;br /&gt;
| 20h&lt;br /&gt;
| 00h&lt;br /&gt;
| 10h&lt;br /&gt;
| 0Ch&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Решење ==&lt;br /&gt;
=== Операциона јединица ===&lt;br /&gt;
{{делимично решено}}&lt;br /&gt;
=== Меморија ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Р.Б.&lt;br /&gt;
! Адресе са којих је прочитана инструкција&lt;br /&gt;
! IR&amp;lt;sub&amp;gt;31..24&amp;lt;/sub&amp;gt; [h]&lt;br /&gt;
! IR&amp;lt;sub&amp;gt;23..16&amp;lt;/sub&amp;gt; [h]&lt;br /&gt;
! IR&amp;lt;sub&amp;gt;15..8&amp;lt;/sub&amp;gt; [h]&lt;br /&gt;
! IR&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt; [h]&lt;br /&gt;
! Прочитана инструкција&lt;br /&gt;
! Садржај промењених регистара&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1000h&lt;br /&gt;
| E0h&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
| PUSH&lt;br /&gt;
| PC = 1001h&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 1001h, 1002h&lt;br /&gt;
| 83h&lt;br /&gt;
| 20h&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
| ROLC R0&lt;br /&gt;
| PC = 1003h&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 1003h, 1004h, 1005h, 1006h&lt;br /&gt;
| 85h&lt;br /&gt;
| 10h&lt;br /&gt;
| 00h&lt;br /&gt;
| 04h&lt;br /&gt;
| ADD (0004h)&lt;br /&gt;
| PC = 1007h&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| 1007h, 1008h&lt;br /&gt;
| 00h&lt;br /&gt;
| 01h&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
| BEQL (PC) 01h&lt;br /&gt;
| PC = 1009h&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| 100Ah&lt;br /&gt;
| E3h&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
| RTS&lt;br /&gt;
| PC = 100Bh&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| 3000h, 3001h, 3002h, 3003h&lt;br /&gt;
| 82h&lt;br /&gt;
| 60h&lt;br /&gt;
| FFh&lt;br /&gt;
| 00h&lt;br /&gt;
| OR #FF00h&lt;br /&gt;
| PC = 3004h&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 3004h, 3005h, 3006h, 3007h&lt;br /&gt;
| 81h&lt;br /&gt;
| 00h&lt;br /&gt;
| 20h&lt;br /&gt;
| 00h&lt;br /&gt;
| ST 2000h&lt;br /&gt;
| PC = 3008h&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Р.Б.&lt;br /&gt;
! Адресе са којих је прочитана адреса операнда&lt;br /&gt;
! Адресе са којих је прочитан операнд&lt;br /&gt;
! Операнд&lt;br /&gt;
! Садржај промењених регистара&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
| C000h&lt;br /&gt;
| /&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 0004h, 0005h&lt;br /&gt;
| 0008h, 0009h&lt;br /&gt;
| FFFFh&lt;br /&gt;
| /&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
| FF00h&lt;br /&gt;
| /&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
| /&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Р.Б.&lt;br /&gt;
! Адресе којима се приступа у фази извршавања&lt;br /&gt;
! А [h]&lt;br /&gt;
! N&lt;br /&gt;
! Z&lt;br /&gt;
! V&lt;br /&gt;
! C&lt;br /&gt;
! Садржај   промењених регистара и меморијских локација [h]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 300Ah, 300Bh&lt;br /&gt;
| 3000h&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| MEM[300Ah] = 30h, MEM[300Bh] = 00h, SP = 300Bh&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| /&lt;br /&gt;
| 8000h&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| /&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| /&lt;br /&gt;
| 7FFFh&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| /&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| /&lt;br /&gt;
| 7FFFh&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| PC = 100Ah&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| 300Ah, 300Bh&lt;br /&gt;
| 7FFFh&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| PC = 3000h, SP = 3009h&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| /&lt;br /&gt;
| FFFFh&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| /&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 2000h, 2001h&lt;br /&gt;
| FFFFh&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| MEM[2000h] = FFh,MEM[2001h] = FFh&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОРТ2]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80_2020&amp;diff=6307</id>
		<title>Архитектура рачунара/Септембар 2020</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80_2020&amp;diff=6307"/>
		<updated>2023-06-18T09:10:59Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Prepravljeno resenje za 2. zadatak&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
{{делимично решено}}&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-sublist&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[5п]&#039;&#039;&#039; Контролер излазне периферије и излазна периферија за међусобно повезивање користе паралелни интерфејс који се састоји од линија података, једне статусне линије и једне управљачке линије. Статусном линијом излазна периферија даје индикацију контролеру периферије да ли је спремна да прими податак који је доступан на линијама података, док контролер периферије управљачком линијом обезбеђује читање података са линија података у свој интерни регистар.&lt;br /&gt;
Навести по ком редоследу се наведене линије користе за синхронизацију и слање података из контролера периферије на периферију. Одговор дати табеларно. Назначити која је почетна вредност на овим линијама.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Редослед&amp;lt;br /&amp;gt;&lt;br /&gt;
! Линија (статусна/управљачка/подаци)&lt;br /&gt;
! Вредност&lt;br /&gt;
! Значење&amp;lt;br /&amp;gt;&lt;br /&gt;
! Ко поставља&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5п]&#039;&#039;&#039; Написати оптималну секвенцу инструкција неопходних за срачунавање израза:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
int *a, *b, c, i;&lt;br /&gt;
...&lt;br /&gt;
i = c-1;&lt;br /&gt;
while (i &amp;gt;= 0) {&lt;br /&gt;
    if (b[i] &amp;gt; 0) a[i] = 1;&lt;br /&gt;
    else a[i] = 0;&lt;br /&gt;
    i -= 1;&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
На располагању је процесор код кога аритметичке, логичке и померачке инструкције имају формат: OC reg, reg, reg/imm где је OC код операције, одредишни операнд и први операнд морају бити у регистру (reg), док други може бити или у регистру или дат непосредно (reg/imm). Инструкција LOAD има формат: LOAD reg, mem где је првим операндом дат одредишни регистар (reg), а другим извориште. Инструкција STORE има формат: STORE reg, mem где је првим операндом дат изворишни регистар (reg), а другим одредиште. A, B, C и I су глобалне променљиве које одговарају симболичким ознакама адреса меморијских локација у којима се налазе операнди. Садржај меморијских локација означених адресама A, B и C треба да остане непромењен, садржај одговарајућих регистара је дозвољено мењати. На располагању стоји 8 регистара опште намене. Претпоставити да су сви подаци и адресе исте дужине која је једнака адресибилној јединици.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
        LOAD Ra, a&lt;br /&gt;
        LOAD Rb, b&lt;br /&gt;
        LOAD Rc, c&lt;br /&gt;
        ! ...&lt;br /&gt;
        SUB Ri, Rc, #1&lt;br /&gt;
        STORE Ri, i&lt;br /&gt;
        &lt;br /&gt;
        AND R0, R0, #0&lt;br /&gt;
        ADD R1, R0, #1&lt;br /&gt;
        &lt;br /&gt;
loop:   CMP Ri, #0&lt;br /&gt;
        JLS end&lt;br /&gt;
&lt;br /&gt;
        LOAD Rtemp0, (Ri, Rb)0&lt;br /&gt;
        CMP Rtemp0, #0&lt;br /&gt;
        JLE else&lt;br /&gt;
        STORE R1, (Ri, Ra)0&lt;br /&gt;
        JMP skip&lt;br /&gt;
        &lt;br /&gt;
else:   STORE R0, (Ri, Ra)0&lt;br /&gt;
        &lt;br /&gt;
skip:   SUB Ri, Ri, #1&lt;br /&gt;
        STORE Ri, i&lt;br /&gt;
        JMP loop&lt;br /&gt;
        &lt;br /&gt;
end:    ! ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5п]&#039;&#039;&#039; Написати оптималну секвенцу инструкција која одговара следећој стандардној библиотечкој C функцији која проналази прво појављивање карактера &#039;&#039;c&#039;&#039; у првих n бајта низа &#039;&#039;str&#039;&#039;;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
void *memchr(const void *str, int c, int n);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Функција као резултат враћа показивач на пронађени карактер или 0 у случају да карактер није пронађен. Формати инструкција и података су као у задатку 2. На располагању стоје и сложене инструкције.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
;void *memchr (const void *str, int c, int n)&lt;br /&gt;
;https://en.cppreference.com/w/c/string/byte/memchr&lt;br /&gt;
;izgled steka:&lt;br /&gt;
;|   n   |&lt;br /&gt;
;|   c   |&lt;br /&gt;
;|  str  |&lt;br /&gt;
;| retPC |&lt;br /&gt;
;|  BP   |&lt;br /&gt;
;|  R1   | &amp;lt;--- BP nakon mov BP, SP&lt;br /&gt;
;|  R2   |&lt;br /&gt;
&lt;br /&gt;
memchr:&lt;br /&gt;
	push BP&lt;br /&gt;
	mov BP, SP&lt;br /&gt;
	&lt;br /&gt;
	push R1&lt;br /&gt;
	push R2&lt;br /&gt;
	&lt;br /&gt;
	load R0, (BP)3 ; str&lt;br /&gt;
	load R1, (BP)4 ; c&lt;br /&gt;
	load R2, (BP)5 ; n&lt;br /&gt;
	&lt;br /&gt;
	locc R2, R0, R1 ; locc len, addr, char&lt;br /&gt;
	jnz skip&lt;br /&gt;
	load R0, #0 ; ako nije nadjen karakter vrati null&lt;br /&gt;
skip:	&lt;br /&gt;
	pop R2&lt;br /&gt;
	pop R1&lt;br /&gt;
	pop BP&lt;br /&gt;
	ret&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. задатак ==&lt;br /&gt;
{{делимично решено}}&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[25п]&#039;&#039;&#039; У рачунарском систему се налази једноадресни процесор, меморија и периферије PER0, PER1 до PERN. Сматрати да је&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; број N припада скупу од 0h до FFh и да може да се користи као непосредна вредност у програму (#N). Све компоненте рачунара су повезане системском магистралом са 16 битном адресном и 16 битном магистралом података. Адресирање је на нивоу 16 битних речи. Сви подаци и адресе су ширине 16 бита. Улазно-излазни адресни простор и меморијски адресни простор су мапирани. Адресе релевантних регистара се формирају на следећи начин:&lt;br /&gt;
{|&lt;br /&gt;
| PERXX_CONTROL || FXX0h&lt;br /&gt;
|-&lt;br /&gt;
| PERXX_STATUS  || FXX1h&lt;br /&gt;
|-&lt;br /&gt;
| PERXX_DATA    || FXX2h&lt;br /&gt;
|}&lt;br /&gt;
где XX припада скупу од 0h до N. Нпр. за периферију PER5 адреса контролног, статусног и регистра података биле би F050h, F051h и F052h, респективно.&lt;br /&gt;
У управљачким регистрима бит 0 је &#039;&#039;Start&#039;&#039; којим се дозвољава почетак операције, бит 1 одређују тип преноса података (1 - улаз (&#039;&#039;input&#039;&#039;), 0 - излаз (&#039;&#039;output&#039;&#039;)), бит 2 је &#039;&#039;Enable&#039;&#039; којим се дозвољава прекид, а у статусним регистрима бит 0 је &#039;&#039;Ready&#039;&#039; који сигнализира спремност контролера периферије.&lt;br /&gt;
Написати главни програм, одговарајући потпрограм и прекидне рутине којима се обавља следећи пренос.&lt;br /&gt;
Периферија PERN шаље бесконачан низ података који се смешта у кружни бафер величине 100h у меморију почев од адресе 1000h. Пријем података од периферије PERN престаје када се напуни бафер и почиње опет када се у истом ослободи простор.&lt;br /&gt;
У паралели са примањем података са периферије PERN, из кружног бафера је потребно слати податке на периферије PER0 до PERN-1. Податке треба слати тако да све периферије приме текући податак пре слања следећег податка из бафера. Нпр. податак на адреси 1000h треба послати периферијама PER0 до PERN-1 пре слања података на адреси 1001h. Периферије PER0 до PERN-1 престају са радом када се испразан&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; бафер, а почињу опет када се у истом појави нови податак.&lt;br /&gt;
Примање података са периферије PERN реализовати коришћењем механизма прекида. Слање података са периферија PER0 до PERN-1 реализовати испитивањем бита спремности.&lt;br /&gt;
За слање једног податка из бафера на периферију XX, XX припада скупу од 0 до N-1, потребно реализовати потпрограм&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
bool sendDataToPERX(int value, int x)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
који кроз акумулатор враћа јединицу ако аргумент &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; јесте послат на периферију PERX, где аргумент &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; одговара редном броју периферије на коју се шаље податак. У супротном враћа нулу. Аргументи &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; се приликом позива потпрограма преноси&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; путем стека и позивалац потпрограма је дужан да аргумент скине са стека након извршавања. Сматрати да су доступни регистри BP и SP приликом писања потпрограма.&lt;br /&gt;
Процесор не поседује регистре опште намене. Стек расте од виших ка нижим локацијама, а SP указује на последњу заузету локацију. Дозвољено је користити додатне променљиве, али њихове називе треба писати описно и семантички исправно. &#039;&#039;&#039;Обавезно је писање концизних коментара над семантичким целинама&#039;&#039;&#039;&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
; CR: | ... | en | I/O | start |&lt;br /&gt;
; SR: | ... | ready |&lt;br /&gt;
&lt;br /&gt;
; PERN  salje beskonacan niz podataka&lt;br /&gt;
; primanje podataka mehanizmom prekida&lt;br /&gt;
; slanje podataka ispitivanjem bita spremnosti&lt;br /&gt;
; mapiran UI prostor&lt;br /&gt;
&lt;br /&gt;
;-----glavni program-------&lt;br /&gt;
load #100h&lt;br /&gt;
store spaceAvailable ; semafor&lt;br /&gt;
load #0&lt;br /&gt;
store itemsAvailable ; semafor&lt;br /&gt;
load #1000h&lt;br /&gt;
store head&lt;br /&gt;
store tail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
load #N&lt;br /&gt;
asl&lt;br /&gt;
add #f000&lt;br /&gt;
store pern_control ; adresa pern control registra&lt;br /&gt;
add #2&lt;br /&gt;
store pern_data ; adresa pern data registra&lt;br /&gt;
load #7 &lt;br /&gt;
store (pern_control) ; start pern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mainLoop:&lt;br /&gt;
	load #N&lt;br /&gt;
	sub #1 ; salje se n-1 periferija&lt;br /&gt;
	store current_peripheral&lt;br /&gt;
&lt;br /&gt;
	waitForItems:&lt;br /&gt;
		load itemsAvailable&lt;br /&gt;
		jz waitForItems&lt;br /&gt;
	&lt;br /&gt;
	sendOneItem: ; posalji head bafera jednoj periferiji (izvrsava se N puta)&lt;br /&gt;
	load current_peripheral&lt;br /&gt;
	push ; push x&lt;br /&gt;
	load (head)&lt;br /&gt;
	push ; push value&lt;br /&gt;
	call sendDataToPERX&lt;br /&gt;
	pop ; ocisti stek&lt;br /&gt;
	pop ; ocisti stek&lt;br /&gt;
	&lt;br /&gt;
	load head&lt;br /&gt;
	inc&lt;br /&gt;
	mod #100&lt;br /&gt;
	store head; head = (head+1) % buff_size&lt;br /&gt;
	&lt;br /&gt;
	load spaceAvailable&lt;br /&gt;
	inc&lt;br /&gt;
	store spaceAvailable&lt;br /&gt;
	&lt;br /&gt;
	load itemsAvailable&lt;br /&gt;
	dec&lt;br /&gt;
	store itemsAvailable&lt;br /&gt;
	&lt;br /&gt;
	load current_peripheral&lt;br /&gt;
	dec&lt;br /&gt;
	jnz sendOneItem ; nije jos poslato svim periferijama&lt;br /&gt;
	&lt;br /&gt;
	jmp mainLoop ; beskonacna petlja&lt;br /&gt;
	&lt;br /&gt;
	halt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;------- prekidna rutina periferije n&lt;br /&gt;
interruptPERN:&lt;br /&gt;
	push ; push acc&lt;br /&gt;
	load spaceAvailable&lt;br /&gt;
	jz exit ;ignorisi vrednost ako nema mesta u baferu&lt;br /&gt;
	&lt;br /&gt;
	load (pern_data)&lt;br /&gt;
	store (tail) ; buff[tail] = pern.data&lt;br /&gt;
	load tail&lt;br /&gt;
	inc&lt;br /&gt;
	mod #100h&lt;br /&gt;
	store tail ; tail = (tail+1) % buff_size&lt;br /&gt;
	&lt;br /&gt;
	load itemsAvailable&lt;br /&gt;
	inc&lt;br /&gt;
	store itemsAvailable&lt;br /&gt;
	&lt;br /&gt;
	load spaceAvailable&lt;br /&gt;
	dec&lt;br /&gt;
	store spaceAvailable&lt;br /&gt;
	&lt;br /&gt;
	pop ; pop acc&lt;br /&gt;
 exit: rti&lt;br /&gt;
&lt;br /&gt;
; bool sendDataToPERX (int value, int x)&lt;br /&gt;
sendDataToPERX:&lt;br /&gt;
;|   x   |&lt;br /&gt;
;| value |&lt;br /&gt;
;| retPC |&lt;br /&gt;
;|  BP   |&lt;br /&gt;
	load BP&lt;br /&gt;
	push&lt;br /&gt;
	load SP &lt;br /&gt;
	store BP ; mov BP, SP&lt;br /&gt;
	load (BP)3 ; load x&lt;br /&gt;
	asl&lt;br /&gt;
	add #f000&lt;br /&gt;
	store perx_control&lt;br /&gt;
	add #1&lt;br /&gt;
	store perx_status&lt;br /&gt;
	add #1 store perx_data&lt;br /&gt;
	load #1&lt;br /&gt;
	store (perx_control); perx start&lt;br /&gt;
	&lt;br /&gt;
	waitReady:&lt;br /&gt;
		load (perx_status)&lt;br /&gt;
		and #1&lt;br /&gt;
		jz waitReady&lt;br /&gt;
		&lt;br /&gt;
	load (BP)2 ; load value&lt;br /&gt;
	&lt;br /&gt;
	store (perx_data)&lt;br /&gt;
	load #0&lt;br /&gt;
	store (perx_control) ; ugasi perx&lt;br /&gt;
	&lt;br /&gt;
	load #1 ; return true&lt;br /&gt;
	rts&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Напомена:===&lt;br /&gt;
У задатку је дато да функција sendDataToPERX(int value, int x) враћа boolean  што највероватније значи да је било потребно у њој покушати слање па ако периферија није спремна онда вратити false. У горњем решењу функција увек враћа true зато што упослено чека на периферију у функцији, што вероватно није тражено решење.&lt;br /&gt;
[[Категорија:Архитектура рачунара]]&lt;br /&gt;
[[Категорија:Рокови]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2020&amp;diff=6306</id>
		<title>Архитектура рачунара/Фебруар 2020</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2020&amp;diff=6306"/>
		<updated>2023-06-18T09:03:15Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Resenje prepravljeno da bude komplijantno sa load/store arhitekturom datom u opisu zadatka&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
{{делимично решено}}&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-sublist&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[5п]&#039;&#039;&#039; У посматраном рачунарском систему процесор има 3 пара линија по којима улазно/излазни уређаји могу процесору да шаљу захтеве за прекид и од процесора добијају сигнале потврда. У датом систему има 9 улазно/излазних уређаја које треба некако повезати помоћу та 3 пара линија на процесор и омогућити за сваки улазно/излазни уређај скок на одговарајућу прекидну рутину векторисаним механизмом прекида.&lt;br /&gt;
# Нацртати како тих 9 улазно/излазних уређаја треба повезати помоћу та 3 пара линија на процесор.&lt;br /&gt;
# Објаснити како тих 9 улазно/излазних уређаја шаљу захтеве за прекид и добијају дозволе, и како се реализује скок на одговарајућу прекидну рутину.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5п]&#039;&#039;&#039; Написати оптималну секвенцу инструкција неопходних за срачунавање израза:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
int *a, *b, c, i;&lt;br /&gt;
...&lt;br /&gt;
i = 0;&lt;br /&gt;
while (i &amp;lt; c) {&lt;br /&gt;
    if (a[i] &amp;gt; 0) b[i] = 0;&lt;br /&gt;
    else b[i] = 1;&lt;br /&gt;
    i += 1;&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
На располагању је процесор код кога аритметичке, логичке и померачке инструкције имају формат: OC reg, reg, reg/imm где је OC код операције, одредишни операнд и први операнд морају бити у регистру (reg), док други може бити или у регистру или дат непосредно (reg/imm). Инструкција LOAD има формат: LOAD reg, mem где је првим операндом дат одредишни регистар (reg), а другим извориште. Инструкција STORE има формат: STORE reg, mem где је првим операндом дат изворишни регистар (reg), а другим одредиште. A, B, C и I су глобалне променљиве које одговарају симболичким ознакама адреса меморијских локација у којима се налазе операнди. Садржај меморијских локација означених адресама A, B и C треба да остане непромењен, садржај одговарајућих регистара је дозвољено мењати. На располагању стоји 8 регистара опште намене. Претпоставити да су сви подаци и адресе исте дужине која је једнака адресибилној јединици.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
        LOAD Ra, a&lt;br /&gt;
        LOAD Rb, b&lt;br /&gt;
        LOAD Rc, c&lt;br /&gt;
        ! ...&lt;br /&gt;
        AND Ri, Ri, #0&lt;br /&gt;
        STORE Ri, i&lt;br /&gt;
        AND R0, R0, #0&lt;br /&gt;
        ADD R1, R0, #1&lt;br /&gt;
&lt;br /&gt;
loop:   CMP Ri, Ri, Rc&lt;br /&gt;
        JGE end&lt;br /&gt;
&lt;br /&gt;
        LOAD Rtemp0, (Ri, Ra)0&lt;br /&gt;
        CMP Rtemp0, #0&lt;br /&gt;
        JLE else&lt;br /&gt;
        STORE R0, (Ri, Rb)0&lt;br /&gt;
        JMP skip&lt;br /&gt;
        &lt;br /&gt;
else:   STORE R1, (Ri, Rb)0&lt;br /&gt;
        &lt;br /&gt;
skip:   ADD Ri, Ri, #1&lt;br /&gt;
        STORE Ri, i&lt;br /&gt;
        JMP loop&lt;br /&gt;
        &lt;br /&gt;
end:    ! ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5п]&#039;&#039;&#039; Написати оптималну секвенцу инструкција која одговара следећој стандардној библиотечкој C функцији која копира карактер &#039;&#039;c&#039;&#039; у првих &#039;&#039;n&#039;&#039; карактера низа &#039;&#039;str&#039;&#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
void *memset(void *str, int c, int n);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Функција као резултат враћа показивач на резултујући низ &#039;&#039;str&#039;&#039;. Формати инструкција и података су као у задатку 2. На располагању стоје и сложене инструкције.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
;void *memset(void *str, int c, int n);&lt;br /&gt;
;https://cplusplus.com/reference/cstring/memset/&lt;br /&gt;
;izgled steka:&lt;br /&gt;
;|   n   |&lt;br /&gt;
;|   c   |&lt;br /&gt;
;|  str  |&lt;br /&gt;
;| retPC |&lt;br /&gt;
;|  BP   |&lt;br /&gt;
;|  R1   | &amp;lt;--- BP nakon mov BP, SP&lt;br /&gt;
;|  R2   |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
memset:&lt;br /&gt;
	push BP&lt;br /&gt;
	mov BP, SP&lt;br /&gt;
	&lt;br /&gt;
	push R1&lt;br /&gt;
	push R2&lt;br /&gt;
&lt;br /&gt;
	load  R0, (BP)2 ; str&lt;br /&gt;
	load R1, (BP)3 ; c&lt;br /&gt;
	load R2, (BP)4 ; n&lt;br /&gt;
	&lt;br /&gt;
	movc #0, #0 , R1, R2,  R0 ; movc srclen, srcadr, fill, dstlen, dstAdr&lt;br /&gt;
	&lt;br /&gt;
	mov R0, (BP)2 ; str ; funkcija vraca parametar str a on se inkrementirao u movc&lt;br /&gt;
	&lt;br /&gt;
	pop R2&lt;br /&gt;
	pop R1&lt;br /&gt;
	pop BP&lt;br /&gt;
	rts&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. задатак ==&lt;br /&gt;
{{делимично решено}}&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[25п]&#039;&#039;&#039; У рачунарском систему се налази једноадресни процесор, меморија и периферије PER0, PER1 и PER2. Све компоненте рачунара су повезане системском магистралом са 16 битном адресном и 16 битном магистралом података. Адресирање је на нивоу 16 битних речи. Адресни простор овог рачунара и улазно/излазни адресни простор су раздвојени. Сви подаци и адресе су ширине 16 бита. Адресе релевантних регистара су:&lt;br /&gt;
{|&lt;br /&gt;
| PER0_CONTROL || FF00h || PER1_CONTROL || FF10h || PER2_CONTROL FF20h&lt;br /&gt;
|-&lt;br /&gt;
| PER0_STATUS || FF01h || PER1_STATUS || FF11h || PER2_STATUS FF21h&lt;br /&gt;
|-&lt;br /&gt;
| PER0_DATA || FF02h || PER1_DATA || FF12h || PER2_DATA FF22h&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
У управљачким регистрима бит 0 је &#039;&#039;Start&#039;&#039; којим се дозвољава почетак операције, бит 1 одређују тип преноса података (0 - улаз (&#039;&#039;input&#039;&#039;), 1 - излаз (&#039;&#039;output&#039;&#039;)), бит 7 је &#039;&#039;Enable&#039;&#039; којим се дозвољава прекид, а у статусним регистрима бит 0 је &#039;&#039;Ready&#039;&#039; који сигнализира спремност контролера периферије. Могуће је уписивати и читати из свих регистара.&lt;br /&gt;
Написати главни програм и одговарајућу прекидну рутину којима се обавља следећи пренос. Са периферије PER0 се прихвата низ A(i) (i=0..99h). Низ A(i) се смешта у меморију почев од локације 1000h. Такође, са пријемом овог низа упоредо се обавља и његово слање тако што се елементи низа чија је вредност непарна шаљу периферији PER1, а елементи низа чија је вредност парна шаљу периферији PER2.&lt;br /&gt;
Потребно је реализовати и искористити на одговарајућим местима следеће потпрограме:&lt;br /&gt;
* Неблокирајући потпрограм &amp;lt;code&amp;gt;int receiveFromPER0()&amp;lt;/code&amp;gt;, овај потпрограм враћа примљену вредност са PER0 без провере да ли је PER0 уопште спремила податак за слање.&lt;br /&gt;
* Блокирајући потпрограм &amp;lt;code&amp;gt;void sendToPER1(int value)&amp;lt;/code&amp;gt;, овај потпрограм шаље аргумент &#039;&#039;value&#039;&#039; на периферију PER1 при чему прво проверава да ли је PER1 спремна да прими податак и када буде спремна, онда аргумент шаље периферији.&lt;br /&gt;
* Неблокирајући потпрограм &amp;lt;code&amp;gt;void sendToPER2(int value), овај потпрограм шаље аргумент &#039;&#039;value&#039;&#039; на периферију PER2 без провере да ли је PER2 спремна да прими податак, већ одмах шаље аргумент периферији.&lt;br /&gt;
Прихватање низа са периферије PER0 реализовати коришћењем механизма прекида, слање одговарајућих елемената на PER1 реализовати испитивањем бита спремности, а слање одговарајућих елемената на периферију PER2 реализовати коришћењем механизма прекида. Водити рачуна да сви трансфери теку упоредо. Програм треба да ради циклично (прима се нов низ A(i) и на претходно описан начин прослеђује одговарајућим периферијама).&lt;br /&gt;
&lt;br /&gt;
Процесор поседује акумулатор дужине 16 бита и не поседује регистре опште намене. Стек расте од виших ка нижим локацијама, а SP указује на последњу заузету локацију. Дозвољено је користити додатне променљиве, али њихове називе треба писати описно и семантички исправно. &#039;&#039;&#039;Обавезно је писање концизних коментара над семантичким целинама&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Архитектура рачунара]]&lt;br /&gt;
[[Категорија:Рокови]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%9A_%D0%88%D1%83%D0%BB_2021&amp;diff=6165</id>
		<title>Архитектура рачунара/К Јул 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%9A_%D0%88%D1%83%D0%BB_2021&amp;diff=6165"/>
		<updated>2023-05-05T20:55:25Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: /* Форматирање решења за 2. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;(7)&#039;&#039;&#039; У регистру PSW постоји неколико бита који се односе на прекиде. У неке од датих бита се може постављати вредност 1, могу се брисати, и може се уписивати вредност.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Назначити све бите регистра PSW који се односе на прекиде и објаснити чему који бит намењен. Назначити на основу чега се одређује број појединих бита.&lt;br /&gt;
# За сваки од ових бита назначити у којим се ситуацијама њихова вредност мења (поставља, брише, уписује). Одговор дати табеларно.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Бити регистра PSW !! Мењање (постављање, брисање, уписивање) !! Ситуација у којој се мења&lt;br /&gt;
|-&lt;br /&gt;
| || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;(8)&#039;&#039;&#039; Адресирање регистара контролера улазно/излазних уређаја може да се реализује на два начина, па у зависности од тога како је то реализовано постоје (1) системи код којих је улазно/излазни адресни простор меморијски пресликан и (2) системи код којих су улазно/излазни и меморијски адресни простори раздвојени.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Објаснити које се инструкције користе за упис и читање регистара контролера улазно/излазних уређаја у случајевима (1) и (2).&lt;br /&gt;
# Објаснити како у случајевима (1) и (2) контролери меморије и улазно/излазних уређаја утврђују ко од њих треба као слуга да реализују&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; циклус на магистрали инициран од стране процесора као газде.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
а. (1) STORE, LOAD;&lt;br /&gt;
&lt;br /&gt;
(2) OUT, IN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
б. (1) Само на основу бита адресе.&lt;br /&gt;
&lt;br /&gt;
(2) На основу бита адресе и сигнала &amp;lt;math&amp;gt;M/\overline{IO}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;(25)&#039;&#039;&#039; Адресна магистрала процесора као и магистрала података је 16-битна. Садржај дела оперативне меморије је приказан на слици:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Адреса || 0000h || 0001h || 0002h || 0003h || 0004h || 0005h || 0006h || 0007h || 0008h || 0009h || 000Ah&lt;br /&gt;
|-&lt;br /&gt;
| Садржај || 02h || 10h || 00h || 10h || 10h || 11h || 10h || F2h || 0Eh || FFh || 00h&lt;br /&gt;
|-&lt;br /&gt;
| Адреса || 1000h || 1001h || 1002h || 1003h || 1004h || 1005h || 1006h || 1007h || 1008h || 1009h || 100Ah&lt;br /&gt;
|-&lt;br /&gt;
| Садржај || 1Fh || 0Fh || 0Eh || 25h || 08h || 00h || F0h || 02h || 11h || 07h || 00h&lt;br /&gt;
|-&lt;br /&gt;
| Адреса || 100Bh || 100Ch || 100Dh || 100Eh || 100Fh || 1010h || 1011h || 1012h || 1013h || 1014h || 1015h&lt;br /&gt;
|-&lt;br /&gt;
| Садржај || FFh || FFh || 00h || FFh || F8h || F3h || FDh || F4h || 09h || F0h || F4h&lt;br /&gt;
|}&lt;br /&gt;
Процесор поседује 16-битне регистре PC (програмски бројач), SP (показивач на прву слободну локацију стека који расте према вишим адресама), PSW (програмска статусна реч) и регистар ACC (акумулатор). Претпоставити да је пре почетка извршавања главног програма PC = 1001h, ACC = FFFFh, SP = E000h, IVTP=1h, а PSW = 5050h. Процесор из меморије дохвата инструкције бајт по бајт. Оперативна меморија је сачињена од два модула (M0 и M1) исте величине, а ширина меморијске речи је 8 бита. Један меморијски модул (M0) је повезан на линије D&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt;, а други меморијски модул (M1) на линије D&amp;lt;sub&amp;gt;15..8&amp;lt;/sub&amp;gt; магистрале података. Модуле M0 садржи марне, а модул M1 непарне адресе. Адресирање је на нивоу података дужине 8 и 16 бита. Подаци и адресе дужине 16 бита се у меморију смештају тако да се на нижу локацију смешта нижи бајт. Приступ (упис/читање) до једног бајта податка траје један циклус на магистрали. Приступ (упис/читање) до два бајта податка почев од меморијске локације са парном адресом траје један циклус на магистрали, а почев од непарне адресе траје две циклуса на магистрали.&lt;br /&gt;
Фаза читања инструкције започиње увек читањем једног бајта - прог бајта инструкције. На основу првог бајта инструкције, процесор зна колика је дужина инструкције и може да оптимизује број циклуса на магистрали, тако да у наставку довлачења инструкције може, али не мора, да чита инструкцију бајт по бајт.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Навести секвенцу садржаја на адресној магистрали, магистрали података и контролној магистрали за сваки циклус на магистрали при извршавању главног програма и прекидне рутине. Приликом скока у прекидну рутину на стеку се чувају PSW и PC, тим редоследом. Инструкције које оперишу са осмобитним подацима акумулатора користе нижих осам бита акумулатора, док се виших осам битова не мењају.&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
1001h || ANDB || #0Eh || ; neposredno adresiranje&lt;br /&gt;
1003h || STOREW || 0008h || ; memorijsko direktno adresiranje&lt;br /&gt;
1006h || INT  ||  #2h || ; softverski prekid&lt;br /&gt;
1008h || STORES || 0007h || ; memorijsko direktno adresiranje&lt;br /&gt;
100Bh || HALT  ||     || ; zaustavljanje procesora&lt;br /&gt;
100Ch || ...       &lt;br /&gt;
...&lt;br /&gt;
1010h || NOT    ||    || ; bezadresno adresiranje&lt;br /&gt;
1011h || INC    ||    || ; bezadresno adresiranje&lt;br /&gt;
1012h || RTI    ||    || ; povratak iz potprograma&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#: Решење представити у табели чије заглавље изгледа као на слици: (Табела 3)&lt;br /&gt;
#: Рб представља редни број циклуса на магистрали, A&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; и D&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; садржаје адресних линија и линија података у датом циклусу. RD, WR и W (означава да се приступа по два бајта податка почев од парне адресе) су вредности управљачких сигнала на магистрали. PC представља садржај програмског бројача, IR садржај инструкцијског регистра, TMP садржај прихватног регистра операнда или адресе операнда, ACC садржај акумулатора и SP садржај показивача на врх стека. О вредности регистра PSW не треба водити евиденцију (сматрати да се не мења). У коментару навести у којој од фаза се реализује дати циклус: дохватања инструкције (IF), декодовања инструкције (ID), извршавања операције (EX) или обрада прекида (IS).&lt;br /&gt;
# Детаљно нацртати како би се повезали модули M0 и M1 на задату магистралу. Повезивање процесора на магистралу није потребно цртати. Означити све ширине сигнала.&lt;br /&gt;
# Колико је релативно убрзање извршавања дате секвенце инструкција под а) на задатој архитектури магистрале и процесора (архитектура А), у односу да магистрала и процесор подржавају само циклусе уписа и читања од једног бајта (архитектура Б)?&lt;br /&gt;
Резултат дати као: &amp;lt;code&amp;gt;број циклуса (архитектура А)/број циклуса (архитектура Б)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Табела 3: Заглавље решења дела под а.&lt;br /&gt;
| Рб || A&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; || D&amp;lt;sub&amp;gt;15..8&amp;lt;/sub&amp;gt; || D&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt; || RD || WR || W || PC || IR&amp;lt;sub&amp;gt;23:16&amp;lt;/sub&amp;gt; || IR&amp;lt;sub&amp;gt;15:8&amp;lt;/sub&amp;gt; || IR&amp;lt;sub&amp;gt;7:0&amp;lt;/sub&amp;gt; || TMP&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; || ACC || SP || Коментар&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Архитектура рачунара]]&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
&lt;br /&gt;
а)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Табела 4: решење дела под а.&lt;br /&gt;
| Рб || A&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; || D&amp;lt;sub&amp;gt;15..8&amp;lt;/sub&amp;gt; || D&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt; || RD || WR || W || PC || IR&amp;lt;sub&amp;gt;23:16&amp;lt;/sub&amp;gt; || IR&amp;lt;sub&amp;gt;15:8&amp;lt;/sub&amp;gt; || IR&amp;lt;sub&amp;gt;7:0&amp;lt;/sub&amp;gt; || TMP&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; || ACC || SP || Коментар&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1001 || 0F || / || 1 || 0 || 0 || 1002 || 0F || / || / || / || FFFF || E000 || IF (ANDB)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1002 || / || 0E || 1 || 0 || 0 || 1003 || 0F || 0E || / || / || FFFF || E000 || IF (ANDB)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  || 0F || 0E || / || 0E || FFFF || E000 || ID (ANDB)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  || 0F || 0E || / || 0E || FF0E || E000 || IE (ANDB)&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 1003 || 25 || / || 1 || 0 || 0 || 1004 || 25 || / || / || / || FF0E || E000 || IF (STOREW)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 1004 || 00 || 08 || 1 || 0 || 1 || 1006 || 25  || 08 || 00 || / || FF0E || E000 || IF (STOREW)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  || 25  || 08 || 00 || 0008 || FF0E || E000 || ID (STOREW)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 0008 || FF || 0E || 0 || 1 || 1 || 1006 || 25  || 08 || 00 || 0008 || FF0E || E000 || IE (STOREW)&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 1006 || / || F0 || 1 || 0 || 0 || 1007 || F0 || / || / || / || FF0E || E000 || IF (INT)&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 1007 || 02 || / || 1 || 0 || 0 || 1008 || F0 || 02 || / || / || FF0E || E000 || IF (INT)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  || F0 || 02 || / || 02 || FF0E || E000 || ID (INT)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  || F0 || 02 || / || 02 || FF0E || E000 || IE (INT)&lt;br /&gt;
|-&lt;br /&gt;
| 8 || E000 || 50 || 50 || 0 || 1 || 1 || 1008 || F0 || 02 || / || 02 || FF0E || E002 || IS (INT)&lt;br /&gt;
|-&lt;br /&gt;
| 9 || E002 || 10 || 08 || 0 || 1 || 1 || 1008 || F0 || 02 || / || 02 || FF0E || E004 || IS (INT)&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 0005 || 11 || / || 1 || 0 || 0 || 1008 || F0 || 02 || / || 11 || FF0E || E004 || IS (INT)&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 0006 || / || 10 || 1 || 0 || 0 || 1011 || F0 || 02 || / || 1011 || FF0E || E004 || IS (INT)&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 1011  || FD || / || 1 || 0 || 0 || 1012 || FD || / || / || / || FF0E || E004 || IF (INC)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  ||  || / || / || / || FF0F || E004 || IE (INC)&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 1012 || / || F4 || 1 || 0 || 0 || 1013 || F4 || / || / || / || FF0F || E004 || IF (RTI)&lt;br /&gt;
|-&lt;br /&gt;
| 14 || E002 || 10 || 08 || 1 || 0 || 1 || 1008 || F4 || / || / || 1008 || FF0F || E002 || IE (RTI)&lt;br /&gt;
|-&lt;br /&gt;
| 15 || E000 || 50 || 50 || 1 || 0 || 1 || 1008 || F4 || / || / || 5050 || FF0F || E000 || IE (RTI)&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 1008 || / || 11 || 1 || 0 || 0 || 1009 || 11 || / || / || / || FF0F || E000 || IF (STOREB)&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 1009 || 07 || / || 1 || 0 || 0 || 100A || 11 || 07 || / || / || FF0F || E000 || IF( STOREB)&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 100A || / || 00 || 1 || 0 || 0 || 100B || 11 || 07 || 00 || / || FF0F || E000 || IF (STOREB)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  || 11 || 07 || 00 || 0007 || FF0F || E000 || ID (STOREB)&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 0007 || 0F || / || 0 || 1 || 0 || 100B || 11 || 07 || 00 || 0007 || FF0F || E000 || IE (STOREB)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 100B || FF || / || 1 || 0 || 0 || 100C || FF || / || / || / || FF0F || E000 || IF (HALT)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  ||  || / || / || / || FF0F || E000 || IE (HALT)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
б) НЕДОСТАЈЕ&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
в) Како архитектура А за секвенцу инструкција из дела а. користи двобајтно читање 6 пута и завршава дату секвенцу са 20 читања, закључујемо да би архитектури Б требало 26 читања. Резултат је 20/26.&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%9A_%D0%88%D1%83%D0%BB_2021&amp;diff=6164</id>
		<title>Архитектура рачунара/К Јул 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%9A_%D0%88%D1%83%D0%BB_2021&amp;diff=6164"/>
		<updated>2023-05-05T20:53:39Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: /* Решење 2. задатка */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;(7)&#039;&#039;&#039; У регистру PSW постоји неколико бита који се односе на прекиде. У неке од датих бита се може постављати вредност 1, могу се брисати, и може се уписивати вредност.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Назначити све бите регистра PSW који се односе на прекиде и објаснити чему који бит намењен. Назначити на основу чега се одређује број појединих бита.&lt;br /&gt;
# За сваки од ових бита назначити у којим се ситуацијама њихова вредност мења (поставља, брише, уписује). Одговор дати табеларно.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Бити регистра PSW !! Мењање (постављање, брисање, уписивање) !! Ситуација у којој се мења&lt;br /&gt;
|-&lt;br /&gt;
| || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;(8)&#039;&#039;&#039; Адресирање регистара контролера улазно/излазних уређаја може да се реализује на два начина, па у зависности од тога како је то реализовано постоје (1) системи код којих је улазно/излазни адресни простор меморијски пресликан и (2) системи код којих су улазно/излазни и меморијски адресни простори раздвојени.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Објаснити које се инструкције користе за упис и читање регистара контролера улазно/излазних уређаја у случајевима (1) и (2).&lt;br /&gt;
# Објаснити како у случајевима (1) и (2) контролери меморије и улазно/излазних уређаја утврђују ко од њих треба као слуга да реализују&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; циклус на магистрали инициран од стране процесора као газде.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
а. (1) STORE, LOAD; (2) OUT, IN&lt;br /&gt;
б. (1) Само на основу бита адресе. (2) На основу бита адресе и сигнала &amp;lt;math&amp;gt;M/\overline{IO}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;(25)&#039;&#039;&#039; Адресна магистрала процесора као и магистрала података је 16-битна. Садржај дела оперативне меморије је приказан на слици:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Адреса || 0000h || 0001h || 0002h || 0003h || 0004h || 0005h || 0006h || 0007h || 0008h || 0009h || 000Ah&lt;br /&gt;
|-&lt;br /&gt;
| Садржај || 02h || 10h || 00h || 10h || 10h || 11h || 10h || F2h || 0Eh || FFh || 00h&lt;br /&gt;
|-&lt;br /&gt;
| Адреса || 1000h || 1001h || 1002h || 1003h || 1004h || 1005h || 1006h || 1007h || 1008h || 1009h || 100Ah&lt;br /&gt;
|-&lt;br /&gt;
| Садржај || 1Fh || 0Fh || 0Eh || 25h || 08h || 00h || F0h || 02h || 11h || 07h || 00h&lt;br /&gt;
|-&lt;br /&gt;
| Адреса || 100Bh || 100Ch || 100Dh || 100Eh || 100Fh || 1010h || 1011h || 1012h || 1013h || 1014h || 1015h&lt;br /&gt;
|-&lt;br /&gt;
| Садржај || FFh || FFh || 00h || FFh || F8h || F3h || FDh || F4h || 09h || F0h || F4h&lt;br /&gt;
|}&lt;br /&gt;
Процесор поседује 16-битне регистре PC (програмски бројач), SP (показивач на прву слободну локацију стека који расте према вишим адресама), PSW (програмска статусна реч) и регистар ACC (акумулатор). Претпоставити да је пре почетка извршавања главног програма PC = 1001h, ACC = FFFFh, SP = E000h, IVTP=1h, а PSW = 5050h. Процесор из меморије дохвата инструкције бајт по бајт. Оперативна меморија је сачињена од два модула (M0 и M1) исте величине, а ширина меморијске речи је 8 бита. Један меморијски модул (M0) је повезан на линије D&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt;, а други меморијски модул (M1) на линије D&amp;lt;sub&amp;gt;15..8&amp;lt;/sub&amp;gt; магистрале података. Модуле M0 садржи марне, а модул M1 непарне адресе. Адресирање је на нивоу података дужине 8 и 16 бита. Подаци и адресе дужине 16 бита се у меморију смештају тако да се на нижу локацију смешта нижи бајт. Приступ (упис/читање) до једног бајта податка траје један циклус на магистрали. Приступ (упис/читање) до два бајта податка почев од меморијске локације са парном адресом траје један циклус на магистрали, а почев од непарне адресе траје две циклуса на магистрали.&lt;br /&gt;
Фаза читања инструкције започиње увек читањем једног бајта - прог бајта инструкције. На основу првог бајта инструкције, процесор зна колика је дужина инструкције и може да оптимизује број циклуса на магистрали, тако да у наставку довлачења инструкције може, али не мора, да чита инструкцију бајт по бајт.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Навести секвенцу садржаја на адресној магистрали, магистрали података и контролној магистрали за сваки циклус на магистрали при извршавању главног програма и прекидне рутине. Приликом скока у прекидну рутину на стеку се чувају PSW и PC, тим редоследом. Инструкције које оперишу са осмобитним подацима акумулатора користе нижих осам бита акумулатора, док се виших осам битова не мењају.&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
1001h || ANDB || #0Eh || ; neposredno adresiranje&lt;br /&gt;
1003h || STOREW || 0008h || ; memorijsko direktno adresiranje&lt;br /&gt;
1006h || INT  ||  #2h || ; softverski prekid&lt;br /&gt;
1008h || STORES || 0007h || ; memorijsko direktno adresiranje&lt;br /&gt;
100Bh || HALT  ||     || ; zaustavljanje procesora&lt;br /&gt;
100Ch || ...       &lt;br /&gt;
...&lt;br /&gt;
1010h || NOT    ||    || ; bezadresno adresiranje&lt;br /&gt;
1011h || INC    ||    || ; bezadresno adresiranje&lt;br /&gt;
1012h || RTI    ||    || ; povratak iz potprograma&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#: Решење представити у табели чије заглавље изгледа као на слици: (Табела 3)&lt;br /&gt;
#: Рб представља редни број циклуса на магистрали, A&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; и D&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; садржаје адресних линија и линија података у датом циклусу. RD, WR и W (означава да се приступа по два бајта податка почев од парне адресе) су вредности управљачких сигнала на магистрали. PC представља садржај програмског бројача, IR садржај инструкцијског регистра, TMP садржај прихватног регистра операнда или адресе операнда, ACC садржај акумулатора и SP садржај показивача на врх стека. О вредности регистра PSW не треба водити евиденцију (сматрати да се не мења). У коментару навести у којој од фаза се реализује дати циклус: дохватања инструкције (IF), декодовања инструкције (ID), извршавања операције (EX) или обрада прекида (IS).&lt;br /&gt;
# Детаљно нацртати како би се повезали модули M0 и M1 на задату магистралу. Повезивање процесора на магистралу није потребно цртати. Означити све ширине сигнала.&lt;br /&gt;
# Колико је релативно убрзање извршавања дате секвенце инструкција под а) на задатој архитектури магистрале и процесора (архитектура А), у односу да магистрала и процесор подржавају само циклусе уписа и читања од једног бајта (архитектура Б)?&lt;br /&gt;
Резултат дати као: &amp;lt;code&amp;gt;број циклуса (архитектура А)/број циклуса (архитектура Б)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Табела 3: Заглавље решења дела под а.&lt;br /&gt;
| Рб || A&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; || D&amp;lt;sub&amp;gt;15..8&amp;lt;/sub&amp;gt; || D&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt; || RD || WR || W || PC || IR&amp;lt;sub&amp;gt;23:16&amp;lt;/sub&amp;gt; || IR&amp;lt;sub&amp;gt;15:8&amp;lt;/sub&amp;gt; || IR&amp;lt;sub&amp;gt;7:0&amp;lt;/sub&amp;gt; || TMP&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; || ACC || SP || Коментар&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Архитектура рачунара]]&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
&lt;br /&gt;
а)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Табела 4: решење дела под а.&lt;br /&gt;
| Рб || A&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; || D&amp;lt;sub&amp;gt;15..8&amp;lt;/sub&amp;gt; || D&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt; || RD || WR || W || PC || IR&amp;lt;sub&amp;gt;23:16&amp;lt;/sub&amp;gt; || IR&amp;lt;sub&amp;gt;15:8&amp;lt;/sub&amp;gt; || IR&amp;lt;sub&amp;gt;7:0&amp;lt;/sub&amp;gt; || TMP&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; || ACC || SP || Коментар&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1001 || 0F || / || 1 || 0 || 0 || 1002 || 0F || / || / || / || FFFF || E000 || IF (ANDB)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1002 || / || 0E || 1 || 0 || 0 || 1003 || 0F || 0E || / || / || FFFF || E000 || IF (ANDB)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  || 0F || 0E || / || 0E || FFFF || E000 || ID (ANDB)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  || 0F || 0E || / || 0E || FF0E || E000 || IE (ANDB)&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 1003 || 25 || / || 1 || 0 || 0 || 1004 || 25 || / || / || / || FF0E || E000 || IF (STOREW)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 1004 || 00 || 08 || 1 || 0 || 1 || 1006 || 25  || 08 || 00 || / || FF0E || E000 || IF (STOREW)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  || 25  || 08 || 00 || 0008 || FF0E || E000 || ID (STOREW)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 0008 || FF || 0E || 0 || 1 || 1 || 1006 || 25  || 08 || 00 || 0008 || FF0E || E000 || IE (STOREW)&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 1006 || / || F0 || 1 || 0 || 0 || 1007 || F0 || / || / || / || FF0E || E000 || IF (INT)&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 1007 || 02 || / || 1 || 0 || 0 || 1008 || F0 || 02 || / || / || FF0E || E000 || IF (INT)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  || F0 || 02 || / || 02 || FF0E || E000 || ID (INT)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  || F0 || 02 || / || 02 || FF0E || E000 || IE (INT)&lt;br /&gt;
|-&lt;br /&gt;
| 8 || E000 || 50 || 50 || 0 || 1 || 1 || 1008 || F0 || 02 || / || 02 || FF0E || E002 || IS (INT)&lt;br /&gt;
|-&lt;br /&gt;
| 9 || E002 || 10 || 08 || 0 || 1 || 1 || 1008 || F0 || 02 || / || 02 || FF0E || E004 || IS (INT)&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 0005 || 11 || / || 1 || 0 || 0 || 1008 || F0 || 02 || / || 11 || FF0E || E004 || IS (INT)&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 0006 || / || 10 || 1 || 0 || 0 || 1011 || F0 || 02 || / || 1011 || FF0E || E004 || IS (INT)&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 1011  || FD || / || 1 || 0 || 0 || 1012 || FD || / || / || / || FF0E || E004 || IF (INC)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  ||  || / || / || / || FF0F || E004 || IE (INC)&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 1012 || / || F4 || 1 || 0 || 0 || 1013 || F4 || / || / || / || FF0F || E004 || IF (RTI)&lt;br /&gt;
|-&lt;br /&gt;
| 14 || E002 || 10 || 08 || 1 || 0 || 1 || 1008 || F4 || / || / || 1008 || FF0F || E002 || IE (RTI)&lt;br /&gt;
|-&lt;br /&gt;
| 15 || E000 || 50 || 50 || 1 || 0 || 1 || 1008 || F4 || / || / || 5050 || FF0F || E000 || IE (RTI)&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 1008 || / || 11 || 1 || 0 || 0 || 1009 || 11 || / || / || / || FF0F || E000 || IF (STOREB)&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 1009 || 07 || / || 1 || 0 || 0 || 100A || 11 || 07 || / || / || FF0F || E000 || IF( STOREB)&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 100A || / || 00 || 1 || 0 || 0 || 100B || 11 || 07 || 00 || / || FF0F || E000 || IF (STOREB)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  || 11 || 07 || 00 || 0007 || FF0F || E000 || ID (STOREB)&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 0007 || 0F || / || 0 || 1 || 0 || 100B || 11 || 07 || 00 || 0007 || FF0F || E000 || IE (STOREB)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 100B || FF || / || 1 || 0 || 0 || 100C || FF || / || / || / || FF0F || E000 || IF (HALT)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  ||  || / || / || / || FF0F || E000 || IE (HALT)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
б) НЕДОСТАЈЕ&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
в) Како архитектура А за секвенцу инструкција из дела а. користи двобајтно читање 6 пута и завршава дату секвенцу са 20 читања, закључујемо да би архитектури Б требало 26 читања. Резултат је 20/26.&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%9A_%D0%88%D1%83%D0%BB_2021&amp;diff=6163</id>
		<title>Архитектура рачунара/К Јул 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%9A_%D0%88%D1%83%D0%BB_2021&amp;diff=6163"/>
		<updated>2023-05-05T20:48:29Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: /* Решење, 3. задатак под а и в */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;(7)&#039;&#039;&#039; У регистру PSW постоји неколико бита који се односе на прекиде. У неке од датих бита се може постављати вредност 1, могу се брисати, и може се уписивати вредност.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Назначити све бите регистра PSW који се односе на прекиде и објаснити чему који бит намењен. Назначити на основу чега се одређује број појединих бита.&lt;br /&gt;
# За сваки од ових бита назначити у којим се ситуацијама њихова вредност мења (поставља, брише, уписује). Одговор дати табеларно.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Бити регистра PSW !! Мењање (постављање, брисање, уписивање) !! Ситуација у којој се мења&lt;br /&gt;
|-&lt;br /&gt;
| || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;(8)&#039;&#039;&#039; Адресирање регистара контролера улазно/излазних уређаја може да се реализује на два начина, па у зависности од тога како је то реализовано постоје (1) системи код којих је улазно/излазни адресни простор меморијски пресликан и (2) системи код којих су улазно/излазни и меморијски адресни простори раздвојени.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Објаснити које се инструкције користе за упис и читање регистара контролера улазно/излазних уређаја у случајевима (1) и (2).&lt;br /&gt;
# Објаснити како у случајевима (1) и (2) контролери меморије и улазно/излазних уређаја утврђују ко од њих треба као слуга да реализују&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; циклус на магистрали инициран од стране процесора као газде.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;(25)&#039;&#039;&#039; Адресна магистрала процесора као и магистрала података је 16-битна. Садржај дела оперативне меморије је приказан на слици:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Адреса || 0000h || 0001h || 0002h || 0003h || 0004h || 0005h || 0006h || 0007h || 0008h || 0009h || 000Ah&lt;br /&gt;
|-&lt;br /&gt;
| Садржај || 02h || 10h || 00h || 10h || 10h || 11h || 10h || F2h || 0Eh || FFh || 00h&lt;br /&gt;
|-&lt;br /&gt;
| Адреса || 1000h || 1001h || 1002h || 1003h || 1004h || 1005h || 1006h || 1007h || 1008h || 1009h || 100Ah&lt;br /&gt;
|-&lt;br /&gt;
| Садржај || 1Fh || 0Fh || 0Eh || 25h || 08h || 00h || F0h || 02h || 11h || 07h || 00h&lt;br /&gt;
|-&lt;br /&gt;
| Адреса || 100Bh || 100Ch || 100Dh || 100Eh || 100Fh || 1010h || 1011h || 1012h || 1013h || 1014h || 1015h&lt;br /&gt;
|-&lt;br /&gt;
| Садржај || FFh || FFh || 00h || FFh || F8h || F3h || FDh || F4h || 09h || F0h || F4h&lt;br /&gt;
|}&lt;br /&gt;
Процесор поседује 16-битне регистре PC (програмски бројач), SP (показивач на прву слободну локацију стека који расте према вишим адресама), PSW (програмска статусна реч) и регистар ACC (акумулатор). Претпоставити да је пре почетка извршавања главног програма PC = 1001h, ACC = FFFFh, SP = E000h, IVTP=1h, а PSW = 5050h. Процесор из меморије дохвата инструкције бајт по бајт. Оперативна меморија је сачињена од два модула (M0 и M1) исте величине, а ширина меморијске речи је 8 бита. Један меморијски модул (M0) је повезан на линије D&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt;, а други меморијски модул (M1) на линије D&amp;lt;sub&amp;gt;15..8&amp;lt;/sub&amp;gt; магистрале података. Модуле M0 садржи марне, а модул M1 непарне адресе. Адресирање је на нивоу података дужине 8 и 16 бита. Подаци и адресе дужине 16 бита се у меморију смештају тако да се на нижу локацију смешта нижи бајт. Приступ (упис/читање) до једног бајта податка траје један циклус на магистрали. Приступ (упис/читање) до два бајта податка почев од меморијске локације са парном адресом траје један циклус на магистрали, а почев од непарне адресе траје две циклуса на магистрали.&lt;br /&gt;
Фаза читања инструкције започиње увек читањем једног бајта - прог бајта инструкције. На основу првог бајта инструкције, процесор зна колика је дужина инструкције и може да оптимизује број циклуса на магистрали, тако да у наставку довлачења инструкције може, али не мора, да чита инструкцију бајт по бајт.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Навести секвенцу садржаја на адресној магистрали, магистрали података и контролној магистрали за сваки циклус на магистрали при извршавању главног програма и прекидне рутине. Приликом скока у прекидну рутину на стеку се чувају PSW и PC, тим редоследом. Инструкције које оперишу са осмобитним подацима акумулатора користе нижих осам бита акумулатора, док се виших осам битова не мењају.&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
1001h || ANDB || #0Eh || ; neposredno adresiranje&lt;br /&gt;
1003h || STOREW || 0008h || ; memorijsko direktno adresiranje&lt;br /&gt;
1006h || INT  ||  #2h || ; softverski prekid&lt;br /&gt;
1008h || STORES || 0007h || ; memorijsko direktno adresiranje&lt;br /&gt;
100Bh || HALT  ||     || ; zaustavljanje procesora&lt;br /&gt;
100Ch || ...       &lt;br /&gt;
...&lt;br /&gt;
1010h || NOT    ||    || ; bezadresno adresiranje&lt;br /&gt;
1011h || INC    ||    || ; bezadresno adresiranje&lt;br /&gt;
1012h || RTI    ||    || ; povratak iz potprograma&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#: Решење представити у табели чије заглавље изгледа као на слици: (Табела 3)&lt;br /&gt;
#: Рб представља редни број циклуса на магистрали, A&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; и D&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; садржаје адресних линија и линија података у датом циклусу. RD, WR и W (означава да се приступа по два бајта податка почев од парне адресе) су вредности управљачких сигнала на магистрали. PC представља садржај програмског бројача, IR садржај инструкцијског регистра, TMP садржај прихватног регистра операнда или адресе операнда, ACC садржај акумулатора и SP садржај показивача на врх стека. О вредности регистра PSW не треба водити евиденцију (сматрати да се не мења). У коментару навести у којој од фаза се реализује дати циклус: дохватања инструкције (IF), декодовања инструкције (ID), извршавања операције (EX) или обрада прекида (IS).&lt;br /&gt;
# Детаљно нацртати како би се повезали модули M0 и M1 на задату магистралу. Повезивање процесора на магистралу није потребно цртати. Означити све ширине сигнала.&lt;br /&gt;
# Колико је релативно убрзање извршавања дате секвенце инструкција под а) на задатој архитектури магистрале и процесора (архитектура А), у односу да магистрала и процесор подржавају само циклусе уписа и читања од једног бајта (архитектура Б)?&lt;br /&gt;
Резултат дати као: &amp;lt;code&amp;gt;број циклуса (архитектура А)/број циклуса (архитектура Б)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Табела 3: Заглавље решења дела под а.&lt;br /&gt;
| Рб || A&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; || D&amp;lt;sub&amp;gt;15..8&amp;lt;/sub&amp;gt; || D&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt; || RD || WR || W || PC || IR&amp;lt;sub&amp;gt;23:16&amp;lt;/sub&amp;gt; || IR&amp;lt;sub&amp;gt;15:8&amp;lt;/sub&amp;gt; || IR&amp;lt;sub&amp;gt;7:0&amp;lt;/sub&amp;gt; || TMP&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; || ACC || SP || Коментар&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Архитектура рачунара]]&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
&lt;br /&gt;
а)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Табела 4: решење дела под а.&lt;br /&gt;
| Рб || A&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; || D&amp;lt;sub&amp;gt;15..8&amp;lt;/sub&amp;gt; || D&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt; || RD || WR || W || PC || IR&amp;lt;sub&amp;gt;23:16&amp;lt;/sub&amp;gt; || IR&amp;lt;sub&amp;gt;15:8&amp;lt;/sub&amp;gt; || IR&amp;lt;sub&amp;gt;7:0&amp;lt;/sub&amp;gt; || TMP&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt; || ACC || SP || Коментар&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1001 || 0F || / || 1 || 0 || 0 || 1002 || 0F || / || / || / || FFFF || E000 || IF (ANDB)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1002 || / || 0E || 1 || 0 || 0 || 1003 || 0F || 0E || / || / || FFFF || E000 || IF (ANDB)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  || 0F || 0E || / || 0E || FFFF || E000 || ID (ANDB)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  || 0F || 0E || / || 0E || FF0E || E000 || IE (ANDB)&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 1003 || 25 || / || 1 || 0 || 0 || 1004 || 25 || / || / || / || FF0E || E000 || IF (STOREW)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 1004 || 00 || 08 || 1 || 0 || 1 || 1006 || 25  || 08 || 00 || / || FF0E || E000 || IF (STOREW)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  || 25  || 08 || 00 || 0008 || FF0E || E000 || ID (STOREW)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 0008 || FF || 0E || 0 || 1 || 1 || 1006 || 25  || 08 || 00 || 0008 || FF0E || E000 || IE (STOREW)&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 1006 || / || F0 || 1 || 0 || 0 || 1007 || F0 || / || / || / || FF0E || E000 || IF (INT)&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 1007 || 02 || / || 1 || 0 || 0 || 1008 || F0 || 02 || / || / || FF0E || E000 || IF (INT)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  || F0 || 02 || / || 02 || FF0E || E000 || ID (INT)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  || F0 || 02 || / || 02 || FF0E || E000 || IE (INT)&lt;br /&gt;
|-&lt;br /&gt;
| 8 || E000 || 50 || 50 || 0 || 1 || 1 || 1008 || F0 || 02 || / || 02 || FF0E || E002 || IS (INT)&lt;br /&gt;
|-&lt;br /&gt;
| 9 || E002 || 10 || 08 || 0 || 1 || 1 || 1008 || F0 || 02 || / || 02 || FF0E || E004 || IS (INT)&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 0005 || 11 || / || 1 || 0 || 0 || 1008 || F0 || 02 || / || 11 || FF0E || E004 || IS (INT)&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 0006 || / || 10 || 1 || 0 || 0 || 1011 || F0 || 02 || / || 1011 || FF0E || E004 || IS (INT)&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 1011  || FD || / || 1 || 0 || 0 || 1012 || FD || / || / || / || FF0E || E004 || IF (INC)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  ||  || / || / || / || FF0F || E004 || IE (INC)&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 1012 || / || F4 || 1 || 0 || 0 || 1013 || F4 || / || / || / || FF0F || E004 || IF (RTI)&lt;br /&gt;
|-&lt;br /&gt;
| 14 || E002 || 10 || 08 || 1 || 0 || 1 || 1008 || F4 || / || / || 1008 || FF0F || E002 || IE (RTI)&lt;br /&gt;
|-&lt;br /&gt;
| 15 || E000 || 50 || 50 || 1 || 0 || 1 || 1008 || F4 || / || / || 5050 || FF0F || E000 || IE (RTI)&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 1008 || / || 11 || 1 || 0 || 0 || 1009 || 11 || / || / || / || FF0F || E000 || IF (STOREB)&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 1009 || 07 || / || 1 || 0 || 0 || 100A || 11 || 07 || / || / || FF0F || E000 || IF( STOREB)&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 100A || / || 00 || 1 || 0 || 0 || 100B || 11 || 07 || 00 || / || FF0F || E000 || IF (STOREB)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  || 11 || 07 || 00 || 0007 || FF0F || E000 || ID (STOREB)&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 0007 || 0F || / || 0 || 1 || 0 || 100B || 11 || 07 || 00 || 0007 || FF0F || E000 || IE (STOREB)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 100B || FF || / || 1 || 0 || 0 || 100C || FF || / || / || / || FF0F || E000 || IF (HALT)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  ||  ||  ||  ||  || / || / || / || FF0F || E000 || IE (HALT)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
б) НЕДОСТАЈЕ&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
в) Како архитектура А за секвенцу инструкција из дела а. користи двобајтно читање 6 пута и завршава дату секвенцу са 20 читања, закључујемо да би архитектури Б требало 26 читања. Резултат је 20/26.&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A0%D0%A22/%D0%9A1_2018&amp;diff=5001</id>
		<title>ОРТ2/К1 2018</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A0%D0%A22/%D0%9A1_2018&amp;diff=5001"/>
		<updated>2022-11-06T12:25:12Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Zamena slike dijagrama toka popravljenom svg verzijom&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
== Поставка ==&lt;br /&gt;
Реализовати уређај P за спрегу између уређаја UA и UB који извршава следећу операцију. Уређај P треба од уређаја UA да паралелно прими неозначену реч N, која представља дужину низа A, а затим и чланове низа A (a[i]). Сматрати да је N паран број и да не може бити једнак нули. Чланови низа A су означене шеснаестобитне бинарне речи дате у другом комплементу. Након завршеног читања низа A, уређај P треба да пошаље уређају UB низ B који има дупло мање чланова него низ A. Чланови низа B (b[i]) су четрнаестобитне означене речи у другом комплементу где је: &amp;lt;math&amp;gt;b[i] = \frac{a[i] + a[(N - 1) - i]}{4}, i = 0..\left( \frac{N}{2} - 1\right) &amp;lt;/math&amp;gt;. Описана операција треба да се понавља циклично. Уређаји UA, P и UB треба да раде синхроно на исти сигнал такта.&lt;br /&gt;
&lt;br /&gt;
Уређај UA шаље уређају P шеснаестобитне бинарне речи по линијама података DAP&amp;lt;sub&amp;gt;15..0&amp;lt;/sub&amp;gt;, при чему је бит 15 најстарији а бит 0 најмлађи бит. За синхронизацију између уређаја UA и P користе се статусни сигнал SPA и управљачки сигнал CAP. Вредностима 0 и 1 сигнала SPA уређај P шаље уређају UA индикацију када не може и када може да прими шеснаестобитну бинарну реч, респективно. Вредношћу 1 сигнала CAP, трајања једне периоде сигнала такта, уређај UA шаље уређају P команду да треба да прими шеснаестобитну бинарну реч, при чему уређај UA то чини кад утврди да уређај P на статусној линији SPA држи вредност 1.&lt;br /&gt;
&lt;br /&gt;
Уређај P шаље паралелно уређају UB четрнаестобитну бинарну реч по линијама података DPB&amp;lt;sub&amp;gt;13..0&amp;lt;/sub&amp;gt;, при чему је бит 13 најстарији а бит 0 најмлађи бит. За синхронизацију између уређаја P и UB користе се статусни сигнал SBP и управљачки сигнал CPB. Вредностима 0 и 1 сигнала SBP уређај UB шаље уређају P индикацију када не може и када може да прими четрнаестобитну бинарну реч, респективно. Вредношћу 1 сигнала CPB, трајања једне периоде сигнала такта, уређај P шаље уређају UB команду да треба да прими четрнаестобитну бинарну реч, при чему уређај P то чини кад утврди да уређај UB на статусној линији SBP држи вредност 1.&lt;br /&gt;
&lt;br /&gt;
У случају коришћења меморијског модула потребно је обратити пажњу на капацитет модула тако да се не користи сувишан простор. Сматрати да су на располагању меморијски модули који имају стандардне улазе и излазе (&amp;lt;math&amp;gt;DI&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;DO&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;ADDR&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\overline{RD}/WR&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Претпоставити да се на почетку на статусним линијама SPA и SBP налазе вредности 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Нацртати структурну шему операционе јединице уређаја P.&lt;br /&gt;
# Нацртати дијаграме тока управљачких сигнала операционе јединице и управљачке јединице уређаја P.&lt;br /&gt;
# Нацртати структурну шему управљачке јединице уређаја P реализоване помоћу бројача корака и декодера и дати изразе за генерисање управљачких сигнала операционе и управљачке јединице уређаја P.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Решење ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Објашњење:&#039;&#039;&#039;&#039;&#039; С обзиром на то да се сабирају парови бројева, могуће је користити дупло мању меморију од величине прослеђеног низа. Пошто бројач креће од 0, због тога у А учитавамо N/2 - 1. Првих N/2 итерација само учитавамо елементе. Затим, у следећих N/2, паралелно учитавамо и користимо могућност да нам меморија на излазу има оно што је тренутно на адреси и да то у истом такту и прегазимо. Тако овде прочитамо податак на адреси, саберемо га са тренутним чланом који нам долази од уређаја А и онда то упишемо на исту ту адресу. Дељење са 4 је еквивалентно као да два пута шифтујемо удесно, зато се при слању података уређају B, шаљу само битови од 15 до 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Датотека:ORT2 K1 2018 Operaciona jedinica.png|thumb|1200px|center|Шема уређаја P]]&lt;br /&gt;
[[Датотека:ORT2 K1 2018 Dijagram operaciona.svg|1200px|оквир|центар|Дијаграм тока сигнала операционе јединице]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Напомене:&#039;&#039;&#039;&lt;br /&gt;
Асистент је на консултацијама дао идејно решење које је аутор детаљније разрадио на сликама изнад. Најоптималније решење користи N/2 меморије. Решење доступно на РТИ Mega стога није најоптималније.  Ова врста неоптималности носила је -2 до -3 поена.&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОРТ2]]&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:ORT2_K1_2018_Dijagram_operaciona.svg&amp;diff=5000</id>
		<title>Датотека:ORT2 K1 2018 Dijagram operaciona.svg</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:ORT2_K1_2018_Dijagram_operaciona.svg&amp;diff=5000"/>
		<updated>2022-11-06T12:18:02Z</updated>

		<summary type="html">&lt;p&gt;BogdanW3: Нова страница: {{file | description =  | license     = self }}&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{file&lt;br /&gt;
| description = &lt;br /&gt;
| license     = self&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
</feed>