Operating Systems Foundations

Objectives

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

Code

11155

Credits

9.0

Responsible teacher

Pedro Abílio Duarte de Medeiros, Vítor Manuel Alves Duarte

Hours

Weekly - 5

Total - 60

Teaching language

Português

Prerequisites

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

Bibliography

Main reference:

Operating Systems: Three Easy Pieces, Remzi Arpaci-Dusseau, Andrea Arpaci-Dusseau, November, 2023 (Version 1.10) http://pages.cs.wisc.edu/~remzi/OSTEP/

Complementing references:

Operating System Concepts. A. Silberschatz, et al, 10th Edition, 2018

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

C tutorials (examples):

https://www.geeksforgeeks.org/c-programming-language/
https://www.w3schools.com/c/
https://www.programiz.com/c-programming/

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 assessment process has two components.

Theoretical component

2 mid-term tests or 1 final exam

CompT = (T1+T2)/2   or   CompT = Exam

In the evaluations the student can only use for consultation, a handwritten A4 page.

Laboratory Component (a.k.a. “Practice”)

3 small individual homworks (NTP1,2,3); 1 mini-project (NP) in groups of 2 students

CompL = 0.35*(NTP1+NTP2+NTP3)/3 + 0.65*NP

The Laboratory evaluation confirms the Frequency (admission to the evaluation). To obtain frequency: CompL ≥ 9.0

Note: Students with Frequency achieved in the previous two academic years are exempt from the laboratory evaluation, will be used the grade they obtained in this component at that time. There is no need to sign to a practical class, but you can attend any class if a seat is available at that time.

Note well: the delivery of a work to be evaluated corresponds to abdicating (i.e., losing) the previous Frequency.

Final grade (after obtaining frequency)

A minimum grade of 9.0 in CompT is needed.

if compT < 9.0, then   NF = round(compT);

else   NF = round(0.8*CompT + 0.2*CompL).

Each intermediate grade (i.e., NTP1,2,3, NP, T1, T2, Exam, CompT and CompL) is rounded to one decimal place.

Naturally, a student is approved if they meet the minimum grades for each component and NF ≥ 10

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

Programs where the course is taught: