Università degli Studi di Urbino Carlo Bo / Portale Web di Ateneo


SISTEMI OPERATIVI
OPERATING SYSTEMS

Sistemi Operativi
Operating Systems

A.A. CFU
2017/2018 12
Docente Mail Ricevimento studenti
Emanuele Lattanzi Mercoledì ore 11.00-13.00
Didattica in lingua straniera
Insegnamento con materiali opzionali in lingua straniera Inglese
La didattica è svolta interamente in lingua italiana. I materiali di studio e l'esame possono essere in lingua straniera.

Assegnato ai Corsi di Studio

Informatica Applicata (L-31)
Curriculum: PERCORSO COMUNE

Obiettivi Formativi

Il Corso ha lo scopo di illustrare la struttura di un sistema operativo multiprogrammato e le relative politiche di amministrazione delle risorse computazionali, con particolare riferimento alla schedulazione della CPU e alla gestione della memoria centrale, del file system e dei dispositivi di I/O.

Programma

01. Introduzione:
  01.01 Introduzione ai sistemi operativi.
  01.02 Strutture dei sistemi operativi.
  01.03 Principali funzioni di un sistema operativo.
  01.04 Chiamate di sistema.

02. Processi:
  02.01 Gestione dei processi.
  02.02 Context switch.
  02.03 Thread vs. processi.
  02.04 Comunicazione tra processi.

03. Sincronizzazione:
  03.01 Il problema della sezione critica.
  03.02 Strumenti per la sincronizzazione e loro uso.
  03.03 Problemi di sincronizzazione e deadlock.

04. Scheduling:
  04.01 Concetti fondamentali.
  04.02 Criteri di scheduling.
  04.03 Algoritmi di scheduling.
  04.04 Scheduling dei thread.

05. Scheduling in Linux:
  05.01 Process descriptor.
  05.02 Caratteristiche principali.
  05.03 Lo scheduler 2.4.x.
  05.04 Lo scheduler 2.6.x.
  05.05 Lo scheduler SMP.

06. Memoria principale:
  06.01 Organizzazione della memoria principale.
  06.02 Paginazione.
  06.03 Struttura della tabella delle pagine.
  06.04 Segmentazione.
  06.05 Esempi: Pentium Intel, Linux.

07. Memoria virtuale:
  07.01 Paginazione su richiesta.
  07.02 Sostituzione delle pagine.
  07.03 Allocazione dei frame.
  07.04 File mappati in memoria.

08. File system:
  08.01 Concetto di file system.
  08.02 Montaggio, condivisione e protezione.
  08.03 Implementazione.
  08.04 Metodi di allocazione.
  08.05 Gestione dello spazio libero.

09. Dischi magnetici:
  09.01 Struttura del disco.
  09.02 Performance dei dischi.
  09.03 Algoritmi di scheduling.

10. Sistemi di input/output:
  10.01 Polling, interrupt e DMA.
  10.02 Dispositivi a caratteri, a blocchi e di rete.
  10.03 Interfaccia del kernel per l'I/O.

11. Macchine virtuali:
  11.01 Macchine virtuali astratte.
  11.02 Macchine virtuali reali.
  11.03 Struttura delle macchine virtuali.
  11.04 JVM - Java Virtual Machine.

12. Il sistema operativo Android:
  12.01 Struttura.
  12.02 La Virtual Machine Dalvik.
  12.03 Applicazioni.
  12.04 Message passing: Intents.

13. Attività di laboratorio:
  13.01 Gestione dei processi nei sistemi UNIX-like.
  13.02 Gestione dei thread nei sistemi UNIX-like.
  13.03 Introduzione alla programmazione Java.
  13.04 Gestione dei thread in Java.
  13.05 Strumenti per la sincronizzazione dei thread in Java.

Eventuali Propedeuticità

Non vi sono propedeuticità obbligatorie.

Si suggerisce di sostenere l'esame di Sistemi Operativi dopo aver sostenuto gli esami di Programmazione Procedurale e Logica, Architettura degli Elaboratori, Algoritmi e Strutture Dati e prima di sostenere l'esame di Reti di Calcolatori.

Risultati di Apprendimento (Descrittori di Dublino)

  • Conoscenza e capacità di comprensione: Lo studente al termine del corso acquisirà le conoscenze fondamentali sulla struttura e funzionalità dei moderni sistemi operativi. Conoscerà i più diffusi algoritmi di gestione delle risorse, le metriche per valutare le performance dei sistemi operativi, nonché acquisirà i principi di base della programmazione concorrente.
  • Conoscenza e capacità di comprensione applicate: Lo studente acquisirà competenze sulla creazione e gestione dei processi e thread, tuning dello scheduler e API di programmazione in ambiente Linux. Inoltre, acquisirà le metodologie di programmazione concorrente in ambiente Java e sarà in grado di utilizzare strumenti di sincronizzazione quali lock, semafori e variabili condizione.
  • Autonomia di giudizio: Lo studente  sarà in grado di valutare le performance degli algoritmi di gestione delle risorse che stanno alla base dei moderni sistemi operativi e di comprendere e risolvere problemi tipici della programmazione concorrente. Le discussioni critiche in aula e le esercitazioni serviranno a stimolare e sviluppare l'autonomia di giudizio dello studente.
  • Abilità comunicative: Lo studente  acquisirà la capacità di esprimere i concetti fondamentali che stanno alla base del funzionamento e della progettazione dei moderni sistemi operativi con terminologia appropriata e rigorosa. Imparerà a descrivere i problemi inerenti la programmazione concorrente e le metodologie adottate per la loro soluzione.
  • Capacità di apprendere: Lo studente  acquisirà la capacità di studiare ed apprendere la struttura ed il funzionamento dei moderni sistemi operativi. 

Materiale Didattico e Attività di Supporto

Il materiale didattico e le comunicazioni specifiche del docente sono reperibili, assieme ad altre attività di supporto, all'interno della piattaforma Moodle › blended.uniurb.it

Modalità Didattiche, Obblighi, Testi di Studio e Modalità di Accertamento

Modalità Didattiche

Lezioni frontali ed esercitazioni di laboratorio.

Obblighi

Sebbene fortemente consigliata, la frequenza delle lezioni non è obbligatoria.

Testi di Studio
  • Silbershatz, Galvin, Gagne, "Sistemi Operativi Concetti ed Esempi", Pearson
  • Tanenbaum, "I Moderni Sistemi Operativi", Pearson
  • Ancilotti, Boari, "Programmazione Concorrente e Distribuita", McGraw-Hill.
  • Bovet, Cesati, "Understanding the Linux Kernel", O'Reilly
  • Goetz, Peierls, Bloch, Bowbeer, Holmes, Lea, "Java Concurrency in Practice", Addison-Wesley
  • Modalità di
    Accertamento

    Prova di programmazione concorrente al calcolatore e prova orale.

    La prova di programamzione è composta da un esercizio di programmazione concorrente da svolgere in aula (al calcolatore) della durata di 3 ore. La prova di programmazione viene valutata in trentesimi ed è ritenuta sufficiente se il relativo voto, che rimane valido per il solo appello in cui la prova viene sostenuta, è di almeno 18/30. Tale prova pemetterà al docente di valutare la conoscenza dei principi di base della programmazione concorrente ed in particolare sarà uitile per valutare la capacità di programmare in ambiente Java utilizzando strumenti di sincronizzazione quali lock, semafori e variabili condizione.


    La prova orale, che può essere sostenuta solo previo superamento della prova scritta, comporta un aggiustamento per eccesso o per difetto di al più 10/30 del voto della prova pratica, determinando così il voto finale. Tale prova permetterà al docente di valutare le conoscenze fondamentali sulla struttura e funzionalità dei moderni sistemi operativi e la conoscenza degli algoritmi di gestione delle risorse che stanno alla base dei moderni sistemi operativi. Infine, tale prova permetterà al docente di valutare l'autonomia di giudizio e le abilità comunicative acquisite dallo studente

    Note

    L'insegnamento offre servizi di didattica integrativa on-line all'interno della piattaforma Moodle > elearning.uniurb.it

    « torna indietro Ultimo aggiornamento: 13/09/17


    Condividi


    Questo contenuto ha risposto alla tua domanda?


    Il tuo feedback è importante

    Raccontaci la tua esperienza e aiutaci a migliorare questa pagina.

    numero verde

    800 46 24 46

    Richiesta informazioni

    informazioni@uniurb.it

    Posta elettronica certificata

    amministrazione@uniurb.legalmail.it

    Social

    Performance della pagina

    Università degli Studi di Urbino Carlo Bo
    Via Aurelio Saffi, 2 – 61029 Urbino PU – IT
    Partita IVA 00448830414 – Codice Fiscale 82002850418
    2017 © Tutti i diritti sono riservati

    Top