35049 - Advanced Operating Systems (Graduate Course) (A-Z)

Academic Year 2008/2009

  • Teaching Mode: In-person learning (entirely or partially)
  • Campus: Bologna
  • Corso: Second cycle degree programme (LS) in Computer Engineering (cod. 0234)

Learning outcomes

The aim of this course is to lay the foundations for concurrent programming. Concurrent programming is the activity of constructing a program containing multiple processes that execute in parallel. These processes compete for access to critical resources and cooperate in performing some task. given the specification of a problem to be solved, decisions have to be made about what and how many processes to employ and how the should interact. These decisions are affected by the application and by the underlying hardware on wich theprogram will run. Wathever choices are made, a critical problem is ensuring that process interaction is properly synchronized.
Concurrent programming was initially of concern to operating system designers.Today, parallel and distributed computing are pervasive concepts.
New computer and network create new challenges and opportunities for the development of new methology and technologies for concurrent programming. Languages and software libraries are now widely used in the field, for example: Java, Ptreads,Ada

Some modern aspects of operating systems are also discussed: protection techniques, virtualization, I/O management.

Course contents

 Concurrent programming
1.1 Introduction and definitions
1.2 Non sequential  processes.Process interactions
1.3 Architectures and languages for lconcurrent programming
2. Shared variables model
2.1 Main properties
2.2 The mutual exclusion problem
2.3 Semaphores
2.4 PrivateSemaphores
2.5 Critical Regions
2.6 Monitor

3.  processor kernel

3.1 Data structures
3.2 Functions
3.3 multiprocessor kernel
 
Message passing model
4.1 Main properties
4.2 Send e receive
4.3 guarded comands
4.4 Remote procedure calls

5. Atomic actions
5.1 Properties
5.2 Multiprocess atomic actions
5.3 Nested atomic actions
 
6. Protection
6.1  Protezione domains
6.2 Access matrix
6.3 Access control list and capability lists



7. I/O management
7.1 Driver

8. Multithreading
8.1P-Thread in Linux
8.2 Synchronization in JAVA
 
9 Remote procedure call
9.1 RPC
9.2 rendezvous
9.3 ADA
9.4 Remote method invocation

10. Virtual machine monitor

10.1 Hardware virtualization

10.2 VMM structure: virtualization and paravirtualization

 

Readings/Bibliography

G.R.Andrews: "Foundations of Multithreaded, Parallel and Distributed Programming", Addison-Wesley

 G.R.Andrews: "Foundations of Multithreaded, Parallel and Distributed Programming", Addison-Wesley
- W.Stallings: 'Sistemi operativi', Jackson Libri
- S. Tanenbaum: 'I Moderni Sistemi Operarivi', Jackson Libri
- A.Silberschatz, P.Galvin, G.Gagne: 'Applied Operating System Concepts' I edizione, John Wiley & Son, Inc.

Teaching methods

classroom lessons

laboratory projects

Assessment methods

Synchronization problem to be solved by P-threads in Linux and JAVA

Final  exhamination. about the arguments discussed in the course.

Teaching tools

The slides used during the lessons are freely availble at the course Web site:

http://lia.deis.unibo.it/Courses/ModApplRetiCalc0607/

Links to further information

http://lia.deis.unibo.it/Courses/SistOpLS0506/

Office hours

See the website of Maurelio Boari