28020 - Operating Systems T (A-K)

Academic Year 2020/2021

Learning outcomes

Knowledge of the principles of modern operating systems. System programming and concurrent programming capabilities.

Course contents

Introduction

  • Role, functionality and organization of the operating system.
  • Operating systems historical evolution.
  • O.S architecture: monolitic kernel vs. microkernel approach; virtual machines, modular OS.
  • The architecture of Unix/Linux.

Processes
  • The role of the OS in process management.
  • Processes and threads: representation, management and interaction.
  • CPU scheduling.
  • Unix process management.
  • Thread management in Linux.

Process syncronization

  • Concurrent programs; precedence graphs.
  • Processes and resources. Deadlock.
  • The shared memory model:
    • The mutual exclusion problem.
    • The semaphore; semaphore implementation in mono-processor and multi-processor architectures.
    • The monitor and its implementation.
    • Thread synchronization in Java.

The message passing model
  • Message passing classification.
  • Asynchronous send; synchronous send; RPC.
  • Signals.
  • Interaction among Unix processes: pipe, fifo and signals.

Memory management

  • Classification of techniques for memory allocation. Paging and segmentation.
  • Virtual memory.
  • Memory management in Unix/Linux.

Shell Scripting
  • The Linux bash shell
  • main bash commands
  • command redirection and piping
  • command parsing
  • Control structures
  • Development of shell scripts
I/O management
  • The architecture of the I/ O subsystem. Device drivers.
  • I/O management through program control, interrupts and DMA.

Readings/Bibliography

P. Ancilotti, M. Boari, A. Ciampolini, G. Lipari: Sistemi Operativi, seconda edizione, McGraw-Hill, 2008.

Teaching methods

Lectures will take into account both theoretical and implementative issues about modern operating systems.
Practical issues will be deepened via individual concurrent programming practice in laboratory (taught in module 2).

Assessment methods

The final evaluation will take into account the results of:

  • A written theory test on the concepts taught along the course.
  • A practical examination (in Lab) consisting in the development of concurrent programs in GNU/Linux and Java environments
  • An optional oral examination.

In the period June 2020-february 2021 exams will take place remotely. Students are kindly requested to strictly follow the rules for conducting remote exams, available at:

https://iol.unibo.it/mod/resource/view.php?id=441077

Teaching tools

Lessons: use of a videoprojector for showing slides.

Lab hours:
each student can use a personal computer for practice (2,5 hours/week, during lab hours).

Office hours

See the website of Anna Ciampolini

SDGs

Quality education Industry, innovation and infrastructure

This teaching activity contributes to the achievement of the Sustainable Development Goals of the UN 2030 Agenda.