X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=intro.tex;h=34ad4e34b673a2f0df5643b496b8981dd869a6e9;hp=27a1d33c44848d3b5904ceffc56b393356369e86;hb=839d84a7794ebbde7edafb5b0f30fc3455b26f7b;hpb=613d2f30d1c3ec28c569578a7b7bab23a40e8fea diff --git a/intro.tex b/intro.tex index 27a1d33..34ad4e3 100644 --- a/intro.tex +++ b/intro.tex @@ -1,6 +1,6 @@ %% intro.tex %% -%% Copyright (C) 2000-2002 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to %% copy, distribute and/or modify this document under the terms of the GNU Free %% Documentation License, Version 1.1 or any later version published by the %% Free Software Foundation; with the Invariant Sections being "Prefazione", @@ -64,16 +64,16 @@ porte di input/output). Una parte del kernel, lo \textit{scheduler}\index{scheduler}, si occupa di stabilire, ad intervalli fissi e sulla base di un opportuno calcolo delle -priorità, quale ``processo'' deve essere posto in esecuzione (il cosiddetto -\textit{preemptive scheduling}\index{preemptive scheduling}). Questo verrà -comunque eseguito in modalità protetta; quando necessario il processo potrà -accedere alle risorse hardware soltanto attraverso delle opportune chiamate al -sistema che restituiranno il controllo al kernel. +priorità, quale ``\textsl{processo}'' deve essere posto in esecuzione (il +cosiddetto \textit{preemptive scheduling}\index{preemptive scheduling}). +Questo verrà comunque eseguito in modalità protetta; quando necessario il +processo potrà accedere alle risorse hardware soltanto attraverso delle +opportune chiamate al sistema che restituiranno il controllo al kernel. La memoria viene sempre gestita dal kernel attraverso il meccanismo della \textsl{memoria virtuale}\index{memoria virtuale}, che consente di assegnare a -ciascun processo uno spazio di indirizzi ``virtuale'' (vedi -\secref{sec:proc_memory}) che il kernel stesso, con l'ausilio della unità di +ciascun processo uno spazio di indirizzi ``\textsl{virtuale}'' (vedi +sez.~\ref{sec:proc_memory}) che il kernel stesso, con l'ausilio della unità di gestione della memoria, si incaricherà di rimappare automaticamente sulla memoria disponibile, salvando su disco quando necessario (nella cosiddetta area di \textit{swap}) le pagine di memoria in eccedenza. @@ -81,7 +81,7 @@ 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 -\capref{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). @@ -164,9 +164,9 @@ Ogni versione di Unix ha storicamente sempre avuto un certo numero di queste chiamate, che sono riportate nella seconda sezione del \textsl{Manuale di programmazione di Unix} (quella cui si accede con il comando \cmd{man 2 }) e Linux non fa eccezione. Queste sono poi state codificate da vari -standard, che esamineremo brevemente in \secref{sec:intro_standard}. Uno +standard, che esamineremo brevemente in sez.~\ref{sec:intro_standard}. Uno schema elementare della struttura del sistema è riportato in -\figref{fig:intro_sys_struct}. +fig.~\ref{fig:intro_sys_struct}. \begin{figure}[htb] \centering @@ -195,8 +195,8 @@ maggioranza dei casi,\footnote{esistono implementazioni diverse delle librerie dal progetto GNU. Le \textit{libc5} oggi sono, tranne casi particolari, completamente soppiantate dalle \acr{glibc}, le \textit{uClib} pur non essendo complete come le \acr{glibc}, restano invece molto diffuse nel mondo - embedded per le loro di dimensioni ridotte (e soprattutto la possibilità di - togliere le parti non necessearie), e pertanto costituiscono un valido + embedded per le loro dimensioni ridotte (e soprattutto la possibilità di + togliere le parti non necessarie), e pertanto costituiscono un valido rimpiazzo delle \acr{glibc} in tutti quei sistemi specializzati che richiedono una minima occupazione di memoria.} si dovrebbe usare il nome GNU/Linux (piuttosto che soltanto Linux) in quanto una parte essenziale del @@ -230,7 +230,7 @@ danneggiarsi a vicenda o danneggiare il sistema. Ogni utente è identificato da un nome (l'\textit{username}), che è quello che viene richiesto all'ingresso nel sistema dalla procedura di \textit{login} -(descritta in dettaglio in \secref{sec:sess_login}). Questa procedura si +(descritta in dettaglio in sez.~\ref{sec:sess_login}). Questa procedura si incarica di verificare l'identità dell'utente, in genere attraverso la richiesta di una parola d'ordine (la \textit{password}), anche se sono possibili meccanismi diversi.\footnote{Ad esempio usando la libreria PAM @@ -252,16 +252,16 @@ 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 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{userid}, ed indicato dall'acronimo \acr{uid}, e il \textit{group - identifier}, detto in breve \textsl{groupid}, ed identificato dall'acronimo -\acr{gid}, e sono quelli che vengono usati dal kernel per identificare -l'utente. +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 per ogni processo -dell'utente a cui appartiene ed impedire ad altri utenti di interferire con -esso. Inoltre con questo sistema viene anche garantita una forma base di -sicurezza interna in quanto anche l'accesso ai file (vedi -\secref{sec:file_access_control}) è regolato da questo meccanismo di +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 +quest'ultimo. Inoltre con questo sistema viene anche garantita una forma base +di sicurezza interna in quanto anche l'accesso ai file (vedi +sez.~\ref{sec:file_access_control}) è regolato da questo meccanismo di identificazione. Infine in ogni Unix è presente un utente speciale privilegiato, il cosiddetto @@ -314,7 +314,7 @@ di libreria da esso previste. Queste sono dichiarate in una serie di funzioni occorre includere con la direttiva \code{\#include} questi file nei propri programmi; per ciascuna funzione che tratteremo in seguito indicheremo anche gli \textit{header file} necessari ad usarla.} (anch'essi -provvisti dalla \acr{glibc}), In \tabref{tab:intro_posix_header} si sono +provvisti dalla \acr{glibc}), In tab.~\ref{tab:intro_posix_header} si sono riportati i principali \textit{header file} definiti nello standard POSIX, insieme a quelli definiti negli altri standard descritti nelle sezioni successive. @@ -414,7 +414,7 @@ una infinita serie di problemi di portabilit Per questo motivo tutte le funzioni di libreria di solito non fanno riferimento ai tipi elementari dello standard del linguaggio C, ma ad una serie di \textsl{tipi primitivi}\index{tipo!primitivo} del sistema, riportati -in \tabref{tab:intro_primitive_types}, e definiti nell'header file +in tab.~\ref{tab:intro_primitive_types}, e definiti nell'header file \file{sys/types.h}, in modo da mantenere completamente indipendenti i tipi utilizzati dalle funzioni di sistema dai tipi elementari supportati dal compilatore C. @@ -439,15 +439,15 @@ standardizzare l'interfaccia con il sistema operativo. Ma gli standard POSIX non si limitano alla standardizzazione delle funzioni di libreria, e in seguito sono stati prodotti anche altri standard per la shell e i comandi di sistema (1003.2), per le estensioni realtime e per i thread -(1003.1d e 1003.1c) e vari altri. In \tabref{tab:intro_posix_std} è riportata -una classificazione sommaria dei principali documenti prodotti, e di come sono -identificati fra IEEE ed ISO; si tenga conto inoltre che molto spesso si usa -l'estensione IEEE anche come aggiunta al nome POSIX (ad esempio si può parlare -di POSIX.4 come di POSIX.1b). +(1003.1d e 1003.1c) e vari altri. In tab.~\ref{tab:intro_posix_std} è +riportata una classificazione sommaria dei principali documenti prodotti, e di +come sono identificati fra IEEE ed ISO; si tenga conto inoltre che molto +spesso si usa l'estensione IEEE anche come aggiunta al nome POSIX (ad esempio +si può parlare di POSIX.4 come di POSIX.1b). Si tenga presente inoltre che nuove specifiche e proposte di standardizzazione si aggiungono continuamente, mentre le versioni precedenti vengono riviste; -talvolta poi i riferimenti cambiamo nome, per cui anche solo seguire le +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 è: \href{http://www.pasc.org/standing/sd11.html} @@ -466,13 +466,13 @@ possono recuperare varie (e di norma piuttosto intricate) informazioni POSIX.2 & 1003.2 & 9945-2& Comandi \\ POSIX.3 & 2003 &TR13210& Metodi di test \\ POSIX.4 & 1003.1b & --- & Estensioni real-time \\ - POSIX.4a& 1003.1c & --- & Threads \\ + POSIX.4a& 1003.1c & --- & Thread \\ POSIX.4b& 1003.1d &9945-1& Ulteriori estensioni real-time \\ POSIX.5 & 1003.5 & 14519& Interfaccia per il linguaggio ADA \\ POSIX.6 & 1003.2c,1e& 9945-2& Sicurezza \\ POSIX.8 & 1003.1f& 9945-1& Accesso ai file via rete \\ - POSIX.9 & 1003.9 & --- & Intercaccia per il Fortran-77 \\ - POSIX.12& 1003.1g& 9945-1& Sockets \\ + POSIX.9 & 1003.9 & --- & Interfaccia per il Fortran-77 \\ + POSIX.12& 1003.1g& 9945-1& Socket \\ \hline \end{tabular} \caption{Elenco dei vari standard POSIX e relative denominazioni.} @@ -496,11 +496,11 @@ sistema e che sono definite nello standard POSIX.2. Nelle versioni più recenti del kernel e delle librerie sono inoltre supportate ulteriori funzionalità aggiunte dallo standard POSIX.1c per quanto riguarda i -\textit{thread} (vedi \capref{cha:threads}), e dallo standard POSIX.1b per +\textit{thread} (vedi cap.~\ref{cha:threads}), e dallo standard POSIX.1b per quanto riguarda i segnali e lo scheduling real-time -(\secref{sec:sig_real_time} e \secref{sec:proc_real_time}), la misura del -tempo, i meccanismi di intercomunicazione (\secref{sec:ipc_posix}) e l'I/O -asincrono (\secref{sec:file_asyncronous_io}). +(sez.~\ref{sec:sig_real_time} e sez.~\ref{sec:proc_real_time}), la misura del +tempo, i meccanismi di intercomunicazione (sez.~\ref{sec:ipc_posix}) e l'I/O +asincrono (sez.~\ref{sec:file_asyncronous_io}). @@ -558,7 +558,7 @@ richiede sia X11 che Motif). La conformit del nome \textit{Unix 98}, usato spesso anche per riferirsi allo standard. -\subsection{Lo ``standard'' BSD} +\subsection{Lo ``\textsl{standard}'' BSD} \label{sec:intro_bsd} Lo sviluppo di BSD iniziò quando la fine della collaborazione fra l'Università @@ -611,7 +611,7 @@ presenti neanche in System V) sono state tralasciate. Le funzionalità implementate sono principalmente il meccanismo di intercomunicazione fra i processi e la memoria condivisa (il cosiddetto System -V IPC, che vedremo in \secref{sec:ipc_sysv}) le funzioni della famiglia +V IPC, che vedremo in sez.~\ref{sec:ipc_sysv}) le funzioni della famiglia \func{hsearch} e \func{drand48}, \func{fmtmsg} e svariate funzioni matematiche. @@ -664,10 +664,10 @@ Le macro disponibili per i vari standard sono le seguenti: compatibilità prima di quelle normali. \item[\macro{\_SVID\_SOURCE}] definendo questa macro si attivano le funzionalità derivate da SVID. Esse comprendono anche quelle definite negli - standard ISO C, POSIX.1, POSIX.2, and X/Open. + standard ISO C, POSIX.1, POSIX.2, e X/Open. \item[\macro{\_XOPEN\_SOURCE}] definendo questa macro si attivano le funzionalità descritte nella \textit{X/Open Portability Guide}. Anche queste - sono un soprainsieme di quelle definite in POSIX.1 e POSIX.2 ed in effetti + 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 @@ -697,10 +697,10 @@ esplicitamente definendo la macro \macro{\_GNU\_SOURCE} prima di includere i vari header file. -\subsection{Gli standard di GNU/Linux} -\label{sec:intro_linux_std} +%% \subsection{Gli standard di GNU/Linux} +%% \label{sec:intro_linux_std} -Da fare (o cassare, a seconda del tempo e della voglia). +%% Da fare (o cassare, a seconda del tempo e della voglia).