Introduzione ai sistemi operativi con UNIX

Antonio Bonifati
studente in Ingegneria Informatica e amministratore di sistemi UNIX, http://ninuzzo.freehostia.com

WORK IN PROGRESS!

Questo testo è in fase di scrittura. Per avere la versione più aggiornata, riprovate a scaricarlo tra qualche giorno, finchè questo avviso non sparisce. Si accettano commenti e osservazioni.


Il sistema UNIX, con le sue ultime incarnazioni open-source sui microcalcolatori, offre a tutti la possibilità di sperimentare con un sistema operativo moderno. Cosa fa esattamente un sistema operativo? Quali sono i servizi che mette a disposizione del programmatore? Quali tecniche vengono usate per ottimizzare l'utilizzo delle risorse di calcolo? Cos'è la multiprogrammazione? Quali sono le tecniche di protezione adottate in ambiente multiutente? Questo testo si propone di dare una prima introduzione pratica ad un argomento specialistico e complesso ma sicuramente affascinante.

Io ritengo che lo studio dei sistemi operativi non può essere affrontato in modo solamente teorico, perchè altrimenti ne risulta una materia poco stimolante e interessante per lo studente e perchè l'argomento dei sistemi operativi è strettamente legato a quello della programmazione e all'amministrazione dei sistemi reali. Devono essere approfonditi gli aspetti di un sistema operativo reale e deve venire data agli studenti la possibilità di sperimentare con un vero sistema operativo mettendo in pratica le nozioni acquisite. Inoltre dovrebbero essere proposti esercizi su problemi realmente utili in pratica. Spero di aver fatto un buon mix di teoria e pratica, senza mancare troppo dall'una o dall'altra parte. Accetto commenti, osservazioni e critiche che possano servire a migliorare il testo presente.

Questo modesto lavoro non ha alcuna pretesa di completezza, in quanto non sarebbe possibile trattare in così poco spazio con dettaglio l'argomento dei sistemi operativi e di UNIX ed io stesso non sono un esperto di tale argomento; deve essere considerato solo una introduzione, a mo' di lezione informale e facilmente fruibile. Per approfondimenti si rimanda all'elenco delle Risorse consigliate. Come prerequisito è necessario conoscere il linguaggio C e avere pratica di programmazione. Alcuni cenni riguardo le funzioni della libreria del C, verranno dati nel momento in cui sarà usata una certa funzione negli esempi. Può essere utile possedere una discreta conoscenza e operativià in un sistema di tipo UNIX, per seguire meglio o riprodurre le esemplificazioni relative a questo sistema.

Indice

  1. Breve introduzione e classificazione dei sistemi operativi
  2. FreeBSD
  3. Alcune system call di UNIX per l'I/O
    1. read
    2. write
    3. open
    4. Elenco delle principali system call
  4. Utenti di UNIX e permessi
  5. I processi
    1. fork
    2. execl, execve
  6. La comunicazione tra i processi
    1. Problema della variabile condivisa
    2. Il problema del produttore-consumatore
    3. Riepilogo sull'uso dei semafori
    4. exit, _exit
    5. pipe, popen
    6. mkfifo
    7. kill, signal
  7. Risorse consigliate

Succ
Breve introduzione e classificazione dei sistemi operativi