Salta al contenuto principale della pagina

SISTEMI OPERATIVI

CODICE 104746
ANNO ACCADEMICO 2022/2023
CFU
  • 6 cfu al 2° anno di 8719 INGEGNERIA INFORMATICA (L-8) - GENOVA
  • SETTORE SCIENTIFICO DISCIPLINARE ING-INF/05
    LINGUA Italiano
    SEDE
  • GENOVA
  • PERIODO 2° Semestre
    MATERIALE DIDATTICO AULAWEB

    OBIETTIVI E CONTENUTI

    OBIETTIVI FORMATIVI

    Struttura dei sistemi operativi, le funzioni dei moduli in cui sono organizzati, gli algoritmi e le strutture software che utilizzano.

    OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO

    L’insegnamento fornisce agli studenti le nozioni fondamentali relative alla struttura dei sistemi operativi. L’insegnamento fornisce altresì allo studente gli strumenti tecnici e metodologici per comprendere, analizzare criticamente e descrivere caratteristiche, funzioni e interazioni delle principali componenti dei sistemi operativi moderni. Al termine dell’insegnamento gli studenti sapranno inoltre utilizzare l’interfaccia a linea di comando del sistema operativo Linux e scrivere semplici programmi (script) per l’automazione delle attività di gestione del sistema operativo.

    PREREQUISITI

    Programmazione e familiarità con il linguaggio C; Architettura e funzionamento dei calcolatori

    MODALITA' DIDATTICHE

    L’attività didattica sarà realizzata con lezioni frontali accompagnate dallo svolgimento di problemi e di esercitazioni pratiche al calcolatore.

    Agli studenti lavoratori verrà dato accesso alla slides utilizzate durante le lezioni, esercizi d’esame proposti in passato e registrazioni delle lezioni.

     

    PROGRAMMA/CONTENUTO

    1. Introduzione alla struttura dei sistemi operativi. Concetti base, struttura monolitica e a microkernel. 

    2. La gestione dei processi e dei thread. Creazione e gestione processi. I thread e loro implementazione. 

    3. La comunicazione fra processi (signal, pipe, socket, shared memory, ...). Mutua esclusione e sincronizzazione. L’algoritmo di Dekker, l’algoritmo di Peterson. Supporto hardware alla mutua esclusione. Il problema del Produttore e del Consumatore. I semafori. I monitor. Message Passing. Il problema dei Lettori e dei Consumatori.

    4. Deadlock e Starvation. Approcci alla gestione dei deadlock: Detection, Prevention e Avoidance. I grafi di allocazione delle risorse. Il problema dei Dining Philosophers.

    5. La gestione della memoria. Memoria fisica e memoria virtuale. Gestione paginata e sue problematiche di implementazione. Gestione segmentata.

    6. Scheduling uniprocessore. Scheduling a lungo, medio e breve termine. Algoritmi di scheduling: FCFC, Round Robin, SPN, SRT, HRRN, Feedback.

    7. La gestione dell’input-output. Interazione CPU-dispositivi-memoria. Architettura DMA. Schedulazione dei dischi. 

    8. Il file system. Struttura e attributi di file e directory. Metodi di implementazione e ottimizzazione dei file system. 

    9. Controllo degli Accessi.  Modelli, politiche e meccanismi per il controllo degli accessi. Controllo degli Accessi in Linux (ACL in Unix)

    TESTI/BIBLIOGRAFIA

    • Slides utilizzate a lezione verranno messe a disposizione degli studenti
    • Operating Systems: Internals and Design Principles. 8th edition di W. Stallings, Pearson

    DOCENTI E COMMISSIONI

    LEZIONI

    Orari delle lezioni

    L'orario di tutti gli insegnamenti è consultabile su EasyAcademy.

    ESAMI

    MODALITA' D'ESAME

    Esame scritto basato su domande a risposta aperta. 

    Agli studenti con disturbi specifici dell’apprendimento (DSA) sarà consentito l’utilizzo di specifiche modalità e supporti che saranno determinati sulla base delle specifiche esigenze dello studente in accordo con il delegato dei corsi di Ingegneria nel Comitato per l’Inclusione degli Studenti con Disabilità.

    MODALITA' DI ACCERTAMENTO

    La prova scritta accerterà

    • la comprensione del funzionamento e dell’interdipendenza delle principali funzionalità offerte da un sistema operativo moderno,

    • la capacità di valutare criticamente le caratteristiche delle varie soluzioni ai problemi classici dei sistemi operativi (ad es. gestione della memoria, schedulazione, sincronizzazione dei processi),

    • la capacità di risolvere problemi legati alla progettazione e utilizzo dei sistemi operativi.

    La prova pratica accerterà

    • La conoscenza dell’interfaccia a linea di comando del sistema operativo Linux

    • La capacità di scrivere programmi di automazione (script) delle funzionalità dei sistemi operativi.