28020 - Operating Systems T (L-Z)

Academic Year 2021/2022

Learning outcomes

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

Course contents

  • Process management in UNIX / Linux: states, representation, management (scheduling), operations and commands related to processes

CPU scheduling

  • General concepts: queues, preemption, dispatcher
  • Scheduling criteria
  • Scheduling algorithms: FCFS, SJF, with priority, round-robin, with multiple queues.
  • Scheduling in UNIX, Linux and WinXP

Process interaction through shared memory

  • critical section and mutual exclusion
  • semaphores
  • hardware tools for synchronization: test-and-set

Interaction between processes by message passing:

  • direct / indirect, symmetrical / asymmetrical communication, buffering
  • interaction between Unix processes: pipe and fifo, synchronization through signals

File System Management

  • file system and its implementation
  • the UNIX file system: logical and physical organization, commands and system calls for managing and accessing files / directories

Memory Management

  • address spaces and binding
  • contiguous memory allocation: single partition and multiple partitions; fragmentation;
  • non-contiguous allocation: pagination, segmentation virtual
  • memory memory management in UNIX / Linux

Shell programming

  • Introduction to the Linux bash
  • shell filter commands
  • Piping and redirection
  • Metacharacters expansion
  • Control structures
  • shell command files

Concurrent programming

  • The problem of mutual exclusion and its solutions.
  • synchronization tools in the shared memory model: the semaphore
  • constructs for synchronization: the monitor
  • synchronization between java threads

I / O management

  • I / O subsystem architecture
  • device driver
  • Management of devices: program control, interruption-based 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.


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

Links to further information

https://virtuale.unibo.it

Office hours

See the website of Anna Ciampolini

See the website of Daniela Loreti

SDGs

Quality education Industry, innovation and infrastructure

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