Programma di Sistemi Operativi E Reti:

1. CONCETTI DI BASE. Principali funzioni di un SO. Gestione delle risorse. Protezione e sicurezza. Astrazione di macchina virtuale. Cenni storici dei SO. Tipologie di sistemi operativi (batch, time-sharing, real-time, per PC, paralleli e distribuiti). Richiami di architetture del calcolatore. Struttura e componenti dei SO.

2. GESTIONE DEI PROCESSI. Definizione di processo. Stati dei processi. Descrittore di un processo. Code di processi. Cambio di contesto. Creazione e terminazione dei processi. Interazione tra i processi. Kernel di un sistema a processi. Algoritmi di Scheduling della CPU. Thread.

3. SINCRONIZZAZIONE DEI PROCESSI. Interazione tra i processi. Mutua esclusione. Modello produttore-consumatore. Semafori. Primitive send e receive. Comunicazione e sincronizzazione tra processi. Blocco critico. 4. GESTIONE DELLA MEMORIA. Memoria virtuale. Rilocazione statica e dinamica. Organizzazione della memoria virtuale. Allocazione della memoria fisica. Dimensionamento della memoria virtuale. Tecniche di gestione della memoria. Memoria partizionata. Memoria segmentata. Memoria paginata. Memoria segmentata e paginata. Gestione degli spazi virtuali.

5. GESTIONE DELLE PERIFERICHE. Organizzazione logica del sottosistema di I/O. Livello indipendente dai dispositivi. Livello dipendente dai dispositivi. Gestore di un dispositivo (a controllo di programma, mediante interruzione e in DMA). Descrittore e driver di dispositivo. Gestione del timer. Gestione, organizzazione e scheduling dei dischi (FCFS, SSFT, SCAN). Dischi RAID.

6. FILE SYSTEM. Organizzazione e struttura logica. Metodi di accesso. Protezione. Organizzazione fisica. Tecniche di allocazione dei file (contigua, a lista concatenata ed a indice).

7. I SISTEMI OPERATIVI UNIX E LINUX. Storia di Unix e di Linux. Architettura di Unix. Interazione con l'utente tramite shell. Sintassi di comandi dello shell. I processi in Unix. Diagramma degli stati.Immagine di un processo Unix. Principali system call per la gestione dei processi. Lo scheduling in Unix. La gestione della memoria in Unix. Il file system. Organizzazione logica e fisica del file system di Unix. System call per l'accesso ai file. Protezione in Unix. Interazione tra processi. Sincronizzazione: i segnali. System call per l'uso dei segnali. Comunicazione: pipe. I Thread in Linux e Unix. Thread POSIX: la libreria pthread. Creazione e terminazione di thread. Sincronizzazione tra thread: i mutex della libreria pthread e variabili condition.   

1. RETI DI CALCOLATORI E INTERNET. Descrizione di Internet. La sezione di accesso alla rete. Servizio senza connessione e servizio orientato alla connessione. Nucleo della rete. Commutazione di circuito e commutazione di pacchetto. Multiplazione nelle reti a commutazione di circuito. Frammentazione del messaggio. Inoltro dei pacchetti nelle reti di calcolatori.Reti a circuito virtuale. Reti datagram. Accesso alla rete e mezzi trasmissivi. Accesso alla rete (residenziale, aziendale, mobile). Mezzi fisici. Canali radio terrestri e satellitari. Gli ISP e la dorsale di Internet. Ritardi e perdite nelle reti a commutazione di pacchetto. Ritardo e router in Internet. Strati protocollari e loro modelli di servizio. Architettura stratificata. Funzione degli strati. La pila protocollare di Internet.

2. STRATO DI APPLICAZIONE. Protocolli dello strato di applicazione. Lati client e server di un'applicazione. Processi di comunicazione. Indirizzamento dei processi. Servizi necessari a un'applicazione. Trasferimento affidabile dei dati. Larghezza di banda. Timing. Servizi forniti dai protocolli di trasporto Internet. Servizi TCP. Servizi UDP. Applicazioni di rete. Web e http. Connessione non persistente e persistente. Formato del messaggio HTTP. Interazione user-server: autorizzazione e cookie. GET condizionato. Trasferimento di file: FTP. Posta elettronica. SMTP. Formati dei messaggi di posta e MIME. POP3 e IMAP. Posta elettronica basata sul Web. Il DNS. Programmazione dei socket con TCP e UDP. Esempi di applicazioni client/server in Java. Distribuzione di contenuti. Server Proxy. Reti per la distribuzione di contenuti (CDN). Condivisione di file da pari a pari. 3. STRATO DI TRASPORTO. Servizi dello strato di trasporto. Multiplexing e demultiplexing. UDP. Struttura del segmento UDP. TCP. Struttura del segmento TCP. Stima del tempo di round trip e timeout. Trasferimento affidabile dei dati. Controllo di flusso. Gestione della connessione TCP. Controllo della congestione del TCP.

4. STRATO DI RETE. Introduzione e modelli di servizio della rete. Principi di instradamento. Algoritmi di instradamento basati sullo stato del link e su Distance Vector. Instradamento gerarchico. Protocollo IP.Indirizzamento IPv4. Formato del datagram. Frammentazione del datagram IP. Traduzione degli indirizzi di rete (NAT). ICMP. Protocollo di configurazione dinamica degli host (DHCP). Instradamento intra-sistema autonomo. RIP e OSPF. Instradamento inter-sistemi autonomi:BGP. IPv6. Formato del datagram IPv6. ICMP per IPv6. Transizione da IPv4 a IPv6. Instradamento multicast. multicast e gruppi multicast. Il protocollo IGMP.

5. STRATO DI COLLEGAMENTO E RETI LAN. Lo strato di collegamento: introduzione I servizi forniti dallo strato di collegamento. Adattatori. Tecniche di rilevazione e correzione degli errori. Controllo di parità. Metodi di checksum. Controllo a ridondanza ciclica (CRC). Protocolli di accesso multiplo. Indirizzi LAN. Protocollo ARP per la risoluzione dell'indirizzo. Ethernet. CSMA/CD. Tecnologie Ethernet. Hub e switch. Schemi di connessione.

6. RETI WIRELESS. Collegamenti wireless e caratteristiche di rete. Wi-fi 802.11. Canali e associazioni. Protocollo MAC 802.11 (CSMA/CA). Frame IEEE 802.11.