Degree in International Computer Engineering La Salle Campus Barcelona

Bachelor in International Computer Engineering

La Salle Degree s in Computer Engineering, is the only Degree program in Barcelona which equips you with the skills and knowledge needed to meet the new international demands of the computer engineering sector and of the global business world.

Operating Systems

Description: 

An operating system is the software layer that manages hardware resources and provides the services required to execute programs and applications. Modern operating systems incorporate an increasing number of functionalities and play a fundamental role in the operation of computer systems.

The aim of the course is to provide students with an overall understanding of the operation and structure of an operating system, as well as its main components. Throughout the course, students study the fundamental concepts related to process management, scheduling, concurrency, synchronization, inter-process communication, and the basic mechanisms provided by the operating system kernel. Specific details of other subsystems and modules are covered in more specialized courses within the study programme.

From a practical perspective, the course includes programming activities and assignments focused on implementing and experimenting with different operating-system functionalities, mechanisms, policies, and techniques. This work is complemented by examples and exercises that help students consolidate the theoretical content, understand how these mechanisms operate, and apply them to the resolution of real-world problems.

Type Subject
Obligatoria no de Primer
Semester
First
Course
3
Credits
5.00

Titular Professors

Previous Knowledge: 

Prior programming knowledge is required, particularly in algorithms, data structures, and structured programming, as well as a basic understanding of how to use an operating system. Students are also expected to have acquired basic programming skills in C, including the use of pointers and dynamic memory management.

Objectives: 

Students taking the Operating Systems course are expected to acquire the following knowledge and develop the following skills:

  1. Understand the functions of an operating system, its structure, and its relationship with the other components of a computer system.
  2. Understand the concepts, techniques, and terminology associated with the operation, design, and implementation of the main components of an operating system.
  3. Apply these concepts and techniques through the design and development of software that implements mechanisms used in operating systems.
  4. Communicate correctly, both orally and in writing, using appropriate technical terminology.
  5. Design and develop modular, structured, maintainable, and properly documented software.
  6. Analyse and solve problems related to the course content, both individually and as part of a team.

Contents: 

The following content will be covered during the academic year:

THEORY CONTENT

Chapter 1. Introduction to Operating Systems and the Kernel

1. Fundamentals of computer systems

  • Basic components of a computer system
  • Instruction execution
  • Interrupts and the handling of multiple interrupts
  • Multi programming

2. The operating system within the computer system

  • Position and role of the operating system
  • Functions and services of operating systems
  • Evolution of operating systems
  • Main components of an operating system

3. Processes and execution

  • Process concepts and process states
  • Process representation: PCB (Process Control Block)
  • Context switching
  • The dispatcher

Chapter 2. Process Scheduling

1. Introduction to process scheduling

2. Scheduling criteria and metrics

3. Basic scheduling algorithms for single-processor systems

  • FCFS (First Come, First Served)
  • SJF/SPN (Shortest Job First / Shortest Process Next)
  • SRT (Shortest Remaining Time)
  • Priority scheduling
  • Round Robin
  • HRRN (Highest Response Ratio Next)

3. Simulation and comparative analysis of scheduling algorithms

  • Process and workload configuration
  • Use of the EPSSim educational simulator
  • Interpretation of the resulting metrics
  • Comparison of the behaviour of different algorithms
  • Analysis of the effects of scheduling parameters

Chapter 3. Concurrency, Synchronization, and Mutual Exclusion

1. Concurrency and data sharing

  • Concurrent process execution
  • Race conditions
  • Critical sections

2. Mutual exclusion and synchronization

  • The mutual exclusion problem
  • The producer-consumer problem
  • Related concepts: starvation, deadlock, and fairness

 3. Semaphores

  • Concepts and operations
  • Use of semaphores
  • Synchronization and mutual-exclusion patterns
  • Semaphores in C

PRACTICAL CONTENT

Chapter 4. System Calls

  1. Working environment
  2. File descriptors
  3. Signals
  4. Threads
  5. fork, pipes, and exec
  6. Shared memory
  7. Sockets
  8. select
  9. Message queues
  10. Semaphores

Methodology: 

The course follows a weekly structure based on two teaching sessions:

  • First session (2 hours): the concepts and tools required to develop the course content are introduced. The explanations are complemented by examples, problem-solving activities, and discussions of different design approaches.
  • Second session (2 hours): a practical session is held in which students, usually working in groups, must design and implement a program in C that applies the concepts and tools covered. The activity must be submitted at the end of the session.

In addition, throughout the course, students develop a larger programming project structured into several phases. This project integrates the main course content and allows students to explore in greater depth the design, implementation, debugging, and documentation of a more complex application.

Evaluation: 

The methods used to assess the course are the following:

A. Exams
B. Multiple-choice exams
C. Exercises completed outside the classroom
D. Reports or group assignments
E. Computer-based practical work
F. Class participation
G. Other: individual interviews.

The course lasts one semester and consists of two distinct components: Knowledge and Project. Both components are assessed independently, and a grade equal to or higher than 5 must be obtained in each of them in order to pass the course.

The final grade will be calculated according to the following formula:

Final_Grade = 50% · Knowledge + 50% · Project

provided that both the Knowledge and Project grades are equal to or higher than 5.

Otherwise:

Final_Grade = minimum(Knowledge, Project)

Therefore, the two components of the course must be passed separately, and a grade equal to or higher than 5 in one component cannot compensate for a grade below 5 in the other.

Knowledge Assessment

The Knowledge component is assessed through the mid-semester exam (Ex_Midterm), the exam corresponding to Chapter 3 (Ex_T3), and the grade obtained in the Lab Sessions (Lab_Grade).

The exam grade is calculated as follows:

Exam_Grade = 25% · Ex_Midterm + 75% · Ex_T3

Ordinary assessment

To apply this weighting, a grade equal to or higher than 5 must be obtained in both the Ex_Midterm and the Ex_T3. If this requirement is met:

Knowledge = 70% · Exam_Grade + 30% · Lab_Grade

If either the Ex_Midterm or the Ex_T3 receives a grade below 5:

Knowledge = minimum(Ex_Midterm, Ex_T3)

Therefore, the Lab_Grade is only included in the calculation when both exams have individually received a grade equal to or higher than 5, and it cannot compensate for a grade below 5 in either exam.

Resit

During the resit, students may retake the Ex_Midterm, the Ex_T3, or both, as applicable. To pass the Knowledge component, a grade equal to or higher than 5 must be obtained in each of the two exams.

When both exams have a grade equal to or higher than 5:

Knowledge = Exam_Grade

If either exam receives a grade below 5:

Knowledge = minimum(Ex_Midterm, Ex_T3)

The Lab_Grade forms part of continuous assessment and is only included during the ordinary assessment period. Therefore, it does not contribute to the calculation of the Knowledge grade during the resit.

Lab Sessions

During the course, nine ordinary Lab Sessions will be held, all of which are assessed, together with one additional optional Lab Session.

The Lab_Grade will be calculated from the Labs that are included in the calculation. If the student completes the optional Lab, the grade obtained will replace, where applicable, the lowest grade from the nine ordinary Labs.

For a Lab to be considered completed, the submitted code must demonstrate effective and sufficient work on the problem set. A Lab that is submitted but has not been worked on sufficiently will receive a grade of 1 and will not be considered completed. Labs that are not submitted will be recorded as Not Submitted (NS).

In the case of a justified absence, a maximum of two non-submitted Labs may be excluded from the calculation of the Lab_Grade during the course. From the third absence onwards, non-submitted Labs will count as 0 for the purpose of calculating the Lab_Grade, even if the absence is justified. Non-submitted Labs without justification will likewise count as 0 for the purpose of this calculation.

If the student completes all ordinary Labs included in the calculation, they will be guaranteed a minimum Lab_Grade of 5, even if the arithmetic mean obtained is lower. This guarantee does not modify the individual grades of the Lab Sessions.

Option to Free the Ex_T3

Students may opt to free the Ex_T3 during the ordinary assessment period.

Meeting the requirements allows the student to opt to free the exam, but does not guarantee that the Ex_T3 will be freed. The final decision rests with the teaching staff and is based on the student’s continuous work, attendance, participation, and the individual knowledge demonstrated throughout the course.

To be eligible to opt to free the Ex_T3, the student must:

  1. Have submitted and passed the Project in the first ordinary Project presentation.
  2. Have submitted and worked on the optional Lab Session. It is not necessary to pass it.
  3. Have obtained a natural average equal to or higher than 5 in the Lab Sessions.
  4. Have obtained a grade equal to or higher than 5 in the Ex_Midterm during the ordinary assessment period.
  5. Have attended and participated appropriately in all teaching sessions corresponding to Chapter 3.
  6. Have individually demonstrated sufficient knowledge of Chapter 3 during the interview of the first ordinary Project presentation.

The natural average is the average of the Labs included in the calculation after replacing, where applicable, the lowest grade with the grade obtained in the optional Lab, but before applying the guaranteed minimum Lab_Grade of 5. A Lab_Grade of 5 obtained exclusively through this guarantee does not satisfy the requirement of having a natural average equal to or higher than 5.

The interview conducted during the first ordinary Project presentation includes both a general assessment of the Project and an individual assessment of the student’s knowledge of Chapter 3. A student may pass the Project but still not have the Ex_T3 freed if their individual assessment of Chapter 3 is not sufficient.

For students who meet the requirements and are considered candidates to have the exam freed, the following formula will be calculated:

Freeing_Grade = (50% · Project + 30% · Lab_Grade + 20% · Ex_Midterm) · Participation_Grade

The Participation_Grade is a factor ranging from 0.8 to 1.2, determined on the basis of attendance, active participation, and continuous work demonstrated throughout all teaching sessions corresponding to Chapter 3.

The Freeing_Grade directly becomes the student’s final course grade and replaces the ordinary Final_Grade calculation system.

The Ex_T3 will only be freed if the result of the formula is equal to or higher than 5. If the result is below 5, the student must take the Ex_T3. The maximum Freeing_Grade is 10.

The student may decline the Freeing_Grade and voluntarily take the Ex_T3 if they believe they can obtain a higher grade. Taking the exam constitutes a definitive waiver of the Freeing_Grade, which cannot subsequently be recovered or applied.

Authorship, Artificial Intelligence and Academic Fraud

Submitting an activity under one’s own name implies assuming authorship of it and knowing and understanding the entirety of the submitted content.

It is considered fraud to submit under one’s own name code, a solution, or a substantial part of a submission that the student has not developed or does not understand. The student must be able to explain how it works, justify the design decisions, describe the tools and resources used, and modify or complete the code when requested.

The use of artificial intelligence tools is permitted as support, in accordance with Level 4 of the AI Assessment Scale (AIAS). AI may assist the student with specific parts of the work, but it may not replace the student’s learning, problem-solving, decision-making, or understanding of the result.

The student is responsible for reviewing, validating, and understanding any content generated or suggested by these tools. Relevant use of AI must be identified and documented in accordance with the instructions for each activity and, in the case of the Project, in the report.

For the Project report, reports written in Markdown or generated using Python will not be accepted, even if they are subsequently converted to PDF.

When a submission shows indications of copying, lack of authorship, mechanical use of AI, or any other possible form of academic fraud, the teaching staff will require the student to attend an individual validation interview.

The Ex_Midterm, the Ex_T3, the Project phases, the final Project submission, and the associated interviews are highly significant assessment activities. Lab Sessions are moderately significant assessment activities.

If academic fraud is established, the protocol and consequences set out in the University’s academic regulations will apply.

Evaluation Criteria: 

The assessment criteria associated with the course objectives are as follows:

Objective 1. Understand the functions and structure of an operating system

  • Identify and explain the functions, components, and basic structure of an operating system, as well as its relationship with the hardware and the other components of the computer system. [A, B, C, F]
  • Use the concepts and terminology specific to the course correctly. [A, B, F, G]

Objective 2. Understand the main mechanisms and techniques used in operating systems

  • Analyse and solve process-scheduling problems, correctly interpreting the associated algorithms and metrics. [A, B, C, F]
  • Identify and apply concurrency, synchronization, and mutual-exclusion mechanisms to problems involving concurrent processes. [A, C, E, G]
  • Relate the different components and mechanisms studied to the overall operation of the operating system. [A, B, F]

Objective 3. Apply knowledge through software development

  • Design and implement programs in C that use system calls and mechanisms specific to operating systems. [C, E, G]
  • Select and apply appropriate techniques to solve each problem, justifying the design decisions made. [C, E, G]

Objective 4. Communicate using appropriate technical terminology

  • Write clear, precise, and properly structured technical reports and documentation. [D]
  • Orally explain and defend the design, operation, and implementation of the solutions developed. [F, G]

Objective 5. Develop modular and documented software

  • Implement properly structured and modular programs with appropriate internal documentation. [E]
  • Produce a report that describes and justifies the architecture, design, and operation of the implementation. [D, G]

Objective 6. Analyse and solve problems individually and as part of a team

  • Analyse problems, propose alternatives, and justify the selected solution. [A, C, E, F, G]
  • Work collaboratively and in a coordinated manner, distributing tasks without losing an overall understanding of the solution developed. [D, E, G]

Basic Bibliography: 

CANALETA, X. (2020). Exercicis i problemes d’examen de sistemes operatius. Publicacions La Salle.

HARBISON, S. P., i STEELE, G. L. (2002). C: A Reference Manual (5a ed.). Prentice Hall.

PETERSON, J. L., i SILBERSCHATZ, A. (1989). Sistemas operativos. Editorial Reverté. ISBN 84-291-2693-7.

SALVADOR, J. (2011). Introducció al llenguatge de programació C. Publicacions La Salle.

SALVADOR, J. (2014). Programació en C per a sistemes UNIX. Publicacions La Salle.

SILBERSCHATZ, A., GALVIN, P. B., i GAGNE, G. (2002). Sistemas operativos. Editorial Limusa. ISBN 968-18-6168-X.

STALLINGS, W. (2005). Sistemas operativos (5a ed.). Pearson Prentice Hall. ISBN 84-205-4462-0.

PERKINS, M., FURZE, L., ROE, J., i MACVAUGH, J. (2024). “The Artificial Intelligence Assessment Scale (AIAS): A Framework for Ethical Integration of Generative AI in Educational Assessment”. Journal of University Teaching and Learning Practice, 21(6). doi:10.53761/q3azde36.

Additional Material: 

STEVENS, W. R., FENNER, B., i RUDOFF, A. M. (2004). UNIX Network Programming. Volume 1: The Sockets Networking API (3a ed.). Addison-Wesley Professional. ISBN 0-13-141155-1.

STEVENS, W. R., i RAGO, S. A. (2008). Advanced Programming in the UNIX Environment (2a ed.). Addison-Wesley Professional.

TANENBAUM, A. S. (2009). Sistemas operativos modernos (3a ed.). Pearson Educación. ISBN 978-607-442-046-3.