08574 - Operating Systems

Academic Year 2011/2012

  • Moduli: Alessandro Ricci (Modulo 1) Andrea Santi (Modulo 2)
  • Teaching Mode: Traditional lectures (Modulo 1) Traditional lectures (Modulo 2)
  • Campus: Cesena
  • Corso: First cycle degree programme (L) in Electronics, Informatics and Telecommunications Engineering (cod. 8196)

Learning outcomes

The Operating Systems course provides an introduction of the main aspects that concern modern operating systems, from their design to their functioning and use, system programming and concurrent programming basics. In particular, at the end of the course students:

  • know the main aspects that concern modern operating systems architecture, functioning and use, including process management, memory management, I/O management, File System management, virtualization
  • are able to develop system programs using the C programming language, in particular in POSIX environments, and using UNIX shell scripting language;
  • are able to develop simple concurrent programs, in particular multi-process programs in C and multi-threaded programs in Java and C
  • are able to understand and modify the implementation of the kernel a modern operating system - Linux kernel is chosen as reference case study.

Course contents

The course is composed by the following parts

Theory:

  • Introduction to modern Operating Systems
  • Process management
  • Memory management
  • I/O subsystems and network management
  • Protection and Security
  • Virtualization

Practice/Lab:

  • System programming (System Programming in assembly language (intro), System Programming in C)
  • Shell and script programming in Unix Shell (Bourne)
  • Linux Kernel Programming
  • Introduction to concurrent  programming (multi-process programming C/POSIX, multi-threded programming in Java)

Readings/Bibliography

The course textbook for the theory is:
"Operating Systems Concepts (8th ed.)" (Silbershatz, Galvin, Gagne), Wiley.
For the practice:
"Linux Kernel Development" (Robert Love), Novell.

Teaching methods

Six credits (60 hours) are devoted to theory and exercises in the lecture-hall,  and three credits (30 hours) to practice in lab.

Assessment methods

The final assessment is composed by two parts:

  • written examination, composed by exercises about the content of the course
  • practice, composed by a set of programming assignments to be done in lab and home
  • oral exam, about the theory
Assessment weightings: 30% for the written examination, 30% for the practice, 40% for the oral exam

Teaching tools

The main reference for the course content is the set of course notes (slides) discussed during the lessons and available for download from the course web site. For the practice, a laboratory with different kind of OS is available. All the material is available on the ufficial web site of the course.

Links to further information

http://www.moodle.unibo.it/course/view.php?id=284

Office hours

See the website of Alessandro Ricci

See the website of Andrea Santi