Skip to main content

Advanced Operating Systems

Credits
6
Types
Specialisation compulsory (Information Technologies)
Requirements
Department
AC
This course offers an insight of an operating system, describing the central services offered to the middleware and their implementation.

Teachers

Person in charge

  • Alex Pajuelo Gonzalez (mpajuelo@ac.upc.edu)

Others

  • Juan José Costa Prats (jcosta@ac.upc.edu)
  • Yolanda Becerra Fontal (yolandab@ac.upc.edu)

Weekly hours

Theory
2
Problems
0
Laboratory
2
Guided learning
0
Autonomous learning
6

Competences

Common technical competencies

  • CT6 - To demonstrate knowledge and comprehension about the internal operation of a computer and about the operation of communications between computers.
    • CT6.1 - To demonstrate knowledge and capacity to manage and maintain computer systems, services and applications.
    • CT6.3 - To demonstrate knowledge about the characteristics, functionalities and structure of the Operating Systems allowing an adequate use, management and design, as well as the implementation of applications based on its services.
    • CT6.4 - To demonstrate knowledge and capacity to apply the characteristics, functionalities and structure of the Distributed Systems and Computer and Internet Networks guaranteeing its use and management, as well as the design and implementation of application based on them.
  • CT7 - To evaluate and select hardware and software production platforms for executing applications and computer services.
    • CT7.1 - To demonstrate knowledge about metrics of quality and be able to use them.
    • CT7.2 - To evaluate hardware/software systems in function of a determined criteria of quality.
  • CT8 - To plan, conceive, deploy and manage computer projects, services and systems in every field, to lead the start-up, the continuous improvement and to value the economical and social impact.
    • CT8.7 - To control project versions and configurations.
  • Information technology specialization

  • CTI1 - To define, plan and manage the installation of the ICT infrastructure of the organization.
    • CTI1.4 - To select, design, deploy, integrate, evaluate, build, manage, exploit and maintain the hardware, software and network technologies, according to the adequate cost and quality parameters.
  • CTI3 - To design solutions which integrate hardware, software and communication technologies (and capacity to develop specific solutions of systems software) for distributed systems and ubiquitous computation devices.
    • CTI3.4 - To design communications software.
  • Third language

  • G3 [Avaluable] - To know the English language in a correct oral and written level, and accordingly to the needs of the graduates in Informatics Engineering. Capacity to work in a multidisciplinary group and in a multi-language environment and to communicate, orally and in a written way, knowledge, procedures, results and ideas related to the technical informatics engineer profession.
    • G3.1 - To understand and use effectively handbooks, products specifications and other technical information written in English.
  • Objectives

    1. Know the behavior of a real OS from booting the computer, the system initialization, the dynamic management of resources, to the shutdown of the computer.
      Related competences: CTI3.4, CT6.1, CT6.3, CT6.4, CTI1.4,
    2. Know the etails of the implementation of some of the basic components of a real OS: initialization code, memory management code, input / output management code, process management and executable file management.
      Related competences: CT6.1, CT6.3, CT7.2, CTI1.4,
    3. Describe the procedure to extend, dynamically, the kernel of a real OS
      Related competences: CT6.1, CT6.3, CT8.7, CTI1.4,
    4. Detail the internal structure of a kernel module identifying the distinct components as well as its relationship with the generic OS interface and the use of structures in memory for controlling the input/ouput.
      Related competences: CT6.1, CT6.3, CT8.7, CTI1.4,
    5. Know the multithreading programming paradigm, the problem of sharing memory and the implementation of mechanisms for mutual exclusion with the required hardware support.
      Related competences: CTI3.4, CT6.1, CT6.3, CT6.4, CTI1.4,
    6. Implementing some of the basic components of a real OS: boot code, memory management code, input / output management code, process management code and file execution code using C and assembler on an Intel x86 architecture.
      Related competences: CTI3.4, CT6.1, G3.1, CT6.3, CT6.4, CT7.1, CT7.2, CT8.7, CTI1.4,
    7. Compare and evaluate different alternatives for implementing resource management code using metrics of cost, efficiency and quality
      Related competences: CT6.1, CT6.3, CT7.1, CT7.2, CT8.7,
    8. Design the communication services for multiprocess and/or multithreaded applications.
      Related competences: CTI3.4, CT6.4, CT7.2, CT8.7, CTI1.4,
    9. Use and understand technical documents in English provided with the operating system.
      Related competences: G3.1, CT6.3,
    10. Use version control software.
      Related competences: CT6.1, CT6.3, CT8.7,

    Contents

    1. Introduction
      This chapter will explain how the operating system isolates the underlying hardware using the processor's protection mechanisms. The mecanisms ot invoke an operating system service will be discussed together with the associated code.
    2. Memory management
      This chapter will address the following issues: logical address space of the process. Memory-based paging systems and support hardware. Alternative design and implementations of memory systems in modern operating systems.
    3. Execution context
      Here is the translation into English, using standard technical terminology for operating systems and systems programming:

      Technical Translation
      "This topic discusses the essential information the operating system must maintain regarding an execution flow (thread/process) to manage its execution, creation, destruction, and multiplexing within the processor. It explores the necessity of an execution lifecycle for programs, alongside the data structures required for its implementation. Furthermore, it addresses the challenges of memory sharing at the execution flow level, as well as the mutual exclusion mechanisms provided by both the processor and the operating system.
    4. Device access
      This topic describes the path an access request follows from user mode until it reaches a specific device. It will outline the structures required to manage device access and how to implement an operating system that remains device-independent. Virtual File Systems (VFS) will be presented as an abstraction of physical file systems, along with file systems designed for the virtualization of execution environments, such as containers.
    5. Process communication
      Here is the translation into English, employing the standard terminology used in systems programming and distributed systems:

      Technical Translation
      "This topic describes the mechanisms provided by the operating system for Inter-Process Communication (IPC) between two or more processes running on the same machine or across different machines. It will cover the implementations of pipes, sockets, and message queues. Furthermore, different concurrency models for servers will be presented and discussed, along with the operating system mechanisms available to optimize their performance.

    Activities

    Activity Evaluation act


    Introduction

    Theoretical knowledge acquisition
    Objectives: 1 2 7
    Contents:
    Theory
    2h
    Problems
    0h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    2h

    Getting started with the development environment

    Knowledge acquisition to develop de lab
    Objectives: 1 2 4 6 10
    Contents:
    Theory
    0h
    Problems
    0h
    Laboratory
    2h
    Guided learning
    0h
    Autonomous learning
    4h

    Protected mode

    Knowledge acquisition about the protected mode
    Objectives: 1 2 6 9
    Contents:
    Theory
    2h
    Problems
    0h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    2h

    Implementation of the operating system entry point

    Implementation of the operating system entry point
    Objectives: 1 6 9 10
    Contents:
    Theory
    0h
    Problems
    0h
    Laboratory
    4h
    Guided learning
    0h
    Autonomous learning
    6h

    Memory management

    Knowledge acquisition
    Objectives: 1 2
    Contents:
    Theory
    4h
    Problems
    0h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    4h

    Implementation of the system and user page tables

    Implementation of the page tables to translate addresses in system and user mode
    Objectives: 1 2 6 9 10
    Contents:
    Theory
    0h
    Problems
    0h
    Laboratory
    4h
    Guided learning
    0h
    Autonomous learning
    4h

    Execution context

    Knowledge acquisition
    Objectives: 1 5 6 9
    Contents:
    Theory
    6h
    Problems
    0h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    6h

    Implementation of process management

    Implementation of the creation, destruction and scheduling of processes / threads
    Objectives: 1 2 6 7 9 10
    Contents:
    Theory
    0h
    Problems
    0h
    Laboratory
    8h
    Guided learning
    0h
    Autonomous learning
    10h

    Theory midterm exam


    Objectives: 1 2 5 6 7
    Week: 8
    Theory
    0h
    Problems
    0h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    0h

    Device access

    Knowledge acquisition
    Objectives: 1 3 4 9
    Contents:
    Theory
    6h
    Problems
    0h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    10h

    Project

    Extension of the operating system kernel with new features
    Objectives: 1 2 5 6 7 10
    Contents:
    Theory
    0h
    Problems
    0h
    Laboratory
    6h
    Guided learning
    0h
    Autonomous learning
    12h

    Process communication

    Knowledge acquisition
    Objectives: 1 5 7 8
    Contents:
    Theory
    4h
    Problems
    0h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    2h

    Implementation of process communications

    Development of an optimized server using sockets
    Objectives: 1 2 8 9 10
    Contents:
    Theory
    0h
    Problems
    0h
    Laboratory
    4h
    Guided learning
    0h
    Autonomous learning
    6h

    Second theory exam


    Objectives: 1 5 7 8
    Week: 14
    Theory
    0h
    Problems
    0h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    0h

    Final theory exam


    Objectives: 1 2 3 4 5 7
    Week: 15 (Outside class hours)
    Theory
    0h
    Problems
    0h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    0h

    Final lab exam


    Objectives: 1 2 5 6 7 8 9 10
    Week: 15 (Outside class hours)
    Theory
    0h
    Problems
    0h
    Laboratory
    0h
    Guided learning
    0h
    Autonomous learning
    0h

    Teaching methodology

    The course will present two types of class: Theory and laboratories. The theory classes will explain the concepts, designs and implementing of several common components of a current operating system.

    The lab classes will be carried out weekly. The first seven weeks the student will design and implement the kernel of an operating system called Zeos. The next 5 weeks tthe student will extend that kernel with new features. The last 2 weeks, the student will implement servel with some advance socket connection model.

    Evaluation methodology

    The final grade for the course is composed of the technical competency grade (CT) and the transversal competency grade (CTr) using the following formula:

    Final Grade = (CT + CTr) * (10/11)

    Where the maximum grade for CTr is 1.

    The CT grade can be obtained through continuous assessment (CTc) or, exceptionally, through a final exam (CTf). It is calculated as:

    CT = max(CTc, CTf)

    The CTc grade consists of several evaluative acts: theory tests (T) and laboratory assignments (L). The formula to calculate this grade is:

    CTc = 50% T + 50% L

    To calculate T, two tests with equal weight are used:

    T = 50% T1 + 50% T2

    To calculate L, a tracking grade (S), a project (P), and an inter-process communication exercise (E) are used:

    L = 10% S + 50% P + 40% E

    The tracking grade (S) is obtained from the instructor's evaluation of the student's correct progress in the laboratory.The project grade (P) corresponds to the design, tracking, and implementation of a project.The exercise grade (E) corresponds to the design, tracking, and implementation of a program utilizing inter-process communication mechanisms.

    The CTf grade is calculated through a theory exam (T) and a laboratory exam (L). To obtain this grade, it is mandatory to complete both exams. Only students who have not passed the continuous assessment or those who, having passed it, choose to waive their continuous assessment grade, are eligible for this option. The formula is as follows:

    CTf = 50% T + 50% L

    The transversal competency grade (CTr) will be obtained throughout the semester through various activities. The grading for this competency will use the values A, B, C, D, or NA: A corresponds to an excellent level, B to a target level, C to a sufficient level, D to a fail, and NA to not evaluated.

    Bibliography

    Basic

    Complementary

    Web links

    Previous capacities

    The student must have the technical capabilities that will confer the subjects studied previously together with a medium level of technical English to read and understand documentation.

    The technical capabilities could be summarized as follow:

    -Operating systems: Understanding the basics of an operating system along with the creation of applications using the generic system call interface explained during the Operating System course.
    -In terms of computer architecture: Knowledge of the main elements of a computer, how these elements relate to each other, internal representation of data and knowledge of the assembler language.
    -In terms of programming: Ability to code complex programs from scratch composed of several moduls. Definition of data types, pointers and references, and assembler code. Compilation and linkage of executables.