From 38dff25efc0d3ae24d82724cd196c583c2362737 Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Tue, 16 Jul 2002 15:45:51 +0000 Subject: [PATCH] Rimaneggiamenti vari (e precisazioni sull'AIO). --- fileadv.tex | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/fileadv.tex b/fileadv.tex index 591f149..d744a75 100644 --- a/fileadv.tex +++ b/fileadv.tex @@ -158,12 +158,12 @@ In Linux \func{select} modifica anche il valore di \param{timeout}, settandolo al tempo restante; questo è utile quando la funzione viene interrotta da un segnale, in tal caso infatti si ha un errore di \macro{EINTR}, ed occorre rilanciare la funzione; in questo modo non è necessario ricalcolare tutte le -volte il tempo rimanente.\footnote{questo però può causare problemi di - portabilità sia quando si trasporta codice scritto su Linux che legge questo - valore, sia quando si usano programmi scritti per altri sistemi che non - dispongono di questa caratteristica e ricalcolano \param{timeout} tutte le - volte. In genere la caratteristica è disponibile nei sistemi che derivano da - System V e non disponibile per quelli che derivano da BSD.} +volte il tempo rimanente.\footnote{questo può causare problemi di portabilità + sia quando si trasporta codice scritto su Linux che legge questo valore, sia + quando si usano programmi scritti per altri sistemi che non dispongono di + questa caratteristica e ricalcolano \param{timeout} tutte le volte. In + genere la caratteristica è disponibile nei sistemi che derivano da System V + e non disponibile per quelli che derivano da BSD.} Come accennato l'interfaccia di \func{select} è una estensione di BSD; anche System V ha introdotto una sua interfaccia per gestire l'\textit{I/O @@ -362,7 +362,6 @@ immediatamente il file evitando completamente l'uso di funzioni come sistema mantiene una coda per \macro{SIGIO}, in modo che arrivi un segnale per ogni file attivo. - Benché la modalità di apertura asincrona di un file possa risultare utile in varie occasioni (in particolar modo con i socket e gli altri file per i quali le funzioni di I/O sono system call lente), essa è comunque limitata alla @@ -373,20 +372,14 @@ insieme di funzioni dedicate, completamente separato rispetto a quelle usate normalmente. In generale questa interfaccia è completamente astratta e può essere -implementata sia direttamente nel kernel, che attraverso l'uso di thread. Al -momento\footnote{fino ai kernel della serie 2.4.x sono presenti solo le due - alternative citate, nella serie 2.5.x è però iniziato un lavoro completo di - riscrittura di tutto il sistema di I/O, che prevede anche l'introduzione di - un nuovo layer per l'I/O asincrono.} sono disponibili due implementazioni, -una in user space, che è integrata nelle \acr{glibc}, ed una ibrida, che si -appoggia ad una estensione del kernel (il cosiddetto KAIO, non incluso nella -versione ufficiale) prodotta da SGI. Quest'ultima ha funzionalità più limitate -ma prestazioni nettamente superiori. - -Alle funzioni definite essa si può accedere includendo \file{unistd.h} e -definendo la macro \macro{\_POSIX\_ASYNCHRONOUS\_IO}, mentre alla -implementazione di KAIO si accede includendo \file{linux/aio.h}; ambedue però -usano la stessa interfaccia di programmazione. +implementata sia direttamente nel kernel, che in user space attraverso l'uso +di thread. Al momento\footnote{fino ai kernel della serie 2.4.x, nella serie + 2.5.x è però iniziato un lavoro completo di riscrittura di tutto il sistema + di I/O, che prevede anche l'introduzione di un nuovo layer per l'I/O + asincrono.} esiste una sola versione stabile, quella delle \acr{glibc}, che +è realizzata completamente in user space; esistono comunque vari progetti +(come il KAIO della SGI, o i patch di Benjamin La Haise) che prevedono un +supporto diretto all'interno del kernel. -- 2.30.2