CODICE 104746 ANNO ACCADEMICO 2023/2024 CFU 6 cfu anno 2 INGEGNERIA INFORMATICA 8719 (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 Introduzione alla struttura dei sistemi operativi. Concetti base, struttura monolitica e a microkernel. La gestione dei processi e dei thread. Creazione e gestione processi. I thread e loro implementazione. 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. Deadlock e Starvation. Approcci alla gestione dei deadlock: Detection, Prevention e Avoidance. I grafi di allocazione delle risorse. Il problema dei Dining Philosophers. La gestione della memoria. Memoria fisica e memoria virtuale. Gestione paginata e sue problematiche di implementazione. Gestione segmentata. Scheduling uniprocessore. Scheduling a lungo, medio e breve termine. Algoritmi di scheduling: FCFC, Round Robin, SPN, SRT, HRRN, Feedback. La gestione dell’input-output. Interazione CPU-dispositivi-memoria. Architettura DMA. Schedulazione dei dischi. Il file system. Struttura e attributi di file e directory. Metodi di implementazione e ottimizzazione dei file system. 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 ALESSANDRO ARMANDO Commissione d'esame ALESSANDRO ARMANDO (Presidente) PIERPAOLO BAGLIETTO ALESSIO MERLO MASSIMO MARESCA (Presidente Supplente) LEZIONI INIZIO LEZIONI https://corsi.unige.it/8719/p/studenti-orario Orari delle lezioni L'orario di questo insegnamento è consultabile all'indirizzo: Portale 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. Calendario appelli Data appello Orario Luogo Tipologia Note 10/01/2024 11:00 GENOVA Scritto E3 07/02/2024 11:00 GENOVA Scritto 11/06/2024 15:00 GENOVA Scritto E1 10/07/2024 11:00 GENOVA Scritto G1 09/09/2024 16:00 GENOVA Scritto Aula E1