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 a software layer that runs on top of the hardware in order to provide a set of services. Over time, the functionalities of an operating system have expanded to include more tasks and a broader range of services. The objective of this course is to study an operating system in all its components and, in this way, provide students with knowledge about one of the most important elements of modern computer systems. This course will delve into the fundamental concepts of operating systems, leaving the details and specifications of other modules that compose them to other subjects.

From a practical perspective, students carry out projects that implement different functionalities, policies, or techniques of an operating system. In addition, numerous examples are introduced to help students deepen their understanding of the aspects covered from a theoretical point of view and to allow them to see their practical application.

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

Titular Professors

Previous Knowledge: 

Programming concepts (algorithms and data structures) and basic concepts of using an operating system.

Objectives: 

Students enrolled in the Operating Systems course must acquire the knowledge and develop the skills listed below:

  • Understand the functionalities of an operating system, its structure, and its relationships with the rest of the computer system.
  • Know the concepts, techniques, and terminology associated with the development and creation of an operating system at each of its different layers.
  • Be able to apply these techniques by developing software that implements them.
  • Be able to express themselves correctly using appropriate terminology both orally and in writing.
  • Be able to develop software in a modular and well-documented manner.
  • Be able to solve problems related to this field, both individually and collectively.

Contents: 

During the academic year, the following contents will be covered:

CONCEPTUAL CONTENTS

Topic 1. Introduction to Operating Systems

  1. Introduction to computers
    1.1. Basic components
    1.2. Instruction execution
    1.3. Interruptions
    1.4. Multiple interruptions
    1.5. Multiprogramming
  2. Position of the Operating System within the computer system
  3. Functions of operating systems
  4. Historical evolution of operating systems
  5. Components of an operating system

Topic 2. The Operating System Kernel

  1. Description
  2. Kernel structure
  3. Process representation: PCB (Process Control Block)
  4. Interrupt handler: FLIH (First Level Interrupt Handler)
  5. The Dispatcher
  6. Communication, synchronization, and mutual exclusion mechanisms
  7. Kernel classification
  8. Contemporary operating system kernels

Topic 3. Scheduling

  1. Introduction
  2. Scheduling criteria
  3. Basic single-processor scheduling algorithms
    A) FCFS (First Come First Served)
    B) SJF (SPN, SRT)
    C) Priority-based scheduling
    D) Round Robin
    E) HRRN (Highest Response Ratio Next)
  4. Queue scheduling algorithms
    A) Multilevel queue scheduling
    B) Multilevel feedback queue scheduling
  5. Multiprocessor scheduling
  6. Real-time scheduling
  7. Implementation examples

Topic 4. Communication, Synchronization, and Mutual Exclusion Mechanisms

  1. The mutual exclusion problem and deadlock
    1.1. Producer–Consumer example
    1.2. Dijkstra’s postulates
    1.3. Related concepts: starvation, deadlock, fairness
    1.4. Deadlock
    1.5. Precedence graphs
  2. Hardware solutions
  3. Software solutions
  4. Inter-process communication
    4.1. Pipes
    4.2. Message passing in C
    4.3. Sockets
    4.4. Shared memory
  5. Mutual exclusion and synchronization tools
    5.1. Semaphores
    5.2. Implementation
    5.3. Usage
    5.4. Semaphores in C
    5.5. Monitors

PRACTICAL CONTENTS

Topic 5. System calls

  1. Working environment
  2. File descriptors
  3. Signals
  4. Fork, exec
  5. Threads
  6. Sockets
  7. Pipes
  8. Select
  9. Shared memory
  10. Message queues
  11. Semaphores

Methodology: 

The course combines theoretical explanation and practical work with the aim of facilitating a progressive and applied understanding of the concepts. Two class sessions are held weekly. In the first session, new contents and tools are introduced through lectures, which are complemented with examples and problems to encourage active student participation and the connection between the different topics in the syllabus.









In the second session, a laboratory activity is carried out in which the student must design and implement practical solutions using the techniques previously presented, especially in the context of programming in the C language on UNIX systems and the use of system calls. Throughout the course, additional exercises are proposed to be solved individually or in teams outside the classroom, which are later reviewed totally or partially in subsequent sessions.

Finally, the course includes a larger-scale project, structured in several phases, which allows students to integrate and apply the knowledge and competencies acquired in a comprehensive manner.








Evaluation: 

The methods used to assess the course are:









  • A. Exams
  • C. Multiple-choice exams
  • D. Homework exercises
  • F. Reports or group assignments
  • G. Computer-based practical work
  • J. Class participation
  • M. Others (individual validation interviews)

The course consists of two distinct parts: knowledge and the project, which are assessed independently.

In order to pass the course, both parts must be passed.

The final grade is calculated as follows:

Final_Grade = 50% · Knowledge + 50% · Project

Knowledge assessment

The knowledge grade is calculated as:

Knowledge = 70% · Exam_Grade + 30% · Lab_Grade

where:

Exam_Grade = 80% · Final_Exam + 20% · Midterm_Exam

To apply this formula, a minimum grade of 5 must be obtained in each exam.

If the Midterm is not passed in the ordinary examination period, it may be retaken in the second examination period.

There is also a final resit exam.

The laboratory grade has a continuous assessment role and only contributes in the first examination period.

In the second examination period:

Knowledge = Exam_Grade

Final exam exemption

The student may be exempted from taking the final exam if the following conditions are met:

  • The project is satisfactorily submitted before the first examination period
  • Attendance at laboratory sessions and a laboratory grade ≥ 4
  • Midterm grade ≥ 5
  • Attendance and participation in class

In this case:

Final_Exam_Exemption_Grade = (55% · Project + 30% · Lab_Grade + 15% · Midterm_Exam) · Participation_Grade





 

 




Evaluation Criteria: 

The assessment criteria of the course are defined based on the established learning outcomes and allow verification of the level of achievement of the expected knowledge and competencies.

RA.10. Basic concepts of operating systems. The student must be able to:

  • identify and describe the fundamental concepts associated with operating systems, their structure, and their role within the computer system [A, C, J]
  • correctly use the terminology specific to the course in both theoretical and practical contexts [A, C, J]
  • solve conceptual questions related to the basic contents of the course [A, C]

RA.11. Knowledge of the different components or subsystems of an operating system and the techniques or strategies applied to each of them. The student must be able to:

  • describe the basic structure of an operating system and the functioning of its main components [A, C]
  • analyze mechanisms related to processes, interruptions, scheduling, and resource management [A, C, D]
  • compare and justify the use of different techniques and strategies applied to operating system subsystems [A, D, J]
  • interpret problems and practical cases related to the behavior and internal organization of the operating system [A, D, G]

RA.12. Identification, formulation, and resolution of problems involving concurrent processes that require a shared data integrity system. The student must be able to:

  • identify concurrency situations and the associated problems, such as mutual exclusion, deadlock, starvation, or fairness [A, C, D]
  • formulate and solve synchronization and inter-process communication problems using the appropriate techniques [A, D, G]
  • correctly select and apply mechanisms such as semaphores, shared memory, pipes, message queues, or sockets depending on the problem posed [A, D, G]
  • justify the decisions made in solving concurrency-related problems [A, G, M]

RA.13. Design and implementation of multiprocess applications involving information sharing and communication between processes. The student must be able to:

  • design and implement programs in the C language on UNIX systems that use system calls and communication and synchronization mechanisms [G, D]
  • develop modular, properly structured, and well-documented solutions [F, G]
  • prepare technical reports that adequately describe the design, implementation, and functioning of the developed solutions [F]
  • orally defend design decisions and demonstrate sufficient understanding of the functioning of the implemented program [M]
  • work individually or collaboratively in the development of practical solutions [F, G, M]

Basic Bibliography: 

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

HARBISON S.P. & STEELE G.L. (2002). C - A Reference Manual, Prentice Hall, 5th edition, 2002.

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

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

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

SILBERSCHATZ A., GALVIN P. & GAGNE, G. (2002). Sistemas Operativos, Editorial Limusa, ISBN: 968-18-6168-X STALLINGS, W. (2005). Sistemas Operativos, 5th Edition, Pearson Prentice Hall, ISBN: 84-205-4462-0

Additional Material: 

STEVENS, R., FENNER, B. & RUDOFF, A.M. (2004). UNIX Network Programming, Volume 1: "The sockets Networking API", Addison-Wesley Professional, 2004, 3rd edition, ISBN 0-13-141155-1.

STEVENS, R. & RAGO S.A. (2008). Advanced Programming in the UNIX Environment, Addison-Wesley Professional, 2008, 2nd edition.

TANENBAUM A.S. (2009). Sistemas Operativos Modernos, 3rd Edition, Pearson Prentice Hall, Pearson Educación, ISBN: 978-607-442-046-3.