gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Zad3 zamenjuje Zad5 kao jednostavniji primer citanja direktorijuma bez stat
[os2skripta.git] / skripta-os2.tex
index e9be874..d1e6837 100644 (file)
@@ -70,7 +70,7 @@ pdfauthor={\autor}%
 \newcommand*\Esc{\keystroke{Esc}}
 
 %margine
-\usepackage[top=1.5cm, bottom=1cm, left=2.5cm, right=2cm]{geometry}
+\usepackage[top=2cm, bottom=2cm, left=2.5cm, right=2cm]{geometry}
 
 \begin{document}
 
@@ -171,9 +171,12 @@ pdfauthor={\autor}%
 }
 
 \lstdefinestyle{terminal}{
-  frame=l,
+  frame=lt,
 %  frameround=fftt,
-  xleftmargin=4em
+  backgroundcolor=\color[gray]{.95},
+% prebreak=\P,
+  postbreak=\ding{229}\space,
+  xleftmargin=2em
 }
 
 \lstdefinestyle{numcodeblock}{
@@ -234,7 +237,7 @@ korišćenje zvanične stranice:
 \url{http://nongnu.org/gm2/base_libraries.html} za samo osnovne
 biblioteke.
 
-Predpostavimo da smo da je fajl napravljen u trenutnom direktorijumu,
+Predpostavimo da je fajl napravljen u trenutnom direktorijumu,
 koristeći neki tesktualni editor (u dodatku~\ref{app-joe} je opisan
 ``joe'' koji se koristi na vežbama).  Kreirani fajl se tada može
 prevesti u izvršnu verziju sledećom komandom:
@@ -247,7 +250,7 @@ napraviti fajl \kod{a.out}, koji se može pokrenuti sa:
 \begin{terminal}
   ./a.out
 \end{terminal}
-pri čemu \kod{./} naglaša da hoćemo da pokrenemo program iz trenutnog
+pri čemu \kod{./} naglašava da hoćemo da pokrenemo program iz trenutnog
 direktorijuma (koji se označava tačkom). Ako je potrebno da
 izvršni fajl ima neki drugi naziv može se koristiti poziv sledećeg
 tipa:
@@ -380,8 +383,8 @@ Budući da su u pitanju sistemski pozivi niskog nivoa, veličine tipova
 su nažalost promenljive i mogu zavisiti od konkretnog operativnog
 sistema, a naročito utiče da li je u pitanju~32--bitni, ili~64--bitni
 sistem. Zbog ovoga su date dve varijante bibilioteke sa tipovima.
-Prva je testirana na Lubuntu 11.10 32bit, a druga je testirana na
-Kubuntu 11.10 64bit.
+Prva je testirana na Lubuntu 11.10 i 12.04 32bit, a druga je testirana
+na Kubuntu 11.10 i 12.10 64bit.
 
 \begin{codeblock}
 DEFINITION MODULE FOR "C" Lib32;
@@ -464,20 +467,16 @@ END Lib32.
 \end{codeblock}
 
 \begin{codeblock}
-MODULE Zad5;
+MODULE Zad3;
 
-FROM SYSTEM IMPORT
-  ADR;
 FROM StrIO IMPORT
   WriteString, WriteLn;
 FROM NumberIO IMPORT
   WriteInt;
-FROM StrLib IMPORT
-  StrLen, StrConCat;
 FROM Args IMPORT
   Narg, GetArg;
-FROM Lib32 IMPORT
-  opendir, readdir, closedir, stat, PDir, PDirEnt, Stat;
+  FROM Lib32 IMPORT
+  opendir, readdir, closedir, PDir, PDirEnt;
 FROM errno IMPORT
   geterrno;
 
@@ -493,35 +492,18 @@ PROCEDURE Listaj(Ime: ARRAY OF CHAR);
 VAR
   dir: PDir;
   entry: PDirEnt;
-  info: Stat;
   c: INTEGER;
-  Len: CARDINAL;
-  Putanja: String;
 BEGIN
+  WriteString("Folder "); WriteString(Ime); WriteLn;
   dir:= opendir(Ime);
   IF dir = NIL THEN
-    WriteString("Folder "); WriteString(Ime); WriteLn;
     WriteString("  Greska broj "); WriteInt(geterrno(), 0); WriteString("."); WriteLn();
     WriteString("  Ne mogu da otvorim direktorijum."); WriteLn();
   ELSE
-    Len:= StrLen(Ime);
-    IF Ime[Len - 1] # "/" THEN
-      StrConCat(Ime, "/", Ime);
-    END;
-    WriteString("Folder "); WriteString(Ime); WriteLn;
     entry:= readdir(dir);
     WHILE entry # NIL DO
       IF entry^.name[0] # "." THEN
-        StrConCat(Ime, entry^.name, Putanja);
-        c:= stat(Putanja, ADR(info));
-        WriteString("  ");
-        IF c = -1 THEN
-          WriteString("?    ? KB");
-        ELSE
-          WriteInt(info.nlink, 3);
-          WriteInt((info.size + 512) DIV 1024, 5); WriteString(" KB ");
-        END;
-        WriteString(" "); WriteString(entry^.name); WriteLn;
+        WriteString("  "); WriteString(entry^.name); WriteLn;
       END;
       entry:= readdir(dir);
     END;
@@ -541,7 +523,7 @@ BEGIN
     Listaj(Putanja);
   END;
   WriteLn;
-END Zad5.
+END Zad3.
 \end{codeblock}
 
 \subsection{Stvaranje novih procesa}
@@ -631,14 +613,14 @@ END;
 \begin{minipage}{0.4\textwidth}
 \begin{tikzpicture}
 [proc/.style={circle,draw}]
-\def \n {5}
-\node[proc] (1) at (0,0) {1};
-\foreach \s in {2,...,\n}
+\def \n {3}
+\node[proc] (top) at (0,0) {0..4};
+\foreach \s in {0,...,\n}
 {
-  \node[proc] (\s) at (-3.5+\s,-2) {\s};
+  \node[proc] (\s) at (-1.5+\s,-2) {\s};
 }
-\foreach \s in {2,...,\n} {
-  \draw [->] (1) to (\s);
+\foreach \s in {0,...,\n} {
+  \draw [->] (top) to (\s);
 }
 \end{tikzpicture}
 \end{minipage}
@@ -647,15 +629,16 @@ END;
 
 \begin{minipage}{0.6\textwidth}
 \begin{codeblock}
-i := 1;
-j := 0;
-WHILE (i < n) AND (j < m) DO
+dubina := 1;
+brdece := 0;
+WHILE (dubina < maxdubina) AND 
+      (brdece < potrebnodece) DO
   pid := fork();
   IF pid # 0 THEN
-    INC(j);
+    INC(brdece);
   ELSE
-    INC(i);
-    j:=0;
+    INC(dubina);
+    brdece := 0;
   END;
 END;
 \end{codeblock}
@@ -663,14 +646,18 @@ END;
 \begin{minipage}{0.4\textwidth}
 \begin{tikzpicture}
 [proc/.style={circle,draw},
-level 1/.style={sibling distance=20mm,level distance=10mm},
-level 2/.style={sibling distance=10mm,font=\scriptsize}
+level 1/.style={sibling distance=28mm,level distance=10mm},
+level 2/.style={sibling distance=14mm,font=\scriptsize},
+level 3/.style={sibling distance=6mm,font=\tiny}
 ]
-\node[proc] (root) {0}
-child[->] foreach \x in {1,2} {node[proc] {\x}
-  child foreach \y in {1,2} {node[proc] {\x-\y}
-    }};
-
+\node[proc] (root) {1-0}
+child[->] foreach \x in {0,1} {node[proc] {1-\x}
+  child foreach \y in {0,1} {node[proc] {2-\y}
+    child foreach \z in {0,1} {node[proc] {3-\z}
+    }}};
+
+\node[text width=0.9\textwidth] (desc) at (0,-4) {maxdubina=4, potrebnodece=2, 
+čvorovi prikazuju vrednosti pri kreiranju};
 \end{tikzpicture}
 \end{minipage}
 
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner