Credits
6
Types
Specialisation compulsory (Information Technologies)
Requirements
- Prerequisite: SO
Department
AC
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.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.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.7 - To control project versions and configurations.
Information technology specialization
- 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.4 - To design communications software.
Third language
- G3.1 - To understand and use effectively handbooks, products specifications and other technical information written in English.
Objectives
-
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, -
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, -
Describe the procedure to extend, dynamically, the kernel of a real OS
Related competences: CT6.1, CT6.3, CT8.7, CTI1.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, -
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, -
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, -
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, -
Design the communication services for multiprocess and/or multithreaded applications.
Related competences: CTI3.4, CT6.4, CT7.2, CT8.7, CTI1.4, -
Use and understand technical documents in English provided with the operating system.
Related competences: G3.1, CT6.3, -
Use version control software.
Related competences: CT6.1, CT6.3, CT8.7,
Contents
-
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. -
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. -
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. -
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. -
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
Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
2h
Theory
4h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
4h
Theory
6h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
6h
Theory
6h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
10h
Theory
4h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
2h
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
-
Operating system concepts
- Silberschatz, A.; Galvin, P.B.; Gagne, G,
John Wiley & Sons,
2019.
ISBN: 9781119454083
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004148389706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Advanced Operating Systems Course
- Becerra, Y; Costa, J.; Pajuelo, A,
Complementary
-
Understanding the Linux kernel
- Bovet, D.P.; Cesati, M,
O'Reilly,
2005.
ISBN: 9780596005658
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003076469706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Windows internals: part 1: system architecture, processes, threads, memory management, and mor
- Yosifovich, P.; Ionescu, A.; Russinovich, M.E.; Solomon, D.A,
Microsoft Press,
2017.
ISBN: 9780735684188
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004178279706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Operating systems: internals and design principles
- Stallings, W,
Pearson Education Limited,
2017.
ISBN: 9781292214306
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991001576049706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Web links
- Pàgina web de l'assignatura http://docencia.ac.upc.edu/FIB/grau/SOA/
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.