<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sr">
	<id>https://siwiki.rs/w/index.php?action=history&amp;feed=atom&amp;title=%D0%90%D0%9E%D0%A02%2F%D0%9A_2021</id>
	<title>АОР2/К 2021 - Историја измена</title>
	<link rel="self" type="application/atom+xml" href="https://siwiki.rs/w/index.php?action=history&amp;feed=atom&amp;title=%D0%90%D0%9E%D0%A02%2F%D0%9A_2021"/>
	<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%9A_2021&amp;action=history"/>
	<updated>2026-06-04T09:12:07Z</updated>
	<subtitle>Историја измена ове странице на пројекту</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%9A_2021&amp;diff=6198&amp;oldid=prev</id>
		<title>KockaAdmiralac: Male ispravke // Edit via Wikitext Extension for VSCode</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%9A_2021&amp;diff=6198&amp;oldid=prev"/>
		<updated>2023-05-20T19:44:33Z</updated>

		<summary type="html">&lt;p&gt;Male ispravke // Edit via Wikitext Extension for VSCode&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 20. мај 2023. у 21:44&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l52&quot;&gt;Ред 52:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 52:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 3. задатак ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 3. задатак ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Поставка ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Поставка ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Код хардверске виртуализације користи се техника пратеће табела страница (&amp;#039;&amp;#039;Shadow Page Tables&amp;#039;&amp;#039;). Описати ову технику. Дати пример пресликавања једне виртуелне адресе госта у физичку адресу домаћина и потпунити све потребне табеле.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Код хардверске виртуализације&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; &lt;/ins&gt;користи се техника пратеће табела страница (&amp;#039;&amp;#039;Shadow Page Tables&amp;#039;&amp;#039;). Описати ову технику. Дати пример пресликавања једне виртуелне адресе госта у физичку адресу домаћина и потпунити&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; &lt;/ins&gt;све потребне табеле.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Решење ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Решење ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Како хипервизор мора да зна за стање страница госта како би умео да пресликава адресе, уводимо табелу страница која прати табелу страница госта. Праћење обављамо на више начина:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Како хипервизор мора да зна за стање страница госта како би умео да пресликава адресе, уводимо табелу страница која прати табелу &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;страница госта. Сам гост не зна да постоји пратећа табела страница, а хардвер (MMU јединица и TLB) не зна да постоји табела &lt;/ins&gt;страница госта. Праћење обављамо на више начина:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Хипервизор означи регион са табелом страница тако да госту забрани писање у њега, па те грешке хвата и обрађује, ажурирајући обе табеле у процесу.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Хипервизор означи регион са табелом страница тако да госту забрани писање у њега, па те грешке хвата и обрађује, ажурирајући обе табеле у процесу.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Хипервизор хвата грешке у превођењу адресе госта и приликом њихове обраде ажурира пратећу табелу (ово означава да је у госту додато ново мапирање), као и &amp;#039;&amp;#039;INVLPG&amp;#039;&amp;#039; инструкцију (ово означава да је у госту уклоњено мапирање).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Хипервизор хвата грешке у превођењу адресе госта и приликом њихове обраде ажурира пратећу табелу (ово означава да је у госту додато ново мапирање), као и &amp;#039;&amp;#039;INVLPG&amp;#039;&amp;#039; инструкцију (ово означава да је у госту уклоњено мапирање).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%9A_2021&amp;diff=6173&amp;oldid=prev</id>
		<title>KockaAdmiralac: Treći zadatak // Edit via Wikitext Extension for VSCode</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%9A_2021&amp;diff=6173&amp;oldid=prev"/>
		<updated>2023-05-11T20:27:08Z</updated>

		<summary type="html">&lt;p&gt;Treći zadatak // Edit via Wikitext Extension for VSCode&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 11. мај 2023. у 22:27&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l51&quot;&gt;Ред 51:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 51:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 3. задатак ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 3. задатак ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{делимично решено}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Поставка ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Поставка ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Код хардверске виртуализације користи се техника пратеће табела страница (&amp;#039;&amp;#039;Shadow Page Tables&amp;#039;&amp;#039;). Описати ову технику. Дати пример пресликавања једне виртуелне адресе госта у физичку адресу домаћина и потпунити све потребне табеле.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Код хардверске виртуализације користи се техника пратеће табела страница (&amp;#039;&amp;#039;Shadow Page Tables&amp;#039;&amp;#039;). Описати ову технику. Дати пример пресликавања једне виртуелне адресе госта у физичку адресу домаћина и потпунити све потребне табеле.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Решење ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Решење ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Како хипервизор мора да зна за стање страница госта како би умео да пресликава адресе, уводимо табелу страница која прати табелу страница госта. Праћење обављамо на више начина:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# Хипервизор означи регион са табелом страница тако да госту забрани писање у њега, па те грешке хвата и обрађује, ажурирајући обе табеле у процесу.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# Хипервизор хвата грешке у превођењу адресе госта и приликом њихове обраде ажурира пратећу табелу (ово означава да је у госту додато ново мапирање), као и &#039;&#039;INVLPG&#039;&#039; инструкцију (ово означава да је у госту уклоњено мапирање).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# Техником паравиртуелизације гостујући оперативни систем обавести хипервизора да је додао или уклонио мапирање.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;У сваком случају, хипервизор мора такође да хвата промену STP регистра.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 4. задатак ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 4. задатак ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%9A_2021&amp;diff=6023&amp;oldid=prev</id>
		<title>KockaAdmiralac: /* Решење */ Dohvatanje sledećeg studenta, provera granica niza</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%9A_2021&amp;diff=6023&amp;oldid=prev"/>
		<updated>2023-04-04T19:59:56Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Решење: &lt;/span&gt; Dohvatanje sledećeg studenta, provera granica niza&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 4. април 2023. у 21:59&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l172&quot;&gt;Ред 172:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 172:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Student* pronadjiStudentaPoIndeksu(Student** list, int n, const char gggg[], const char bbbb[]) {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Student* pronadjiStudentaPoIndeksu(Student** list, int n, const char gggg[], const char bbbb[]) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     // Дохватање броја индекса и године првог студента.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     // Дохватање броја индекса и године првог студента.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     prefetch(&amp;amp;(list[0]-&amp;gt;id));&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;if (n != 0)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &lt;/ins&gt;prefetch(&amp;amp;(list[0]-&amp;gt;id));&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     for (int i = 0; i &amp;lt; n; i++) {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     for (int i = 0; i &amp;lt; n; i++) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         // Дохватање статуса активности тренутног студента.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         // Дохватање статуса активности тренутног студента.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l180&quot;&gt;Ред 180:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 181:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             indeks_ok &amp;amp;= list[i]-&amp;gt;gggg[j] == gggg[j];&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             indeks_ok &amp;amp;= list[i]-&amp;gt;gggg[j] == gggg[j];&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         // Дохватање броја индекса и године следећег студента.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         // Дохватање броја индекса и године следећег студента.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         prefetch(&amp;amp;(list[i]-&amp;gt;id));&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;if (i != n - 1)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;            &lt;/ins&gt;prefetch(&amp;amp;(list[i &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;+ 1&lt;/ins&gt;]-&amp;gt;id));&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         for (int j = 0; j &amp;lt; 4 &amp;amp;&amp;amp; indeks_ok; j++)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         for (int j = 0; j &amp;lt; 4 &amp;amp;&amp;amp; indeks_ok; j++)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             indeks_ok &amp;amp;= list[i]-&amp;gt;bbbb[j] == bbbb[j];&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             indeks_ok &amp;amp;= list[i]-&amp;gt;bbbb[j] == bbbb[j];&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%9A_2021&amp;diff=6022&amp;oldid=prev</id>
		<title>KockaAdmiralac: /* Решење */ 7 -&gt; 8</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%9A_2021&amp;diff=6022&amp;oldid=prev"/>
		<updated>2023-04-04T19:51:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Решење: &lt;/span&gt; 7 -&amp;gt; 8&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 4. април 2023. у 21:51&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l43&quot;&gt;Ред 43:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 43:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         }&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     }&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     for (register int j = 0; j &amp;lt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7&lt;/del&gt;; ++j) {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     for (register int j = 0; j &amp;lt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;8&lt;/ins&gt;; ++j) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         printf(&amp;quot;maj %d.: %lf&amp;quot;, i + j, max[j]);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         printf(&amp;quot;maj %d.: %lf&amp;quot;, i + j, max[j]);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     }&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%9A_2021&amp;diff=6021&amp;oldid=prev</id>
		<title>KockaAdmiralac: K 2021, bez trećeg zadatka</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%9A_2021&amp;diff=6021&amp;oldid=prev"/>
		<updated>2023-04-04T19:36:17Z</updated>

		<summary type="html">&lt;p&gt;K 2021, bez trećeg zadatka&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{tocright}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Колоквијум 2021. године&amp;#039;&amp;#039;&amp;#039; одржан је 15. маја и трајао је 90 минута. Поставка рока доступна је [https://rti.etf.bg.ac.rs/rti/ir3ar2/rokovi/aor2_21.zip са странице предмета] (зипована).&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Објаснити технику оптимизације рада кеш меморије која користи више банки унутар кеш меморије (&amp;#039;&amp;#039;Multibanked Caches&amp;#039;&amp;#039;). Шта је потребно да постоји код процесора и код кеш меморије да би дата техника могла да се примени.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
Кеш меморија са више банки омогућава више истовремених операција над кешом, слично као што се примењује код &amp;#039;&amp;#039;memory interleaving&amp;#039;&amp;#039;. На пример, узастопни блокови могу бити смештани у различите банке кеш меморије, тако да ако је једна банка заузета довлачењем једног блока остале банке могу да довлаче блокове непосредно после тог.&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
У процесору се налази &amp;#039;&amp;#039;L1 Data&amp;#039;&amp;#039; асоцијативна кеш меморија величине 512KiB, која користи &amp;#039;&amp;#039;write-through&amp;#039;&amp;#039; алгоритам за ажурирање садржаја оперативне меморије са &amp;#039;&amp;#039;no write allocated&amp;#039;&amp;#039; политиком довлачења. Користи се LRU алгоритам замене. Величина блока кеш меморије је 64B. Дат је програм који исписује за сваки дан месеца маја колика је измерена највиша температура у том месецу.&lt;br /&gt;
&lt;br /&gt;
У матрици &amp;lt;code&amp;gt;temp&amp;lt;/code&amp;gt; се налазе реалне вредности типа &amp;lt;code&amp;gt;double&amp;lt;/code&amp;gt; (ширине 64 бита) које представљају измерену температуру за мај месец за сваки дан за сваки секунд у дану. Матрица &amp;lt;code&amp;gt;temp&amp;lt;/code&amp;gt; има 31 колону (колона 0 – представља податке за 1. мај, колона 1 – представља податке за 2. мај итд.) и 86400 редова података (за сваки секунд у дану). Претпоставити да матрица &amp;lt;code&amp;gt;temp&amp;lt;/code&amp;gt; на почетку није учитана у кеш меморију, као и да је прва ћелија матрице &amp;lt;code&amp;gt;temp[0][0]&amp;lt;/code&amp;gt; поравната са блоком кеш меморије. Компајлер матрицу смешта по редовима.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
for (register int i = 0; i &amp;lt; 31; i = i + 1) {&lt;br /&gt;
    register double max = MIN_FLOAT;&lt;br /&gt;
    for (register int j = 0; j &amp;lt; 86400; j = j + 1)&lt;br /&gt;
        if (max &amp;lt; temp[j][i])&lt;br /&gt;
            max = temp[j][i];&lt;br /&gt;
    printf(&amp;quot;maj %d.:&amp;quot;, max);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Сматрати да приступ податку који се налази у кеш меморији траје 2 ns, а довлачење целог блока кеш меморије из оперативне меморије траје 50 ns. Уколико је дошло до кеш промашаја, прво се из оперативне меморије учита цео блок у кеш меморију, па се тек онда приступа траженом податку у кеш меморији.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Потребно је оптимизовати дати код тако да се резултат програма не промени, а да се при томе искористе карактеристике дате кеш меморије. Није дозвољено коришћење наменских инструкција за манипулацијом кеш меморије. У програму је доступно за коришћење још 10 регистара опште намене.&lt;br /&gt;
# Израчунати укупно време које је потребно за приступ подацима матрице &amp;lt;code&amp;gt;temp&amp;lt;/code&amp;gt; (анализирати део кода без исписа). Сматрати да услов &amp;lt;code&amp;gt;max &amp;lt; temp[j][i]&amp;lt;/code&amp;gt; ће бити испуњен сваки 10 пут. Дати време за дати код, као и време за оптимизовани код (из ставке по а) )&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
У оригиналном приступу проблему, ми приступамо низу по колонама, односно сваки приступ колони биће промашај у кешу. Како једна колона има 86400 елемената, а блок је величине 64 бајта, то значи да се за један пролаз довлачи &amp;lt;math&amp;gt;86400 \cdot 64B = 5400KiB&amp;lt;/math&amp;gt;, што је свакако више од 512KiB колика је величина наше кеш меморије, и значи да ће сваки приступ &amp;lt;code&amp;gt;temp&amp;lt;/code&amp;gt; у оквиру &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; морати да довлачи један блок кеша и трајати 50ns. Поред тога, сваки десети пут биће извршена линија у оквиру &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;, додајући додатних 2ns на то време. Време извршавања овог дела кода је онда: &amp;lt;math&amp;gt;31 \cdot 86400 \cdot \left(t_{miss} + \frac{1}{10} t_{hit}\right) = 134455680ns = 134.45568ms&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Један блок кеш меморије нам је 64 бајта, што значи да у њега може да стане 8 &amp;lt;code&amp;gt;double&amp;lt;/code&amp;gt; података. Додатно нам је доступно још 10 регистара опште намене. Ово сугерише да је овде оптимално применити блокирање по 8 дана, тако да прво прођемо кроз матрицу одређујући максимуме за првих осам дана, испишемо их, затим за следећих осам дана и тако даље. Овиме постижемо да све максимуме можемо сачувати у регистрима, и да су скоро сви блокови кеш меморије искоришћени до свог максимума.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
for (register int i = 0; i &amp;lt; 31; i += 8) {&lt;br /&gt;
    register double max[8] = {MIN_FLOAT, MIN_FLOAT, MIN_FLOAT, MIN_FLOAT, MIN_FLOAT, MIN_FLOAT, MIN_FLOAT, MIN_FLOAT};&lt;br /&gt;
    for (register int j = 0; j &amp;lt; 86400; ++j) {&lt;br /&gt;
        for (register int k = i; k &amp;lt; i + 8 &amp;amp;&amp;amp; k &amp;lt; 31; ++k) {&lt;br /&gt;
            if (max[k - i] &amp;lt; temp[j][i]) {&lt;br /&gt;
                max[k - i] = temp[j][i];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    for (register int j = 0; j &amp;lt; 7; ++j) {&lt;br /&gt;
        printf(&amp;quot;maj %d.: %lf&amp;quot;, i + j, max[j]);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
На овај начин ће у сваком реду бити 4 промашаја кеша и све остало ће бити поготци, па је време сада: &amp;lt;math&amp;gt;4 \cdot 86400 \cdot t_{miss} + (31 - 4) \cdot 86400 \cdot t_{hit} + 31 \cdot 86400 \cdot \frac{1}{10} t_{hit} = 22481280ns = 22.48128ms&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
{{делимично решено}}&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Код хардверске виртуализације користи се техника пратеће табела страница (&amp;#039;&amp;#039;Shadow Page Tables&amp;#039;&amp;#039;). Описати ову технику. Дати пример пресликавања једне виртуелне адресе госта у физичку адресу домаћина и потпунити све потребне табеле.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
== 4. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Потребно је делове датог програма оптимизовати. Програм учитава низ студената и смешта их у меморију. Сматрати да је почетна адреса низа за чување студената поравната са блоком кеша. Над низом примењује метода &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; inline&amp;gt;Student* pronadjiStudentaPoIndeksu(Student* list, int n, char[] gggg, char[] bbbb)&amp;lt;/syntaxhighlight&amp;gt;. Метода враћа показивач на активног студента који има индекс &amp;lt;code&amp;gt;gggg&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;bbbb&amp;lt;/code&amp;gt;, параметар &amp;lt;code&amp;gt;list&amp;lt;/code&amp;gt; је показивач на листу студената; &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; представља број студената у листи; &amp;lt;code&amp;gt;gggg&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;bbbb&amp;lt;/code&amp;gt; су низови дужине 4 карактера.&lt;br /&gt;
&lt;br /&gt;
Величина&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; података су: &amp;lt;code&amp;gt;sizeof(int) = sizeof(float)&amp;lt;/code&amp;gt; = 32 bit; &amp;lt;code&amp;gt;sizeof(bool)&amp;lt;/code&amp;gt; = sizeof(char)&amp;lt;/code&amp;gt; = 8 bit, адресе се&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; су ширине 32 бита. Програм се извршава на процесору који поседује кеш меморију чија је величина блока 128 бита. Остале карактерситике&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; кеш меморије нису доступне.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
struct Student {&lt;br /&gt;
    int id;&lt;br /&gt;
    int jmbg;&lt;br /&gt;
    char gggg[4];&lt;br /&gt;
    char bbbb[4];&lt;br /&gt;
    char pol;&lt;br /&gt;
    char* Ime;&lt;br /&gt;
    char* Prezime;&lt;br /&gt;
    int godinaStudija;&lt;br /&gt;
    float prosek;&lt;br /&gt;
    bool isActive;&lt;br /&gt;
    char polozenoIspita;&lt;br /&gt;
    char nivoStudija;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void procitajStudente(Student** studenti, int* n);&lt;br /&gt;
&lt;br /&gt;
Student* pronadjiStudentaPoIndeksu(Student** list, int n, const char gggg[], const char bbbb[]) {&lt;br /&gt;
    for (int i = 0; i &amp;lt; n; i++) {&lt;br /&gt;
        bool indeks_ok = true;&lt;br /&gt;
        for (int j = 0; j &amp;lt; 4 &amp;amp;&amp;amp; indeks_ok; j++)&lt;br /&gt;
            indeks_ok = indeks_ok &amp;amp;&amp;amp; list[i]-&amp;gt;gggg[j] == gggg[j];&lt;br /&gt;
        for (int j = 0; j &amp;lt; 4 &amp;amp;&amp;amp; indeks_ok; j++)&lt;br /&gt;
            indeks_ok = indeks_ok &amp;amp;&amp;amp; list[i]-&amp;gt;bbbb[j] == bbbb[j];&lt;br /&gt;
        if (indeks_ok &amp;amp;&amp;amp; list[i]-&amp;gt;isActive)&lt;br /&gt;
            return list[i];&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    int n;&lt;br /&gt;
    Student** studenti;&lt;br /&gt;
    procitajStudente(studenti, &amp;amp;n);&lt;br /&gt;
    // ...&lt;br /&gt;
    Student* s = pronadjiStudentaPoIndeksu(studenti, n, &amp;quot;2000&amp;quot;, &amp;quot;0001&amp;quot;);&lt;br /&gt;
    // ...&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Предложити нову структуру &amp;lt;code&amp;gt;Student&amp;lt;/code&amp;gt;, тако да се дата метода &amp;lt;code&amp;gt;pronadjiStudentaPoIndeksu&amp;lt;/code&amp;gt; ефикасније извршава.&lt;br /&gt;
# Није могуће изменити структуру &amp;lt;code&amp;gt;Student&amp;lt;/code&amp;gt;. Потребно је оптимизовати дату методу &amp;lt;code&amp;gt;pronadjiStudentaPoIndeksu&amp;lt;/code&amp;gt; трансформацијом и убацивањем инструкције &amp;lt;code&amp;gt;prefetch&amp;lt;/code&amp;gt; на одговарајућим местима тако да не постоји ни један промашај у кеш меморији. Претпоставити да је резултат инструкције &amp;lt;code&amp;gt;prefetch&amp;lt;/code&amp;gt; видљив након извршених 5 редова датог кода (&amp;lt;code&amp;gt;prefetch&amp;lt;/code&amp;gt; писати у засебно у новом реду).&lt;br /&gt;
# Трансформисати методу &amp;lt;code&amp;gt;pronadjiStudentaPoIndeksu&amp;lt;/code&amp;gt; коришћењем &amp;#039;&amp;#039;Loop fusion&amp;#039;&amp;#039; начина оптимизације кода.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
Нова структура &amp;lt;code&amp;gt;Student&amp;lt;/code&amp;gt; може да изгледа овако:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
struct StudentMisc {&lt;br /&gt;
    int id;&lt;br /&gt;
    int jmbg;&lt;br /&gt;
    char pol;&lt;br /&gt;
    char* Ime;&lt;br /&gt;
    char* Prezime;&lt;br /&gt;
    int godinaStudija;&lt;br /&gt;
    float prosek;&lt;br /&gt;
    char polozenoIspita;&lt;br /&gt;
    char nivoStudija;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Укупно: један студент = 1 блок кеша&lt;br /&gt;
struct Student {&lt;br /&gt;
    // 4B&lt;br /&gt;
    char gggg[4];&lt;br /&gt;
    // 4B&lt;br /&gt;
    char bbbb[4];&lt;br /&gt;
    // 1B&lt;br /&gt;
    bool isActive;&lt;br /&gt;
    // 3B padding овде&lt;br /&gt;
    // 4B&lt;br /&gt;
    StudentMisc* misc;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Уколико не бисмо могли да преуредимо структуру, &amp;lt;code&amp;gt;prefetch&amp;lt;/code&amp;gt; инструкције бисмо могли да убацимо на следећи начин:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
struct Student {&lt;br /&gt;
    // B0: 4B&lt;br /&gt;
    int id;&lt;br /&gt;
    // B0: 4B&lt;br /&gt;
    int jmbg;&lt;br /&gt;
    // B0: 4B&lt;br /&gt;
    char gggg[4];&lt;br /&gt;
    // B0: 4B&lt;br /&gt;
    char bbbb[4];&lt;br /&gt;
    // B1: 1B&lt;br /&gt;
    char pol;&lt;br /&gt;
    // B1: 3B padding&lt;br /&gt;
    // B1: 4B&lt;br /&gt;
    char* Ime;&lt;br /&gt;
    // B1: 4B&lt;br /&gt;
    char* Prezime;&lt;br /&gt;
    // B1: 4B&lt;br /&gt;
    int godinaStudija;&lt;br /&gt;
    // B2: 4B&lt;br /&gt;
    float prosek;&lt;br /&gt;
    // B2: 1B&lt;br /&gt;
    bool isActive;&lt;br /&gt;
    // B2: 3B padding&lt;br /&gt;
    // B2: 1B&lt;br /&gt;
    char polozenoIspita;&lt;br /&gt;
    // B2: 3B padding&lt;br /&gt;
    // B2: 1B&lt;br /&gt;
    char nivoStudija;&lt;br /&gt;
    // B2: 3B padding&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Student* pronadjiStudentaPoIndeksu(Student** list, int n, const char gggg[], const char bbbb[]) {&lt;br /&gt;
    // Дохватање броја индекса и године првог студента.&lt;br /&gt;
    prefetch(&amp;amp;(list[0]-&amp;gt;id));&lt;br /&gt;
    for (int i = 0; i &amp;lt; n; i++) {&lt;br /&gt;
        // Дохватање статуса активности тренутног студента.&lt;br /&gt;
        prefetch(&amp;amp;(list[i]-&amp;gt;prosek));&lt;br /&gt;
        bool indeks_ok = true;&lt;br /&gt;
        for (int j = 0; j &amp;lt; 4 &amp;amp;&amp;amp; indeks_ok; j++)&lt;br /&gt;
            indeks_ok &amp;amp;= list[i]-&amp;gt;gggg[j] == gggg[j];&lt;br /&gt;
        // Дохватање броја индекса и године следећег студента.&lt;br /&gt;
        prefetch(&amp;amp;(list[i]-&amp;gt;id));&lt;br /&gt;
        for (int j = 0; j &amp;lt; 4 &amp;amp;&amp;amp; indeks_ok; j++)&lt;br /&gt;
            indeks_ok &amp;amp;= list[i]-&amp;gt;bbbb[j] == bbbb[j];&lt;br /&gt;
        if (indeks_ok &amp;amp;&amp;amp; list[i]-&amp;gt;isActive)&lt;br /&gt;
            return list[i];&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Са друге стране, трансформација коришћењем &amp;#039;&amp;#039;Loop fusion&amp;#039;&amp;#039; би изгледала овако:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Student* pronadjiStudentaPoIndeksu(Student** list, int n, const char gggg[], const char bbbb[]) {&lt;br /&gt;
    for (int i = 0; i &amp;lt; n; i++) {&lt;br /&gt;
        bool indeks_ok = list[i]-&amp;gt;isActive;&lt;br /&gt;
        for (int j = 0; j &amp;lt; 4 &amp;amp;&amp;amp; indeks_ok; j++) {&lt;br /&gt;
            indeks_ok &amp;amp;= list[i]-&amp;gt;gggg[j] == gggg[j];&lt;br /&gt;
            indeks_ok &amp;amp;= list[i]-&amp;gt;bbbb[j] == bbbb[j];&lt;br /&gt;
        }&lt;br /&gt;
        if (indeks_ok) {&lt;br /&gt;
            return list[i];&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:АОР2]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
</feed>