From Agentgroup
Revision as of 15:25, 18 February 2011 by Mariachiara (Talk | contribs) (Programma dell'Insegnamento)

Jump to: navigation, search

Questa pagina fornisce il materiale didattico e le informazioni relative all'insegnamento di Sistemi Operativi e Lab. (9 CFU) per il Corso di Laurea in Ingegneria Informatica, secondo il D.M. 270/04, attivo dall'A.A. 2010-11.

Questo materiale didattico per la maggior parte deriva da quello dell'omonimo insegnamento che fino all'A.A. 2009-10 era attivo al II anno della Laurea. Si può consultare anche la pagina dell'omonimo insegnamento non più in particolare per i testi degli esami passati e per alcune loro soluzioni.

News

Informazioni sul docente

Letizia-Nov2010.jpg

Prof. Letizia Leonardi

Dipartimento di Ingegneria dell'Infomazione

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

Telefono 0592056135 - Fax 0592056129

letizia.leonardi@unimore.it

Orario di ricevimento (di norma): Lunedì dalle 15 alle 17

Orario delle Lezioni

Le lezioni di questo insegnamento sono collocate nel II semestre e per l'A.A. 2010-11 inizieranno lunedì 28 Febbraio 2011. 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-1-E (Ingegneria)

Mercoledì

ore 11-13 (lezione)

aula FA-1-E (Ingegneria)

Venerdì

ore 9-13 (esercitazione)

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

Obiettivi dell'Insegnamento

Faq.png

L'insegnamento ha come obiettivo quello di fornire le conoscenze di base dei Sistemi Operativi e di introdurre alcuni aspetti della programmazione di sistema in UNIX/LINUX.

Come propedeuticità all'insegnamento è utile l'esame di Fondamenti di Informatica C.

Programma dell'Insegnamento

Gli argomenti teorici che verranno affrontati saranno:

1) Classificazione dei Sistemi Operativi. In particolare, sistemi multi-utente e multiprocesso.

2) Il Sistema Operativo come insieme di gestori delle risorse. Introduzione ai concetti di processo e thread e loro gestore: scheduling. Introduzione al concetto di file e direttorio e loro gestore: il File System a livello di organizzazione logica.

3) La programmazione di sistema utilizzando i linguaggi comandi. Il Bourne Shell di UNIX.

4) La programmazione di sistema utilizzando il linguaggio di programmazione C per UNIX. Le primitive di basso livello per l'accesso ai file (in particolare, open, creat, close, read, write e lseek) e le primitive per la creazione, comunicazione e sincronizzazione dei processi (in particolare, fork, exit, wait, pipe, signal e kill).

5) Laboratorio di Sistemi Operativi. Esercitazioni pratiche, in laboratorio, utilizzando computer provvisti di sistema operativo UNIX/LINUX. Verifica pratica della programmazione di sistema UNIX, utilizzando sia il linguaggio dello Shell che il linguaggio di programmazione C per arrivare allo svolgimento di un progetto completo di ricerca ricorsiva nel file system avente una parte in Shell e una in C che si coordinano l'un l'altra.

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

Tesina.png

L'esame si compone di una prova scritta. Per maggiori dettagli, vedere il seguito di questa pagina.

Prova scritta

Per l'iscrizione ad una prova scritta si deve usare il form specifico che è presente in questa pagina nella sezione Appelli: si ricorda che in caso di valutazione insufficiente lo studente che non avrà preso visione dei suoi errori NON potrà iscriversi ad una prova successiva! Di norma le iscrizioni/cancellazioni ad un appello si chiudono due giorni prima: ad esempio se l'appello è pianificato di venerdì, le iscrizioni/cancellazioni sono possibili fino alla mezzanotte del martedì precedente! Le indicazioni comunque della data di chiusura dell'appello sono riportate per ogni appello.


ModalitaEsame.png

La prova scritta comprende un singolo esercizio. L'esercizio richiede la soluzione di un problema di sincronizzazione in ambito locale, ottenuta facendo riferimento al sistema operativo UNIX si compone di due parti:

  1. una parte in Bourne Shell che deve risolvere un sottoproblema di esplorazione nel file system;
  2. una parte in linguaggio C che deve risolvere un sottoproblema concorrente facendo uso delle primitive di gestione dei processi proprie di UNIX.

Lo svolgimento della prova scritta avviene in due modi (la durata della prova è di due ore):
a) in aula come un qualunque scritto solo per chi NON segue il Laboratorio di Sistemi Operativi
b) in laboratorio solo per chi segue anche il Laboratorio di Sistemi Operativi; in questo caso, lo studente dovrà produrre un insieme di file corrispondenti alla soluzione dell'esercizio
Nota bene: Saranno corrette SOLO le soluzioni che non conterranno errori né di sintassi sulla parte Shell e C né errori di collegamento (linking) sulla parte C.

In entrambi i casi, la sufficienza è rappresentata da un voto >= 18: il voto ottenuto con lo scritto rappresenterà, se sufficiente, la valutazione della verifica dell'insegnamento di Sistemi Operativi.

Si precisa che in caso di valutazione insufficiente lo studente dovrà prendere visione dei suoi errori PRIMA di poter partecipare ad una nuova prova.

Allo studente che risulti sufficiente ad una prova è consentito ripetere la prova se vuole migliorare il voto, ma qualunque votazione ottenga nella seconda prova annulla il voto precedentemente acquisito.

Saranno organizzate anche DUE VERIFICHE IN ITINERE (LA PRIMA SULLA PARTE IN BOURNE SHELL E LA SECONDA SULLA PARTE IN C).

Regole specifiche per le prove in itinere:

(ultimo aggiornamento: 18 MAGGIO 2010)

1) Alle prove in itinere di un certo A.A. possono partecipare (chiaramente) solo gli studenti che stanno frequentando in tale A.A.
2) Alla seconda prova in itinere sulla SOLA PARTE IN LINGUAGGIO C (che in genere si tiene l'ultimo giorno di lezione) possono partecipare solo gli studenti che hanno superato la prima prova in itinere.
3) La validità della prima prova in itinere (PARTE SHELL) è di un anno solare e quindi fino alla sessione di esami di Gennaio-Febbraio dell'anno seguente (cioe' fino al termine dell'A.A. in cui si è svolta). In altre parole, una volta superata la parte SHELL, lo studente può svolgere sempre solo la PARTE C per i seguenti appelli dell'A.A., anche in caso di prendere una insufficienza nella PARTE C. Solo se lo studente NON riesce a superare la PARTE C entro il termine previsto, allora dovrà sostenere l'esame totale.
4) La regola precedente NON vale se però uno studente ad un certo punto decide di iscriversi alla prova totale: in tal caso, il voto conseguito nella PARTE SHELL viene annullato!
5) Nel caso in cui il primo appello della sessione dopo le lezioni risultasse troppo ravvicinato alla seconda prova in itinere, chi non supera la seconda prova in itinere o chi semplicemente partecipa ad essa potrà svolgere la SOLA PARTE IN LINGUAGGIO C esclusivamente nel secondo appello della sessione: questo vincolo deriva perchè il lasso di tempo a disposizione fra un esame e l'altro sarebbe troppo poco o per consentire ad uno studente insufficiente di recuperare le proprie carenze oppure anche solo per avere i risultati della seconda prova in itinere.

Note sugli esami

Attenzione.png

La consegna di una prova scritta cancella il voto precedente; la partecipazione ad uno scritto senza consegnare non cancella il voto precedente.

Appelli

Le date delle prove scritte (in laboratorio) sono disponibili nel sito WEB della Facoltà di Ingegneria.

Per l'iscrizione alle prove scritte si deve usare l'applicazione inserendo come Username nome.cognome e come Password quella inserita all'atto della registrazione all'insegnamento: di norma le iscrizioni/cancellazioni ad un appello si chiudono due giorni prima (ad esempio se l'appello è pianificato di venerdì, le iscrizioni/cancellazioni sono possibili fino alla mezzanotte del martedì precedente!) e comunque le indicazioni della data di chiusura dell'appello sono riportate per ogni appello. Si rende noto che l'applicazione in uso dall'A.A. 2010-11 impedisce ad uno studente in caso di valutazione insufficiente di iscriversi ad una prova successiva fino a che non avrà preso visione dei suoi errori.


Si precisa che ESSE3 verrà usato per la sola verbalizzazione del voto, 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 in corso che hanno compilato il questionario di valutazione (come specificato nella sezione Valutazione della Didattica della pagina del Corso di Laurea).


Testi Prove Scritte

I testi delle prove scritte si trovano nella pagina Esami di Sistemi Operativi e Lab.: di alcuni di essi viene fornita anche una possibile soluzione.

Risultati Prove Scritte

Dall'A.A. 2010-11, gli studenti che hanno partecipato ad una prova scritta di Sistemi Operativi possono prendere visione del voto della prova scritta svolta in laboratorio collegandosi all'applicazione utilizzata per l'iscrizione alla prova e selezionando la voce Dati iscrizione corso (in lato a sinistra).

Consigli Utili

Attenzione.png

Per superare agevolmente la prova scritta, che si svolgerà in laboratorio, si consiglia agli studenti di seguire con continuità le lezioni ed, in particolare, le esercitazioni in laboratorio. Inoltre, si consiglia di preparare la prova scritta 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.

Testi Consigliati

Textbook.png

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:

HAVILAND K., GRAY D., SALAMA B., Unix System Programming, Casa Editrice Addison-Wesley, 1999.
BOURNE S. R., UNIX System V, Casa Editrice Addison-Wesley, 1990.

In alternativa la seconda parte del testo seguente contiene tutti gli argomenti del corso (mentre la prima parte puo' essere usata per un ripasso del Linguaggio C):

BELLAVIA G., CORRADI A., LEONARDI L., Fondamenti di Informatica II: Dispense del corso (seconda edizione), Casa Editrice Esculapio, Progetto Leonardo, 1994.

Per un eserciziario relativo al Linguaggio C si segnala:

LEONARDI L.: Linguaggio C: Raccolta di esercizi e relative soluzioni, Ed. Esculapio - Progetto Leonardo, 1996.

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. 2010/11)

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.

Esercizi vari

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: Vari 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.
-->