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.
Titular Professors
Professors
Programming concepts (algorithms and data structures) and basic concepts of using an operating system.
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.
During the academic year, the following contents will be covered:
CONCEPTUAL CONTENTS
Topic 1. Introduction to Operating Systems
- Introduction to computers
1.1. Basic components
1.2. Instruction execution
1.3. Interruptions
1.4. Multiple interruptions
1.5. Multiprogramming - Position of the Operating System within the computer system
- Functions of operating systems
- Historical evolution of operating systems
- Components of an operating system
Topic 2. The Operating System Kernel
- Description
- Kernel structure
- Process representation: PCB (Process Control Block)
- Interrupt handler: FLIH (First Level Interrupt Handler)
- The Dispatcher
- Communication, synchronization, and mutual exclusion mechanisms
- Kernel classification
- Contemporary operating system kernels
Topic 3. Scheduling
- Introduction
- Scheduling criteria
- 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) - Queue scheduling algorithms
A) Multilevel queue scheduling
B) Multilevel feedback queue scheduling - Multiprocessor scheduling
- Real-time scheduling
- Implementation examples
Topic 4. Communication, Synchronization, and Mutual Exclusion Mechanisms
- 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 - Hardware solutions
- Software solutions
- Inter-process communication
4.1. Pipes
4.2. Message passing in C
4.3. Sockets
4.4. Shared memory - 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
- Working environment
- File descriptors
- Signals
- Fork, exec
- Threads
- Sockets
- Pipes
- Select
- Shared memory
- Message queues
- Semaphores
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.
The methods used to assess the course are:
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]
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
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.