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 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 at the operating system interface level and with operating system call programming models involving concurrency, communication and synchronization between processes.

General characterization





Responsible teacher

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


Weekly - 5

Total - 68

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, 2015 v0.9*, 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”)
Laboratory (a.k.a. “Práticas”)

"Frequência", granted by “Práticas” grading
Grade must be equal or above 8,5 (max. 20)
Students with "frequência" on 2017/18 or 2018/19 are not required to redo the “Práticas”, but they can, and that will be considered for grade improvment. If they wish so, they are required to communicate it as soon as classes start.

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: CompT ≥ 8,5

Laboratory grading
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

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


Programs where the course is taught: