Offerta Didattica

 

INGEGNERIA ELETTRONICA E INFORMATICA

SISTEMI OPERATIVI

Classe di corso: L-8 - Ingegneria dell'informazione
AA: 2019/2020
Sedi: MESSINA
SSDTAFtipologiafrequenzamoduli
ING-INF/05Affine/IntegrativaLiberaLiberaNo
CFUCFU LEZCFU LABCFU ESEOREORE LEZORE LABORE ESE
64024824024
Legenda
CFU: 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)

Elenco delle unità didattiche costituenti l'insegnamento

Docente: MARCO LUCIO SCARPA

Orario di Ricevimento - MARCO LUCIO SCARPA

GiornoOra inizioOra fineLuogo
Martedì 09:30 11:30Dipartimento di Ingegneria, Blocco B, piano 7.
Giovedì 09:30 11:30Dipartimento di Ingengeria, Blocco B, piano 7.
Note:
  • Segui Unime su:
  • istagram32x32.jpg
  • facebook
  • youtube
  • twitter
  • UnimeMobile
  • tutti