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, http://pages.cs.wisc.edu/~remzi/OSTEP/
COMPLEMENTING references:
Modern Operating Systems, 4th Ed, A. Tanenbaum, H. Bos, Pearson, 2014
Operating System Concepts. A. Silberschatz, et al, 10th Edition, 2018
C tutorials (examples):
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 component (a.k.a. “Theoretical”)
2 mid-term tests or 1 final exam
CompT = 0.5 T1 + 0.5 T2 or CompT = Exam
To pass: CompT ≥ 9.0
Tests and exam are in person. In the evaluations of the theoretical component, the student can use, for consultation, a handwritten A4 page.
Note: Students with a theoretical grade equal to or greater than 9.0, achieved in the previous academic year, are exempt from the theoretical assessment (tests and/or exam). Please note: going to a test or exam means giving up (i.e., losing) that grade.
Laboratory Component (a.k.a. “Practice”)
3 small individual works (NTP1,2,3); 1 mini-project (NP) in a group 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 two academic years prior to this edition are exempt from the laboratory assessment, being used the grade they obtained in this component at the 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)
If you meet the minimum grade in CompT, the final grade NF = round(0.7*CompT + 0.3*CompL). If not, NP = round(CompT)
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