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)