- Docente: Maurelio Boari
- Credits: 6
- Language: Italian
- 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