Sistemi Operativi

Ho deciso, dopo parecchio tempo, di raccogliere gli appunti di Sistemi Operativi (in questo caso particolare il secondo modulo) e collezionarli in una sezione dedicata. Parecchie cose credo possano essere utili anche per comprendere il funzionamento e l’evoluzione degli OS nel tempo (in particolare la prima parte spiega in maniera rudimentale come funzionava il vecchio Mac OS accennando poi a quello che sarebbe venuto). Benchè nessuno degli appunti citi esplicitamente Mac OS X nel corso dei tutorial verranno discussi aspetti riguardanti sia sistemi Unix (Posix compliant nello specifico) sia sistemi Windows NT.

 

1. LA GESTIONE DELLA MEMORIA (Disponibile in PDF)

Questo primo documento contiene una introduzione alla gestione della memoria partendo dalla struttura logica di un programma, lo spazio di indirizzamenti fino a coprire il binding, il partizionamento della memoria, la paginazione/segmentazione e la memoria virtuale.

 

2. PIPES AND NAMED PIPES (Disponibile in PDF)

Vengono trattati i concetti fondamentali dietro le pipes (principalmente unix ma anche windows) con alcuni esempi di codice per programmi client/server.

 

3. DEADLOCK (Disponibile in PDF)

Cos'è il deadlock, come riconoscere una situazione di deadlock e le tecniche di individuazione, prevenzione e correzione di questi eventi.

 

4. SISTEMI DISTRIBUITI (Disponibile in PDF)

Far comunicare i programmi su macchine remote: introduzione alle Remote Procedure Call. Cosa sono e come funzionano i File System distributi: cache, replicazione, montaggio, trasferimento e alcuni filesystem famosi in dettaglio.

 

5. BUFFER E I/O DEL DISCO (Disponibile in PDF)

In questa ultima parte è descritto il modo dei sistemi operativi di comunicare con le periferiche esterne, in particolare si pone l'accento sui dischi. Si vedrà quindi il DMA, la progettazione dell'I/O, la bufferizzazione, schedulazione e caching del disco.

 

6. COMPLEMENTO: Programmazione in ambiente unix (Link esterno)

Una breve guida introduttiva alla programmazione UNIX in C.