PORTALE DELLA DIDATTICA

PORTALE DELLA DIDATTICA

PORTALE DELLA DIDATTICA

Elenco notifiche



Programmazione di sistema

02GRSOV

A.A. 2024/25

Lingua dell'insegnamento

Italiano

Corsi di studio

Corso di Laurea Magistrale in Ingegneria Informatica (Computer Engineering) - Torino

Organizzazione dell'insegnamento
Didattica Ore
Lezioni 64
Esercitazioni in laboratorio 36
Tutoraggio 60
Docenti
Docente Qualifica Settore h.Lez h.Es h.Lab h.Tut Anni incarico
Azimi Sarah - Corso 2   Ricercatore a tempo det. L.240/10 art.24-B IINF-05/A 32 0 0 15 3
Cabodi Gianpiero - Corso 1 Professore Associato IINF-05/A 32 0 27 30 16
Collaboratori
Espandi

Didattica
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05 10 B - Caratterizzanti Ingegneria informatica
2023/24
Il corso si articola in due parti: la prima affronta gli aspetti interni ("internals") di un sistema operativo, illustrandone l'architettura e la progettazione dei sotto-sistemi, nella seconda si trattano le interfacce di programmazione per l'utilizzo delle risorse di sistema e per la programmazione concorrente. La parte I (internals) affronta i moduli di un sistema operativo, e si approfondiscono i concetti e le tecniche di gestione efficiente delle risorse di un sistema di elaborazione (processori, memorie, dispositivi periferici, file, ecc.). Nella parte II (interfaccia al sistema e programmazione concorrente) si presentano le tecniche di programmazione di sistema mediante l'analisi e l'utilizzo delle chiamate di sistema, per sistemi operativi quali Unix/Linux e Windows. Vengono introdotte ed utilizzate tecniche avanzate di programmazione concorrente.
This course is organiszd in two parts: the first one ("internals") introduces the architecture and the design principles of an operating system, the second part describes programming interfaces for system programming and resource management, as well as concurrent programming. Part I (internals) deals with internal operating system modules, together with the main techniques and strategies for efficient management of resources such as processors, memories, peripheral devices, files, etc. Part II (system and concurrent programming) introduces system programming techniques, within the framework of state-of-the-art operating systems, such as Unix/Linux and Windows. Advances concurrend programming techniques are introduced and used.
Parte I - Conoscenza dell'architettura dei sistemi operativi come insieme di gestori di risorse - Conoscenza dei moduli del nucleo del sistema operativo, e capacità di implementare nuovi moduli - Capacità di usare system call per la creazione, sincronizzazione e terminazione di processi e thread - Conoscenza del meccanismo della memoria virtuale - Capacità di analizzare e implementare algoritmi di gestione della memoria virtuale - Conoscenza delle tecniche di gestione dei dispositivi periferici - Capacità di analizzare ed implementare device drivers - Conoscenza dell'organizzazione dei moderni file system e capacità di gestione degli stessi Parte II - Conoscenza di interface (API) per programmazione di sistema (system calls) - Capacità di analizzare e realizzare programmi basati su system call - Capacità di analizzare e realizzare programmi con tecniche avanzate di interazione con un file system, quali accesso sequenziale, diretto e condiviso a file, e uso dei direttori - Capacità di analizzare e realizzare programmi con tecniche di gestione di eccezioni e segnali - Capacità di analizzare e realizzare programmi con tecniche di gestione avanzata della memoria, quali allocatori, mamory mapping di file, librerie dinamiche. - Capacità di analizzare e realizzare programmi basati su processi e/o thread concorrenti - Capacità di analizzare e realizzare programmi concorrenti con tecniche avanzate di sincronizzazione, scambio di messaggi, andivisione di dati
- Conoscenza dell'architettura dei sistemi di elaborazione: in particolare struttura del processore e organizzazione della memoria - Conoscenza del meccanismo delle interruzioni e dei fondamenti di un linguaggio assembler - Conoscenza dei fondamentali tipi di strutture dati ed algoritmi - Capacità di sviluppare programmi in linguaggio C - Conoscenza delle tecniche di base per la programmazione concorrente.
Parte I Richiami di Architettura del Sistema Operativo (3 ore) - moduli di gestione delle risorse di un sistema di elaborazione - gestione di processi e thread (richiami) Gestione della memoria (9 ore) - indirizzi fisici e logici, MMU, TLB - paginazione - memoria virtuale e paginazione a richiesta Gestione delle unità periferiche (3 ore) - driver e gestione dispositivi - gestione degli accessi a disco Gestione dei file (6 ore) - organizzazione di un file system, - organizzazione e operazioni su file e direttori Sistema operativo didattico OS161 (9 ore) - architettura del sistema, struttura dei sogenti, compilazione, esecuzione, debug - creazione si semplici system calls per input/output - gestione di thread e processi user - implementazione di primitive di sincronizzazione - implementazione di semplice supporto per I/O su file - gestione di semplici operazioni di IO per dispositivo a caratteri Parte II Introduzione al linguaggio Rust: (12 ore) - Fondamenti del linguaggio - Tipi dati composti - Ciclo di vita, possesso e presa in prestito di un dato Programmazione di sistema e concorrente in Linux e Win32: (20 ore) - Rappresentazione interna dei dati - Uso della memoria - File e persistenza - Gestione del tempo - Processi, thread e contenitori - Segnali, interruzioni ed eccezioni - Comunicazioni di rete
A) Lezioni/esercitazioni in aula (64 ore) B) Esercitazioni in laboratorio (36 ore) Parte I - Modificare e installare il kernel OS161 (sistema operativo didattico ispirato a Unix) - Il bootstrap di un Sistema Operativo - Creare una system call - Supporto per gestione di processi e thread - Primitive di sincronizzazione - Creazione e terminazione di un processo - Supporto per file system e struttura dei device driver Parte II - Chiamate di sistema relativi a un file system, gestione di file e direttori - Programmazione concorrente basata su thread e processi - Primitive di sincronizzazione e schemi di programmazione concorrente - Programmi con gestione di eccezioni e/o segnali - Programmi con gestione avanzata di memoria dinamica, tecniche di memory mapping per file, librerie dinamiche, inter-process communication. C) Progetto: opzionale, realizzato in gruppi di lavoro, su approfondimenti relativi alla prima o alla seconda perte del corso
I testi, scelti tra quelli elencati, saranno comunicati a lezione dal docente titolare dell'insegnamento Silberschatz, Galvin, Gagne: 'Operating System Concepts', 7th Edition, John Wiley & son, 2003, ISBN: 0-471-69466-5 W.R. Stevens "Advanced programming in the UNIX Environment", Addison-Wesley Publishing Company Johnson M. Hart, 'Windows System Programming', Addison-Wesley Publishing Company - Materiale didattico a disposizione su Web - Trasparenze proiettate in aula - Esercizi e soluzioni
Slides; Libro di testo; Esercizi risolti; Esercitazioni di laboratorio; Esercitazioni di laboratorio risolte; Video lezioni tratte da anni precedenti; Materiale multimediale ; Strumenti di auto-valutazione;
Modalità di esame: Prova scritta (in aula); Elaborato progettuale in gruppo; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Written test; Group project; Computer-based written test in class using POLITO platform;
... L'esame è costituito da una prova scritta, della durata complessiva di 150 minuti, suddiviso in due parti, ognuna di circa 75 minuti, con esercizi e/o domande sugli argomenti svolti a lezione, relativi a: • realizzazione e moduli interni di un sistema operativo • chiamate di sistema e programmazione concorrente Entrambe le parti dell'esame si propongono di accertare tutti i relativi obiettivi formativi, sia in termini di conoscenze che di capacità acquisite. L'esame viene svolto si PC con l'utilizzo della piattaforma di ateneo. Nel caso di problemi tecnici si passa all'esame scritto su carta, con schema e contenuti immutati. Durante lo svolgimento dell’esame non è possibile consultare testi o appunti. Le due parti possono essere sostenute in appelli diversi, all'interno di una finestra temporale di 4 appelli, che corrispondono a circa un anno solare. Il punteggio finale si ottiene sommando quello delle due parti, che ricevono ognuna un punteggio massimo di 15. Gli scritti possono quindi ottenere un punteggio massimo di 30. L'esame non è superato se il punteggio relativo ad una delle due parti è inferiore a 7, oppure se la somma non raggiunge 18. Allo scritto si aggiunge un progetto (lavoro di gruppo) facoltativo su una delle due parti del corso, con punteggio fino a un massimo di 6. Un voto complessivo di 31 o 32 porta a 30 con Lode. Il progetto accerta prevalentemente gli obiettivi formativi in termini di capacità acquisite. Modalità e scadenze per l'assegnazione dei progetti sono indicate dai docenti nell'ambito del corso.
Gli studenti e le studentesse con disabilità o con Disturbi Specifici di Apprendimento (DSA), oltre alla segnalazione tramite procedura informatizzata, sono invitati a comunicare anche direttamente al/la docente titolare dell'insegnamento, con un preavviso non inferiore ad una settimana dall'avvio della sessione d'esame, gli strumenti compensativi concordati con l'Unità Special Needs, al fine di permettere al/la docente la declinazione più idonea in riferimento alla specifica tipologia di esame.
Esporta Word