X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=intro.tex;h=43efa10e4dcaa9a2151b6fa3557dcf5cb7bc3f22;hp=cd878bf60b6361f6ffbfa667dd6cf3c9d6042f87;hb=a2ac131d4c65656c87e4998f13845cce2213d324;hpb=88fefd4ca97449596a2b8689e89de5e66d9d6758 diff --git a/intro.tex b/intro.tex index cd878bf..43efa10 100644 --- a/intro.tex +++ b/intro.tex @@ -236,10 +236,17 @@ disattivati\footnote{i controlli infatti vengono sempre eseguiti da un codice \section{Gli standard di unix e GNU/Linux} \label{sec:intro_standard} -In questa sezione prenderemo faremo una breve panoramica yrelativi ai vari -standard che nel tempo sono stati formalizzati da enti, associazioni, e -organizzazioni varie riguardanti interfacce di programmazioni e -caratteristiche di un sistema unix-like. +In questa sezione faremo una breve panoramica relativa ai vari standard che +nel tempo sono stati formalizzati da enti, associazioni, consorzi e +organizzazioni varie al riguardo del sistema o alle caratteristiche che si +sono stabilite come standard di fatto in quanto facenti parte di alcune +implementazioni molto diffuse come BSD o SVr4. + +Ovviamente prenderemo in considerazione solo gli aspetti riguardanti +interfacce di programmazione e le altre caratteristiche di un sistema +unix-like ed in particolare a come e in che modo essi sono supportati da +GNU/Linux (sia per quanto riguarda il kernel che le \acr{glibc}). + \subsection{Lo standard ANSI C} \label{sec:intro_ansiC} @@ -247,7 +254,8 @@ caratteristiche di un sistema unix-like. 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} -come standard internazionale con la sigla ISO/IEC 9899:1990. +come standard internazionale con la sigla ISO/IEC 9899:1990, e va anche sotto +il nome di standard ISO C. Scopo dello standard è quello di garantire la portabilità dei programmi C fra sistemi operativi diversi, ma oltre alla sintassi e alla semantica del @@ -255,20 +263,38 @@ linguaggio C (operatori, parole chiave, tipi di dati) lo standard prevede anche una libreria di funzioni che devono poter essere implementate su qualunque sistema operativo. -Linux, 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, uno per ciascuna delle quindici aree in cui è stata -suddivisa la libreria. In \ntab\ si sono riportati questi header, insieme a -quelli definiti negli altri standard descritti nelle sezioni successive. +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 +(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 +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 +\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. + \subsection{Lo standard IEEE -- POSIX} \label{sec:intro_posix} -In realtà POSIX è una famiglia di standard diversi, il nome, suggerito da +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 + +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 lavoro dell'IEEE (\textit{Institute of Electrical and Electronics Engeneers}) -che ne ha prodotto una prima versione, nota come IEEE 1003.1-1988, mirante a +che ne produsse una prima versione, nota come IEEE 1003.1-1988, mirante a standardizzare l'interfaccia con il sistema operativo. Ma gli standard POSIX non si limitano alla standardizzazione delle funzioni di @@ -281,7 +307,10 @@ 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:1990. +internazionale con la sigla ISO/IEC 9945-1:1996. + +Le \acr{glibc} implementano tutte le funzioni definite nello standard POSIX.1, +e Linux; \subsection{Lo standard X/Open -- XPG3} @@ -319,6 +348,13 @@ sue specifiche sotto il nome di \textit{Single UNIX Specification}, +\subsection{Il comportamento standard del \cmd{gcc}} +\label{sec:intro_gcc_behaviuor} + + + + + \subsection{Prototipi e puntatori} \label{sec:intro_function} @@ -327,3 +363,4 @@ sue specifiche sotto il nome di \textit{Single UNIX Specification}, \label{sec:intro_data_types} +