X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=intro.tex;h=18708c781817b80062944bc5c9661e9ca1b87860;hp=43efa10e4dcaa9a2151b6fa3557dcf5cb7bc3f22;hb=f5e0b5be624d5a5a0b7a414ec7e957b0f86b2a56;hpb=a2ac131d4c65656c87e4998f13845cce2213d324 diff --git a/intro.tex b/intro.tex index 43efa10..18708c7 100644 --- a/intro.tex +++ b/intro.tex @@ -67,7 +67,7 @@ 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:files_intro}, (questo non è vero per le interfacce di rete, che +\capref{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). @@ -212,7 +212,7 @@ accesso ai file e quindi anche alle periferiche, in maniera pi 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 files \file{/etc/passwd} e +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 \acr{uid}, e il \textit{group identifier}, detto in breve \acr{gid}, che sono quelli che poi vengono usati dal kernel per identificare l'utente. @@ -253,7 +253,7 @@ GNU/Linux (sia per quanto riguarda il kernel che le \acr{glibc}). Lo standard ANSI C è stato definito nel 1989 dall'\textit{American National Standard Institute}, come standard del linguaggio C ed è stato -successivamente adottatto dalla \textit{International Standard Organisation} +successivamente adottato dalla \textit{International Standard Organisation} come standard internazionale con la sigla ISO/IEC 9899:1990, e va anche sotto il nome di standard ISO C. @@ -266,7 +266,7 @@ qualunque sistema operativo. Per questo motivo, anche se lo standard non ha alcun riferimento ad un sistema di tipo unix, GNU/Linux (per essere precisi le glibc), come molti unix moderni, provvede la compatibilità con questo standard, fornendo le funzioni -di libreria da esso previste. Queste sono dichiarate in quindici header files +di libreria da esso previste. Queste sono dichiarate in quindici header file (anch'essi provvisti dalla \acr{glibc}), uno per ciascuna delle quindici aree in cui è stata suddivisa una libreria standard. In \ntab\ si sono riportati questi header, insieme a quelli definiti negli altri standard descritti nelle @@ -275,7 +275,7 @@ sezioni successive. In realtà \acr{glibc} ed i relativi header file definiscono un insieme di funzionalità in cui sono incluse come sottoinsieme anche quelle previste dallo standard ANSI C. È possibile ottenere una conformità stretta allo standard -(scartando le funzionalità adizionali) usando il \cmd{gcc} con l'opzione +(scartando le funzionalità addizionali) usando il \cmd{gcc} con l'opzione \cmd{-ansi}. Questa opzione istruisce il compilatore a definire nei vari header file soltanto le funzionalità previste dallo standard ANSI C e a non usare le varie estensioni al linguaggio e al preprocessore da esso supportate. @@ -317,39 +317,91 @@ 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 dele varie implementazioni di unix. -Per far questo iniziò a pubblicare una serie di documentazioni e specifiche -sotto il nome di \textit{X/Open Portability Guide} (che chiameremo XPGn). +unix per giungere ad una 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 della sua guida particolarmente -voluminosa (la \textit{X/Open Portability Guide, Issue 3}), che venne presa -come riferimento da vari produttori, e al cui interno definiva una ulteriore -standardizzazione dell'interfaccia ad un sistema unix. +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 +come riferimento da vari produttori. Questo standard, detto anche XPG3 dal nome della suddetta guida, è sempre basato sullo standard POSIX.1, ma prevede una serie di funzionalità aggiuntive fra cui le specifiche delle API per l'interfaccia grafica (X11). -Nel 1992 lo standard venne rivisto con una nuova versione della guida (XPG4) -che aggiungeva l'interfaccia XTI (\textit{X transport Interface}) mirante a -soppiantare (senza molto successo) quella l'interfaccia dei socket derivata da -BSD. +Nel 1992 lo standard venne rivisto con una nuova versione della guida, la +Issue 4 (da cui la sigla XPG4) che aggiungeva l'interfaccia XTI (\textit{X + transport Interface}) mirante a soppiantare (senza molto successo) +l'interfaccia dei socket derivata da BSD. Una seconda versione della guida fu +rilasciata nel 1994, questa è nota con il nome di Spec 1170 (dal numero delle +interfacce, header e comandi definiti). + +Nel 1993 il marchio Unix passò di proprietà dalla Novell (che a sua volta lo +aveva comprato dalla AT\&T) al consorzio X/Open che iniziò a pubblicare le sue +specifiche sotto il nome di \textit{Single UNIX Specification}, l'ultima +versione di Spec 1170 diventò così la prima versione delle \textit{Single UNIX + Specification}, più comunemente nota come \textit{Unix 95}. \subsection{Gli standard UNIX -- Open Group} \label{sec:intro_opengroup} -Nel 1993 il marchi Unix passò di proprietà dalla Novell (che a sua volta lo -aveva comprato dalla AT\&T) al consorzio X/Open, che iniziò a pubblicare le -sue specifiche sotto il nome di \textit{Single UNIX Specification}, +Nel 1996 la fusione del consorzio X/Open con la Open Software Foundation (nata +da un gruppo di aziende concorrenti rispetto ai fondatori di X/Open) portò +alla costituzione dell'Open Group, un consorzio internazionale che raccoglie +produttori, utenti industriali, entità accademiche e governative. +Nel 1997 fu annunciata la seconda versione delle \textit{Single UNIX + Specification}, che portava le interfacce specificate a 1434 (e a 3030 per +le stazioni grafiche, comprendendo pure la definizione di CDE che richiede sia +X11 che Motif). La conformità a questa versione permette l'uso del nome +\textit{Unix 98}, usato spesso anche per riferirsi allo standard. +\subsection{Il comportamento standard del \cmd{gcc}} +\label{sec:intro_gcc} + + + + +\subsection{Lo ``standard'' BSD} +\label{sec:intro_bsd} + +Lo sviluppo di BSD iniziò quando la fine della collaborazione fra l'Università +di Berkley e la AT/T generò una delle prime e più importanti fratture del +mondo Unix. L'Università di Berkley proseguì nello sviluppo della base di +codice di cui disponeva, e che presentava parecchie migliorie rispetto alle +allora versioni disponibili, fino ad arrivare al rilascio di una versione +completa di unix, chiamata appunto BSD, del tutto indipendente dal codice +della AT/T. + +Benchè BSD non sia uno standard formalizzato, l'implementazione di unix +dell'Università di Berkley, ha provveduto nel tempo una serie di estensioni e +di API grande rilievo, come il link simbolici (vedi \secref{sec:file_symlink}, +la funzione \func{select}, i socket. + +Queste estensioni sono state via via aggiunte al sistema nelle varie release +del sistema (BSD 4.2, BSD 4.3 e BSD 4.4) come pure in alcuni derivati +commerciali come SunOS. Le \acr{glibc} provvedono tutte queste estensioni che +sono state in gran parte incorporate negli standard successivi. + + +\subsection{Lo standard System V} +\label{sec:intro_sysv} + +Come noto Unix nasce nei laboratori della AT/T, che per molti anni ne detiene +il marchio depositato; le varie versioni + + +System V è la denominazione dello Unix sviluppato ufficialmente dalla AT/T; la +sua interfaccia è descritta in un documento dal titolo \textit{System V + Interface Description}, a cui si fa spesso riferimento con la sigla +SVID. Anche questo costituisce un sovrainsieme delle interfacce definite dallo +standard POSIX. -\subsection{Il comportamento standard del \cmd{gcc}} -\label{sec:intro_gcc_behaviuor}