Operating Systems for Distributed Applications

You are here

Credits
6
Types
Specialization complementary (Software Engineering)
Requirements
  • Precorequisite: PAR
  • Prerequisite: SO
Department
AC
This course is an intensification of the OS basic concepts. THIS IS NOT A DISTRIBUTED OS COURSE. The main goal is to better understand how resource management by the OS can affect the performance and efficiency of distributed applications such as databases, search engines, etc. Management resource policies and strategies will be extended to new levels, such as runtime, middleware or libraries.

Teachers

Person in charge

  • Marisa Gil Gomez ( )

Weekly hours

Theory
1
Problems
2
Laboratory
1
Guided learning
0.4
Autonomous learning
5.6

Competences

Technical Competences

Common technical competencies

  • CT2 - To use properly theories, procedures and tools in the professional development of the informatics engineering in all its fields (specification, design, implementation, deployment and products evaluation) demonstrating the comprehension of the adopted compromises in the design decisions.
    • CT2.4 - To demonstrate knowledge and capacity to apply the needed tools for storage, processing and access to the information system, even if they are web-based systems.
  • CT6 - To demonstrate knowledge and comprehension about the internal operation of a computer and about the operation of communications between computers.
    • 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.
    • CT7.3 - To determine the factors that affect negatively the security and reliability of a hardware/software system, and minimize its effects.
  • 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.1 - To identify current and emerging technologies and evaluate if they are applicable, to satisfy the users needs.
    • CT8.4 - To elaborate the list of technical conditions for a computers installation fulfilling all the current standards and normative.

Technical Competences of each Specialization

Software engineering specialization

  • CES1 - To develop, maintain and evaluate software services and systems which satisfy all user requirements, which behave reliably and efficiently, with a reasonable development and maintenance and which satisfy the rules for quality applying the theories, principles, methods and practices of Software Engineering.
    • CES1.4 - To develop, mantain and evaluate distributed services and applications with network support.
    • CES1.8 - To develop, mantain and evaluate control and real-time systems.
  • CES2 - To value the client needs and specify the software requirements to satisfy these needs, reconciling conflictive objectives through searching acceptable compromises, taking into account the limitations related to the cost, time, already developed systems and organizations.
    • CES2.2 - To design adequate solutions in one or more application domains, using software engineering methods which integrate ethical, social, legal and economical aspects.
  • CES3 - To identify and analyse problems; design, develop, implement, verify and document software solutions having an adequate knowledge about the current theories, models and techniques.
    • CES3.1 - To develop multimedia services and applications.

Transversal Competences

Sustainability and social commitment

  • G2 [Avaluable] - To know and understand the complexity of the economic and social phenomena typical of the welfare society. To be capable of analyse and evaluate the social and environmental impact.
    • G2.3 - To take into account the social, economical and environmental dimensions, and the privacy right when applying solutions and carry out project which will be coherent with the human development and sustainability.

Objectives

  1. Knowing how a real OS works, from the boot, through the dynamic management of resources, to shutdown the computer.
    Related competences: CES1.4, CES3.1, CT6.3, CES1.8,
  2. To know the implementation details of some of the basic components of a real OS: initialization code, memory management, I/O management, process management and network management.
    Related competences: CES1.4, CES3.1, CT8.1, CT6.3, CT6.4, CT7.2, CES1.8, CT2.4,
  3. Understanding the multithreaded programming, the requirements to correctly use shared memory access and the mutual exclusion mechanisms.
    Related competences: CES1.4, CES3.1, CT7.1, CT7.2, CT7.3, G2.3, CT2.4,
    Subcompetences:
    • Identify scalability constraints when managing the system information.
  4. Be able to understand the impact on power and energy consumption of the execution of functions and / or applications considering the components used such as: data structures, algorithms, policies and mechanisms as well as communication and synchronization techniques based on blocking and waiting.
    Related competences: CES2.2, CT8.1, CT7.1, CT7.2, CT8.4, G2.3, CES1.8,
  5. Knowing the existing basic legislation regarding data protection and intellectual property.
    Related competences: CT8.1, CT7.3, CT8.4, G2.3,
    Subcompetences:
    • Know the possible combinations of hardware and proprietary software and free and legal consequences of development and modification of code from existing material.
    • To understand the liability issues related to data maintenance and system robustness. Know the possible combinations of hardware and proprietary software and free and legal consequences of development and modification of code from existing material.
  6. Understanding the impact in terms of efficiency and performance can be caused by different levels of management resources.
    Related competences: CES1.4, CES3.1, CT8.1, CT7.3, CES1.8, CT2.4,
    Subcompetences:
    • Understanding the most popular mechanisms of communication between the most popular levels.
  7. Understand different scheduling policies for general purpose systems such as Linux, and understand how the use of a specific scheduling policy can affect the performance application.
    Related competences: CES1.4, CES2.2, CES3.1, CT8.1, CT6.3, CT7.3, G2.3, CES1.8,
    Subcompetences:
    • Identify scalability constraints.
    • Detecting bottlenecks and performance problems when using distributed resources such as DDBB files or information searches.
  8. Understanding the technological aspects that impact on economic phenomena, social and environmental.
    Related competences: CES2.2, CT7.3, CT8.4, G2.3,
    Subcompetences:
    • Understanding the impact associated to energy-saving issues depending on the platforms and the performance
  9. Being able to split the resources management into layers, when working with middlewares, libraries or virtual machines.
    Related competences: CES2.2, CT8.1, CT6.4, CT7.2, CT7.3, G2.3, CT2.4,
    Subcompetences:
    • Select the appropriate parametres based on the platform used.
  10. Understanding the basic allocation of resources that makes the OS for a program or application can be run and the impact regarding performance and energy savings.
    Related competences: CES1.4, CES3.1, CT8.1, CT6.3, CT6.4, CT7.2, G2.3, CT2.4,

Contents

  1. Introduction
    OS and basic concepts definition. OS structure. User interface and resource management. Basic features in current OS. Other software for resource management: servers and middlewares. Distributed applications resource management: remote services, data and services concurrency. Heterogeneous and hybrid systems.
  2. System boot and communication interfaces
    System boot and process definition: OS basic structures. Execution modes. Interruptions. System calls and message passing.
  3. Processes
    Process and context definition: basic structures to keep process context. Context switch. Process scheduling: concurrency and synchronization. Scheduling policies: scheduling levels. Different weight processes: process and thread. Concurrency and parallelism in middlewares and servers.
  4. Memory
    Processes and memory spaces: protection and space sharing. Hardware memory support: virtual memory, TLB and caches. Access modes: data and code, privilege level. Memory objects and different level support (object pools, garbage collector). Static and dynamic libraries.
  5. I/O
    Independence I/O principle. System calls and libraries. Drivers, descriptors and related structures.Virtual and physical devices. Synchronous and asynchronous I/O. Sharing and access modes: coherence and data distribution. Multimedia I/O.
  6. File Systems
    Directories and space name management. File operations. Data concurrency management. Virtual system files. Data and binary migration and management. Remote execution and bytecodes.
  7. Protection and security
    Protection definition. Protection mechanisms. Authoring, access control and system integrity. Capabilities, virus, worms and malware.

Activities

Activity Evaluation act


Introduction to OS code: data structures and services

While introducing the subject, there will be an interaction among the students to remember concepts already known from previous courses and to complete the basic nomenclature. Includes search for information and proposal guidelines to assess sustainability skill from the standard skill definition provided and the course syllabus
Objectives: 1 2 8 5 4
Contents:
Theory
2h
Problems
4h
Laboratory
0h
Guided learning
0h
Autonomous learning
10h

Lab 1: OS communication mechanisms and first-class objects: processes

From a tiny OS (ZeOS), students will work and complete the code needed to manage exceptions and interrupts, he/she will program a simple system call, completing the basic information that the OS needs from the programs running.
Objectives: 2 9 4
Theory
0h
Problems
0h
Laboratory
4h
Guided learning
0h
Autonomous learning
10h

Execution-unit information and resource management (processes, threads,..)

See how the execution unit (process, thread, or others) that performs the work as well as the resources and policies assigned by the system can affect the data and resource allocation structures.
Objectives: 6 3 9 4 7
Theory
2h
Problems
6h
Laboratory
0h
Guided learning
0h
Autonomous learning
7h

Lab 2: Process scheduling policies and mechanisms

From a queue mechanism and an RR scheduling policy, different priority-based and preemption-based policies will be implemented. The student should evaluate which are the most appropriate policies based on the work to be done (interactive, calculation, synchronization,...)
Objectives: 2 6 3 9
Theory
0h
Problems
0h
Laboratory
4h
Guided learning
0h
Autonomous learning
10h

Different layers memory management interaction: middlewares and virtual machines.

From the understanding of the memory use and allocation the system does to the running programs, learn the possible strategies on allocation, reserve and both static and dynamic mapping, also implicitly and explicitly through system calls. The student will work on the performance evaluation issues and the implications that using different resource management policies have. In addition, he/she will work on the implications of the middleware's own resources management.
Objectives: 1 2 6 9 5
Contents:
Theory
2h
Problems
4h
Laboratory
0h
Guided learning
0h
Autonomous learning
9h

workshop on scheduling policies

Presentación de un trabajo en grupo que cubre los temas dados hasta el momento
Objectives: 1 2 6 8 10 4
Week: 6
Type: theory exam
Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
5h

Lab 3: Using tools to extract information about the system resources

Know and use resource-related basic system tools and data structures to improve resource system use by the running applications. There are also energy saving tools such as PowerTOP
Objectives: 2 6 10
Contents:
Theory
0h
Problems
0h
Laboratory
2h
Guided learning
0h
Autonomous learning
4h

I/O

From the I/O operation independence and uniformity, be able to delve into device virtualization (channel and port), abstraction level, different characteristics management such as sharing and distribution, ...
Objectives: 1 2 9 4
Contents:
Theory
2h
Problems
4h
Laboratory
0h
Guided learning
0h
Autonomous learning
7h

File system

Based on the knowledge already acquired in other subjects and depth in the theory classes, explore the basic file operations, as well as the sharing and replication of data in current situations, such as working with databases and / or distributed searches.
Objectives: 2 10 9 4
Contents:
Theory
2h
Problems
6h
Laboratory
0h
Guided learning
0h
Autonomous learning
5h

Lab 4: I/O management in distributed applications: Message passing

Characterize different data access according to the type of application. Know basic tools to assess and characterize the behavior and performance of programs. From small benchmarks on different sizes of data and results, see the different behavior of distributed applications (Web-based searches, databases, ...).
Objectives: 2 6 9 5 4
Contents:
Theory
0h
Problems
2h
Laboratory
4h
Guided learning
0h
Autonomous learning
0h

Protection and security

From the information provided, privacy situations will be solved. Tools and data structures will be proposed in order to guarantee system security and the privacy of user objects. Conclusions will be extracted and, if necessary, the guidelines and advice on sustainability in this area will be reconsidered.
Objectives: 8 10 5
Theory
1h
Problems
4h
Laboratory
1h
Guided learning
0h
Autonomous learning
10h

Final presentation


Objectives: 3 10 9 5 4
Week: 14
Type: theory exam
Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
7h

Wrap-up session on application parallelism

A paper or a technical talk video will serve to share what has been learned during the course in terms of parallelism and its implementation in specific cases in distributed applications or environments.

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

Teaching methodology

The course is designed for practical work students should develop in the lab sessions, resting on a theoretical basis. The theoretical basis is set in classes organized and directed by the teacher and the active participation of students. Based on references and documentation that the teacher will provide, the students will gain experience in resource management of distributed applications and/or based on data distribution. To do this, they will choose a project at the beginning of the course that they will develop in the following weeks.

The practical experiments in the laboratory will serve as a test basis to confirm or modify the strategies and proposals of the projects in class and facilitate the achievement of objectives. They will be based on a script that the student can use as support.

Students will present their own case study at the end of the course in groups of 4-6.

Evaluation methodology

To evaluate the course takes into account the following qualifications:

a. Theory (NT), obtained from three questionnaires collected in problem class (one every five weeks of the course, approx.) and a practical case presented mid-course (Midterm) as an evaluative act.

b. Laboratory (NL), which is the continuous evaluation of the work of laboratory practices. The laboratory supports the class's problems to understand the operation better and justify costs.

c. Presentation (Final). At the end of the course, groups of 4-6 students will present a work in a poster, article or oral presentation to show the experience acquired.

d. Evaluation of the transversal competence: For each subject topic, there will be a question based on sustainability and social commitment criteria. The total weight will be 10% of the final grade: 5% evaluated in theory and 5% in the laboratory.

Only if you do not attend any of the evaluative acts, the final grade for the subject will be "Not Presented".

The final grade will be obtained from the following formulas:

NT = 0.5 (1/3 * [(Question1) + ... + (Question3)]) + 0.5 * Midterm
NL = 1 / practice num * [(NotePr 1) + ... + (NotePr n)]

NACTA = (0.10 * NL + 0.45 * NT + 0.45 * Final)

Bibliography

Basic:

Previous capacities

The student must have the technical capabilities that give the subjects studied previously over a fluid level of English to read and understand technical documentation and to communicate orally.
The technical skills could be summarized as follows:
- In terms of operating systems: Knowledge of an operating system's basics and application programming interface using the generic system calls given to all Operating Systems.
- In terms of Computer Structure: Knowledge of the main elements of a computer, the connection of these elements, internal representation of data and knowledge of machine language.
-In terms of programming: Ability to build complex programs and modular from scratch, including the definition of data types, pointers and references to code in assembler. Compilation and installation of executable files.
-In terms of parallelism: understanding the distribution of tasks to achieve an objective. Work concurrently and synchronize at specific points. Protect data and reliability of results when accessed from different tasks.