From: Simone Piccardi Date: Fri, 4 Oct 2002 21:56:11 +0000 (+0000) Subject: Risistemate, spero le modifiche. X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=49d0b7fc1091ad4185f5789e5d5b1243cf9115e8 Risistemate, spero le modifiche. --- diff --git a/html/index.html b/html/index.html index 57ce4ff..b13be4f 100644 --- a/html/index.html +++ b/html/index.html @@ -106,9 +106,10 @@ in lingua italiana.

GaPiL è un tentativo di scrivere un manuale di - programmazione di sistema per Linux e le GNU libc. - L'obiettivo è quello di riuscire a produrre una testo - rilasciato sotto GNU FDL, che possa servire a chi si accosta per la prima volta alla programmazione avanzata e di sistema in Linux, con la speranza @@ -161,19 +162,20 @@ Cap. 10 Sessioni e terminali - Sessioni abbozzate, terminali da fare + Sessioni complete, da revisionare, + terminali da fare Cap. 11 Gestione avanzata dei file - I/O avanzato abbozzato, file locking - accennato + I/O non bloccante, asincrono, memory + mapped complete, da revisionare, file locking da fare Cap. 12 IPC - Pipe e fifo complete, abbozzate code e - semafori, POSIX IPC da fare + Pipe, fifo e code complete, e + semafori iniziati, POSIX IPC da fare Cap. 13-14 Introduzione alla rete @@ -188,7 +190,7 @@

- Versione corrente: 373 pagine. + Versione corrente: 377 pagine.

diff --git a/session.tex b/session.tex index 675334b..f1b009b 100644 --- a/session.tex +++ b/session.tex @@ -1,13 +1,18 @@ - \chapter{Sessioni di lavoro e terminali} +\chapter{Terminali e sessioni di lavoro} \label{cha:session} -Esamineremo in questo capitolo i concetti base del sistema delle sessioni di -lavoro, vale a dire il metodo con cui il kernel gestisce l'accesso concorrente -al sistema da parte di più utenti, permettendo loro di eseguire più programmi -in contemporanea. Nella seconda parte del capitolo tratteremo poi il -funzionamento dell'I/O su terminale, e delle varie peculiarità che esso viene -ad assumere a causa del suo stretto legame con le modalità di accesso al -sistema da parte degli utenti. +I terminali per lungo tempo tempo sono stati l'unico modo per accedere al +sistema, per questo anche oggi che esistono molte altre interfacce, essi +continuano a coprire un ruolo particolare, restando strettamente legati al +funzionamento dell'interfaccia a linea di comando. + +Mella prima parte del capitolo esamineremo i concetti base del sistema delle +sessioni di lavoro, vale a dire il metodo con cui il kernel permette ad un +utente di gestire le capacità multitiasking del sistema, permettendo di +eseguire più programmi in contemporanea. Nella seconda parte del capitolo +tratteremo poi il funzionamento dell'I/O su terminale, e delle varie +peculiarità che esso viene ad assumere a causa del suo stretto legame con il +suo uso come interfaccia di accesso al sistema da parte degli utenti. \section{Il \textit{job control}} @@ -678,12 +683,16 @@ messaggi del kernel.\footnote{i messaggi del kernel sono tenuti in un buffer si trova in \cite{LinDevDri}, nel quarto capitolo.} Il servizio permette poi di trattare i vari messaggi classificandoli -attraverso due indici; il primo, chiamato \textit{facility}, indica quale -categoria di demone ha emesso il messaggio, ed è organizzato in sottosistemi -(kernel, posta elettronica, demoni di stampa, ecc.), il secondo, chiamato -\textit{priority}, identifica l'importanza del messaggio. Il sistema di -\textit{syslog} provvede poi a riportare i messaggi all'amministratore -attraverso differenti meccanismi come: +attraverso due indici; il primo, chiamato \textit{facility}, suddivide in +diverse categorie i vari demoni in modo di raggruppare i messaggi provenienti +da operazioni che hanno attinenza fra loro, ed è organizzato in sottosistemi +(kernel, posta elettronica, demoni di stampa, ecc.). Il secondo, chiamato +\textit{priority}, identifica l'importanza dei vari messaggi, e permette di +classificarli e differenziare le modalità di notifica degli stessi. + +Il sistema di \textit{syslog} attraverso \cmd{syslogd} provvede poi a +riportare i messaggi all'amministratore attraverso una serie differenti +meccanismi come: \begin{itemize*} \item scrivere sulla console. \item inviare via mail ad uno specifico utente. @@ -697,10 +706,10 @@ dettagli si possono trovare sulle pagine di manuale per questo file e per \cmd{syslogd}). Le \acr{glibc} definiscono una serie di funzioni standard con cui un processo -può accedere in maniera generica al servizio di syslog, che però funzionano -solo localmente; se si vogliono inviare i messaggi ad un'altro sistema occorre -farlo esplicitamente con un socket UDP, o utilizzare le capacità di reinvio -del servizio. +può accedere in maniera generica al servizio di \textit{syslog}, che però +funzionano solo localmente; se si vogliono inviare i messaggi ad un'altro +sistema occorre farlo esplicitamente con un socket UDP, o utilizzare le +capacità di reinvio del servizio. La prima funzione definita dall'interfaccia è \func{openlog}, che apre una connessione al servizio di \textit{syslog}; essa in generale non è necessaria @@ -720,15 +729,15 @@ specificato da \code{argv[0]}); la stringa verr messaggio. Si tenga presente che il valore di \param{ident} che si passa alla funzione è un puntatore, se la stringa cui punta viene cambiata lo sarà pure nei successivi messaggi, e se viene cancellata i risultati potranno essere -impredicibili, per questo è sempre opportuno usare una stringa costante. +impredicibili, per questo è sempre opportuno usare una stringa costante. - L'argomento \param{facility} permette invece di preimpostare per le successive - chiamate l'omonimo indice che classifica la categoria del messaggio. - L'argomento è interpretato come una maschera binaria, e pertanto è possibile - inviare i messaggi su più categorie alla volta; i valori delle costanti che - identificano ciascuna categoria sono riportati in - \tabref{tab:sess_syslog_facility}, il valore di \param{facility} deve essere - specificato con un OR aritmetico. +L'argomento \param{facility} permette invece di preimpostare per le successive +chiamate l'omonimo indice che classifica la categoria del messaggio. +L'argomento è interpretato come una maschera binaria, e pertanto è possibile +inviare i messaggi su più categorie alla volta; i valori delle costanti che +identificano ciascuna categoria sono riportati in +\tabref{tab:sess_syslog_facility}, il valore di \param{facility} deve essere +specificato con un OR aritmetico. \begin{table}[htb] \centering @@ -762,8 +771,8 @@ impredicibili, per questo L'argomento \param{option} serve invece per controllare il comportamento della funzione \func{openlog} e delle modalità con cui le successive chiamate -scriveranno i messaggi, anch'esso viene specificato come maschera binaria -composta con un OR aritmetico di una qualunque delle costanti riportate in +scriveranno i messaggi, esso viene specificato come maschera binaria composta +con un OR aritmetico di una qualunque delle costanti riportate in \tabref{tab:sess_openlog_option}. \begin{table}[htb] @@ -807,19 +816,19 @@ differenza restituita da \code{strerror(errno)}. Gli argomenti seguenti i primi due devono essere forniti secondo quanto richiesto da \func{format}. - L'argomento \param{priority} permette di impostare sia la \textit{facility} - che la \textit{priority} del messaggio. In realtà viene prevalentemente usato - per specificare solo quest'ultima in quanto la prima viene di norma - preimpostata con \func{openlog}. La priorità è indicata con un valore - numerico\footnote{le \acr{glibc}, seguendo POSIX.1-2001, prevedono otto - diverse priorità ordinate da 0 a 7, in ordine di importanza decrescente; - questo comporta che i tre bit meno significativi dell'argomento - \param{priority} sono occupati da questo valore, mentre i restanti bit più - significativi vengono usati per specificare la \textit{facility}.} - specificabile attraverso le costanti riportate in - \secref{tab:sess_syslog_priority}. Nel caso si voglia specificare anche la - \textit{facility} basta eseguire un OR aritmetico del valore della priorità - con la maschera binaria delle costanti di \tabref{tab:sess_syslog_facility}. +L'argomento \param{priority} permette di impostare sia la \textit{facility} +che la \textit{priority} del messaggio. In realtà viene prevalentemente usato +per specificare solo quest'ultima in quanto la prima viene di norma +preimpostata con \func{openlog}. La priorità è indicata con un valore +numerico\footnote{le \acr{glibc}, seguendo POSIX.1-2001, prevedono otto + diverse priorità ordinate da 0 a 7, in ordine di importanza decrescente; + questo comporta che i tre bit meno significativi dell'argomento + \param{priority} sono occupati da questo valore, mentre i restanti bit più + significativi vengono usati per specificare la \textit{facility}.} +specificabile attraverso le costanti riportate in +\secref{tab:sess_syslog_priority}. Nel caso si voglia specificare anche la +\textit{facility} basta eseguire un OR aritmetico del valore della priorità +con la maschera binaria delle costanti di \tabref{tab:sess_syslog_facility}. \begin{table}[htb] \centering @@ -838,15 +847,15 @@ devono essere forniti secondo quanto richiesto da \func{format}. \macro{LOG\_DEBUG} & Messaggio di debug.\\ \hline \end{tabular} - \caption{Valori possibili per l'indice di importanza del messaggio da +\caption{Valori possibili per l'indice di importanza del messaggio da specificare nell'argomento \param{priority} di \func{syslog}.} \label{tab:sess_syslog_priority} \end{table} - Una ulteriore funzione, \func{setlogmask}, permette di filtrare - preliminarmente i messaggi in base alla loro priorità; il suo prototipo è: +Una ulteriore funzione, \func{setlogmask}, permette di filtrare +preliminarmente i messaggi in base alla loro priorità; il suo prototipo è: \begin{prototype}{syslog.h} - {int setlogmask(int mask)} +{int setlogmask(int mask)} Imposta la maschera dei log al valore specificato. @@ -867,9 +876,14 @@ priorit \section{L'I/O su terminale} \label{sec:sess_terminal_io} -Esamineremo in questa sezione le peculiarità dell'I/O eseguito sui terminali, -tenendo conto delle differenze che quest'ultimi presentano rispetto ai normali -file su disco. +Benché come ogni altro dispositivo i terminali siano accessibili come file, +essi hanno assunto storicamente (essendo stati a lungo l'unico modo di +accedere al sistema) una loro rilevanza specifica, che abbiamo già avuto modo +di incontrare nella precedente sezione. + +Esamineremo qui le peculiarità dell'I/O eseguito sui terminali, che per la +loro particolare natura presenta delle differenze rispetto ai normali file su +disco e agli altri dispositivi.