From Agentgroup
Jump to: navigation, search
(Esame scritto)
(Esame scritto)
Line 108: Line 108:
 
#  Il compito deve essere svolto solamente nel linguaggio Java, usando le classi del package monitor e lavorando con l’ambiente di sviluppo IBM Eclipse.
 
#  Il compito deve essere svolto solamente nel linguaggio Java, usando le classi del package monitor e lavorando con l’ambiente di sviluppo IBM Eclipse.
 
#  Seguire le seguenti regole per lo svolgimento dell’esame al laboratorio base:
 
#  Seguire le seguenti regole per lo svolgimento dell’esame al laboratorio base:
; Fare il login in Linux con il proprio account.[[Image:iscrizione.png|90px|right]]
+
#* Fare il login in Linux con il proprio account.[[Image:iscrizione.png|90px|right]]
; Aprire Eclipse (comando “eclipse” da shell) e scegliere come workspace la propria home directory (es. /homel/n12345).
+
#* Aprire Eclipse (comando “eclipse” da shell) e scegliere come workspace la propria home directory (es. /homel/n12345).
; Creare, se non già presente, il progetto con le classi del monitor Java ed installare gli eventuali template presenti nella home.
+
#* Creare, se non già presente, il progetto con le classi del monitor Java ed installare gli eventuali template presenti nella home.
; Creare un progetto Java con nome “ESAMEddmmyy-<<Turno>>-<<Numero>>” e scrivere le classi Java della soluzione nel package di default (senza nome) di tale progetto. Fare attenzione a scrivere correttamente il nome del progetto, con maiuscole e minuscole a posto!
+
#* Creare un progetto Java con nome “ESAMEddmmyy-<<Turno>>-<<Numero>>” e scrivere le classi Java della soluzione nel package di default (senza nome) di tale progetto. Fare attenzione a scrivere correttamente il nome del progetto, con maiuscole e minuscole a posto!
; Finito il vostro esame (o allo scadere del tempo di 1h:30m), dovete salvare tutto (si consiglia di salvare spesso per non perdere il proprio lavoro), chiudere Eclipse, fare il logout, lasciare il vostro PC e procedere alla consegna del testo.
+
#* Finito il vostro esame (o allo scadere del tempo di 1h:30m), dovete salvare tutto (si consiglia di salvare spesso per non perdere il proprio lavoro), chiudere Eclipse, fare il logout, lasciare il vostro PC e procedere alla consegna del testo.
  
 
==Esame orale==
 
==Esame orale==

Revision as of 09:49, 11 December 2009

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 della LS, in particolare per i testi degli esami passati e per alcune loro soluzioni.

News

Le news relative a questo nuovo insegnamento si trovano nella specifica pagina

Informazioni sul docente

Letizia.jpg

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 di questo insegnamento sono collocate nel I semestre, e per l'A.A. 2009-10 sono iniziate lunedì 21 Settembre 2009 e avranno termine il 23 Dicembre 2009. L'orario delle lezioni è disponibile anche nella sezione Orari e Appelli del sito della Facoltà di Ingegneria alla pagina

Lunedì

ore 11-13 (lezione)

aula FA-0-D (Ingegneria)

Mercoledì

ore 11-13 (lezione)

aula FA-0-D (Ingegneria)

Venerdì

ore 11-13 (esercitazione)

Lab. LINFA - ex FA-2-F (Ingegneria)


Obiettivi dell'Insegnamento

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 conoscenze pregresse quella derivanti 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).

Programma dell'Insegnamento

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.

Registro

Dopo ogni lezione verrà compilato il registro con l'indicazione degli argomenti trattati. I registri relativi ai diversi anni accademici sono accessibili sul sito della Facoltà e in particolare:

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, che verrà svolto in laboratorio, 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: per gli esami di questo insegnamento questi si trovano nella sezione Testi Esami Scritti, mentre per quelli del omonimo insegnamento non più attivo, si possono consultare le pagine relative.

Si riportano, per chiarezza, le note che sono normalmente riportate in tutti i testi di esame:

  1. Si considerano parte integrante delle soluzioni i COMMENTI significativi introdotti per facilitare la lettura del codice: come tali, essi influenzano la votazione finale. Tuttavia, i messaggi di debug (ad es. le println()) del programma NON SONO CONSIDERATI E QUINDI NON INFLUENZANO LA VOTAZIONE FINALE.
  2. Il tempo a disposizione è di 90 minuti.
  3. Il compito deve essere svolto solamente nel linguaggio Java, usando le classi del package monitor e lavorando con l’ambiente di sviluppo IBM Eclipse.
  4. Seguire le seguenti regole per lo svolgimento dell’esame al laboratorio base:
    • Fare il login in Linux con il proprio account.
      Iscrizione.png
    • Aprire Eclipse (comando “eclipse” da shell) e scegliere come workspace la propria home directory (es. /homel/n12345).
    • Creare, se non già presente, il progetto con le classi del monitor Java ed installare gli eventuali template presenti nella home.
    • Creare un progetto Java con nome “ESAMEddmmyy-<<Turno>>-<<Numero>>” e scrivere le classi Java della soluzione nel package di default (senza nome) di tale progetto. Fare attenzione a scrivere correttamente il nome del progetto, con maiuscole e minuscole a posto!
    • Finito il vostro esame (o allo scadere del tempo di 1h:30m), dovete salvare tutto (si consiglia di salvare spesso per non perdere il proprio lavoro), chiudere Eclipse, fare il logout, lasciare il vostro PC e procedere alla consegna del testo.

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à svolto: si consideri, in particolare, che come case-study verrà normalmente fatto riferimento al Sistema Operativo UNIX o Linux.

Note sugli esami

  1. Per l'iscrizione ad esame scritto si deve usare il form specifico che è presente in questa pagina nella sezione Appelli.
  2. La consegna di uno scritto cancella il voto precedente; la partecipazione ad uno scritto senza consegnare non cancella il voto precedente.
  3. Per l'iscrizione all'esame orale è necessario invece inviare una email al docente per fissare un appuntamento.

Appelli

Le date degli appelli scritti (in laboratorio) sono disponibili nel sito WEB della Facoltà di Ingegneria.

Si segnala che nella sessione di esami di Gennaio-Febbraio poiché è stata organizzata una prova in itinere e quindi 3 prove invece che le 2 richieste, lo studente potrà partecipare ad una sola delle due prove fissate una a Gennaio e una a Febbraio.

Per l'iscrizione agli esami scritti si deve usare il form inserendo cognome, nome e password comunicata nella registrazione all'insegnamento.

Si precisa invece che ESSE3 verrà usato per la sola verbalizzazione del voto finale che deriverà dal voto ottenuto nella prova scritta (in laboratorio) e nella prova orale, senza bisogno che lo studente si iscriva ad un appello, dato che tale inserimento verrà effettuato dal docente.

Si ricorda però che la verbalizzazione relativa al primo appello dopo la conclusione delle lezioni sarà possibile solo per gli studenti che hanno compilato il questionario di valutazione (come specificato nella sezione Valutazione della Didattica della pagina del Corso di LaureaMagistrale.

Testi Esami Scritti

I testi degli esami scritti potete trovarli a questa pagina Esami di Principi di Sistemi Operativi: di alcuni di essi viene fornita anche una possibile soluzione.

Risultati Esami Scritti

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 dell'ufficio della Prof. Leonardi.

Consigli Utili

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, disponibile comunque in laboratorio (per scaricarlo si veda sezione Strumenti Software).

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 dell'Insegnamento

Lucidi.png

Sono disponibili i lucidi in formato PDF usati durante le lezioni di teoria sui seguenti argomenti che necessitano tutti, a parte il primo file, di password di lettura (tale password sarà comunicata durante la prima lezione):

  1. Programma del corso e modalità di esame
  2. Lucidi introduttivi sui Sistemi Operativi: evoluzione e categorizzazione dei Sistemi Operativi
  3. Lucidi sui processi: generalità
  4. Lucidi sui processi: interazione fra processi
  5. Lucidi sui processi: esempi di uso dei semafori
  6. Lucidi sui processi: processi comunicanti in ambiente globale
  7. Lucidi sui processi: costrutti di sincronizzazione in ambiente globale
  8. Lucidi su processi in ambiente Locale: processi comunicanti in ambiente locale
  9. Lucidi sul Nucleo
  10. Lucidi di SO su fork ed exec di Unix
  11. Lucidi sul deadlock
  12. Lucidi sulla Gestione della Memoria: metodi di allocazione contigua
  13. Lucidi sulla Gestione della Memoria: metodi di allocazione non contigua
  14. Lucidi sulla Gestione della Memoria Virtuale
  15. Lucidi sulla Gestione della Memoria in Unix
  16. Lucidi sulla Gestione dei file: livello logico
  17. Lucidi sulla Gestione dei file: livello fisico


Sono disponibili i lucidi usati durante i seminari sui seguenti argomenti:

Seminario sulla concorrenza nel linguaggio Java ( Ing. Mariachiara Puviani, versione A.A. 09-10)

Esercizi presentati in laboratorio

EserciziLezione.png

Gli esercizi sono forniti alcuni in formato pdf, visualizzabili e stampabili con il programma Adobe Acrobat, altri (.java) in semplice formato testo.

Potete trovarli a questa pagina: Esercizi di Principi di Sistemi Operativi.


Strumenti Software

Strumenti.png

Si indicano di seguito gli strumenti software che si utilizzano durante il corso e si indica dove è 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.