Aggiunte sessioni
[gapil.git] / session.tex
index 969c05db00568956836ea4bafe8cc1fd63fa949a..d3a0e4febe57d617587780caa081c02688c04bb7 100644 (file)
@@ -46,7 +46,15 @@ anch'esso definito nello stesso file.
 Tralasciando la descrizione del sistema dei run level, (per il quale si
 rimanda alla lettura della pagina di manuale di \cmd{init} e di
 \file{inittab}) quello che comunque viene sempre fatto è di lanciare almeno
 Tralasciando la descrizione del sistema dei run level, (per il quale si
 rimanda alla lettura della pagina di manuale di \cmd{init} e di
 \file{inittab}) quello che comunque viene sempre fatto è di lanciare almeno
-una istanza di un programma che permetta l'accesso ad un terminale.
+una istanza di un programma che permetta l'accesso ad un terminale. Uno schema
+di massima della procedura è riportato in \secref{fig:sess_term_login}.
+
+\begin{figure}[htb]
+  \centering
+  \includegraphics[width=15cm]{img/tty_login}
+  \caption{Schema della procedura di login su un terminale.}
+  \label{fig:sess_term_login}
+\end{figure}
 
 Un terminale, che esso sia un terminale effettivo, attaccato ad una seriale o
 ad un altro tipo di porta di comunicazione, o una delle console virtuali
 
 Un terminale, che esso sia un terminale effettivo, attaccato ad una seriale o
 ad un altro tipo di porta di comunicazione, o una delle console virtuali
@@ -64,25 +72,26 @@ radice della catena che porta ad una shell per i comandi perci
 una istanza di questo programma su un terminale, il tutto ripetuto per
 ciascuno dei terminali che si hanno a disposizione (o per un certo numero di
 essi, nel caso delle console virtuali), secondo quanto indicato
 una istanza di questo programma su un terminale, il tutto ripetuto per
 ciascuno dei terminali che si hanno a disposizione (o per un certo numero di
 essi, nel caso delle console virtuali), secondo quanto indicato
-dall'amministratore in \file{/etc/inittab}.
+dall'amministratore nel file di configurazione del programma,
+\file{/etc/inittab}.
 
 
-Il programma viene lanciato da \texttt{init} con i privilegi di
-amministratore, e con un ambiente vuoto; \cmd{getty} si cura di aprire il
+Quando viene lanciato da \cmd{init} il programma parte con i privilegi di
+amministratore e con un ambiente vuoto; \cmd{getty} si cura di aprire il
 terminale in lettura sullo standard input ed in scrittura sullo standard
 terminale in lettura sullo standard input ed in scrittura sullo standard
-output e sullo standard error, di effettuare, qualora servano, ulteriori
+output e sullo standard error, di effettuare, qualora servano, ulteriori
 settaggi,\footnote{ad esempio, come qualcuno si sarà accorto scrivendo un nome
 settaggi,\footnote{ad esempio, come qualcuno si sarà accorto scrivendo un nome
-  di login in maiuscolo, può effettuare la conversione in minuscole
-  automaticamente, ponendosi in una modalità speciale che non distingue fra i
-  due tipi di caratteri (a beneficio di vecchi terminali che non supportano le
-  minuscole).} ed infine di stampare un messaggio di benvenuto e porsi in
-attesa dell'immissione del nome di un utente.
-
-Una volta che si sia immesso un nome di login \cmd{getty} esegue il programma
-\cmd{login} con una \func{exevle}, passando come argomento la suddetta stringa
-ed un ambiente opportunamente costruito che contenga quanto necessario (ad
-esempio di solito viene opportunamente inizializzata la variabile di ambiente
-\texttt{TERM}) ad identificare il terminale su cui si sta operando, a
-beneficio dei programmi che verranno lanciati in seguito.
+  di login in maiuscolo, può effettuare la conversione automatica dell'input
+  in minuscolo, ponendosi in una modalità speciale che non distingue fra i due
+  tipi di caratteri (a beneficio di alcuni vecchi terminali che non
+  supportavano le minuscole).} ed infine il programma stamperà un messaggio di
+benvenuto per poi porsi in attesa dell'immissione del nome di un utente.
+
+Una volta che si sia immesso il nome di login \cmd{getty} esegue direttamente
+il programma \cmd{login} con una \func{exevle}, passando come argomento la
+suddetta stringa ed un ambiente opportunamente costruito che contenga quanto
+necessario (ad esempio di solito viene opportunamente inizializzata la
+variabile di ambiente \texttt{TERM}) ad identificare il terminale su cui si
+sta operando, a beneficio dei programmi che verranno lanciati in seguito.
 
 A sua volta \cmd{login}, che mantiene i privilegi di amministratore, usa il
 nome dell'utente per effettuare una ricerca nel database degli
 
 A sua volta \cmd{login}, che mantiene i privilegi di amministratore, usa il
 nome dell'utente per effettuare una ricerca nel database degli
@@ -100,7 +109,7 @@ Se invece la password corrisponde a questo punto \cmd{login} esegue
 \func{chdir} per settare la \textit{home directory} dell'utente, cambia i
 diritti di accesso al terminale (con \func{chown} e \func{chmod}) per
 assegnarne la titolarità all'utente ed al suo gruppo principale, assegnandogli
 \func{chdir} per settare la \textit{home directory} dell'utente, cambia i
 diritti di accesso al terminale (con \func{chown} e \func{chmod}) per
 assegnarne la titolarità all'utente ed al suo gruppo principale, assegnandogli
-al contempo i diritti di lettura e scrittura. Inoltre il programma provvede
+al contempo i diritti di lettura e scrittura. Inoltre il programma provvede
 a costruire gli opportuni valori per le variabili di ambiente, come
 \texttt{HOME}, \texttt{SHELL}, ecc. Infine attraverso l'uso di \func{setuid},
 \func{setpid} e \func{initgroups} verrà cambiata l'identità del proprietario
 a costruire gli opportuni valori per le variabili di ambiente, come
 \texttt{HOME}, \texttt{SHELL}, ecc. Infine attraverso l'uso di \func{setuid},
 \func{setpid} e \func{initgroups} verrà cambiata l'identità del proprietario
@@ -122,7 +131,22 @@ per ripetere da capo tutto il procedimento.
 \label{sec:sess_net_log}
 
 Nel caso di un login via rete la cosa si fa leggermente diversa, in tal caso
 \label{sec:sess_net_log}
 
 Nel caso di un login via rete la cosa si fa leggermente diversa, in tal caso
-infatti non essendo possibile prevedere 
+infatti non esiste un terminale fisico che \cmd{init} può tenere sotto
+controllo diretto, in quanto il collegamento deve avvenire tramite la rete.
+Quello che succede in questo caso è che nel procedimento di avvio del sistema
+si occupa di eseguire tutti i programmi che attivano la connesione di rete,
+per poi avviare tutti i programmi di servizio. 
+
+Questo viene in genere fatto attraverso una serie di script di shell, che
+vengono eseguiti in un preciso ordine (di nuovo la struttura del procedimento
+di avvio di System V va al di là di quanto ci interessa trattare) che
+eseguiranno i programmi richiesti, fra i quali sarà compreso (se
+l'amministratore lo avrà previsto) pure il server per le connessioni di rete. 
+
+Quest'ultimo sarà posto in esecuzione e si metterà in ascolto di eventuali
+connessioni sulla rete, una volta che la procedura di avvio sarà completata
+gli script termineranno ed il server si troverà ad avere \cmd{init} come
+processo padre.  
 
 
 \subsection{Il login attraverso X}
 
 
 \subsection{Il login attraverso X}
@@ -137,7 +161,9 @@ di gestire la procedura di login, lanciare eventuali programmi che si vogliono
 attivare all'avvio (sia fondamentali, come il gestore delle fineste, che
 effimeri, come un notificatore di posta in arrivo).
 
 attivare all'avvio (sia fondamentali, come il gestore delle fineste, che
 effimeri, come un notificatore di posta in arrivo).
 
-In questo caso q
+In questo caso 
+
+
 
 \section{Il \textit{Job control}}
 \label{sec:sess_job_control}
 
 \section{Il \textit{Job control}}
 \label{sec:sess_job_control}
@@ -148,14 +174,26 @@ contemporanea pi
 terminale,\footnote{con X e con i terminali vituali tutto questo non è più
   vero, dato che si può accedere a molti terminali in contemporanea, ma il
   sistema è nato prima dell'esistenza di tutto ciò.} avendo cioè un solo punto
 terminale,\footnote{con X e con i terminali vituali tutto questo non è più
   vero, dato che si può accedere a molti terminali in contemporanea, ma il
   sistema è nato prima dell'esistenza di tutto ciò.} avendo cioè un solo punto
-in cui su può avere accesso all'input ed all'output degli stessi.
+in cui si può avere accesso all'input ed all'output degli stessi.
 
 
 
 \subsection{La struttura di base}
 \label{sec:sess_relation}
 
 
 
 
 \subsection{La struttura di base}
 \label{sec:sess_relation}
 
-
+Una volta che si è completata la procedura di login illustrata in
+\ref{sec:sess_login} si avrà a disposizione una shell dalla quale eseguire i
+comandi. Come illustrato in \secref{sec:intro_kern_and_sys} in un sistema Unix
+questi non sono altro che programmi come gli altri, inoltre essendo il sistema
+multitasking, non è neanche detto che un programma venga eseguito da un solo
+processo, infatti, oltre all'uso delle pipe, che permette di concatenare più
+con un solo comando, ed i sigoli programmi possono anche creare ulteriori
+sottoprocessi per eseguire alcuni compiti.
+
+Tutti questi processi, che originano da un solo comando iniziale, vengono
+raggruppati in quello che viene chiamato un \textit{process group}; quando
+viene creato ogni
+processo viene infatti mantenuto, 
 
 
 \subsection{I \textit{process group}}
 
 
 \subsection{I \textit{process group}}