<?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=Gigxter</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=Gigxter"/>
	<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/Gigxter"/>
	<updated>2026-06-04T03:15:27Z</updated>
	<subtitle>Кориснички доприноси</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%88%D1%83%D0%BB_2022&amp;diff=6252</id>
		<title>ОС1/Јул 2022</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%A11/%D0%88%D1%83%D0%BB_2022&amp;diff=6252"/>
		<updated>2023-06-10T15:44:58Z</updated>

		<summary type="html">&lt;p&gt;Gigxter: /* Rešenje */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
[http://os.etf.bg.ac.rs/OS1/rokovi/2022/jul/Jul%202022.pdf Zadaci na stranici predmeta.]&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Navedeno je nekoliko funkcija standardne biblioteke jezika C (&#039;&#039;libc&#039;&#039;). Za svaku od njih navesti da li u svojoj implementaciji sigurno sadrži sistemski poziv (upisati &amp;quot;Da&amp;quot;) ili najverovatnije ne sadrži sistemski poziv (iako bi teorijski i to moglo da bude deo funkcionalnosti jezgra operativnog sistema, za tim nema nikakve potrebe, pa se iz praktičnih razloga ne radi; upisati &amp;quot;Ne&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Funkcija !! Opis !! Sadrži sist. poziv&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;void* memcpy(void* dest, const void* src, size_t count)&amp;lt;/syntaxhighlight&amp;gt; || Kopira niz bajtova u memoriji sa jednog mesta na drugo. ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;void exit (int status)&amp;lt;/syntaxhighlight&amp;gt; || Završava izvršavanje programa. ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;int getchar(void)&amp;lt;/syntaxhighlight&amp;gt; || Učitava znak sa standardnog ulaza. ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;char* strchr(const char *str, int c)&amp;lt;/syntaxhighlight&amp;gt; || Traži prvu pojavu znaka u datom nizu znakova. ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Odozgo na dole: &#039;&#039;Ne&#039;&#039;, &#039;&#039;Da&#039;&#039;, &#039;&#039;Da&#039;&#039;, &#039;&#039;Ne&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Precizno objasniti zašto klasičan linker svoj posao obavlja u dva prolaza (a ne može samo u jednom). Obrazloženje ilustrovati primerom.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Videti isti ovaj zadatak iz [[ОС1/Јул 2017#5. zadatak|jula 2017]].&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Ukratko objasniti zašto je kod segmentne organizacije virtuelne memorije obavezna provera prekoračenja granice segmenta prilikom svakog adresiranja, a kod stranične organizacije ta provera ne postoji.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Videti isti ovaj zadatak iz [[ОС1/Август 2020#4. zadatak|avgusta 2020]].&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Šta je DLL i čemu služi? Objasniti osnovni motiv za postojanje ovog koncepta.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Videti isti ovaj zadatak iz [[ОС1/Јун 2019#5. zadatak|juna 2019]].&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Šta radi procesorska instrukcija tipa &#039;&#039;test-and-set&#039;&#039; i za šta se ona tačno koristi u operativnim sistemima? &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Videti isti ovaj zadatak iz [[ОС1/Јул 2017#2. zadatak|jula 2017]].&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Precizno objasniti ceo mehanizam u sistemima nalik sistemu Unix kojim se postiže to da sistemskim pozivom &#039;&#039;kill&#039;&#039; jedan proces gasi drugi proces (šta &#039;&#039;tačno&#039;&#039; radi ovaj sistemski poziv i kako dovodi do gašenja procesa). &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Sistemskim pozivom &#039;&#039;kill&#039;&#039; pozivajući proces drugom procesu šalje &#039;&#039;signal&#039;&#039;. Signal je prosta informacija, identifikacija nekakve proste poruke, obično celobrojna vrednost. Operativni sistem prenosi tu infomaciju odredišnom procesu, a reakcija na taj signal je poziv potprograma koji se izvršava u kontekstu i adresnom prostoru odredišnog procesa. Za svaki signal operativni sistem definiše podrazumevanu reakciju, uglavnom je to samo gašenje procesa sistemskim pozivom &#039;&#039;exit&#039;&#039;. Međutim, odredišni proces za neke signale može reakciju da preusmeri na svoje potprograme odgovrajućim sistemskim pozivom.&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Šta je problem sledeće implementacije kritične sekcije uposlenim čekanjem?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
shared var flag1 = false, flag2 = false;&lt;br /&gt;
process P1&lt;br /&gt;
begin&lt;br /&gt;
    loop&lt;br /&gt;
        flag1 := true;&lt;br /&gt;
        while flag2 = true do null end;&lt;br /&gt;
        &amp;lt;critical section&amp;gt;&lt;br /&gt;
        flag1 := false;&lt;br /&gt;
        &amp;lt;non-critical section&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
end P1;&lt;br /&gt;
&lt;br /&gt;
process P2&lt;br /&gt;
begin&lt;br /&gt;
    loop&lt;br /&gt;
        flag2 := true;&lt;br /&gt;
        while flag1 = true do null end;&lt;br /&gt;
        &amp;lt;critical section&amp;gt;&lt;br /&gt;
        flag2 := false;&lt;br /&gt;
        &amp;lt;non-critical section&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
end P1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Problem je u slučaju da oba procesa postave svoju zastavicu na &#039;&#039;true&#039;&#039;, jer će onda neprestano uposleno čekati (&#039;&#039;livelock&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Precizno objasniti šta radi sledeći fragment programa:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int fd = open(&amp;quot;./mydoc.txt&amp;quot;, O_CREAT | O_TRUNC | O_WRONLY);&lt;br /&gt;
if (fd &amp;lt; 0) handle_error(&amp;quot;Cannot open data file.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
int pid = fork();&lt;br /&gt;
if (pid == 0) {&lt;br /&gt;
    dup2(fd, 1);&lt;br /&gt;
    execlp(&amp;quot;./myprog.a&amp;quot;, NULL);&lt;br /&gt;
    handle_error(&amp;quot;Cannot open exe file.&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Program otvara &amp;lt;code&amp;gt;mydoc.txt&amp;lt;/code&amp;gt; fajl u trenutnom direktorijumu za pisanje, pravi novi proces, duplira deskriptor upravo otvorenog fajla (čineći tako da sada proces-dete takođe ima otvoren taj fajl) s tim što novom fajl deskriptoru identifikator postavlja na 1, što je fajl deskriptor za standardni izlaz. Zatim zamenjuje kod procesa-deteta sa kodom programa &amp;lt;code&amp;gt;myprog.a&amp;lt;/code&amp;gt; i nastavlja sa izvršavanjem, tako da se izlaz tog programa sada čuva u fajlu &amp;lt;code&amp;gt;mydoc.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Precizno objasniti šta radi sledeća komanda: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; inline&amp;gt;chmod g=x, u+rwx, o-wx .././frd&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Fajlu &#039;&#039;frd&#039;&#039; iz roditeljskog direktorijuma tekućeg direktorijuma pravila pristupa postaju sledeća: grupa može isključivo da izvršava fajl, vlasnik može da čita, upisuje i izvršava fajl, dok ostali gube pravo pristupa pisanja i izvršavanja ako su ih do sad imali.&lt;br /&gt;
&lt;br /&gt;
== 10. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Precizno objasniti šta je i zašto najveći nedostatak ulančane organizacije fajla kod proizvoljnog pristupa fajlu. Zašto taj problem ne postoji kod FAT organizacije? &lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОС1]]&lt;/div&gt;</summary>
		<author><name>Gigxter</name></author>
	</entry>
</feed>