OPERATING AND REAL-TIME SYSTEMS
cod. 1002540

Academic year 2015/16
1° year of course - Second semester
Professor
Stefano CASELLI
Academic discipline
Sistemi di elaborazione delle informazioni (ING-INF/05)
Field
Ingegneria informatica
Type of training activity
Characterising
63 hours
of face-to-face activities
9 credits
hub: PARMA
course unit
in - - -

Learning objectives

Course learning objectives are to provide students with knowledge and understanding of architectures and functions of modern operating systems and of concurrent and real-time systems, including the key concepts of:
- operating system components, processes, threads, address spaces;
- process, thread, and system resource management;
- synchronization mechanisms and concurrent programming techniques;
- real-time systems and related scheduling algorithms.

At the end of the course, students will be able to directly apply the learned techniques in the following contexts:
- programming of system, multiprocess, and client-server applications in C/C++ in UNIX and Linux operating systems;
- programming of multithread applications with the POSIX API in Linux;
- design and programming of multithread real-time applications with the POSIX API in Linux.

Prerequisites

Basic knowledge of operating systems concepts and working knowledge of C/C++ programming language is assumed.

Course unit content

Real-Time and Operating Systems: Course Syllabus

Operating systems architectures
Operating system components
Concurrent programming in the global memory model
Concurrent programming in the message passing model
Distributed and client-server systems
Real-time systems
Real-time scheduling
System and multiprocess programming in C/C++ in UNIX and Linux
Multithread and real-time programming with the POSIX API in Linux

Full programme

__Real-Time and Operating Systems: Detailed Course Syllabus__

Operating systems architectures
Evolution, role and functions of the operating system. Multiprogramming. Processes, threads, and address spaces. Protection. Thread and process switch. Virtual machine systems.

Operating system components
Process and thread management. CPU scheduling. Memory management. Virtual memory. I/O management. File system. Security. Deadlock prevention and management.

Concurrent programming in the global memory model
Mutual exclusion and synchronization primitives. Resource management with semaphores. Conditional critical regions. Monitors. Concurrent programming in Java.

Concurrent programming in the message passing model
Send and receive primitives. Remote procedure call. Guarded commands.

Distributed systems
Client-server model. RPC in distributed environments. Distributed mutual exclusion, synchronization, and coordination.

Real-time systems
Embedded systems. Computer systems operating under real-time constraints. Real-time systems classification and relevant parameters. Reference model for real-time computer systems.

Real-time scheduling
Aperiodic task scheduling. Cyclic executive scheduling of periodic tasks. Priority-driven scheduling of periodic tasks. Rate-Monotonic and Earliest Deadline First scheduling algorithms. Priority-driven scheduling of mixed aperiodic, sporadic, and periodic tasks. Shared resources access control policies. Priority inversion management.

Multithreaded and real-time programming
Real-time computing support in modern, general-purpose operating systems. Multithreading support in Linux. The POSIX API standard. Threads and processes. Thread synchronization. Signals. IPC mechanisms. Scheduling. Time manangement. Memory management. I/O management. Patterns for real-time systems programming. Dedicated real-time operating systems. Middleware for distributed real-time computing systems.

Laboratory activities
Fundamentals of system programming in C/C++ in UNIX and Linux. Client-server multiprocess applications using various IPC mechanisms. Multithread and real-time programming with the POSIX API in Linux.

Bibliography

Lecture notes are made available on the course web site to registered students.
The following textbooks cover the topics addressed in the course:

A. Silberschatz, P.B. Galvin, G. Gagne, “Operating Systems Concepts”, 7th edition or later, Addison-Wesley, 2006 (or later). (Java version also ok).
P. Ancilotti, M. Boari, “Programmazione concorrente e distribuita”, McGraw-Hill, 2007 (in Italian). [Alternative books in English on concurrent programming:
G.R. Andrews, “Foundations of Multithreaded, Parallel, and Distributed Programming,” Addison-Wesley, 2000.
S.J. Hartley, "Concurrent Programming - The Java Programming Language", Oxford University Press, 1998.]
J.W.S. Liu, "Real-Time Systems", Prentice-Hall, 2000.
D. Butenhof, "Programming with POSIX Threads", Addison-Wesley, 1997.

Teaching methods

Lectures in classroom with slide support, plus significant and mandatory supervised laboratory activity covering multiprocess, concurrent, multithread, and real-time programming.
The course includes about 58 hours of classroom lectures and 22 hours of supervised laboratory activity. Attendance of laboratory classes is mandatory.
During the semester, midterms and practical or theory home assignments are administered to keep students on pace with the course and exempt them from parts of the final exam.

Assessment methods and criteria

Exam consists of a series of practice, written, and oral tests, including tests administered as midterms during the semester. Exam is passed when all individual tests have been passed:

1) Practice test on multiprocess programming (preferably to be assumed as midterm test);
2) Practice assignment on multithread and real-time programming using Pthreads (assigned during mandatory supervised laboratory classes);
3) Written test on real-time scheduling theory (second midterm);
4) Written or practical test on concurrent programming;
5) Final oral exam.
Oral exam must be the final test.

Practice test n. 1) assesses the degree of learning of practical skills concerning system programming and design of multiprocess and client-server applications.
Practice test n. 2) assesses the degree of learning of practical skills concerning the design of multithread and real-time applications.
Written test n. 3) assesses the degree of learning of knowledge concerning real-time systems and their scheduling algorithms.
Written or practice test n. 4) assesses the degree of learning of knowledge concerning concurrent programming techniques and their application.
Oral test n. 5) assesses the degree of learning of knowledge concerning operating system components and fundamental concepts of concurrent programming.

Other information

Course web site available at: http://didattica.unipr.it for registered students.
Teaching material is published on the web site as course progresses.

2030 agenda goals for sustainable development

- - -

Contacts

Toll-free number

800 904 084

Student registry office

E. segreteria.ingarc@unipr.it

Quality assurance office

Education manager:
Elena Roncai
T. +39 0521 903663
Office E. dia.didattica@unipr.it
Manager E. elena.roncai@unipr.it

 

Course President

Stefano Cagnoni
E. stefano.cagnoni@unipr.it

Faculty advisor

Agostino Poggi
E. agostino.poggi@unipr.it

Career guidance delegate

Francesco Zanichelli
E. francesco.zanichelli@unipr.it

Tutor professor

Agostino Poggi
E. agostino.poggi@unipr.it

Erasmus delegates

Luca Consolini
E. luca.consolini@unipr.it

Quality assurance manager

Francesco Zanichelli
E. francesco.zanichelli@unipr.it

Tutor students

Andrea Tagliavini
E. andrea.tagliavini@unipr.it