1: Introduzione
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- cosa e' un SO e a cosa serve
- accenni di storia dei SO
- il programma del corso
2: Richiami di architettura
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Multiprogramming, time-sharing systems
- IO devices
- memoria
- meccanismi di protezione hardware (user mode e monitor mode,
operazioni privilegiate, timer interrupt)
3: Organizzazione generale di un SO
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- i servizi offerti da un SO
- struttura di un SO
4: Processi e threads
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- il concetto di processo
- stati possibili
- rappresentazione di un processo
- lo scheduling dei processi e il context switch
- il concetto di thread
- esempi di thread
5: Concorrenza e comunicazione
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- cosa e' la concorrenza
- multiprocessing vs multiprogramming
- esempi di cooperazione tra processi
- race condition, interferenza, sincronizzazione
- regioni critiche
- semafori
- deadlock e starvation
- costrutti di sincronizzazione ad alto livello
- comunicazione tra processi
6: Scheduling della CPU
~~~~~~~~~~~~~~~~~~~~~~~
- perche' lo scheduling
- fattori di ottimizzazione
- algoritmi principali (FCFS,SJR, Priorita', Round Robin)
- Java thread scheduling
7: Gestione della memoria
~~~~~~~~~~~~~~~~~~~~~~~~~
- indirizzi logici e fisici
- swapping
- frammentazione
- condivisione di codice e/o dati
- paginazione
- memoria virtuale
8: File system
~~~~~~~~~~~~~~~
- cosa e' un file; tipi di files; operazioni
- metodi di accesso
- directory (tipi, operazioni)
- organizzazione (locazione su memoria, file fisici e logici, apertura
e chiusura di file, mounting)
9: Distributed comunication
~~~~~~~~~~~~~~~~~~~~~~~~~~~
- socket; in unix, in Java
- Remote Procedure Call (cenni)
- Remote Method Invocation, in Java
10: Sicurezza e cenni di Crittografia
- autenticazione
- minaccie principali (software, di sistema, virus
- firewall
- crittografia
LABORATORIO
1: Java threads
~~~~~~~~~~~~~~~
- creazione di thread
- gestione e stati (comandi: suspend, resume, etc..)
- esempi
2: Sincronizzazione tra processi
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- esempi Java usando semafori
- sincronizzazione ad alto livello in Java:
locks, wait, notify, sincronizzazione su blocchi di codice, etc.
- esempi piu' complessi
3: Comunicazioni su rete
~~~~~~~~~~~~~~~~~~~~~~~~
- parte 1: socket in Java
- il package java.net
- esempi
- parte 2: JavaRMI
- richiamo concetti di base
- creazione di oggetti remoti
- RMI registry
- uso delle URL
- esecuzione
- altri esempi
4: Linguaggi piu' avanzati per rete e servizi
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Il linguaggio Jolie
5: Sicurezza e Crittografia
~~~~~~~~~~~~~~~~~~~~~~~~
TESTI DI RIFERIMENTO
Per le lezioni su SO
~~~~~~~~~~~~~~~~~~~~~
Referenza principale:
Operating Systems Concepts with Java,
John Wiley and Sons.
Esistono anche varie traduzioni in italiano di questi testi:
raccomando, per quelli che preferiscono un testo italiano, le
versioni pubblicate dalla Pearson-Addison Wesley, perche' la
traduzione e' piu' accurata.
Altre referenze (i concetti trattati a lezione sono spiegati bene anche qui):
Operating Systems,
Pearson Addison Wesley.
Nella parte su sicurezza, introdurremo anche nozioni di crittografia.
Puo' essere utile quindi procurarsi materiale specifico su questa
parte. Esempio il capitolo dedicato su
Computer Networking: A Top-Down Approach,
Pearson Addison Wesley.
Per il laboratorio di SO
~~~~~~~~~~~~~~~~~~~~~~~~
Parti su Java:
Ci sono tantissimi libri disponibili su Java.
Le cose nuove rispetto alle
parti viste nel corso di programmazione al primo anno sono
thread, socket e RMI
Un libro su Java che mi sento di consigliare fortemente, perche' e' fatto molto bene, comprende le parti su concorrenza e distribuzione, e propone molti esercizi, e' il seguente:
Oggetti, concorrenza, distribuzione.
Esculapio
Aule: Mercoledi, Berti Pichat 5 ; Giovedi, Tonelli; Venerdi, Cremona.
LUN | MAR | MER | GIO | VEN | |
9.00-10.00 | SO | ||||
10.00-11.00 | SO | ||||
11.00-12.00 | SO | ||||
12.00-13.00 | LAB SO | LAB SO | |||
13.00-14.00 | LAB SO | LAB SO | SO | ||
14.00-15.00 | SO | ||||
15.00-16.00 | SO | ||||
16.00-17.00 | |||||
17.00-18.00 | |||||
18.00-19.00 |