Operating Systems Foundations


Know: Services provided by operating systems (OS), their user and programming interfaces; OS abstractions for program execution and resource management; Principles of concurrent programming and process/thread coordination; Principles of design and internal organization of an operating system.

Apply: Relate the theoretical and practical aspects and improve the ability to perform practical laboratory work; Use the environment and tools to support the development and management of program execution; Develop programs that explore, at the operating system interface level (functions calls), different programming models involving concurrency, communication and synchronization between processes or threads.

General characterization





Responsible teacher

Paulo Orlando Reis Afonso Lopes, Pedro Abílio Duarte de Medeiros


Weekly - 5

Total - 67

Teaching language



It is recommended that students have successfully completed the IP and AC course units.


MAIN reference:

Remzi Arpaci-Dusseau, Andrea Arpaci-Dusseau, Operating Systems: Three Easy Pieces, http://pages.cs.wisc.edu/~remzi/OSTEP/


Modern Operating Systems, 4th Ed, A. Tanenbaum, H. Bos, Pearson, 2014 

Computer Systems: A Programmer''''s Approach, R.Bryant, D. O´Hallaron, Pearson, 3rd Ed 2015

The C Programming Language, B. W. Kernighan, D. M. Ritchie, 2nd Edition, Prentice Hall, 1988

Teaching method

The lectures present the main topics and discuss the most relevant questions. Students should, preferably before class, study the recommended bibliography.

Lab sessions are intended to enable the student to i) develop applications that use system calls in a controlled environment (virtual machines) where administration privileges are sometimes required and ii) use monitoring tools that require such elevated privileges.

Evaluation method

The grading process has two components:

Theoretical-Practical (a.k.a. “Teóricas”)
Students previously graded with, at least 8,5 in the two years preceeding this edition may skip the tests and/or final exam. However, if they wish, they can repeat this part of the grading.
Laboratory (a.k.a. “Práticas”, being awarded Frequência)
Students previously graded with "Frequência" (grade  8,5) in the two years preceeding this edition may skip the laboratory work. However, if they wish, they can repeat this part of the grading.
Teóricas grading: 2 mid-term tests, 1 final exam
Grade of Theoretical-Practical Component (CompT)
CompT = 0,5 T1 + 0,5 T2
To succeed with mid-term tests or exam: CompT ≥ 8,5
Tests and final exam are (unless exceptional conditions dictate otherwise) face-to-face. Note: in the tests and exams you may carry one A4 page with handwritten notes

Laboratory grading (Frequência)
3 individual small-sized work assignments; 1 group Project (P) for 2 students
Grade of the Laboratory Component : CompL = 0,4*(NTP1+NTP2+NTP3)/3 + 0,6*NP
To succeed: CompL ≥ 8,5

Final grade NF = 0,7*(CompT or final exam grade) + 0.3*CompL

All intermediate grades for each component (i.e., CompT and CompL) are rounded to one decimal digit.

Obviously, NF ≥ 9,5

Subject matter

1. Introduction to operating systems (OS): System services: file and process as the main abstractions, system calls.

2. CPU management: support of process abstraction by the OS; lightweight processes: CPU scheduling algorithms.

3. Memory management: process address space; transformation of virtual addresses into real addresses using pages; virtual memory using pagination; page replacement algorithms.

4. Concurrent programming: fundamentals, communication and synchronization in shared memory and distributed memory. Lightweight Processes - pthreads API.

5. Input / output files and devices: file system organization and operations; characteristics of devices that support file systems; file system consistency. Management of input / output devices. Structure of a device driver.

6. Virtual Machines and Containers


Programs where the course is taught: