This course offers an insight into the basic operation of an operating system, by implementing various system components, and different metrics for performance evaluation.
Teachers
Person in charge
Juan José Costa Prats (
)
Others
Alex Pajuelo Gonzalez (
)
Yolanda Becerra Fontal (
)
Weekly hours
Theory
2
Problems
0
Laboratory
2
Guided learning
0
Autonomous learning
6
Competences
Technical 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.
CT7 - To evaluate and select hardware and software production platforms for executing applications and computer services.
CT7.3
- To determine the factors that affect negatively the security and reliability of a hardware/software system, and minimize its effects.
Transversal Competences
Appropiate attitude towards work
G8 [Avaluable] - To have motivation to be professional and to face new challenges, have a width vision of the possibilities of the career in the field of informatics engineering. To feel motivated for the quality and the continuous improvement, and behave rigorously in the professional development. Capacity to adapt oneself to organizational or technological changes. Capacity to work in situations with information shortage and/or time and/or resources restrictions.
G8.3
- To be motivated for the professional development, to face new challenges and the continuous improvement. To have capacity to work in situations with a lack of information.
Information literacy
G6 [Avaluable] - To manage the acquisition, structuring, analysis and visualization of data and information of the field of the informatics engineering, and value in a critical way the results of this management.
G6.3
- To plan and use the necessary information for an academic essay (for example, the final project of the grade) using critical reflection about the used information resources. To manage information in a competent, independent and autonomous way. To evaluate the found information and identify its deficiencies.
Technical Competences of each Specialization
Computer engineering specialization
CEC2 - To analyse and evaluate computer architectures including parallel and distributed platforms, and develop and optimize software for these platforms.
CEC2.1
- To analyse, evaluate, select and configure hardware platforms for the development and execution of computer applications and services.
CEC2.2
- To program taking into account the hardware architecture, using assembly language as well as high-level programming languages.
CEC2.3
- To develop and analyse software for systems based on microprocessors and its interfaces with users and other devices.
CEC2.4
- To design and implement system and communications software.
CEC2.5
- To design and implement operating systems.
CEC3 - To develop and analyse hardware and software for embedded and/or very low consumption systems.
CEC3.1
- To analyse, evaluate and select the most adequate hardware and software platform to support embedded and real-time applications.
CEC3.2
- To develop specific processors and embedded systems; to develop and optimize the software of these systems.
CEC4 - To design, deploy, administrate and manage computer networks, and manage the guarantee and security of computer systems.
CEC4.1
- To design, deploy, administrate and manage computer networks.
CEC4.2
- To demonstrate comprehension, to apply and manage the guarantee and security of computer systems.
Objectives
Knowing how a real OS works, since the computer boots and initializes the operating system, through the dynamic management of resources, till the the computer is shutdown.
Related competences:
CEC2.5,
CEC3.2,
CT6.3,
CEC2.2,
CEC2.4,
Details of the implementation of some of the basic components of a real OS: initialization code, memory management code, input/output management code, processes management code and upload of executable files code.
Related competences:
CEC2.1,
CEC2.3,
CEC2.5,
CT6.1,
CT6.3,
CT7.3,
CEC2.2,
CEC2.4,
CEC4.2,
Know the multithreaded programming, the problem of sharing memory and the mechanisms of mutual exclusion
Related competences:
CEC2.5,
CEC3.2,
CT7.3,
CEC2.4,
CEC4.2,
Know some risk factors in the security of an operating system.
Related competences:
CT7.3,
CEC2.4,
CEC4.2,
Understand the implementation of various security and access policies.
Related competences:
CEC2.5,
CT6.3,
CT7.3,
CEC2.4,
CEC4.2,
Be able to implement some of the basic components of a real OS: initialization code, memory management code, input / output management code , process management code and load executable files code.
Related competences:
CEC2.3,
CEC2.5,
CEC3.2,
CT6.1,
CT6.3,
CT7.3,
CEC2.2,
CEC2.4,
Select the most appropriate settings of an operating system depending on the platform to use
Related competences:
CEC3.2,
CT6.1,
CT7.3,
CEC3.1,
CEC4.2,
Find, organize and summarize relevant and quality information on an unknown topic. Write documents with a critical thinking on the main ideas of this topic.
Related competences:
G6.3,
Describe the basic concepts of OS view of computer networks.
Related competences:
CEC2.5,
CEC4.1,
CT6.3,
CEC2.4,
To have a proactive attitude to quality and continuous improvement
Related competences:
G8.3,
Subcompetences:
Be able to produce quality code that meets the requirements set, that is clear and well-organized.
Be able to assess the quality of a code using rubrics
Be able to adapt to situations of time constraints and / or resources and / or lack of information
Related competences:
G8.3,
Subcompetences:
Be able to perform work from statements with lack of information.
Contents
System boot
This chapter will explain all the actions carried out to start all the operating system services. We also describe and discuss possible implementations of this process in the current operating system.
Mechanisms to enter the system
Describes and discusses the possible implementation of the mechanisms to enter the system along with its hardware support. Important aspects of these mechanisms and dependencies between the operating system and hardware will be detailed. We discuss the benefits of implementing virtualization techniques today. Presents and discusses the various implementations of operating systems today.
Memory Management
This chapter covers the following topics: The logical address space of the process. Page-based memory systems and their hardware support. Design and implementation of virtual memory. Replacement algorithms for virtual memory. Implementation of shared memory. Different memory systems design and implementation in modern operating systems and their hardware dependencies.
Process Management
This chapter covers the following topics: Detailed Implementation of the process control block. Implementation details for the process of creating processes. Implementation details for the process of finishing processes. Implementation details for the process of loading executables. Implementation details of context switching between processes. Detailed Description of the structures and algorithms for process scheduling. Implementation details of the processes scheduling routines. Description and discussion of various implementations of process scheduling in modern operating systems.
Extending the system kernel
This chapter covers the following topics: Concept, design and implementation of kernel modules of the OS. Loading kernel modules at system initialization time and run time. Description of access to features implemented in kernel modules. Understanding the relationship between kernel modules and physical and logical devices.
Input / output Management and file systems
This chapter covers the following topics: Description and implementation of the OS part independent and dependent of the device. Implementation of a device descriptor. Description, features and implementation of the I/O structures and file systems. Description and implementation of the logical structure of file systems on disk. Communication mechanisms between processes via file systems. Communication mechanisms between processes across the network. Description and implementation of various file systems today.
Shared Memory
This chapter covers the following topics: Problems with shared memory between multiple threads of execution within a process. Race conditions. Areas of mutual exclusion. Description and implementation of mechanisms for mutual exclusion in accessing shared memory, in particular, test and set, mutex and semaphores. Description, discussion and implementation of mechanisms for mutual exclusion in modern operating systems.
Activities
ActivityEvaluation act
Become familiar with the workplace
Acquiring the knowledge necessary to develop the laboratory. Objectives:1289
Theory
0h
Problems
0h
Laboratory
2h
Guided learning
0h
Autonomous learning
2h
Interrupt Service Routine
Develop an ISR for the clock interrupt Objectives:12891314 Contents:
Delivery of the programming project code and documentation. Objectives:1234567891012 Week:
14
Theory
0h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
6h
Final Theory Exam
Final exam for the course Objectives:1012123456789 Week:
15 (Outside class hours)
Theory
3h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
6h
Final lab exam
Objectives:2345678910 Week:
15 (Outside class hours)
Theory
0h
Problems
0h
Laboratory
3h
Guided learning
0h
Autonomous learning
6h
Teaching methodology
The course will have mainly two types of class: theory and laboratories. The theory classes explain the concepts, designs and implementing various components of current operating systems. These classes will be supported by slides.
Laboratory classes will be weekly. During the lab you will design and implement an operating system called Zeos. This project will be done in groups of two people.
Evaluation methodology
The final grade for the course consists of the grade of the core technical competences (CT), and the grade of generic competence (CTr) by the formula:
Final Grade = (CT + CTr) * (10/11)
Where the maximum score of CTr is 1.
The grade of the CT can be obtained by continuous assessment (CTc) or excepcionally by a final exam (CTf). Is calculated as:
CT = max (CTc, CTf)
Where CTc grade is evaluates the theory (T) and laboratory (L) components. The formula for calculating this grade is as follows:
CTc = 50% T + 50% L
To calculate T two assessments are used with the same weights:
T = 50% T1 + 50% T2
To calculate L, an exam (L1), a follow up grade (S) and a project (P) is used, with the following weights:
L = 40% L1+ 10% S + 50% P
The follow up grade (S) is assigned by the teacher as an evaluation of the right progress throughout the laboratory.
The project grade (P) corresponds to the design, follow up and final implementation of the project.
The CTf grade is calculated using a theory exam (T) and a laboratory exam (L). To accomplish this grade is mandatory to do both exams. This option is only available for those students that fail the continuous assessment. The formula is as follows:
CTf = 50% T + 50% L
The grade of generic competence (CTr) is obtained during the semester through various activities. Rating of this competence will have values A, B, C, D or NA: A corresponds to an excellent level, B to a desired level, C to a sufficient level, D to a failed level, and NA to not assessed.
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.