Offerta Didattica
INGEGNERIA ELETTRONICA E INFORMATICA
SISTEMI OPERATIVI
Classe di corso: L-8 - Ingegneria dell'informazione
AA: 2019/2020
Sedi: MESSINA
SSD | TAF | tipologia | frequenza | moduli |
---|---|---|---|---|
ING-INF/05 | Affine/Integrativa | Libera | Libera | No |
CFU | CFU LEZ | CFU LAB | CFU ESE | ORE | ORE LEZ | ORE LAB | ORE ESE |
---|---|---|---|---|---|---|---|
6 | 4 | 0 | 2 | 48 | 24 | 0 | 24 |
LegendaCFU: n. crediti dell’insegnamento CFU LEZ: n. cfu di lezione in aula CFU LAB: n. cfu di laboratorio CFU ESE: n. cfu di esercitazione FREQUENZA:Libera/Obbligatoria MODULI:SI - L'insegnamento prevede la suddivisione in moduli, NO - non sono previsti moduli ORE: n. ore programmate ORE LEZ: n. ore programmate di lezione in aula ORE LAB: n. ore programmate di laboratorio ORE ESE: n. ore programmate di esercitazione SSD:sigla del settore scientifico disciplinare dell’insegnamento TAF:sigla della tipologia di attività formativa TIPOLOGIA:LEZ - lezioni frontali, ESE - esercitazioni, LAB - laboratorio
Obiettivi Formativi
Il corso mira a fornire le conoscenze di base sulla struttura di un moderno Sistema Operativo di tipo general purpose mettendo in evidenza i meccanismo di basso livello che rendono possibile la il funzionamento multiprogrammato degli attuali sistemi e soffermandosi sulle strutture dati interne ad un kernel e sui principali algoritmi implementati in un sistema reale per la gestione del sistema. Si mira inoltre a sviluppare la capacità di implementazione di una applicazione multithreading con particolare riferimento alla corretta sincronizzazione dei thread e la gestione delle sezioni critiche.Learning Goals
The aim of the course is to provide the basic knowledge on the structure of a modern general purpose Operating System; law level mechanisms used to make possible multi-programming environment are stressed, with particular attention to kernel internal data structures and system management algorithms implemented in real systems. Moreover, multi-threading programming technique is taught together with thread synchronization and race condition management.Metodi didattici
- Lezioni frontali facendo uso di materiale didattico in formato elettronico reso disponibile dal docente tramite il sito di e-learnig dellUniversità. - Laboratorio di programmazione concorrente con esercitazioni al calcolatore sullo sviluppo di applicazioni multithreading.Teaching Methods
- Lectures with use of educational material in electronic format made available by the teacher through the University's e-learning web site. - Concurrent programming laboratory with exercises on development of multithreading applications.Prerequisiti
Conoscenze di programmazione C, e di algoritmi e strutture dati avanzate. Nozioni di architetture dei calcolatori.Prerequisites
Basic knowledge on C programming, and advanced data structures and their management algorithm. Basics on computer architectures.Verifiche dell'apprendimento
La prova finale consiste nella implementazione di un programma concorrente di bassa complessità e di una verifica orale durante cui lo studente deve descrivere due argomenti tra quelli presentati durante lo svolgimento delle lezioni.Assessment
The final exam is based on an implementation of a low complexity concurrent program and a discussion during which students must describe two topics among those presented during the lectures.Programma del Corso
* Generalità 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. * Storia 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). * La Mutua Esclusione: 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. * Blocco critico (deadlock). Condizioni e soluzioni. * 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: file system (struttura gerarchica in file e directory, tipi di file system). Implementazione del file system Unix: proprietà e modi di accesso, descrittori di file, protezione e sicurezza del file system; file speciali a blocchi e caratteri. * Gestione dell'Input/Output. Meccanismo delle Interruzioni. Driver delle interruzioni, driver dei dispositivi (device driver a blocchi o caratteri). Sottosistema di I/O del kernel Unix. Laboratorio * La gestione dei processi. * La libreria pthread. Gestione dei thread, mutex, semafori. * La comunicazione tra processi. * Esercitazioni su programmazione concorrente.Course Syllabus
* Overview on Operating Systems: architectures, virtual machines, distributed systems, client-server paradigm. Process definition, virtual memory, File System, System Call, Kernel, Shell. * Evolution of Operating Sysstems: from mono-programming to multi-programming; basics on multitasking. * CPU - devices interaction models. Interrupts. Interrupts and multi-programming. CPU running modes. Process Management: process model, process control mechanisms. Short term scheduling, medium term scheduling, long term scheduling: scheduling algorithms. *Process synchronization: the critical section problem, the mutual exclusion, sleep and wake up, deadlock, shared memory, message exchange. Semaphores. Threads: multithreading models, threads and processes. Memory management: contiguous memory allocation, memory relocation and protection; swapping; variable partitions allocation, squeeze. Pagination. Segmentation. Virtual memory: demand paging, page replacement, thrashing. * Storage management: file-system interface, file system implementation: file system structure, directory implementation, allocation methods, free space management. * Process management. * The pthread library. Thread management, mutex, semaphores. * Interprocess communication. * Concurrent programming.Testi di riferimento: A.Silberschatz, P.B.Galvin, G.Gagne, "Sistemi operativi. Concetti ed esempi", Pearson/Addison Wesley
D.Giacomini, "Appunti di Linux", (sito web).
Mark Mitchell, Jeffrey Oldham, Alex Samul, "Advanced Linux Programming" (sito web)
Esami: Elenco degli appelli
Elenco delle unità didattiche costituenti l'insegnamento
Docente: MARCO LUCIO SCARPA
Orario di Ricevimento - MARCO LUCIO SCARPA
Giorno | Ora inizio | Ora fine | Luogo |
---|---|---|---|
Martedì | 09:30 | 11:30 | Dipartimento di Ingegneria, Blocco B, piano 7. |
Giovedì | 09:30 | 11:30 | Dipartimento di Ingengeria, Blocco B, piano 7. |
Note: