OPERATING AND REAL-TIME SYSTEMS
cod. 1002540

Academic year 2012/13
1° year of course - Second semester
Professor
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:
course unit
in - - -

Learning objectives

Objectives
Course objectives are to illustrate in a general way the architectures and features of modern operating systems, to introduce the main concepts of concurrent systems, and to improve the students' skills in programming multiprocess and multithread applications in C/C++/Linux/POSIX environment. The course covers also principles, methodologies, and relevant tools for the design of computer systems operating under real-time constraints and for development of control software in embedded systems and industrial applications. At the end of the course, students will have gained knowledge of tools and techniques suitable for system programming as well as for programming concurrent and real-time applications in several contexts.

Prerequisites

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

Course unit content

Program

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 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.

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. (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 lab activity covering multiprocess, concurrent, multithread, and real-time programming.
During the semester, midterms and practical 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. 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;
3) Written test on real-time scheduling theory (second midterm);
4) Written or practical test on concurrent programming;
5) Final oral exam.

Other information

Course web site available at: http://lea.unipr.it for registered students.

Course will include at least 72 hours of lectures and lab sessions guided by the instructor.