X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=os2skripta.git;a=blobdiff_plain;f=skripta-os2.tex;h=b638d78be7ec145eca749840ef0c81d5cdfc16ac;hp=d4e728f79ed03472ba90d9ef342517492709c83a;hb=ad7a88f8f2fd398ea67f5ea1beadb46ddde4efdd;hpb=ba475507326fe00a1c86df714d2a1bdb2465478e diff --git a/skripta-os2.tex b/skripta-os2.tex index d4e728f..b638d78 100644 --- a/skripta-os2.tex +++ b/skripta-os2.tex @@ -1,7 +1,7 @@ % skripta-os2.tex % Skripta za predmet Operativni Sistemi 2, DMI, PMF, NS % Doni Pracner, Ivan Pribela -% 2011/12 -- 2012/13 +% 2011/12 -- 2013/14 \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 2013, Novi Sad} -\newcommand{\verzija}{ver 13a} +\newcommand{\datum}{Februar 2014, Novi Sad} +\newcommand{\verzija}{ver 14a} \usepackage[serbian]{babel} \usepackage{fancyhdr} @@ -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}{ @@ -202,6 +205,14 @@ sistemima iz Debian porodice. \section{GNU Modula 2} +\emph{GNU Modula 2} (u daljem tekstu često skraćeno na \emph{gm2}) je +pred procesor (\emph{front end}) za GNU kolekciju kompajlera +(GCC). Podržava nekoliko dijalekata jezika ``Modula 2'' -- +najznačajniji su ISO standard i nekoliko varijacija koje je originalni +autor Niklaus Virt (\emph{Niklaus Wirth}) opisao u različitima +verzijama knjige \emph{Programming in Modula 2 (PIM)}. Uz kompajler se +dobijaju i besplatne ISO, PIM i još neke biblioteke. + \subsection{Prvi program u gm2 } \label{g-prvi-program} @@ -226,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: @@ -239,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: @@ -372,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; @@ -639,15 +650,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} @@ -655,14 +667,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} @@ -778,6 +794,34 @@ tekst se može postići sledećom komandom: joe hello.mod \end{terminal} +\subsection{Tumačenje prečica na tastaturi} + +Joe je po svojoj prirodi bogat prečicama na tastaturi. U daljem tekstu +će biti navedene mnoge od njih. Kod svih se navodi redosled +pritiskanja tastera individualno, a ako su negde tasteri spojeni sa +``+'' (alternativno sa ``-'') onda ih je potrebno pritisnuti +odjednom. Neki primeri: + +\begin{itemize} +\item \Ctrl +\keystroke{\_} (poništavanje poslednje promene) pristsak + na taster \emph{CTRL} i \emph{\_ (podvlaka)} odjednom. +\item \Ctrl +\keystroke{K}\keystroke{H} (otvaranje sistema pomoći) + pritisak na \emph{CTRL} i \emph{K} odjednom, odpustiti sve, pa onda + pritisak na \emph{H}. +\item \Esc \keystroke{,} (prelazak na sledeću stranu pomoći) + pritisak na taster \emph{Escape}, a nakon toga pritisak na taster + \emph{, (zarez)}. +\end{itemize} + +U okviru sistema pomoći koji je ugrađen u sam editor uglavnom se +pojavljuju skraćeni oblici: +\begin{itemize} +\item \^{}D isto što i ``Ctrl-D'' +\item \^{}KH isto što i ``Ctrl-K H'' +\item \^{}[. isto što i ``Esc .'' +\end{itemize} + + \subsection{Sistem pomoći} Za pomoć pri korišćenju ediora ``joe'' preporučujemo pritiskanje @@ -793,8 +837,7 @@ ovlašno upoznavanje sa stranicama pomoći i mogućnostima editora. \subsection{Rad sa fajlovima} Snimanje sa izlaskom iz programa se može uraditi sa \Ctrl -+\keystroke{K}\keystroke{X} (\emph{ctrl} i \emph{K} odjednom, pa onda -\emph{X} -- ova šema pritiskanja tastera važi za sve prečice), dok se ++\keystroke{K}\keystroke{X}, dok se samo snimanje izvršava sa \Ctrl +\keystroke{K}\keystroke{D}. U oba slučaja ``joe'' pita za ime fajla koji snimamo, pri čemu kao podrazumevanu vrednost ponudi trenutno ime.