Inizio della rilettura...
authorSimone Piccardi <piccardi@gnulinux.it>
Mon, 14 Mar 2005 14:46:51 +0000 (14:46 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Mon, 14 Mar 2005 14:46:51 +0000 (14:46 +0000)
intro.tex
process.tex
sockctrl.tex
system.tex

index d066e9f740bab38b377eae1b8f6b9e5412dceb54..9e473ed5b65aa7868a21b2a80a0f6ce5f69d5083 100644 (file)
--- a/intro.tex
+++ b/intro.tex
@@ -82,13 +82,13 @@ area di \textit{swap}) le pagine di memoria in eccedenza.
 Le periferiche infine vengono viste in genere attraverso un'interfaccia
 astratta che permette di trattarle come fossero file, secondo il concetto per
 cui \textit{everything is a file}, su cui torneremo in dettaglio in
-cap.~\ref{cha:file_intro}, (questo non è vero per le interfacce di rete, che
+cap.~\ref{cha:file_intro}. Questo non è vero per le interfacce di rete, che
 hanno un'interfaccia diversa, ma resta valido il concetto generale che tutto
-il lavoro di accesso e gestione a basso livello è effettuato dal kernel).
+il lavoro di accesso e gestione a basso livello è effettuato dal kernel.
 
 
-\subsection{User space e kernel space}
-\label{sec:intro_user_kernel_space}
+\subsection{Il kernel e il sistema}
+\label{sec:intro_kern_and_sys}
 
 Uno dei concetti fondamentali su cui si basa l'architettura dei sistemi Unix è
 quello della distinzione fra il cosiddetto \textit{user space}, che
@@ -110,20 +110,22 @@ all'hardware non pu
 kernel il programmatore deve usare le opportune interfacce che quest'ultimo
 fornisce allo user space. 
 
-
-\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
 in esame la procedura di avvio di un sistema unix-like; all'avvio il BIOS (o
 in generale il software di avvio posto nelle EPROM) eseguirà la procedura di
-avvio del sistema (il cosiddetto \textit{boot}), incaricandosi di caricare il
-kernel in memoria e di farne partire l'esecuzione; quest'ultimo, dopo aver
-inizializzato le periferiche, farà partire il primo processo, \cmd{init}, che
-è quello che a sua volta farà partire tutti i processi successivi. Fra questi
-ci sarà pure quello che si occupa di dialogare con la tastiera e lo schermo
-della console, e quello che mette a disposizione dell'utente che si vuole
-collegare, un terminale e la \textit{shell} da cui inviare i comandi.
+avvio del sistema (il cosiddetto \textit{bootstrap}\footnote{il nome deriva da
+  un espressione gergale che significa ``sollevarsi da terra tirandosi per le
+  stringhe delle scarpe'', per indicare il compito, almeno apparentemente
+  impossibile, di far eseguire un programma a partire da un computer appena
+  acceso che appunto non ne contiene nessuno; non è impossibile appunto perché
+  in realtà c'è un programma iniziale, che è appunto il BIOS.}), incaricandosi
+di caricare il kernel in memoria e di farne partire l'esecuzione;
+quest'ultimo, dopo aver inizializzato le periferiche, farà partire il primo
+processo, \cmd{init}, che è quello che a sua volta farà partire tutti i
+processi successivi. Fra questi ci sarà pure quello che si occupa di dialogare
+con la tastiera e lo schermo della console, e quello che mette a disposizione
+dell'utente che si vuole collegare, un terminale e la \textit{shell} da cui
+inviare i comandi.
 
 E' da rimarcare come tutto ciò, che usualmente viene visto come parte del
 sistema, non abbia in realtà niente a che fare con il kernel, ma sia
@@ -250,13 +252,17 @@ Ogni utente appartiene anche ad almeno un gruppo (il cosiddetto
 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
+L'utente e il gruppo sono identificati da due numerila cui corrispondenza ad
 un nome espresso in caratteri è inserita nei due file \file{/etc/passwd} e
-\file{/etc/groups}). Questi numeri sono l'\textit{user identifier}, detto in
-breve \textsl{user-ID}, ed indicato dall'acronimo \acr{uid}, e il
-\textit{group identifier}, detto in breve \textsl{group-ID}, ed identificato
-dall'acronimo \acr{gid}, e sono quelli che vengono usati dal kernel per
-identificare l'utente.
+\file{/etc/groups}.\footnote{in realtà negli sistemi più moderni, come vedremo
+  in sez.~\ref{sec:sys_user_group} queste informazioni possono essere
+  mantenute, con l'uso del \textit{Name Service Switch}, su varie tipologie di
+  supporti, compresi server centralizzati come LDAP.}
+\index{\textit{Name~Service~Switch}} Questi numeri sono l'\textit{user
+  identifier}, detto in breve \textsl{user-ID}, ed indicato dall'acronimo
+\acr{uid}, e il \textit{group identifier}, detto in breve \textsl{group-ID},
+ed identificato dall'acronimo \acr{gid}, e sono quelli che vengono usati dal
+kernel per identificare l'utente.
  
 In questo modo il sistema è in grado di tenere traccia dell'utente a cui
 appartiene ciascun processo ed impedire ad altri utenti di interferire con
@@ -456,9 +462,9 @@ Si tenga presente inoltre che nuove specifiche e proposte di standardizzazione
 si aggiungono continuamente, mentre le versioni precedenti vengono riviste;
 talvolta poi i riferimenti cambiano nome, per cui anche solo seguire le
 denominazioni usate diventa particolarmente faticoso; una pagina dove si
-possono recuperare varie (e di norma piuttosto intricate) informazioni è:
+possono recuperare varie (e di norma piuttosto intricate) informazioni è
 \href{http://www.pasc.org/standing/sd11.html}
-{http://www.pasc.org/standing/sd11.html}.
+{\textsf{http://www.pasc.org/standing/sd11.html}}.
 
 \begin{table}[htb]
   \footnotesize
@@ -486,14 +492,14 @@ possono recuperare varie (e di norma piuttosto intricate) informazioni 
   \label{tab:intro_posix_std}
 \end{table}
 
-Benché l'insieme degli standard POSIX siano basati sui sistemi Unix essi
+Benché l'insieme degli standard POSIX siano basati sui sistemi Unix, essi
 definiscono comunque un'interfaccia di programmazione generica e non fanno
 riferimento ad una implementazione specifica (ad esempio esiste
 un'implementazione di POSIX.1 anche sotto Windows NT).  Lo standard principale
 resta comunque POSIX.1, che continua ad evolversi; la versione più nota, cui
 gran parte delle implementazioni fanno riferimento, e che costituisce una base
 per molti altri tentativi di standardizzazione, è stata rilasciata anche come
-standard internazionale con la sigla ISO/IEC 9945-1:1996. 
+standard internazionale con la sigla ISO/IEC 9945-1:1996.
 
 Linux e le \acr{glibc} implementano tutte le funzioni definite nello standard
 POSIX.1, queste ultime forniscono in più alcune ulteriori capacità (per
@@ -518,12 +524,12 @@ Il consorzio X/Open nacque nel 1984 come consorzio di venditori di sistemi
 Unix per giungere ad un'armonizzazione delle varie implementazioni.  Per far
 questo iniziò a pubblicare una serie di documentazioni e specifiche sotto il
 nome di \textit{X/Open Portability Guide} (a cui di norma si fa riferimento
-con l'abbreviazione XPGn).
+con l'abbreviazione XPG$n$ con $n$ che indica la versione).
 
-Nel 1989 produsse una terza versione di questa guida particolarmente
-voluminosa (la \textit{X/Open Portability Guide, Issue 3}), contenente
-un'ulteriore standardizzazione dell'interfaccia di sistema di Unix, che venne
-presa come riferimento da vari produttori.
+Nel 1989 il consorzio produsse una terza versione di questa guida
+particolarmente voluminosa (la \textit{X/Open Portability Guide, Issue 3}),
+contenente un'ulteriore standardizzazione dell'interfaccia di sistema di Unix,
+che venne presa come riferimento da vari produttori.
 
 Questo standard, detto anche XPG3 dal nome della suddetta guida, è sempre
 basato sullo standard POSIX.1, ma prevede una serie di funzionalità aggiuntive
@@ -572,19 +578,20 @@ Lo sviluppo di BSD inizi
 di Berkley e la AT\&T generò una delle prime e più importanti fratture del
 mondo Unix.  L'Università di Berkley proseguì nello sviluppo della base di
 codice di cui disponeva, e che presentava parecchie migliorie rispetto alle
-allora versioni disponibili, fino ad arrivare al rilascio di una versione
+versioni allora disponibili, fino ad arrivare al rilascio di una versione
 completa di Unix, chiamata appunto BSD, del tutto indipendente dal codice
 della AT\&T.
 
 Benché BSD non sia uno standard formalizzato, l'implementazione di Unix
 dell'Università di Berkley, ha provveduto nel tempo una serie di estensioni e
-API di grande rilievo, come il link simbolici, la funzione \code{select}, i
+API di grande rilievo, come i link simbolici, la funzione \code{select} ed i
 socket.
 
 Queste estensioni sono state via via aggiunte al sistema nelle varie versioni
 del sistema (BSD 4.2, BSD 4.3 e BSD 4.4) come pure in alcuni derivati
-commerciali come SunOS. Il kernel e le \acr{glibc} provvedono tutte queste
-estensioni che sono state in gran parte incorporate negli standard successivi.
+commerciali come SunOS. Il kernel Linux e le \acr{glibc} provvedono tutte
+queste estensioni che sono state in gran parte incorporate negli standard
+successivi.
 
 
 \subsection{Lo standard System V}
@@ -650,14 +657,15 @@ Le macro disponibili per i vari standard sono le seguenti:
 \item[\macro{\_POSIX\_C\_SOURCE}] definendo questa macro ad un valore intero
   positivo si controlla quale livello delle funzionalità specificate da POSIX
   viene messa a disposizione; più alto è il valore maggiori sono le
-  funzionalità. Se è uguale a '1' vengono attivate le funzionalità specificate
-  nella edizione del 1990 (IEEE Standard 1003.1-1990), valori maggiori o
-  uguali a '2' attivano le funzionalità POSIX.2 specificate nell'edizione del
-  1992 (IEEE Standard 1003.2-1992). Un valore maggiore o uguale a `199309L'
-  attiva le funzionalità POSIX.1b specificate nell'edizione del 1993 (IEEE
-  Standard 1003.1b-1993).  Un valore maggiore o uguale a `199506L' attiva le
-  funzionalità POSIX.1 specificate nell'edizione del 1996 (ISO/IEC 9945-1:
-  1996). Valori superiori abiliteranno ulteriori estensioni.
+  funzionalità. Se è uguale a ``\texttt{1}'' vengono attivate le funzionalità
+  specificate nella edizione del 1990 (IEEE Standard 1003.1-1990), valori
+  maggiori o uguali a ``\texttt{2}'' attivano le funzionalità POSIX.2
+  specificate nell'edizione del 1992 (IEEE Standard 1003.2-1992). Un valore
+  maggiore o uguale a ``\texttt{199309L}'' attiva le funzionalità POSIX.1b
+  specificate nell'edizione del 1993 (IEEE Standard 1003.1b-1993).  Un valore
+  maggiore o uguale a ``\texttt{199506L}'' attiva le funzionalità POSIX.1
+  specificate nell'edizione del 1996 (ISO/IEC 9945-1: 1996). Valori superiori
+  abiliteranno ulteriori estensioni.
 \item[\macro{\_BSD\_SOURCE}] definendo questa macro si attivano le
   funzionalità derivate da BSD4.3, insieme a quelle previste dagli standard
   ISO C, POSIX.1 e POSIX.2. Alcune delle funzionalità previste da BSD sono
@@ -677,9 +685,9 @@ Le macro disponibili per i vari standard sono le seguenti:
   sono un sovrainsieme di quelle definite in POSIX.1 e POSIX.2 ed in effetti
   sia \macro{\_POSIX\_SOURCE} che \macro{\_POSIX\_C\_SOURCE} vengono
   automaticamente definite. Sono incluse anche ulteriori funzionalità
-  disponibili in BSD e SVID. Se il valore della macro è posto a 500 questo
-  include anche le nuove definizioni introdotte con la \textit{Single UNIX
-    Specification, version 2}, cioè Unix98.
+  disponibili in BSD e SVID. Se il valore della macro è posto a
+  ``\texttt{500}'' questo include anche le nuove definizioni introdotte con la
+  \textit{Single UNIX Specification, version 2}, cioè Unix98.
 \item[\macro{\_XOPEN\_SOURCE\_EXTENDED}] definendo questa macro si attivano le
   ulteriori funzionalità necessarie ad essere conformi al rilascio del marchio
   \textit{X/Open Unix}.
index 1127247800e688da58249ada4414f047c635718c..d59f9689c7cfcc4666227378f9b0309d29773745 100644 (file)
@@ -43,13 +43,13 @@ tutti gli altri.\footnote{questo non 
 
 Quando un programma viene lanciato il kernel esegue un'opportuna routine di
 avvio, usando il programma \cmd{ld-linux.so}.  Questo programma prima carica
-le librerie condivise che servono al programma, poi effettua il link dinamico
-del codice e alla fine lo esegue. Infatti, a meno di non aver specificato il
-flag \texttt{-static} durante la compilazione, tutti i programmi in Linux sono
-incompleti e necessitano di essere \textit{linkati} alle librerie condivise
-quando vengono avviati.  La procedura è controllata da alcune variabili di
-ambiente e dal contenuto di \file{/etc/ld.so.conf}. I dettagli sono riportati
-nella man page di \cmd{ld.so}.
+le librerie condivise che servono al programma, poi effettua il collegamento
+dinamico del codice e alla fine lo esegue. Infatti, a meno di non aver
+specificato il flag \texttt{-static} durante la compilazione, tutti i
+programmi in Linux sono incompleti e necessitano di essere \textsl{collegati}
+alle librerie condivise quando vengono avviati.  La procedura è controllata da
+alcune variabili di ambiente e dal contenuto di \file{/etc/ld.so.conf}. I
+dettagli sono riportati nella man page di \cmd{ld.so}.
 
 Il sistema fa partire qualunque programma chiamando la funzione \func{main};
 sta al programmatore chiamare così la funzione principale del programma da cui
index ebbcee9b0cf264bbb512091e939979ddca7000ad..79505d4e54ebc62e410d73f781e8390e2d016fe8 100644 (file)
@@ -117,6 +117,7 @@ dell'ordine in cui questi vengono interrogati.\footnote{con le implementazioni
   funzioni di libreria, prevedendo un ordine di interrogazione predefinito e
   non modificabile (a meno di una ricompilazione delle librerie stesse).}
 
+\index{\textit{Name~Service~Switch}|(}
 Per risolvere questa serie di problemi la risoluzione dei nomi a dominio
 eseguirà dal \textit{resolver} è stata inclusa all'interno di un meccanismo
 generico per la risoluzione di corrispondenze fra nomi ed informazioni ad essi
@@ -192,6 +193,7 @@ quello che conta sono le funzioni classiche che il \textit{resolver} mette a
 disposizione,\footnote{è cura della implementazione fattane nelle \acr{glibc}
   tenere conto della presenza del \textit{Name Service Switch}.} e sono queste
 quelle che tratteremo nelle sezioni successive.
+\index{\textit{Name~Service~Switch}|)}
 
 
 \subsection{Le funzioni di interrogazione del \textit{resolver}}
index b435f61354cd92c2bb816e981c41557f9d41dab1..1d662114da8965c48a47efa052e2cac0a0e1371c 100644 (file)
@@ -933,9 +933,10 @@ dall'altra con il diffondersi delle reti la necessit
 informazioni degli utenti e dei gruppi per insiemi di macchine, in modo da
 mantenere coerenti i dati, ha portato anche alla necessità di poter recuperare
 e memorizzare dette informazioni su supporti diversi, introducendo il sistema
-del \textit{Name Service Switch} che tratteremo brevemente più avanti (in
-sez.~\ref{sec:sock_resolver}) dato che la maggior parte delle sua applicazioni
-sono relative alla risoluzioni di nomi di rete.
+del \index{\textit{Name~Service~Switch}}\textit{Name Service Switch} che
+tratteremo brevemente più avanti (in sez.~\ref{sec:sock_resolver}) dato che la
+maggior parte delle sua applicazioni sono relative alla risoluzioni di nomi di
+rete.
 
 In questo paragrafo ci limiteremo comunque a trattere le funzioni classiche
 per la lettura delle informazioni relative a utenti e gruppi tralasciando
@@ -1067,15 +1068,15 @@ fig.~\ref{fig:sys_group_struct}.
 
 Le funzioni viste finora sono in grado di leggere le informazioni sia
 direttamente dal file delle password in \file{/etc/passwd} che tramite il
-sistema del \textit{Name Service Switch} e sono completamente generiche. Si
-noti però che non c'è una funzione che permetta di impostare direttamente una
-password.\footnote{in realtà questo può essere fatto ricorrendo a PAM, ma
-  questo è un altro discorso.} Dato che POSIX non prevede questa possibilità
-esiste un'altra interfaccia che lo fa, derivata da SVID le cui funzioni sono
-riportate in tab.~\ref{tab:sys_passwd_func}. Questa però funziona soltanto
-quando le informazioni sono mantenute su un apposito file di \textsl{registro}
-di utenti e gruppi, con il formato classico di \file{/etc/passwd} e
-\file{/etc/group}.
+sistema del \index{\textit{Name~Service~Switch}}\textit{Name Service Switch} e
+sono completamente generiche. Si noti però che non c'è una funzione che
+permetta di impostare direttamente una password.\footnote{in realtà questo può
+  essere fatto ricorrendo a PAM, ma questo è un altro discorso.} Dato che
+POSIX non prevede questa possibilità esiste un'altra interfaccia che lo fa,
+derivata da SVID le cui funzioni sono riportate in
+tab.~\ref{tab:sys_passwd_func}. Questa però funziona soltanto quando le
+informazioni sono mantenute su un apposito file di \textsl{registro} di utenti
+e gruppi, con il formato classico di \file{/etc/passwd} e \file{/etc/group}.
 
 \begin{table}[htb]
   \footnotesize