X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=intro.tex;h=b03d1e376d6cb5d447d8f02b21d154a0fccf9a4d;hp=5e9ade020b2429895e60717da55ee36ecbb11fb3;hb=2bb235e9ba8e8d532251205d30b82455dc119894;hpb=432c8645b755cad22c7b9d4b291ea09432eb7f0f diff --git a/intro.tex b/intro.tex index 5e9ade0..b03d1e3 100644 --- a/intro.tex +++ b/intro.tex @@ -6,7 +6,7 @@ cui fornire una base di comprensione mirata a sottolineare le peculiarità del sistema che sono più rilevanti per quello che riguarda la programmazione. -Dopo una introduzione sulle caratteristiche principali di un sistema di tipo +Dopo un'introduzione sulle caratteristiche principali di un sistema di tipo unix passeremo ad illustrare alcuni dei concetti base dell'architettura di GNU/Linux (che sono comunque comuni a tutti i sistemi \textit{unix-like}) ed introdurremo alcuni degli standard principali a cui viene fatto riferimento. @@ -79,7 +79,7 @@ Uno dei concetti fondamentali su cui si basa l'architettura dei sistemi unix quello della distinzione fra il cosiddetto \textit{user space}, che contraddistingue l'ambiente in cui vengono eseguiti i programmi, e il \textit{kernel space}, che è l'ambiente in cui viene eseguito il kernel. Ogni -programma vede se stesso come se avesse la piena disponibilità della CPU e +programma vede sé stesso come se avesse la piena disponibilità della CPU e della memoria ed è, salvo i meccanismi di comunicazione previsti dall'architettura, completamente ignaro del fatto che altri programmi possono essere messi in esecuzione dal kernel. @@ -138,9 +138,9 @@ si aspetta da un sistema operativo. Come accennato le interfacce con cui i programmi possono accedere all'hardware vanno sotto il nome di chiamate al sistema (le cosiddette \textit{system call}), si tratta di un insieme di funzioni, che un programma può chiamare, -per le quali viene generata una interruzione processo ed il controllo passa -dal programma al kernel. Sarà poi quest'ultimo che (oltre a compiere una serie -di operazioni interne come la gestione del multitasking e l'allocazione della +per le quali viene generata un'interruzione processo ed il controllo passa dal +programma al kernel. Sarà poi quest'ultimo che (oltre a compiere una serie di +operazioni interne come la gestione del multitasking e l'allocazione della memoria) eseguirà la funzione richiesta in \textit{kernel space} restituendo i risultati al chiamante. @@ -193,7 +193,7 @@ danneggiarsi a vicenda o danneggiare il sistema. Ad ogni utente è dato un nome \textit{username}, che è quello che viene richiesto all'ingresso nel sistema dalla procedura di \textit{login}. Questa -procedura si incarica di verificare la identità dell'utente, in genere +procedura si incarica di verificare l'identità dell'utente, in genere attraverso la richiesta di una parola d'ordine, anche se sono possibili meccanismi diversi\footnote{Ad esempio usando la libreria PAM (\textit{Pluggable Autentication Methods}) è possibile astrarre @@ -202,7 +202,7 @@ meccanismi diversi\footnote{Ad esempio usando la libreria PAM Eseguita la procedura di riconoscimento in genere il sistema manda in esecuzione un programma di interfaccia (che può essere la \textit{shell} su -terminale o una interfaccia grafica) che mette a disposizione dell'utente un +terminale o un'interfaccia grafica) che mette a disposizione dell'utente un meccanismo con cui questo può impartire comandi o eseguire altri programmi. Ogni utente appartiene anche ad almeno un gruppo (il cosiddetto @@ -285,14 +285,13 @@ usare le varie estensioni al linguaggio e al preprocessore da esso supportate. \label{sec:intro_posix} Uno standard più attinente al sistema nel suo complesso (e che concerne sia il -kernel che le librerie e` lo standard POSIX. Esso prende origine dallo -standard ANSI C, che contiene come sottoinsieme, prevedendo ulteriori capacità -per le funzioni in esso definite, ed aggiungendone di nuove. Le estensioni -principali sono +kernel che le librerie è lo standard POSIX. Esso prende origine dallo standard +ANSI C, che contiene come sottoinsieme, prevedendo ulteriori capacità per le +funzioni in esso definite, ed aggiungendone di nuove. In realtà POSIX è una famiglia di standard diversi, il cui nome, suggerito da Richard Stallman, sta per \textit{Portable Operating System Interface}, ma la -X finale denuncia la sua stretta relazione con i sistemi unix. Esso nasce dal +X finale denuncia la sua stretta relazione con i sistemi Unix. Esso nasce dal lavoro dell'IEEE (\textit{Institute of Electrical and Electronics Engeneers}) che ne produsse una prima versione, nota come IEEE 1003.1-1988, mirante a standardizzare l'interfaccia con il sistema operativo. @@ -302,12 +301,12 @@ libreria, e in seguito sono stati prodotti anche altri standard per la shell e le utility di sistema (1003.2), per le estensioni realtime e per i thread (1003.1d e 1003.1c) e vari altri. -Benché lo standard POSIX sia basato sui sistemi unix esso definisce comunque -una interfaccia e non fa riferimento ad una specifica implementazione (ad -esempio esiste anche una implementazione di questo standard pure sotto Windows -NT). Lo standard si è evoluto nel tempo ed una versione più aggiornata (quella -che viene normalmente denominata POSIX.1) è stata rilasciata come standard -internazionale con la sigla ISO/IEC 9945-1:1996. +Benché lo standard POSIX sia basato sui sistemi Unix esso definisce comunque +un'interfaccia e non fa riferimento ad una specifica implementazione (ad +esempio esiste un'implementazione di questo standard anche sotto Windows NT). +Lo standard si è evoluto nel tempo ed una versione più aggiornata (quella che +viene normalmente denominata POSIX.1) è stata rilasciata come standard +internazionale con la sigla ISO/IEC 9945-1:1996. Le \acr{glibc} implementano tutte le funzioni definite nello standard POSIX.1, e Linux; @@ -317,14 +316,14 @@ e Linux; \label{sec:intro_xopen} Il consorzio X/Open nacque nel 1984 come consorzio di venditori di sistemi -unix per giungere ad una armonizzazione delle varie implementazioni. Per far +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). Nel 1989 produsse una terza versione di questa guida particolarmente -voluminosa (la \textit{X/Open Portability Guide, Issue 3}), contenente una -ulteriore standardizzazione dell'interfaccia sistema unix, che venne presa +voluminosa (la \textit{X/Open Portability Guide, Issue 3}), contenente +un'ulteriore standardizzazione dell'interfaccia sistema unix, che venne presa come riferimento da vari produttori. Questo standard, detto anche XPG3 dal nome della suddetta guida, è sempre @@ -396,10 +395,11 @@ marchio depositato, sviluppandone una serie di versioni diverse; nel 1983 la versione supportata ufficialmente venne rilasciata al pubblico con il nome di Unix System V. Negli anni successivi l'AT/T proseguì lo sviluppo rilasciando varie versioni con aggiunte e integrazioni; nel 1989 un accordo fra vari -venditori (AT/T, Sun, HP, e altro) portò ad una versione che provvedeva una -unificazione dell interfacce comprendente Xenix e BSD, la System V release 4. +venditori (AT/T, Sun, HP, e altro) portò ad una versione che provvedeva +un'unificazione dell interfacce comprendente Xenix e BSD, la System V release +4. -La interfaccia di questa ultima release è descritta in un documento dal titolo +L'interfaccia di questa ultima release è descritta in un documento dal titolo \textit{System V Interface Description}, o SVID; spesso però si riferimento a questo standard con il nome della sua implementazione, usando la sigla SVr4. @@ -436,8 +436,8 @@ nessuna funzione non riconosciuta dalle specifiche standard ISO per il C. Per attivare le varie opzioni è possibile definire le macro di preprocessore, che controllano le funzionalità che le \acr{glibc} possono mettere a -disposizione questo può essere fatto attraverso l'opzione \cmd{-D} del -compilatore, ma è buona norma inserire gli opportuni \texttt{\#define} nei +disposizione: questo può essere fatto attraverso l'opzione \cmd{-D} del +compilatore, ma è buona norma inserire gli opportuni \code{\#define} nei propri header file. Le macro disponibili per i vari standard sono le seguenti: @@ -480,21 +480,21 @@ Le macro disponibili per i vari standard sono le seguenti: 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. -\item[\macro{\_XOPEN\_SOURCE\_EXTENDED}] questa macro si attivano le ulteriori - funzionalità necessarie a esse conformi al rilascio del marchio - \textit{X/Open Unix} -\item[\macro{\_ISOC99\_SOURCE}] questa macro si attivano le +\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}. +\item[\macro{\_ISOC99\_SOURCE}] definendo questa macro si attivano le funzionalità previste per la revisione delle librerie standard del C denominato ISO C99. Dato che lo standard non è ancora adottato in maniera - ampia queste non sona abilitate automaticamente, ma le \acr{glibc} ha già - una implementazione completa che può essere attivata definendo questa macro. -\item[\macro{\_LARGEFILE\_SOURCE}] questa macro si attivano le + ampia queste non sono abilitate automaticamente, ma le \acr{glibc} hanno già + un'implementazione completa che può essere attivata definendo questa macro. +\item[\macro{\_LARGEFILE\_SOURCE}] definendo questa macro si attivano le funzionalità per il supporto dei file di grandi dimensioni (il \textit{Large - File Support} o LFS) con indici e dimensioni a 64 bit. -\item[\macro{\_GNU\_SOURCE}] questa macro si attivano tutte le funzionalità - disponibili: ISO C89, ISO C99, POSIX.1, POSIX.2, BSD, SVID, X/Open, LFS più - le estensioni specifiche GNU. Nel caso in cui BSD e POSIX confliggono viene - data la precedenza a POSIX. + File Support} o LFS) con indici e dimensioni a 64 bit. +\item[\macro{\_GNU\_SOURCE}] definendo questa macro si attivano tutte le + funzionalità disponibili: ISO C89, ISO C99, POSIX.1, POSIX.2, BSD, SVID, + X/Open, LFS più le estensioni specifiche GNU. Nel caso in cui BSD e POSIX + confliggano viene data la precedenza a POSIX. \end{basedescript} In particolare è da sottolineare che le \acr{glibc} supportano alcune