Italiano
Italian
Non si possono comprendere i contenuti del corso senza aver prima appreso i concetti fondamentali della programmazione ed aver acquisito le conoscenze di base in tema di "Sistemi Operativi"
It is not possible to understand the contents of the course without first learning the fundamentals of computer programming and acquiring the basic knowledge about "Operating Systems".
Il corso si svolge mediante lezioni ed esercitazioni in aula con l'ausilio di materiale videoregistrato dal docente disponibile sul sito di e-learning.
The course is held through lectures and classroom exercises with the help of video material available on the e-learning site
Il corso arricchisce la conoscenza dei Sistemi Operativi aggiungendo conoscenze relative ad alcune tematiche avanzate, con
particolare riferimento alle problematiche relative alla schedulazione dei processi in contesti "real-time" ed alla elaborazione
concorrente in contesti distribuiti (senza memoria condivisa). Da ultimo, il corso entra nel dettaglio della programmazione a livello
"kernel" del Sistema Operativo Linux, essendo giustificata la scelta dal fatto che questo è il più diffuso Sistema Operativo fra quanti
disponibili in modalità "open source" sotto licenza GPL.
Le conoscenze impartite durante il corso sono particolarmente orientate ad aspetti ingegneristici dell'informatica vicina all'hardware,
cioè appunto il Sistema Operativo. Al termine del corso lo studente avrà acquisito le competenze di base per programmare
applicazioni in tempo reale e distribuite; inoltre avrà imparato a sviluppare un semplice driver del kernel di Linux.
La struttura del corso ed il tipo di formazione impartita si prestano allo sviluppo di progetti che possono essere svolti in gruppi. La
collaborazione alla realizzazione di un progetto contribuirà a migliorare la capacità comunicativa che deriva dal lavoro in team e
l’autonomia di giudizio.
The course enriches knowledge of Operating Systems adding knowledge related to some advanced topics, with particular reference to
issues relating to the scheduling of processes in "real-time" contexts and the concurrent processing in distributed environments (no
shared memory). Finally, the course goes into detail of programming at the "kernel" level of the operating system Linux, the choice
being justified by the fact that this is the most popular "open source" operating system among those available under the GPL license.
The knowledge given during the course is particularly geared to computer engineering aspects close to the hardware, that is precisely
the Operating System. After completing the course the student will acquire the basic skills to develop real-time and distributed
applications; he will also have learned to develop a simple Linux kernel driver.
The course structure and the type of training provided lend themselves to the development of projects that can be done in groups.
Collaboration in the implementation of a project will help to improve communication skills that come from teamwork and independent
judgment.
SISTEMI DISTRIBUITI. Programmazione Concomitante: principi, indeterminismo. Metodologia di approccio all'analisi dei programmi concomitanti, sezione critica per 2 processi: algoritmo di Decker, verifica della correttezza, logica temporale lineare, “model checker”, algoritmo del fornaio, semafori. PTHREADS: descrizione e gestione dei threads, schedulazione dei threads sotto Linux, gestione del “tempo” sotto Linux, gestione threads periodici, mutua esclusione. Sezione critica in sistemi distribuiti: assenza di memoria condivisa e coordinamento mediante messaggi, messaggistica periodica, saturazione del buffer di memoria, buffers ciclici asincroni, coordinatore centrale, algoritmi di Ricart-Agrawala “basato su messaggio” e “basato su token”. Agent-Oriented Programming (AOP) e Sistemi Multi-Agente. IEEE standard FIPA. Java Agent DEvelopment framework (JADE): agenti e behaviours, scheduling dei behaviours, OneShotBehaviour, CyclicBehaviour, WakerBehaviour, TickerBehaviour. AOP e “Internet of Things”. Protocollo di trasmissione MQTT.
SCHEDULAZIONE DEI PROCESSI IN TEMPO REALE. Evoluzione dei sistemi “embedded”. “Disappearing Computing” e “Smart Objects”. “Real-time systems”, controllo ed implementazione. “Real-Time Operating Systems – RTOS”. Responsabilità. Real-Time ≠ Fast. Sorgenti di indeterminismo. La legge di Murphy e sua giustificazione. Modeling Real-Time Activities: tasks, processor states, schedule. Real-time tasks and jobs. Periodic tasks, aperiodic tasks, sporadic task. Predictability vs. efficiency. Timing constraints. Precedence constraints. Resorce constraints. Scheduling anomalies. Real Time scheduling for Aperiodic Tasks: Earliest Due Date, Earliest Deadline First (EDF), Bratley’s Algorithm, Spring, Latest Deadline First, EDF*. Real Time scheduling for Periodic Tasks: proportional share algorithm: timeline (cyclic) scheduling, Priority Scheduling, Rate Monotonic (RM), utilization upper bound, Hyperbolic Bound, Deadline Monotonic, Response Time Analysis, EDF with D ≤ T and Processor Demand criterion. Hybrid Task Sets Scheduling: Aperiodic Servers, Polling Server (PS), Deferrable Server (DS), Sporadic Server (SS), Total Bandwidth Server (TBS), TBS*, Tunable Bandwidth Server, Constant Bandwidth Server (CBS). Handling Shared Resources: problems caused by mutual exclusion and critical sections, how to deal with priority inversion, Non Preemptive Protocol (NPP), Highest Locker Priority (HLP), Priority Inheritance Protocol (PIP), Priority Ceiling Protocol (PCP), Stack Resource Policy (SRP). Panoramica sui vari RTOSs. Standards for RTOS: RT-POSIX, OSEK/VDX, AUTOSAR (AUTomotive Open System Architecture), ARINC 653 (Avionics Application Standard Software Interface), μ-ITRON and TOPPERS. Commercial RTOS: VxWorks, OSE, QNX . Linux related RTOS: RTLINUX, RTAI, Xenomai. Open Source RTOS: ERIKA ENTERPRISE.
LINUX KERNEL. Compilazione e configurazione del kernel Linux. Generalita' sui moduli del kernel Linux. Compilazione di un nuovo componente del kernel Linux. Scrittura di modulo del kernel. Compilazione del modulo. Caricamento e rimozione del modulo. Parametri del modulo. Interfacciamento dei moduli. Importazione ed esportazione dei simboli. Debugging del kernel e /proc filesystem. Stati di un processo e gestione del tempo. Tasklets e kernel preemption. Scheduling dei processi in Linux. I/O ed implementazione di un semplice driver.
DISTRIBUTED SYSTEMS. Concomitant Programming: principles, indeterminism. Methodology of approach to the analysis of concomitant programs, critical section for 2 processes: Decker algorithm, verification of correctness, linear time logic, "model checker", baker's algorithm, traffic lights. PTHREADS: description and management of threads, scheduling of threads under Linux, management of "time" under Linux, management of periodic threads, mutual exclusion. Critical section in distributed systems: no shared memory and message coordination, periodic messaging, memory buffer saturation, asynchronous cyclic buffers, central coordinator, Ricart-Agrawala "message based" and "token based" algorithms. Agent-Oriented Programming (AOP) and Multi-Agent Systems. IEEE FIPA standard. Java Agent DEvelopment framework (JADE): agents and behaviours, behaviours scheduling, OneShotBehaviour, CyclicBehaviour, WakerBehaviour, TickerBehaviour. AOP and Internet of Things. Transmission protocol MQTT.
SCHEDULAZIONE DEI PROCESSI IN TEMPO REALE. Evoluzione dei sistemi “embedded”. “Disappearing Computing” e “Smart Objects”. “Real-time systems”, controllo ed implementazione. “Real-Time Operating Systems – RTOS”. Responsabilità. Real-Time ≠ Fast. Sorgenti di indeterminismo. La legge di Murphy e sua giustificazione. Modeling Real-Time Activities: tasks, processor states, schedule. Real-time tasks and jobs. Periodic tasks, aperiodic tasks, sporadic task. Predictability vs. efficiency. Timing constraints. Precedence constraints. Resorce constraints. Scheduling anomalies. Real Time scheduling for Aperiodic Tasks: Earliest Due Date, Earliest Deadline First (EDF), Bratley’s Algorithm, Spring, Latest Deadline First, EDF*. Real Time scheduling for Periodic Tasks: proportional share algorithm: timeline (cyclic) scheduling, Priority Scheduling, Rate Monotonic (RM), utilization upper bound, Hyperbolic Bound, Deadline Monotonic, Response Time Analysis, EDF with D ≤ T and Processor Demand criterion. Hybrid Task Sets Scheduling: Aperiodic Servers, Polling Server (PS), Deferrable Server (DS), Sporadic Server (SS), Total Bandwidth Server (TBS), TBS*, Tunable Bandwidth Server, Constant Bandwidth Server (CBS). Handling Shared Resources: problems caused by mutual exclusion and critical sections, how to deal with priority inversion, Non Preemptive Protocol (NPP), Highest Locker Priority (HLP), Priority Inheritance Protocol (PIP), Priority Ceiling Protocol (PCP), Stack Resource Policy (SRP). Panoramica sui vari RTOSs. Standards for RTOS: RT-POSIX, OSEK/VDX, AUTOSAR (AUTomotive Open System Architecture), ARINC 653 (Avionics Application Standard Software Interface), μ-ITRON and TOPPERS. Commercial RTOS: VxWorks, OSE, QNX . Linux related RTOS: RTLINUX, RTAI, Xenomai. Open Source RTOS: ERIKA ENTERPRISE.
LINUX KERNEL. Compiling and configuring the Linux kernel. General information about the Linux kernel modules. Compilation of a new component of the Linux kernel. Writing kernel module. Fill out the form. Loading and removal of the module. Module parameters. Interfacing of modules. Importing and exporting symbols. Kernel debugging and /proc filesystem. States of a process and time management. Tasklets and kernel preemptions. Scheduling of processes in Linux. I/O and implementation of a simple driver.
L'apprendimento viene valutato sulla base di una prova scritta e della realizzazione di un progetto a scelta del candidato.
I due momenti della valutazione (prova scritta e progetto) vengono valutati indipendentemente, tipicamente con 24 punti a disposizione per la prima e 8 punti per il progetto.
valutazione in trentesimi
tipicamente 24 punti per la prova scritta e 8 punti per il progetto
Learning is assessed on the basis of a written test and the realisation of a project at the candidate's choice.
The two phases of the evaluation (written test and project) are evaluated independently, typically with 24 points available for the first and 8 points for the project.
evaluation in thirtieths
typically 24 points for the written test and 8 points for the project.
Silberschatz, Galvin, Gagne, “Sistemi Operativi” VI° Ed., Addison-Wesley, 2002.
Giorgio C. Buttazzo, Sistemi In Tempo Reale, Pitagora Editrice Bologna 2008.
Materiale didattico disponibile sul sito https://learn.univpm.it
Silberschatz, Galvin, Gagne, “Sistemi Operativi” VI° Ed., Addison-Wesley, 2002.
Giorgio C. Buttazzo, Sistemi In Tempo Reale, Pitagora Editrice Bologna 2008.
e-learning https://learn.univpm.it
SI
SI
Università Politecnica delle Marche
P.zza Roma 22, 60121 Ancona
Tel (+39) 071.220.1, Fax (+39) 071.220.2324
P.I. 00382520427