From f0cf1e6f39cc8e46cadf4a6cfe1420bd81f088c0 Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Sat, 23 Jun 2001 11:27:35 +0000 Subject: [PATCH] Rialvorata l'introduzione. --- Makefile | 8 +++++++- intro.tex | 26 +++++++++++++------------- macro.tex | 37 ++++++++++++++++++++++++++++++++++--- process.tex | 27 +++++++++++++++++++++++++++ signal.tex | 9 +++++---- 5 files changed, 86 insertions(+), 21 deletions(-) diff --git a/Makefile b/Makefile index 3ce1862..e23ceed 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,19 @@ +all: html dvi ps pdf + html: latex2html -local_icons main.tex dvi: latex main.tex +pdf: + pdflatex main.tex + ps: dvips -o gapil.ps main.dvi -all: html dvi ps +install: + scp gapil piccardi@firenze.linux.it:public_html clean: rm -f *.dvi *.log *.ps *.html *.aux \ No newline at end of file diff --git a/intro.tex b/intro.tex index 4e97e31..4c871ac 100644 --- a/intro.tex +++ b/intro.tex @@ -96,7 +96,7 @@ kernel il programmatore deve usare le opportune interfacce che quest'ultimo fornisce allo user space. -\subsection{Il kernel e il resto} +\subsection{Il kernel e il sistema} \label{sec:intro_kern_and_sys} Per capire meglio la distinzione fra kernel space e user space si può prendere @@ -176,13 +176,13 @@ relizzazione di normali programmi non si hanno differenze pratiche fra l'uso di una funzione di libreria e quello di una chiamata al sistema. -\subsection{Utenti e gruppi, permessi e protezioni} -\label{sec:intro_usergroup} +\subsection{Un sistema multiutente} +\label{sec:intro_multiuser} -Unix nasce fin dall'inizio come sistema multiutente, cioè in grado di fare -lavorare più persone in contemporanea. Per questo esistono una serie di -meccanismi base di sicurezza che non sono previsti in sistemi operativi -monoutente. +Linux, come gli altri unix, nasce fin dall'inizio come sistema multiutente, +cioè in grado di fare lavorare più persone in contemporanea. Per questo +esistono una serie di meccanismi di sicurezza che non sono previsti in sistemi +operativi monoutente e che occorre tenere presente. Il concetto base è quello di utente (\textit{user}) del sistema, utente che ha dei ben definiti limiti e capacità rispetto a quello che può fare. Sono così @@ -206,12 +206,12 @@ essere associato a pi accesso ai file e quindi anche alle periferiche, in maniera più flessibile, definendo gruppi di lavoro, di accesso a determinate risorse, etc. -L'utente e il gruppo sono identificati da due numeri (la cui corrispondenza ad -un nome in espresso in caratteri \`e inserita nei due files -\texttt{/etc/passwd} e \texttt{/etc/groups}). Questi numeri sono -l'\textit{user identifier}, detto in breve \textit{uid} e il \textit{group - identifier}, detto in breve \textit{gid} che sono quelli che identificano -l'utente di fronte al sistema. +% L'utente e il gruppo sono identificati da due numeri (la cui corrispondenza ad +% un nome in espresso in caratteri \`e inserita nei due files +% \texttt{/etc/passwd} e \texttt{/etc/groups}). Questi numeri sono +% l'\textit{user identifier}, detto in breve \textit{uid} e il \textit{group +% identifier}, detto in breve \textit{gid} che sono quelli che identificano +% l'utente di fronte al sistema. In questo modo il sistema è in grado di tenere traccia per ogni processo dell'utente a cui appartiene ed impedire ad altri utenti di interferire con diff --git a/macro.tex b/macro.tex index bff8918..f1b1bf5 100644 --- a/macro.tex +++ b/macro.tex @@ -62,10 +62,12 @@ tab.~\thechapter.\theusercount} \newcommand{\secref}[1]{sez.~\ref{#1}} % % Macro to create a special environment for function prototypes +% boxed description % -\newenvironment{prototype}[2]{ +\newenvironment{prototype}[2] +{% defining what is done by \begin \center - \footnotesize + \footnotesize \begin{minipage}[c]{14cm} \par \texttt{\#include <#1>} % \par \ @@ -74,9 +76,35 @@ tab.~\thechapter.\theusercount} % #1 % #2 % \end{lstlisting} + \begin{list}{}{} + \item +} +{% defining what is done by \end + \end{list} + \par +\par \texttt{ } +\end{minipage} +\normalsize +\par +} +\newenvironment{errlist}{\begin{description}}{\end{description}} + +% +% Slighty different envirnoment to be used for multi-header, +% multi-functions boxed description +% +\newcommand{\headdecl}[1]{\par \texttt{\#include <#1>}} +\newcommand{\funcdecl}[1]{\par \texttt{#1}} +\newenvironment{functions} +{% defining what is done by \begin + \center + \footnotesize + \begin{minipage}[c]{14cm} + \begin{list}{}{} \item } -{ \end{list} +{% defining what is done by \end + \end{list} \par \par \texttt{ } \end{minipage} @@ -84,3 +112,6 @@ tab.~\thechapter.\theusercount} \par } \newenvironment{errlist}{\begin{description}}{\end{description}} + + + diff --git a/process.tex b/process.tex index 0ca84e1..9cf5f86 100644 --- a/process.tex +++ b/process.tex @@ -435,6 +435,33 @@ maniera indiretta attraverso dei puntatori. Le funzioni previste dallo standard ANSI C per la gestione della memoria sono quattro, i prototipi sono i seguenti: +\begin{prototypes} +\headdecl{stdlib.h} +\funcdecl{void *calloc(size\_t size)} + Alloca \texttt{size} bytes nello heap. La memoria viene inizializzata a 0. + + La funzione restituisce il puntatore alla zona di memoria allocata in caso + di successo e \texttt{NULL} in caso di fallimento, nel qual caso + \texttt{errno} viene settata a \texttt{ENOMEM}. +\funcdecl{void *malloc(size\_t size)} + Alloca \texttt{size} bytes nello heap. La memoria non viene inizializzata. + + La funzione restituisce il puntatore alla zona di memoria allocata in caso + di successo e \texttt{NULL} in caso di fallimento, nel qual caso + \texttt{errno} viene settata a \texttt{ENOMEM}. +\funcdecl{void *realloc(void *ptr, size\_t size)} + Cambia la dimensione del blocco allocato all'indirizzo \texttt{ptr} + portandola a \texttt{size}. + + La funzione restituisce il puntatore alla zona di memoria allocata in caso + di successo e \texttt{NULL} in caso di fallimento, nel qual caso + \texttt{errno} viene settata a \texttt{ENOMEM}. +\funcdecl{void free(void *ptr)} + Disalloca lo spazio di memoria puntato da \texttt{ptr}. + + La funzione non ritorna nulla. + +\end{prototypes} \begin{prototype}{stdlib.h}{void *calloc(size\_t size)} Alloca \texttt{size} bytes nello heap. La memoria viene inizializzata a 0. diff --git a/signal.tex b/signal.tex index 49e5d9c..073a4cd 100644 --- a/signal.tex +++ b/signal.tex @@ -123,7 +123,7 @@ sistema, nel qual caso qualunque tipo di segnale (quello scelto nella chiamata) può diventare sincrono o asincrono a seconda che sia generato internamente o esternamente al processo. -\section{La notifica dei segnali} +\subsection{La notifica dei segnali} \label{sec:sig_notification} Quando un segnale viene generato il kernel prende nota del fatto; si dice così @@ -179,7 +179,7 @@ una \texttt{kill}. -\subsection{I segnali standard} +\section{I segnali standard} \label{sec:sig_standard} Esaminiamo ora i vari segnali disponibili e le loro caratteristiche. @@ -296,7 +296,7 @@ dell'errore. Questi segnali sono: -\begin{list} +\begin{description} \item \texttt{SIGFPE} Riporta un errore aritmetico fatale. Benché il nome derivi da \textit{floating point exception} si applica a tutti gli errori aritmetici compresa la divisione per zero e l'overflow. @@ -305,6 +305,7 @@ Questi segnali sono: % molte diverse eccezioni che \texttt{SIGFPE} non distingue, mentre lo % standard IEEE per le operazioni in virgola mobile definisce vaire eccezioni % aritmetiche e richiede che esse siano notificate. + \item \texttt{SIGILL} Il nome deriva da \textit{illegal instruction}, significa che il programma sta cercando di eseguire una istruzione privilegiata o inesistente, in generale del codice illegale. Poiché il @@ -339,7 +340,7 @@ Questi segnali sono: \item \texttt{SIGSYS} Sta ad indicare che si è eseguta una istruzione che richiede l'esecuzione di una system call, ma si è fornito un codice sbagliato per quest'ultima. -\end{list} +\end{description} \subsection{I segnali di terminazione} -- 2.30.2