Introduction to Operating Systems26022
- Centre
- Faculty of Informatics
- Degree
- Bachelor's Degree in Informatics Engineering
- Academic course
- 2024/25
- Academic year
- 2
- No. of credits
- 6
- Languages
- Spanish
- Basque
- Code
- 26022
TeachingToggle Navigation
Teaching guideToggle Navigation
Description and Contextualization of the SubjectToggle Navigation
*** PLEASE NOTE THAT THIS SUBJECT IS ONLY TAUGHT IN SPANISH/BASQUE ***
The subject "Introduction to Operating Systems" focuses on the functional description of operating systems, through its system calls interface, which presents it to the (systems) programmer as a virtual machine that largely hides the complexity of the underlying hardware. This training is complemented by other subjects in the Computer Engineering specialty of the Degree in Informaics Engineering: "Operating Systems" focuses on fundamental techniques and models in the design of operating systems, aimed at managing the different system resources, in order to understand the need for compromises in the design and configuration of the operating system; "Administration of Systems and Networks" focuses on presenting and developing the main aspects associated with the administration of computer systems, in an approach oriented towards the functions of the administrator and also regarding the user who makes use of this type of system; finally "Design of Operating Systems and Real Time", which is currently not taught, deals with the implementation of the system.
The skills and knowledge acquired in this course prepare students to work in system software/application development, code library design, and high-level programs that interact with the operating system. These skills can also be valuable in software design, development, and maintenance, and in understanding best practices and techniques for producing high-quality software. It gives the option to work in the field of software development for embedded systems, such as medical devices, automotive and consumer electronics. Finally, it is worth to say that this subject is the base of other advanced subjects in operating systems through which students can prepare to work in computer security and software development of operating systems.
The subject "Introduction to Operating Systems" is a compulsory subject included in the curriculum of the Degree in Informatics Engineering and is taught in the second year. For the good use of this subject, it is highly recommended to have passed "Computer Structure" and "Basic Programming", both taught in first year.
Skills/Learning outcomes of the subjectToggle Navigation
At the end of the course, the students should be able to:
- Know the characteristics of the different types of operating systems such as time-sharing systems, distributed systems, real time, etc.
- Identify the interfaces provided by an operating system
- Develop Linux utilities for applications from its system call interface
- Manage the fundamental concepts of operating systems (files, access protection, processes, threads, communication and synchronization elements)
- Manage the functionality of its components (manage the process, memory, and input-output subsystems)
Other important aspects that are going to be promoted are the ability to find the information and tools necessary to solve the problems that arise, and the ability to accurately describe the functionality of the developed utilities, so that they can be used by other users or developers.
Theoretical and practical contentToggle Navigation
Unit 1: Introduction
- Functional vision of an Operating System (OS)
- Functions and Interfaces of an OS
- Types of OSs according to their functionality (Evolution and Classification)
- Current market for OSs
- Lab: Basic Shell Tasks as User and Administration Interface
Unit 2: System call mechanism
- Operating Sytem's Support architecture (I/O)
- I/O routine call mechanism
- Resident routines
- OS access mechanism: system calls
Unit 3: Input-output and files
- Introduction to the concepts of Device Independence and redirection
- Operation modes on devices and files
- Organization of the file system. Namespaces, directories
- I/O “Buffering”: libraries functions vs. system calls
- Advanced access to device properties
- System calls for I/O and C standard library functions
- Exercises on I/O and lab work
Unit 4: User management and security
- Multi-user systems
- Protection mechanisms
- Security-related system calls
- Exercises on user management and securiry and lab work
Unit 5: Memory management
- Loading and placement of programs in systems with one or more programs in memory
- Support for virtual memory systems: physical and virtual addressing
- Static and dynamic relocation. Reentrant code
- Static and Dynamic link libraries
- Calls to the operating system related to program loading and memory management
- Compilation practices, memory management, static and dynamic link libraries, and program loading
Unit 6: Process control
- Concept of execution flow and context. Context switching
- Multiprogrammed and multithreaded systems
- Concept of process (Unix model), states and transition graph
- Processes' scheduling and basic scheduling policies
- System calls and library functions related to process and thread control
- Practical work: process execution in background from the Shell, process monitoring, simple and multprogrammed shell, multithreaded examples
Unit 7: Communication and synchronization between processes and threads
- Concepts of concurrency, shared resource, race condition and exclusive access
- Critical sections of code. Basic mechanisms for exclusive access to critical sections
- Communication with message passing through mailboxes. Communication and synchronization via threads
- System calls related to communication and synchronization between processes and threads
- Resource management model based on the client-server scheme. Examples of resource managers (drivers)
- Practical work: communication and synchronization between processes (using pipes) and threads
MethodologyToggle Navigation
This course is based on the functional vision of operating systems and the application programming interface (API). Therefore, although always based on the theoretical concepts that support it, it will have a large practical component. For this, various teaching methodologies will be used, from master classes to more active methodologies such as PBL (Project Based Learning) or pBL (Problem Based Learning) and laboratory activities.
Assessment systemsToggle Navigation
- Continuous Assessment System
- Final Assessment System
- Tools and qualification percentages:
- The percentages and types of evaluation are specified in the following sections. (%): 100
Ordinary Call: Orientations and DisclaimerToggle Navigation
CONTINUOUS ASSESSMENT
The evaluation systems that are contemplated are the continuous evaluation system and the final evaluation system. The continuous assessment system is the one that will be used preferably, as indicated in the current regulations of the UPV/EHU. The student who decides to opt for the final evaluation, must inform the teacher(s) within the terms and manner indicated in the current regulations of the UPV/EHU.
The continuous evaluation mode is based on the following three evaluation tests:
- Individual evaluation questionnaires: 60%
- Practical Works: report with the developed code, specifications, verification results of the practice proposals and interview: 30%
- (Others) Specific individual assessment questionnaires on the work carried out: 10%
To pass the subject it is necessary that the student:
- Completes and submits all assessment tests
- Gets at least 40% of the evaluation of each of the tests
- The final average mark with all the evaluation tests is at least 5 out of 10
FINAL EVALUATION
For those who do not follow the continuous evaluation, the following evaluation mechanism is foreseen:
- Final individual written test (theoretical questions, practical exercises, code analysis, design/programming of utilities...): 80%
- The realization and delivery of a practical work and an interview about it: 20%
To pass the subject it is necessary that each student:
- Completes and submits all assessment tests
- Gets at least 40% of the evaluation of each of the tests
- The final average grade with all the tests is at least 5 out of 10
Extraordinary Call: Orientations and DisclaimerToggle Navigation
In the extraordinary call evaluation will be similar to the final evaluation of the ordinary call:
- Final individual written test (theoretical questions, practical exercises, code analysis, design/programming of utilities...): 80%
- The realization and delivery of a practical work and an interview about it: 20%
To pass the subject it is necessary that each student:
- Completes and submits all assessment tests
- Gets at least 40% of the evaluation of each of the tests
- The final average grade with all the tests is at least 5 out of 10
Compulsory materialsToggle Navigation
Subject eGela online classroom, Linux operating system (there will be access to Linux through a server), manuals, tools and C programs that will be provided through eGela (Moodle service from UPV/EHU).
BibliographyToggle Navigation
Basic bibliography
Remzi H. & Andrea C. Arpaci-Dusseau:
Operating Systems: Three Easy Pieces - http://pages.cs.wisc.edu/~remzi/OSTEP/
Abraham Silberschatz, Peter B. Galvin, Greg Gagne:
Operating System Concepts (Tenth edition), John Wiley & Sons, 2018.
Francisco Manuel Márquez García:
UNIX. Programación Avanzada 3a Edición. Rama, 2004.
BrianW. Kernighan, Rob Pike:
The Unix Programming Environment, Prentice-Hall, 1984.
In-depth bibliography
Andrew S. Tanenbaum:
Modern Operating Systems (4th Edition), Prentice-Hall, 2014.
Mark Rochkind:
Advanced Unix Programming, Addison-Wesley, 2004.
William Stallings:
Operating Systems: Internals and Design Principles (Eighth edition), Prentice Hall, 2014.
Web addresses
www.linux.org: forums, tutorials and many other stuff about Linux
www.gnu.org: all about the gnu operating system
www.die.net: the Linux manual online
GroupsToggle Navigation
16 Teórico (Spanish - Tarde)Show/hide subpages
Weeks | Monday | Tuesday | Wednesday | Thursday | Friday |
---|---|---|---|---|---|
16-30 | 15:30-17:00 (1) | 14:00-15:30 (2) |
Teaching staff
16 Applied laboratory-based groups-1 (Spanish - Tarde)Show/hide subpages
Weeks | Monday | Tuesday | Wednesday | Thursday | Friday |
---|---|---|---|---|---|
16-30 | 12:00-13:30 (1) |
Teaching staff
16 Applied laboratory-based groups-2 (Spanish - Tarde)Show/hide subpages
Weeks | Monday | Tuesday | Wednesday | Thursday | Friday |
---|---|---|---|---|---|
16-30 | 17:00-18:30 (1) |
Teaching staff
16 Applied laboratory-based groups-3 (Spanish - Tarde)Show/hide subpages
Weeks | Monday | Tuesday | Wednesday | Thursday | Friday |
---|---|---|---|---|---|
16-30 | 12:00-13:30 (1) |
Teaching staff
31 Teórico (Basque - Mañana)Show/hide subpages
Weeks | Monday | Tuesday | Wednesday | Thursday | Friday |
---|---|---|---|---|---|
16-30 | 10:30-12:00 (1) | 09:00-10:30 (2) |
Teaching staff
31 Applied laboratory-based groups-3 (Basque - Mañana)Show/hide subpages
Weeks | Monday | Tuesday | Wednesday | Thursday | Friday |
---|---|---|---|---|---|
16-30 | 14:00-15:25 (1) |
Teaching staff
31 Applied laboratory-based groups-1 (Basque - Mañana)Show/hide subpages
Weeks | Monday | Tuesday | Wednesday | Thursday | Friday |
---|---|---|---|---|---|
16-30 | 12:00-13:30 (1) |
Teaching staff
31 Applied laboratory-based groups-2 (Basque - Mañana)Show/hide subpages
Weeks | Monday | Tuesday | Wednesday | Thursday | Friday |
---|---|---|---|---|---|
16-30 | 12:00-13:30 (1) |