Operating Systems

Teaching Methodologies

The classes will be taught in practical laboratorial regime, in computer-equipped rooms. The methodology used will be expositive, concerning the presentation of the concepts mentioned in the syllabus, complemented with their application in practical exercises.

Learning Results

This discipline aims to introduce the fundamental knowledge concerning the modern operating systems design. More specifically, the operating system most important functions and their main associated concepts are presented process management, process communication, deadlocks, memory management, file systems and input/output management.
Practical knowledge of the UNIX operating system concepts and capability to use its main services in application development is also a key objective. This practical approach includes the capability to identify potential risk circumstances inherent to concurrent programming and to use suitable control mechanisms.

Program

1 Introduction to Operating Systems
1.1 Operating System concept
1.2 History of Operating Systems
1.3 Characteristics of modern operating systems
1.4 Basic concepts and structure of an operating system
2 Processes
2.1 Processes and threads
2.2 Process scheduling
2.3 Interprocess Communication
2.4 Competition and cooperation between processes
3 Deadlocks
3.1 Resource acquisition
3.2 introduction to deadlocks
3.3 Deadlock detection and recovery
3.4 Deadlock prevention
4 Memory management
4.1 Basic memory manager
4.2 Swapping
4.3 Virtual memory and paging
4.4 Page replacement algortihms
4.5 Segmentation
5 Input/Output
5.1 I/O devices, DMA and interruptions
5.2 Layer model
5.2.1 Interrupt handlers
5.2.2 Device drivers
6 File Systems
6.1 Basic concepts and goals
6.2 File system implementation
6.3 Example file sysetms
7 Multiprocessor Architectures
7.1 MIMD architectures
7.2 Distributed Systems

Internship(s)

NAO

Bibliography

1. A. S. Tanenbaum, Modern Operating Systems, 3rd Ed., Prentice Hall, 2007.
2. W. Stallings, Operating Systems: internals and design principles, 6th Ed., Prentice Hall, 2008.
3. K. A. Robbins, S. Robbins, UNIX SYSTEMS Programming: Communication, Concurrency, and Threads,
Prentice Hall, 2003.
4. S. G. Kochan, P. Wood, UNIX Shell Programming, 3rd Edition, Sams, 2003.
5. P. Costa, D. Melo, P. Soares, P. Silva, Apontamentos de Sistemas Operativos, ISCAC, 2010.