From Agentgroup
Jump to: navigation, search
(Oviettivi del Corso E Consigli Utili)
(Programma Del Corso)
Line 65: Line 65:
 
1) Generalità sui Sistemi Operativi  
 
1) Generalità sui Sistemi Operativi  
 
Evoluzione storica: dai primi sistemi ai moderni sistemi operativi.  
 
Evoluzione storica: dai primi sistemi ai moderni sistemi operativi.  
Classificazione dei Sistemi Operativi: sistemi mono- e multi-utente,  
+
Classificazione dei Sistemi Operativi: sistemi mono- e multi-utente, sistemi batch e interattivi, sistemi in time-sharing e real-time.
 +
Elementi di base di un Sistema Operativo: punto di vista esterno (utente o programmatore di sistema) e punto di vista interno.
  
sistemi batch e interattivi, sistemi in time-sharing e real-time.
+
2) Sistema Operativo come insieme di gestori delle risorse. In particolare:  
Elementi di base di un Sistema Operativo: punto di vista esterno
+
 
+
(utente o programmatore di sistema) e punto di vista interno.
+
2) Sistema Operativo come insieme di gestori delle risorse. In  
+
 
+
particolare:  
+
 
a) Gestione della CPU  
 
a) Gestione della CPU  
Punto di vista esterno - tecniche di programmazione concorrente:  
+
Punto di vista esterno - tecniche di programmazione concorrente: modelli dei processi ad ambiente globale e ad ambiente locale; strumenti per la sincronizzazione di processi in ambiente globale (semafori, monitor, etc.) e locale (scambio di messaggi, RPC, etc.).
 
+
Punto di vista interno - implementazione del nucleo: strutture dati e primitive; algoritmi di scheduling; il problema del blocco dei processi (deadlock).
modelli dei processi ad ambiente globale e ad ambiente locale;  
+
 
+
strumenti per la sincronizzazione di processi in ambiente globale  
+
 
+
(semafori, monitor, etc.) e locale (scambio di messaggi, RPC, etc.).
+
Punto di vista interno - implementazione del nucleo: strutture dati e  
+
 
+
primitive; algoritmi di scheduling; il problema del blocco dei processi  
+
 
+
(deadlock).
+
 
b) Gestione della memoria  
 
b) Gestione della memoria  
Punto di vista esterno - programmi: assoluti, rilocabili staticamente,  
+
Punto di vista esterno - programmi: assoluti, rilocabili staticamente, rilocabili dinamicamente.
 
+
Punto di vista interno - metodi di allocazione: contigua (partizionamento statico e dinamico); swapping; segmentazione; non contigua (paginazione); gestione della memoria virtuale.
rilocabili dinamicamente.
+
Punto di vista interno - metodi di allocazione: contigua  
+
 
+
(partizionamento statico e dinamico); swapping; segmentazione; non  
+
 
+
contigua (paginazione); gestione della memoria virtuale.
+
 
c) Gestione del File System  
 
c) Gestione del File System  
Punto di vista esterno - organizzazione logica dei direttori e  
+
Punto di vista esterno - organizzazione logica dei direttori e proprietà dei file; livello di programmazione.  
 
+
Punto di vista interno - allocazione fisica in memoria secondaria: metodo contiguo; metodi non contigui (concatenamento e indicizzazione).  
proprietà dei file; livello di programmazione.  
+
Punto di vista interno - allocazione fisica in memoria secondaria:  
+
 
+
metodo contiguo; metodi non contigui (concatenamento e indicizzazione).  
+
 
+
Gli argomenti pratici che verranno affrontati relativamente a progetti
+
 
+
concorrenti in ambiente globale faranno riferimento al linguaggio di
+
  
programmazione Java e saranno in particolare:  
+
Gli argomenti pratici che verranno affrontati relativamente a progetti concorrenti in ambiente globale faranno riferimento al linguaggio di programmazione Java e saranno in particolare:  
 
- programmazione concorrente tramite thread;
 
- programmazione concorrente tramite thread;
 
- sincronizzazione mediante l'uso di monitor.
 
- sincronizzazione mediante l'uso di monitor.

Revision as of 17:52, 25 July 2009

WORKING IN PROGRESS...

Questa pagina fornisce il materiale didattico e le informazioni relative all'insegnamento di Principi di Sistemi Operativi (9 CFU) per il Corso di Laurea Magistrale in Ingegneria Informatica, secondo il D.M. 270/04, attivo dall'A.A. 2009-10. Questo materiale didattico per la maggior parte deriva da quello dell'omonimo insegnamento (però di 6 CFU) che fino all'A.A. 2008-09 era attivo al I anno della Laurea Specialistica, secondo il D.M. 509/99. In particolare, l'aumento di CFU da 6 a 9 deriva da aver voluto dare piena dignità alle esercitazioni di laboratorio che in passato erano facoltative, che ora diventano obbligatorie e parte integrante dell'insegnamento, almeno per la parte di preparazione alla prova scritta, che sarà appunto svolta in laboratorio. Si può consultare anche la pagina dell'omonimo insegnamento non più attivo, in particolare per i testi degli esami passati e per alcune soluzioni.

News

Le news relative a questo nuovo insegnamento si trovano al link WORKING IN PROGRESS...

Informazioni sul docente

Prof. Letizia Leonardi

Dipartimento di Ingegneria dell'Infomazione

Università di Modena e Reggio Emilia, Via Vignolese 905 - 41100 Modena

Telefono 0592056135 - Fax 0592056129

letizia.leonardi@unimore.it


Orario delle Lezioni

Le lezioni inizieranno lunedi' 21 Settembre 2009, durante il I semestre. L'orario delle lezioni sarà disponibile da Settembre nella sezione Orari e Appelli del sito della Facoltà di Ingegneria.

Obiettivi del Corso E Consigli Utili

L'obiettivo del corso è di raggiungere una buona conoscenza e capacità di comprensione di ogni livello/gestore di cui si compone un Sistema Operativo, analizzandone sia i meccanismi di funzionamento che le relative politiche. L’applicazione di queste conoscenze riguarda gli aspetti di programmazione di sistema per svolgere progetti concorrenti in ambiente globale di complessità crescente, utilizzando il linguaggio di programmazione Java. Questo corso quindi rappresenta il completamento rispetto al corso di Sistemi Operativi della Laurea triennale. Per tale ragione agli studenti non laureati in Ingegneria Informatica presso la nostra sede si consiglia di accertarsi di avere come conoscenza pregressa quella derivante dagli esami di Sistemi Operativi e Laboratorio di Sistemi Operativi (della Laurea D.M. 509) o di Sistemi Operativi e Lab. (della Laurea D.M. 270).

Per superare agevolmente l'esame scritto, che si svolgerà in laboratorio, si consiglia agli studenti di seguire con continuità le lezioni ed, in particolare, le esercitazioni in laboratorio del corso. Inoltre, si consiglia di preparare l'esame scritto sperimentando direttamente i concetti presentati a lezione sul calcolatore. Può risultare estremamente difficile superare con successo l'esame senza una conoscenza di tipo sperimentale, ottenuta con esercitazioni in laboratorio.

Ambienti di Programmazione Utilizzati: Java 1.5 di pubblico dominio (disponibili in laboratorio).

Programma Del Corso

Gli argomenti teorici che verranno affrontati saranno:

1) Generalità sui Sistemi Operativi Evoluzione storica: dai primi sistemi ai moderni sistemi operativi. Classificazione dei Sistemi Operativi: sistemi mono- e multi-utente, sistemi batch e interattivi, sistemi in time-sharing e real-time. Elementi di base di un Sistema Operativo: punto di vista esterno (utente o programmatore di sistema) e punto di vista interno.

2) Sistema Operativo come insieme di gestori delle risorse. In particolare: a) Gestione della CPU Punto di vista esterno - tecniche di programmazione concorrente: modelli dei processi ad ambiente globale e ad ambiente locale; strumenti per la sincronizzazione di processi in ambiente globale (semafori, monitor, etc.) e locale (scambio di messaggi, RPC, etc.). Punto di vista interno - implementazione del nucleo: strutture dati e primitive; algoritmi di scheduling; il problema del blocco dei processi (deadlock). b) Gestione della memoria Punto di vista esterno - programmi: assoluti, rilocabili staticamente, rilocabili dinamicamente. Punto di vista interno - metodi di allocazione: contigua (partizionamento statico e dinamico); swapping; segmentazione; non contigua (paginazione); gestione della memoria virtuale. c) Gestione del File System Punto di vista esterno - organizzazione logica dei direttori e proprietà dei file; livello di programmazione. Punto di vista interno - allocazione fisica in memoria secondaria: metodo contiguo; metodi non contigui (concatenamento e indicizzazione).

Gli argomenti pratici che verranno affrontati relativamente a progetti concorrenti in ambiente globale faranno riferimento al linguaggio di programmazione Java e saranno in particolare: - programmazione concorrente tramite thread; - sincronizzazione mediante l'uso di monitor.

Modalità D'Esame

L'esame si compone di uno scritto, in laboratorio, e di un orale. Per

maggiori dettagli, vedere il seguito di questa pagina.

Esame scritto

L'esame scritto serve a verificare che lo studente abbia acquisito le

seguenti capacità:

  • Capacità di scrivere soluzioni per la sincronizzazione di

processi in ambiente globale usando lo strumento di monitor.

  • Capacità di scrivere e verificare software in linguaggio di

programmazione Java per la sincronizzazione di processi usando lo

strumento di monitor.

Quindi, l'esame consiste nello sviluppare un progetto concorrente in

ambiente globale, composto di processi e di un monitor come strumento

di sincronizzazione, utilizzando a livello implementativo il linguaggio

di programmazione Java.

È possibile vedere il testo di tutti gli esami svolti negli anni

passati accedendo alle pagine dell'insegnamento non più attivo.

Esame orale

L'esame orale serve a verificare che lo studente abbia acquisito le

seguenti conoscenze e capacità di comprensione:

  • Conoscenza e capacità di comprensione della classificazione dei

Sistemi Operativi.

  • Conoscenza e capacità di comprensione dell'organizzazione interna di

un Sistema Operativo come insieme di livelli o gestori delle risorse.

  • Conoscenza e capacità di comprensione del concetto di processo, degli

algoritmi di scheduling e del problema del deadlock.

  • Conoscenza e capacità di comprensione degli strumenti di

sincronizzazione nel caso di modello di processi ad ambiente globale,

come semafori e monitor.

  • Conoscenza e capacità di comprensione degli strumenti di

sincronizzazione nel caso di modello di processi ad ambiente locale.

  • Conoscenza e capacità di comprensione della gestione della memoria

sia con politiche contigue e non contigue e sia con memoria virtuale. Conoscenza e capacità di comprensione dell'organizzazione logica dei

File System e delle politiche di allocazione fisica.

Quindi, l'esame orale spazia su tutto il programma che verrà

volto: si consideri, in particolare, che come case-study verrà

normalmente fatto riferimento al Sistema Operativo UNIX o Linux.

NOTE:

  1. per l'iscrizione ad esame scritto di deve usare il form

specifico che sarà presente in questa pagina;

  1. la consegna di uno scritto cancella il voto precedente; la

partecipazione ad uno scritto senza consegnare non cancella il voto

precedente;

  1. per l'iscrizione all'esame orale è necessario invece inviare una email

al docente per fissare un appuntamento.

Appelli

Risultati

I risultati dei compiti scritti svolti in laboratorio sono pubblicati

nelle news (in forma anonima, indicando o il numero di tessera

universitaria e/o la postazione assegnata durante la prova) e

normalmente anche affissi nella bacheca di fianco alla porta del mio

ufficio.

Testi Consigliati

Materiale come lucidi, esercizi e testi di esame (e alcune soluzioni)

sono disponibili in questa pagina e nella pagina del vecchio

insegnamento.

Comunque, testi di riferimento possono essere:

J. Peterson, A. Silberschatz: "Operating System Concepts", Addison

Wesley, 1990 (anche versione italiana: SILBERSCHATZ A., GALVIN P., G.

GAGNE: "Sistemi Operativi: concetti ed esempi - sesta edizione", Casa

Editrice Addison-Wesley, 2002).

M. Milenkovic: "Sistemi Operativi", McGraw-Hill, 1990.

P. Ancilotti, M. Boari: "Principi e Tecniche di Programmazione

Concorrente", UTET, 1988.

Inoltre, per la parte relativa a Java (ripasso e approfondimento) si

segnala:

G. Cabri, F. Zambonelli, "Programmazione a oggetti in Java: dai

fondamenti a Internet", Pitagora editrice, 2003.



Lucidi del Corso

WORKING IN PROGRESS ...

Esercizi presentati ad esercitazione

Strumenti Software

Strumenti.png

Si indicano di seguito gli strumenti software che si utilizzano durante

il corso e si indica dove e' possibile reperirli.

  • Per sviluppare programmi in Java si utilizza il JDK (Java Development

Kit). È di pubblico domino e si puo' scaricare dal sito

The Java Sun Site.

  • NOTA: Si consiglia di usare la versione 1.5 o la 1.6. È

comunque necessario utilizzare Java2, che corrisponde alle versioni del

jdk dalla 1.2 alla 1.6.

  • Molte riviste di informatica e libri su Java allegano il CD con Java

in omaggio.

  • Come ambiente integrato (IDE) è possibile utilizzare quello che si

preferisce. Quello consigliato è Eclipse.