ID:
5868
Durata (ore):
48
CFU:
6
Url:
INGEGNERIA ELETTRONICA E INFORMATICA/INFORMATICA Anno: 3
Anno:
2023
Dati Generali
Periodo di attività
Primo Semestre (25/09/2023 - 15/12/2023)
Syllabus
Obiettivi Formativi
Acquisizione delle conoscenze di base sulla struttura di un moderno Sistema Operativo di tipo "general purpose” con riferimento ai meccanismi di basso livello che rendono possibile il funzionamento multiprogrammato degli attuali sistemi e dei principali algoritmi per il loro corretto funzionamento.
Sviluppo della capacità di implementazione di una applicazione multithreading con particolare riferimento alla corretta sincronizzazione dei thread e alla gestione delle sezioni critiche.
Sviluppo delle competenze necessarie a comprendere il buon funzionamento di un sistema in relazione alla configurazione e/o struttura del software di base in esso disponibile.
Sviluppo di un adeguato grado di autonomia di giudizio nella analisi di un problema la cui soluzione preveda lo sviluppo di una applicazione la cui efficienza possa essere influenzata o meno da diversi gradi di parallelismo interno.
Sviluppo della capacità di comunicare efficacemente e con linguaggio tecnico adeguato per un'interazione proficua nell'ambito di un gruppo di lavoro.
Sviluppo della capacità di aggiornamento nel settore del software di base riuscendo a determinare il ruolo e l'impatto delle diverse componenti sul funzionamento di un sistema informatico.
Sviluppo della capacità di implementazione di una applicazione multithreading con particolare riferimento alla corretta sincronizzazione dei thread e alla gestione delle sezioni critiche.
Sviluppo delle competenze necessarie a comprendere il buon funzionamento di un sistema in relazione alla configurazione e/o struttura del software di base in esso disponibile.
Sviluppo di un adeguato grado di autonomia di giudizio nella analisi di un problema la cui soluzione preveda lo sviluppo di una applicazione la cui efficienza possa essere influenzata o meno da diversi gradi di parallelismo interno.
Sviluppo della capacità di comunicare efficacemente e con linguaggio tecnico adeguato per un'interazione proficua nell'ambito di un gruppo di lavoro.
Sviluppo della capacità di aggiornamento nel settore del software di base riuscendo a determinare il ruolo e l'impatto delle diverse componenti sul funzionamento di un sistema informatico.
Prerequisiti
Conoscenze di programmazione C, e di algoritmi e strutture dati avanzate. Nozioni di architetture dei calcolatori.
Metodi didattici
Il corso, al fine di raggiungere gli obiettivi formativi previsti, si svolge prevalentemente attraverso lezioni frontali. Sono inoltre previste esercitazioni in laboratorio su applicazioni multithreading ed esercitazioni guidate svolte dagli studenti, con lo scopo di stimolare l’approccio ai problemi con autonomia e senso critico.
Tutte le attività sono svolte con supporto di slide delle lezioni rese disponibile dal docente tramite il sito di e-learnig dell’Università.
Tutte le attività sono svolte con supporto di slide delle lezioni rese disponibile dal docente tramite il sito di e-learnig dell’Università.
Verifica Apprendimento
La prova finale consiste in una verifica orale durante cui lo studente deve descrivere tre argomenti tra quelli presentati durante lo svolgimento delle lezioni.
La verifica orale ha il duplice scopo di verificare il livello di conoscenza e di comprensione dei contenuti del corso e di valutare l'autonomia di giudizio, la capacità di apprendimento, l'abilità comunicativa e proprietà di linguaggio scientifico acquisite dallo studente.
Il voto finale è espresso in trentesimi.
La verifica orale ha il duplice scopo di verificare il livello di conoscenza e di comprensione dei contenuti del corso e di valutare l'autonomia di giudizio, la capacità di apprendimento, l'abilità comunicativa e proprietà di linguaggio scientifico acquisite dallo studente.
Il voto finale è espresso in trentesimi.
Testi
A.Silberschatz, P.B.Galvin, G.Gagne, "Sistemi operativi. Concetti ed esempi", Pearson/Addison Wesley
Mark Mitchell, Jeffrey Oldham, Alex Samul, "Advanced Linux Programming" (https://richard.esplins.org/static/downloads/linux_book.pdf)
Mark Mitchell, Jeffrey Oldham, Alex Samul, "Advanced Linux Programming" (https://richard.esplins.org/static/downloads/linux_book.pdf)
Contenuti
GENERALITA’ SUI SISTEMI OPERATIVI: sistemi monolitici, sistemi a livelli, macchine virtuali, sistemi distribuiti client-server. Definizione di Processo, Memoria Virtuale, File System, System Call, Kernel, Shell.
EVOLUZIONE DEI SISTEMI OPERATIVI: dalla mono alla multiprogrammazione; il concetto di multitasking.
MODELLO DI INTERAZIONE TRA CPU E DISPOSITIVI: Sistema di interruzione. Interruzioni e multiprogrammazione. Processo di interruzione. Modi di funzionamento della CPU.
GESTIONE DEI PROCESSI: modello di un processo, vita di un processo, meccanismi di controllo. La Schedulazione a breve termine (di CPU), la Schedulazione a medio termine (swapping), La Schedulazione a lungo termine (dei processi): algoritmi di schedulazione (senza prelazione, con prelazione, Round Robin, con priorità, code multiple, SJF).
SINCRONIZZAZIONE TRA PROCESSI: corse critiche, mutua esclusione, sospensione e risveglio, stallo, meccanismi di condivisione della memoria e scambio messaggi. Meccanismi di sincronizzazione tra processi: semafori. La Comunicazione Inter-Processo (IPC) e i suoi problemi: esempio del produttore-consumatore. La Gestione dei Processi e IPC in ambiente distribuito (accenni). I Threads: definizione, sistemi operativi multi-threaded, rapporto tra threads e processi.
GESTIONE DELLA MEMORIA: partizionamento fisso, rilocazione e protezione; gestore con swapping: multiprogrammazione a partizioni variabili, squeeze (compattamento).
MEMORIA VIRTUALE: definizione di spazio di indirizzamento virtuale, MMU, overlay e paginazione, Virtual Page Table a uno o più livelli. Segmentazione.
GESTIONE DEI FILE: il file system (struttura gerarchica in file e directory, tipi di file system). Implementazione del file system: struttura del file system, implmentazione delle directory,metodi di allocazione, gestione dello spazio libero.
LABORATORIO: La gestione dei processi. La libreria pthread. Gestione dei thread, mutex, semafori. Programmazione concorrente.
EVOLUZIONE DEI SISTEMI OPERATIVI: dalla mono alla multiprogrammazione; il concetto di multitasking.
MODELLO DI INTERAZIONE TRA CPU E DISPOSITIVI: Sistema di interruzione. Interruzioni e multiprogrammazione. Processo di interruzione. Modi di funzionamento della CPU.
GESTIONE DEI PROCESSI: modello di un processo, vita di un processo, meccanismi di controllo. La Schedulazione a breve termine (di CPU), la Schedulazione a medio termine (swapping), La Schedulazione a lungo termine (dei processi): algoritmi di schedulazione (senza prelazione, con prelazione, Round Robin, con priorità, code multiple, SJF).
SINCRONIZZAZIONE TRA PROCESSI: corse critiche, mutua esclusione, sospensione e risveglio, stallo, meccanismi di condivisione della memoria e scambio messaggi. Meccanismi di sincronizzazione tra processi: semafori. La Comunicazione Inter-Processo (IPC) e i suoi problemi: esempio del produttore-consumatore. La Gestione dei Processi e IPC in ambiente distribuito (accenni). I Threads: definizione, sistemi operativi multi-threaded, rapporto tra threads e processi.
GESTIONE DELLA MEMORIA: partizionamento fisso, rilocazione e protezione; gestore con swapping: multiprogrammazione a partizioni variabili, squeeze (compattamento).
MEMORIA VIRTUALE: definizione di spazio di indirizzamento virtuale, MMU, overlay e paginazione, Virtual Page Table a uno o più livelli. Segmentazione.
GESTIONE DEI FILE: il file system (struttura gerarchica in file e directory, tipi di file system). Implementazione del file system: struttura del file system, implmentazione delle directory,metodi di allocazione, gestione dello spazio libero.
LABORATORIO: La gestione dei processi. La libreria pthread. Gestione dei thread, mutex, semafori. Programmazione concorrente.
Lingua Insegnamento
ITALIANO
Corsi
Corsi
3 anni
No Results Found