gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
v15a, datumi i slicno
[os2skripta.git] / skripta-os2.tex
index 196ed8b..eec22a1 100644 (file)
@@ -1,7 +1,7 @@
 % skripta-os2.tex
 % Skripta za predmet Operativni Sistemi 2, DMI, PMF, NS
 % Doni Pracner, Ivan Pribela
-% 2011/12 -- 2013/14
+% 2011/12 -- 2014/15
 
 \documentclass[a4paper,twoside]{article}
 \usepackage[T1]{fontenc}
@@ -13,8 +13,8 @@
 \newcommand{\inst}{Departman za matematiku i informatiku, PMF, UNS}
 \newcommand{\autorinst}{\autor \\ \inst}
 \newcommand{\naslov}{Skripta za vežbe iz predmeta operativni sistemi 2} 
-\newcommand{\datum}{Februar 2014, Novi Sad}
-\newcommand{\verzija}{ver 14a}
+\newcommand{\datum}{Februar 2015, Novi Sad}
+\newcommand{\verzija}{ver 15a}
 
 \usepackage[serbian]{babel}
 \usepackage{fancyhdr}
@@ -167,7 +167,12 @@ pdfauthor={\autor}%
 %        prebreak=\P,
 %        postbreak=\ding{229}\space,
         language=Modula-2,
-        xleftmargin=4em
+        xleftmargin=1em
+}
+
+\lstdefinestyle{codeblock-indent}{
+  style=codeblock,
+  xleftmargin=4em
 }
 
 \lstdefinestyle{terminal}{
@@ -187,6 +192,7 @@ pdfauthor={\autor}%
 }
 
 \lstnewenvironment{codeblock}[1][]{\lstset{style=codeblock,#1}}{}
+\lstnewenvironment{codeblock-indent}[1][]{\lstset{style=codeblock-indent,#1}}{}
 \lstnewenvironment{terminal}{\lstset{style=terminal}}{}
 
 % ----------------==================--------------------------------------
@@ -217,7 +223,7 @@ dobijaju i besplatne ISO, PIM i još neke biblioteke.
 \label{g-prvi-program}
 
 Tradicionalni prvi program ``Hello World'' bi izgledao ovako:
-\begin{codeblock}
+\begin{codeblock-indent}
   MODULE hello;
 
   FROM StrIO IMPORT WriteString, WriteLn;
@@ -226,7 +232,7 @@ Tradicionalni prvi program ``Hello World'' bi izgledao ovako:
      WriteString('hello world'); 
      WriteLn
   END hello.
-\end{codeblock}
+\end{codeblock-indent}
 
 Primećuje se razlika u modulu iz koga se uvoze komande u odnosu na
 XDS/TopSpeed verzije M2, tamo je sve bilo u \kod{InOut}, dok se ovde
@@ -272,13 +278,13 @@ odgovarajućih tipova.  Na primer, mapirajmo poziv \kod{system}, koji
 izvršava prosleđenu komandu u novom \emph{shell}-u. Specifikaciju
 komande možemo videti sa
 \begin{terminal}
-man system
+  man system
 \end{terminal}
 
 odnosno videćemo da je poziv definisan na sledeći način:
-\begin{codeblock}
+\begin{codeblock-indent}
 int system(const char *command);
-\end{codeblock}
+\end{codeblock-indent}
 što znači da vraća ceo broj, a prima jedan argument koji je pokazivač
 (što se označava *) na znak. Ovo je zapravo ceo string, pošto se u C
 jeziku oni predstavljaju kao pokazivač na prvi znak, a string se onda
@@ -485,19 +491,24 @@ BEGIN
 END Zad3.
 \end{codeblock}
 
-Kada imamo imena stavki iz direktorijuma o njima možemo dobiti više
-informacija koristeći sistemski poziv \kod{stat}. On prima dva
-argumenta, prvi je \emph{puna} putanja do fajla, a drugi je pokazivač
-na strukturu u koju će komanda upisati podatke. Obratiti pažnju da
-zbog ovoga struktura već mora postojati u memoriji, ili kao lokalna
-promenljiva odgovarajućeg slogovnog tipa, ili dinamički alocirana
-korišćenjem pokazivača na nju.
+\subsubsection{Primer: Ispis osobina pojedinih fajlova}
+
+O pojedinim fajlovima možemo dobiti više informacija koristeći
+sistemski poziv \kod{stat}. On prima dva argumenta, prvi je
+\emph{puna} putanja do fajla, a drugi je pokazivač na strukturu u koju
+će komanda upisati podatke. Obratiti pažnju da zbog ovoga struktura
+već mora postojati u memoriji, ili kao lokalna promenljiva
+odgovarajućeg slogovnog tipa, ili dinamički alocirana korišćenjem
+pokazivača na nju.
 
 Linux i mnogi drugi srodni sistemi za internu prezentaciju vremena
 koriste broj sekundi od početka ``epohe'', odnosno od prvog januara
 1970 godine. Za konverziju u klasičnije mere vremena se može koristiti
 poziv \kod{localtime}.
 
+Kao i u prethodnom primeru date su dve verzije definicija nekih
+tipova.
+
 \begin{codeblock}
 DEFINITION MODULE FOR "C" LibStat32;
   FROM SYSTEM IMPORT 
@@ -718,9 +729,9 @@ END Zad4.
 Korišćenjem sistemske komande \kod{fork} trenutni proces se duplira
 (``račva''). Novi proces je identičan sa originalnim, osim u svom
 identifikacionom broj. Komanda ne prima parametre i vraća jedan integer, pa se može mapirati na sledeći način:
-\begin{codeblock}
+\begin{codeblock-indent}
 PROCEDURE fork(): INTEGER;
-\end{codeblock}
+\end{codeblock-indent}
 
 Oba procesa se nakon račvanja nastavljaju odvijati u sledećem redu
 koda. Jedino po čemu se razlikuju je vrednost koju je vratio
@@ -730,14 +741,14 @@ je ta vrednost jednaka proces identifikatoru (\emph{pid}-u)
 procesu je ova vrednost jednaka nuli. Budući da je najčešće potrebno
 da dete i roditelj rade različite stvari, to se obično rešava kodom
 sledećeg oblika:
-\begin{codeblock}
+\begin{codeblock-indent}
 pid := fork();
 IF pid = 0 THEN
    (* "detetove" operacije *)
 ELSE
    (* "roditeljske" operacije *)
 END;
-\end{codeblock}
+\end{codeblock-indent}
 
 Komanda \kod{wait} (uvezena kao sistemska) se može pozvati u
 originalnom procesu sa efektom da se proces uspava dokle god neki od
@@ -880,20 +891,20 @@ je Lubuntu, ako su performanse problematične.
 Prvi korak za instalaciju dodatnog kompajlera GNU Modula 2 je
 dodavanje repozitorijuma softvera u sistem. Ovo se može uraditi ručnim
 menjanjem fajla \kod{/etc/apt/sources.list} i dodavanjem
-\begin{codeblock}
+\begin{codeblock-indent}
 #
 #  GNU Modula-2 repo
 #
 
-deb http://floppsie.comp.glam.ac.uk/debian/ squeeze main 
-deb-src http://floppsie.comp.glam.ac.uk/debian/ squeeze main
-\end{codeblock}
+deb http://floppsie.comp.glam.ac.uk/debian/ wheezy main 
+deb-src http://floppsie.comp.glam.ac.uk/debian/ wheezy main
+\end{codeblock-indent}
 
 Alternativno se mogu koristiti sledeće komande:
 
 \begin{terminal}
-sudo add-apt-repository "deb http://floppsie.comp.glam.ac.uk/debian/ squeeze main"
-sudo add-apt-repository "deb-src http://floppsie.comp.glam.ac.uk/debian/ squeeze main"
+sudo add-apt-repository "deb http://floppsie.comp.glam.ac.uk/debian/ wheezy main"
+sudo add-apt-repository "deb-src http://floppsie.comp.glam.ac.uk/debian/ wheezy main"
 \end{terminal}
 
 Većina sistema omogućava i da se ovo uradi preko nekih grafičkih
@@ -913,6 +924,13 @@ sudo apt-get source gm2
 
 Videti Glavu~\ref{g-prvi-program} za primer kompajliranja programa.
 
+\paragraph{Napomena:} Prilikom unapredjivanja Linux distribucije na
+sledeću verziju (npr. 13.10 na 14.04) se standardno onemogućavaju
+dodati izvori softvera i potrebno ih je ručno ponovo upaliti.  Ovo se
+može uraditi otvoranjem \kod{/etc/apt/sources.list} i uklonjanjem
+``\#'' sa početka redova koje želimo da koristimo ponovo ili
+korišćenjem adekvatnih vizuelnih alata.
+
 \subsection{Problem: nedostaje ``ctli.o'' i/ili još neki fajlovi}
 
 Pri pokušaju kompajliranja se na nekim sistemima može desiti da
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner