next up previous contents index return to home!
Next: Processi Up: Introduzione Previous: Supporto di Sistema   Indice   Indice analitico

Note generali su Unix

Nel seguito analizzeremo le syscall disponibili a supporto della multiprogrammazione, ed in particolare vedremo come creare differenti flussi di esecuzione all'interno di un programma, come sincronizzarli e come realizzare la comunicazione fra thread e processi. Tali syscall dipendono dal sistema operativo, ed in questa sede faremo riferimento ai sistemi operativi Unix-like (Linux in particolare), secondo lo standard POSIX.

Sebbene il supporto alla multiprogrammazione fornito dal sistema sia sfruttabile utilizzando diversi linguaggi di programmazione, in questa sede utilizzeremo il linguaggio C. Si assume che il lettore sia familiare con i costrutti di base di tale linguaggio e con le librerie standard da esso fornite. In ogni caso, nel capitolo 2 verrà fatta una brevissima introduzione sulla struttura di un programma C, mentre nel capitolo 3 verrà presentata brevemente la I/O Standard Library.

Ogni system call ritorna un intero, che in caso di valore negativo segnala una condizione di errore: è allora buona norma verificare che tale valore sia maggiore o uguale a 0 ogni volta che si invoca una syscall, utilizzando per esempio un pezzo di codice simile al seguente.

Esempio

La funzione perror() invia sullo standard error (tipicamente, il video) un messaggio di errore composto dalla stringa passata come parametro seguita da una descrizione del motivo per cui l'ultima syscall chiamata è fallita.

I prototipi delle system call e le definizioni di costanti e strutture dati ad esse necessarie sono contenuti in alcuni header file di sistema (generalmente nella directory /usr/include/sys); per poter utilizzare una determinata syscall bisogna quindi includere gli adeguati header. I sistemi Unix mettono a disposizione il comando man, che fornisce una breve descrizione della semantica di una syscall specificata, assieme a specificarne la sintassi ed a elencare gli header da includere per utilizzare tale syscall. Riferirsi sempre alle manpage per includere i file corretti ed utilizzare una syscall con la giusta sintassi.


next up previous contents index
Next: Processi Up: Introduzione Previous: Supporto di Sistema   Indice   Indice analitico
Giuseppe Lipari 2002-10-27