- Docente: Anna Ciampolini
- Credits: 6
- SSD: ING-INF/05
- Language: Italian
- Teaching Mode: Traditional lectures
- Campus: Bologna
- Corso: First cycle degree programme (L) in Computer Engineering (cod. 0051)
Learning outcomes
It is requested a fair confidence with C and Java programming
languages.
Outcomes:
- knowledge on fundamentals of operating systems theory
- unix/linux system programming ability
- ability of developing concurrent programs in the linux environment
- ability of developing concurrent programs using the java
language
Course contents
1. 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.
2. 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 and in Java.
3. 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 the Linux programming environment; 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.
4. Memory management
Classification of techniques for memory allocation. Paging and
segmentation.
Virtual memory..
Memory management in Unix/Linux.
5. 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, 2nd edition, McGraw-Hill, 2004
P.Ancilotti, M.Boari: "Programmazione Concorrente e Distribuita",
McGraw-Hill, 2006.
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.
Assessment methods
Final verification will take into account the results of:
- A written examination, consisting in the development of concurrent programs in Unix/Linux and Java environments
- An oral examination.
Teaching tools
Use of a videoprojector for showing slides.
Lab hours:
each student can use a personal computer for practice (two
hours/week, during lab hours)
Links to further information
http://lia.deis.unibo.it/Courses/sola0809-info/
Office hours
See the website of Anna Ciampolini