Summary of G850 – Operating Systems

This subject is Operating Systems (course code G850), an optional third-year course in the Degree in Telecommunication Technologies Engineering at the School of Industrial Engineering and Telecommunications, Universidad de Cantabria. It carries 6 ECTS credits, is taught face-to-face in Spanish during the second semester, and is English Friendly. The course is taught by Pablo Prieto Torralbo.

Scope and aims

The course introduces the main functions and internal mechanisms of an operating system, with particular emphasis on process scheduling and control, memory management, interprocess communication, synchronization, and file systems.

It combines the study of operating-system concepts with practical experience using GNU/Linux. Students learn to use the operating system both as end users and as application programmers, including the use of system calls and the development of single-threaded and multithreaded programs.

Learning outcomes

Students are expected to be able to use an operating system effectively from a user perspective and to employ operating-system calls when developing single-threaded and multithreaded applications for architectures with one or more processors.

They should also understand how the operating system manages the computer hardware and exposes hardware resources and services to users and application programmers.

Program content

The syllabus is organized around five main blocks, with laboratory activities integrated into the theoretical topics.

  • Introduction: definition and evolution of operating systems, their main components, and the basic characteristics of modern operating systems.
  • GNU/Linux environment and programming: laboratory environment, general use of GNU/Linux, the shell and shell commands, and an introduction to C programming under GNU/Linux.
  • CPU virtualization and processes: process states, Process Control Blocks, context switching, process operations, CPU scheduling, and scheduling algorithms. Practical work covers Unix/Linux system calls, the process-management API, and process control and monitoring in Linux.
  • Memory virtualization: memory-management requirements, address spaces, address translation, memory partitioning, paging, segmentation, programs larger than physical memory, and virtual memory. Practical work covers the memory API, heap and stack management, monitoring tools, and pointers in C.
  • Communication and synchronization: interprocess communication, the critical-section problem, software and hardware mutual-exclusion mechanisms, semaphores, synchronization, condition variables, and threads, including their creation and execution.
  • Persistence: storage devices, file systems, and the internal organization of file systems. Practical work covers the file-management API and the Linux file system.

Teaching materials

The basic bibliography listed is Operating Systems: Three Easy Pieces by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, version 1.1, published by Arpaci-Dusseau Books in August 2023.