SC 2024-2025
Objectives / Competences
Know the different types of computing systems and understand how they are used.
Understand the concept of operating system as a SW stack that virtualizes hardware to facilitate applications development and execution.
Identify the usefulness of multiprocessing and develop the ability to create concurrent software with interprocess communication and synchronization.
Understand Memory and I/O subsystems and develop the ability to use the file system, device drivers, and different types of memory.
Identify adequate benchmarking techniques to compare alternative operating systems and assess their performance.
Syllabus
Different types of computing systems and their capabilities.
The operating system as a SW stack that virtualizes hardware to facilitate applications development and execution.
Real-Time Operating Systems (RTOS) and General Purpose OS.
Multiprocessing and the idiosyncrasies of concurrent software.
Inter-process (or thread/task) communication and synchronization.
Memory and I/O subsystems (device drivers + file system).
Security in operating systems and benchmarking.
Organization
Lectures:
Exposing concepts and examples.
Invited talks.
Laboratories:
3 individual assignments with potential equipment sharing:
1st assignment: Using embedded systems (the Arduino platform, FreeRTOS).
2nd assignment: General purpose OS (Linux, multiprocessing, multithreading).
3rd assignment: General purpose OS (Linux, memory, file system, I/O).
Assessment
Distributed assessment with final exam:
Final grade = 50% NT + 50% NP
Minimum grade of 7 in each.
NP: Practice assessed with 3 individual assignments (similar weight).
Assessment in the last week of each assignment (together for all).
Consists of writing a small program to be submitted in Moodle.
NT: Final exam in the exams period.
Recourse available for the exam, only.
Bibliography
Main:
"Embedded Systems Design" by Peter Marwedel, OAPEN publishers (online edition).
Free online: https://library.oapen.org/handle/20.500.12657/46817
"Operating Systems: Three Easy Pieces" by Remzi and Andrea Arpaci-Dusseau (online edition).
Free online: https://pages.cs.wisc.edu/~remzi/OSTEP/
Complementary:
"Modern Operating Systems" by Andrew Tanenbaum, ISBN: 978-1-292-06142-9
"Operating Systems" by William Stallings, ISBN: 978-1-292-21429-0
"Operating Systems Concepts" by Abraham Silberschatz, ISBN: 0-471-69466-5
"Sistemas Operativos" by José Alves Marques (em Português), ISBN: 978-972-722-575-0
"LINUX Device-Drivers" by Jonathan Corbet, ISBN: 0-596-00590-3
"Embedded Operating Systems" by Alan Holt, ISBN: 978-3-319-72977-0
Other Resources
Webpage of Operating Systems (Sistemas Operativos) from MIEEC in 2020/2021.
Responsibility of Prof. Pedro Souto (DEI).
Various resources from Prof. Pimenta Monteiro (DEI).
https://web.fe.up.pt/~pfs/aulas/so2021/
Few slides from Embedded Systems (Sistemas Embarcados).
Responsibility of Prof. Mário Sousa (DEEC) and the current lecturer.
Potential reuse of some lectures.
All course materials are available in Moodle.
Schedule
Assignment 1 Test – March 13 (TBC)
Assignment 2 Test – April 10 (TBC)
Assignment 3 Test – May 29 (TBC)
Types of Computing Systems
CPUs, multi-core CPUs, many-core SoC, heterogeneous SoC, DSPs, GPUs, FPGAs, …
Computing System
Definition: A set of one or more computers together with the supporting software and associated storage that allow storing and running application software programs.
Examples:
Computing power scaling / distribution.
Embedded systems.
Supercomputers.
Datacenters.
Cloud.
LAN.
WSN.
Internet.
Computing System Examples
PC + Linux (within Windows).
Arduino + FreeRTOS Embedded system.
General purpose computer.
Operating System
Definition: Software layer that manages computing resources and helps run applications.
The SW stack and its abstractions.
General purpose operating systems (OS).
Specific purpose operating systems:
Embedded Operating Systems, Real-Time Operating Systems (RTOS).
Components:
System calls.
System hardware.
Time management (timer, dispatcher, scheduler).
Resource management.
Shared resources.
TCBs (Task Control Blocks).
Real-Time Operating System
Multiprogramming within a Real-Time Operating System.
Concept of task, temporal control, scheduling.
Inter-task communication and synchronization.
The task management API, the (RT-)POSIX standard.
General Purpose Operating System
Architecture.
Process and thread management.
Memory management.
I/O management.
The File system.
I/O devices and device drivers.
Security aspects.
Benchmarking and performance.
This Lecture
High-level introduction to Computing Systems.
Different types of computing systems.
Support needed to develop and run applications.
The SW stack.
Bird’s eye view of the operating system (OS).
Different types of OS (OS / RTOS).
The OS is a SW layer that:
Hides the HW details.
Provides adequate abstractions to develop SW applications.
Virtualization, Concurrency, and Persistency.
Complementary Reading
Operating Systems: Three Easy Pieces – Introduction
Embedded Systems Design – Introduction (1.1, 1.2)
For Next Lecture
Embedded Systems Design – Introduction (1.3, 1.4, 1.6)
Requirements (2.1)