Saltar al contingut Menu
  • Home
  • Information
  • Contact
  • Map

Operating Systems (SO)

Credits Dept. Type Requirements
9.0 (7.2 ECTS) AC
  • Compulsory for DIE
  • Compulsory for DCSYS
EC2 - Prerequisite for DIE , DCSFW
PRED - Precorequisit for DIE
PS - Precorequisit for DCSFW


Person in charge:  (-)

General goals

In this subject, students learn the services and utilities offered by operating systems, as well as about the management of the resources they offer. This encompasses the following concepts: command line interpreter, system calls, security, protection, system libraries, dynamic libraries, processing, multiprocessing, shared time, concurrence, mutual exclusion, threads, process scheduling, input/output, device descriptors, file systems, device managers, communication between processes (pipes, signals, semaphores), sockets, shared memory, virtual memory, paging, swap areas. Thus, students must be familiar with the basic characteristics of the implementations of these concepts in both Linux and Windows.

Specific goals


  1. Learn the services provided by an OS from user, programmer, and system administrator viewpoints.
  2. Learn how to use the various systems for interacting with the OS (commands, scripts, libraries, system calls, etc.) and their implementation.
  3. Learn how to describe the requisites of a file system and the services it should offer. Learn the various implementation methods in current systems (partitions, FAT, inodes, NTFS, RAID).
  4. Learn the input/output operations that an OS should provide to programmers. Ability to describe device concepts and needs, and management and implementation of devices (partly dependent and partly independent, device descriptors, etc.).
  5. Learn the concepts of processing, multi-processing, shared time, concurrence, and threads. Learn the problems that can arise from the use of processes and threads, and ways of solving them. Learn to manage processes and threads. Learn how to describe implementation of these concepts on current systems.
  6. Learn about synchronisation and communication mechanisms between processes/threads (such as pipes, named pipes, shared memory, traffic lights, etc.) and how to use them.
  7. Learn how to describe and manage events and exceptions. Implementations.
  8. Learn how to describe the most basic concepts regarding operating systems and computer networks. Learn how to use sockets. Link OS and network concepts.
  9. Learn the memory management mechanisms used by current operating systems in order to describe the concepts underlying paging, virtual memory, memory swapping, etc.
  10. Learn how to describe the basic security and protection problems. Learn the mechanisms for implementing security and protection in current systems.
  11. Learn the basic notions regarding OS performance and optimisation techniques.


(no available informacion)


(no available informacion)


Estimated time (hours):

T P L Alt Ext. L Stu A. time
Theory Problems Laboratory Other activities External Laboratory Study Additional time

1. Introduction
T      P      L      Alt    Ext. L Stu    A. time Total 
2,0 0 0 0 0 0 0 2,0
Description of the course, teaching methodology, etc.

2. General overview of an OS
T      P      L      Alt    Ext. L Stu    A. time Total 
6,0 0 0 0 0 4,0 0 10,0
Description of what an OS must offer. This prepares students for the themes dealt with later.

3. Overview of the programmer"s job
T      P      L      Alt    Ext. L Stu    A. time Total 
0 0 8,0 0 0 10,0 0 18,0
The basic tools that a programmer (or system administrator) needs to know (e.g. shell scripts, basic commands, compilers and tools such as make and strace, etc.).

  • Laboratory
    Familiarisation with the programming environment.

4. Input/output
T      P      L      Alt    Ext. L Stu    A. time Total 
10,0 0 2,0 0 0 8,0 0 20,0
Description of input/output mechanisms, device-independence, types of devices, use, implementation.

  • Laboratory
    Familiarisation with e/s in Unix.

5. File system
T      P      L      Alt    Ext. L Stu    A. time Total 
8,0 0 1,0 0 0 8,0 0 17,0
Directories, protections, secondary storage management, file systems in Linux/Unix and Windows.

  • Laboratory
    Basic concepts regarding the Linux FS

6. Processes
T      P      L      Alt    Ext. L Stu    A. time Total 
7,0 0 3,0 0 0 9,0 0 19,0
Process life-cycle, planning, basic structures for implementing processes. Examples: Unix, Linux, Windows 2k.

7. Communication between processes
T      P      L      Alt    Ext. L Stu    A. time Total 
5,0 0 4,0 0 0 9,0 0 18,0
Need for communication and synchronisation: pipes, signals, sockets.

8. Resource-sharing
T      P      L      Alt    Ext. L Stu    A. time Total 
6,0 0 2,0 0 0 10,0 0 18,0
Shared memory, threads, processes using shared resources, critical section, mutex, traffic lights, deadlock.

9. Memory management
T      P      L      Alt    Ext. L Stu    A. time Total 
6,0 0 0 0 0 6,0 0 12,0
Virtual memory, OS and hardware support, policies and algorithms.

Total per kind T      P      L      Alt    Ext. L Stu    A. time Total 
50,0 0 20,0 0 0 64,0 0 134,0
Avaluation additional hours 16,0
Total work hours for student 150,0

Docent Methodolgy

This course comprises 6 hours of class per week. Theory will comprise four hours a week, and the remaining two hours will be devoted to problems/laboratory. The problem/lab classes will be held in the lab classrooms so that students can use computer terminals in carrying out the work. The teacher will set out practical concepts during these classes, mapping the theoretical concepts covered earlier to the operating systems on which students will work. Exercises will be carried out on both the whiteboard and on the terminals. There will be no associated practical session. Instead, exercises will be solved in the lab.

The first few weeks of theory will set forth the user/programmer"s points of view, which will then be explored in the lab sessions. After this initial stage, the theory will explain ideas for implementation, forming the basis of the PSO course.

Evaluation Methodgy

The course grade is based on the following two grades as follows:

- grade for theoretical contents (70% weight)

- the grade for lab work/practical assignments (30% weight)

Students must obtain a grade of at least 3.5 for the lab work. The maximum grade is 4.

The grade for practical work will be based on the highest of: the continuous assessment grade for the practical sessions; the grade for the test held in the last lab session.

The grade for knowledge of theoretical content will be based on the tests given during the course, or on the final exam. 2 - 4 tests (the number to be decided) on theory will be given during the course. Students who pass the theory part of the course may choose not to take the final exam.

Basic Bibliography

  • William Stallings Sistemas operativos : principios de diseño e interioridades, Prentice Hall, 2001.
  • Brian W. Kernighan, Rob Pike El Entorno de programación UNIX, Prentice-Hall, 1987.
  • Brian W. Kernighan, Rob Pike La Práctica de la programación, Pearson Educación, 2000.

Complementary Bibliography

  • Abraham Silberschatz, Peter Baer Galvin, Greg Gagne Operating system concepts, John Wiley & sons, 2005.
  • W. Richard Stevens, Stephen A. Rago Advanced programming in the UNIX environment, Addison-Wesley, 2005.

Web links

(no available informacion)

Previous capacities

Concurrence (desirable)
Data structures
Notions of input/output
Virtual memory
Correspondence between "C" and assembler
Linux / C environment


logo FIB © Barcelona school of informatics - Contact - RSS
This website uses cookies to offer you the best experience and service. If you continue browsing, it is understood that you accept our cookies policy.
Classic version Mobile version