X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=intro.tex;h=1fce94301774708b4ebb7dbb7b211f331acd7b6a;hp=6b7be35e4d4bcff7a39e750c2e29460aa771096c;hb=c1cec4e931bf5bc2659d292e27f77a95ab72bf83;hpb=e15bf09623a78b9a5ddc5cef72d54fe1f4c411a2 diff --git a/intro.tex b/intro.tex index 6b7be35..1fce943 100644 --- a/intro.tex +++ b/intro.tex @@ -54,19 +54,19 @@ porte di input/output). Una parte del kernel, lo \textit{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}). 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. +``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}, 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 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. +\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 +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. Le periferiche infine vengono viste in genere attraverso un'interfaccia astratta che permette di trattarle come fossero file, secondo il concetto per @@ -133,7 +133,7 @@ Per questo motivo quando ci si riferisce al sistema nella sua interezza corretto parlare di un sistema GNU/Linux: da solo il kernel è assolutamente inutile; quello che costruisce un sistema operativo utilizzabile è la presenza di tutta una serie di librerie e programmi di utilità (che di norma sono -quelli realizzati dal progetto GNU della Free Softwae Foundation) che +quelli realizzati dal progetto GNU della Free Software Foundation) che permettono di eseguire le normali operazioni che ci si aspetta da un sistema operativo. @@ -226,8 +226,10 @@ 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 \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. +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. 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 @@ -313,21 +315,70 @@ 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. +(1003.1d e 1003.1c) e vari altri. In \tabref{tab:intro_posix_std} si è +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 però che nuove specificazioni 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 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} +{http://www.pasc.org/standing/sd11.html}. + + +\begin{table}[htb] + \footnotesize + \centering + \begin{tabular}[c]{|l|l|l|l|} + \hline + \textbf{Standard} & \textbf{IEEE} & \textbf{ISO} & \textbf{Contenuto} \\ + \hline + \hline + POSIX.1 & 1003.1 & 9945-1& Interfacce di base \\ + POSIX.1a& 1003.1a& 9945-1& Estensioni a POSIX.1 \\ + 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.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 \\ + \hline + \end{tabular} + \caption{Elenco dei vari standard POSIX e relative denominazioni.} + \label{tab:intro_posix_std} +\end{table} + +Benché l'insieme degli standard POSIX siano basati sui sistemi Unix essi +definiscono comunque un'interfaccia di programmazione generica e non fanno +riferimento ad una implementazione specifica (ad esempio esiste +un'implementazione di POSIX.1 anche sotto Windows NT). Lo standard principale +resta comunque POSIX.1, che continua ad evolversi; la versione più nota, cui +gran parte delle implementazioni fanno riferimento, e che costituisce una base +per molti altri tentativi di standardizzazione, è stata rilasciata anche come +standard internazionale con la sigla ISO/IEC 9945-1:1996. + +Linux e le \acr{glibc} implementano tutte le funzioni definite nello standard +POSIX.1, queste ultime forniscono in più alcune ulteriori capacità (per +funzioni di \textit{pattern matching} e per la manipolazione delle +\textit{regular expression}), che vengono usate dalla shell e dai comandi di +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 ...), 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}). -Benché lo standard POSIX sia basato sui sistemi Unix esso definisce comunque -un'interfaccia di programmazione generica e non fa riferimento ad una -implementazione specifica (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, -fornendo in più alcune ulteriori capacità (per funzioni di \textit{pattern - matching} e per la manipolazione delle \textit{regular expression}), che -usate dalla shell e dai comandi di sistema e che sono definite nello standard -POSIX.2. \subsection{Lo standard X/Open -- XPG3} @@ -401,8 +452,8 @@ socket. Queste estensioni sono state via via aggiunte al sistema nelle varie versioni 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. +commerciali come SunOS. Il kernel e le \acr{glibc} provvedono tutte queste +estensioni che sono state in gran parte incorporate negli standard successivi. \subsection{Lo standard System V} @@ -428,11 +479,11 @@ rinominata in Unix System Laboratories) venne acquistata dalla Novell, che poi trasferì il marchio Unix al consorzio X/Open; l'ultima versione di System V fu la SVr4.2MP rilasciata nel Dicembre 93. -Le \acr{glibc} implementano le principali funzionalità richieste da SVID che -non sono già incluse negli standard POSIX ed ANSI C, per compatibilità con lo -Unix System V e con altri Unix (come SunOS) che le includono. Tuttavia le -funzionalità più oscure e meno utilizzate (che non sono presenti neanche in -System V) sono state tralasciate. +Linux e le \acr{glibc} implementano le principali funzionalità richieste da +SVID che non sono già incluse negli standard POSIX ed ANSI C, per +compatibilità con lo Unix System V e con altri Unix (come SunOS) che le +includono. Tuttavia le funzionalità più oscure e meno utilizzate (che non sono +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