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


SISTEMI OPERATIVI
OPERATING SYSTEMS

A.A. CFU
2016/2017 12
Docente Email Ricevimento studenti
Emanuele Lattanzi Mercoledi' dalle 11:00 alle 13:00
Didattica in lingue straniere
Insegnamento interamente in lingua straniera nel percorso online Inglese
Per questo insegnamento erogato in modalità mista presenza/online, la didattica online è svolta interamente in lingua straniera e l'esame può essere sostenuto in lingua straniera.

Assegnato al Corso di Studio

Informatica Applicata (L-31)
Curriculum: PERCORSO COMUNE
Giorno Orario Aula

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

Il materiale didattico predisposto dalla/dal docente in aggiunta ai testi consigliati (come ad esempio diapositive, dispense, esercizi, bibliografia) e le comunicazioni della/del docente specifiche per l'insegnamento sono reperibili 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.
    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.

    Disabilità e DSA

    Le studentesse e gli studenti che hanno registrato la certificazione di disabilità o la certificazione di DSA presso l'Ufficio Inclusione e diritto allo studio, possono chiedere di utilizzare le mappe concettuali (per parole chiave) durante la prova di esame.

    A tal fine, è necessario inviare le mappe, due settimane prima dell’appello di esame, alla o al docente del corso, che ne verificherà la coerenza con le indicazioni delle linee guida di ateneo e potrà chiederne la modifica.

    Note

    L'insegnamento è erogato anche on-line all'interno della piattaforma Moodle > elearning.uniurb.it

    « torna indietro Ultimo aggiornamento: 22/09/2016


    Il tuo feedback è importante

    Raccontaci la tua esperienza e aiutaci a migliorare questa pagina.

    15 22

    Se sei vittima di violenza o stalking chiama il 1522, scarica l'app o chatta su www.1522.eu

    Il numero, gratuito è attivo 24 h su 24, accoglie con operatrici specializzate le richieste di aiuto e sostegno delle vittime di violenza e stalking.

    Posta elettronica certificata

    amministrazione@uniurb.legalmail.it

    Social

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

    Top