X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=intro.tex;h=34ad4e34b673a2f0df5643b496b8981dd869a6e9;hp=1ca91b41ab7782f45cae4c640f70912c8ef0af2a;hb=839d84a7794ebbde7edafb5b0f30fc3455b26f7b;hpb=ab2e702bd899e2d99c70a90de1bb45ad62561e4e diff --git a/intro.tex b/intro.tex index 1ca91b4..34ad4e3 100644 --- a/intro.tex +++ b/intro.tex @@ -1,6 +1,6 @@ %% intro.tex %% -%% Copyright (C) 2000-2003 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", @@ -8,10 +8,6 @@ %% license is included in the section entitled "GNU Free Documentation %% License". %% -\part{Programmazione di sistema} -\label{part:progr-di-sist} - - \chapter{L'architettura del sistema} \label{cha:intro_unix} @@ -77,7 +73,7 @@ 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 ``\textsl{virtuale}'' (vedi -\secref{sec:proc_memory}) che il kernel stesso, con l'ausilio della unità di +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. @@ -85,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). @@ -168,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 @@ -199,7 +195,7 @@ 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 + 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 @@ -234,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 @@ -261,11 +257,11 @@ breve \textsl{user-ID}, ed indicato dall'acronimo \acr{uid}, e il 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 @@ -318,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. @@ -418,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. @@ -443,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} @@ -500,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}). @@ -615,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. @@ -668,7 +664,7 @@ 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 sovrainsieme di quelle definite in POSIX.1 e POSIX.2 ed in effetti @@ -701,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).