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

Operating Systems Project (PROSO)

Credits Dept.
7.5 (6.0 ECTS) AC

Instructors

Person in charge:  (-)
Others:(-)

General goals

This subject aims to instil students with the following skills:
-  An awareness of the practicalities of the internal functionality of an operating system (OS).
-  The ability to implement the basic components of the kernel of an OS from scratch.
-  The ability to develop new functionalities working from a real OS.

Specific goals

Knowledges

  1. Learn the workings of a real OS, from switching on and system booting, to dynamic management of resources and switching off the computer at the end of the session.
  2. Learn the implementation details of some of the basic components of a real OS: initialisation code, memory management code, input/output management, process management code, and loading code for executable files.
  3. Learn the method for dynamically inserting code in a real OS: Linux modules.
  4. Learn the special device concept in Linux and the device driver concept.

Abilities

  1. Learn how to implement a complex low-level programme from scratch.
  2. Learn how to add low-level code that interacts with complex, low-level real code.
  3. Master the tools and methods for developing and debugging low-level code.

Competences

  1. Ability to work effectively in small groups to solve problems of middling difficulty.
  2. Ability to design systems, components and processes meeting certain needs, using the most appropriate methods, techniques and tools in each case.
  3. Ability to think in abstract terms. Ability to tackle new problems by consciously using strategies that have proved useful in solving previous problems.
  4. Ability to solve problems through the application of scientific and engineering methods.
  5. Ability in and experience of complex and low-level programme coding.

Contents

Estimated time (hours):

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

1. Booting process and OS boot-up.
T      P      L      Alt    Ext. L Stu    A. time Total 
1,0 0 4,0 0 5,0 0 0 10,0
Description of the booting process and OS boot-up.
Description of the Linux development environment and the compilation and debugging tools that will be used in the first project.
  • Laboratory
    First steps with the development environment and the compilation and debugging tools.
    First steps with the OS file system structure and learning its boot and initialization process.
    Generation of a bootable image of an OS.
  • Additional laboratory activities:
    Continue the lab classes work.

2. Mechanisms for entering the system.
T      P      L      Alt    Ext. L Stu    A. time Total 
2,0 0 8,0 0 10,0 0 0 20,0
Description of the protected execution mode architecture: user mode and system mode.
Introduction to the mechanisms for entering the system: exceptions, interrupts and traps (system calls)
Describing the programming and handling of the different mechanisms for entering the system (IDT initialisation, handlers and service routings programming, implementing the syscalls library)
  • Laboratory
    Programming and handling the system enter mechanisms: exceptions, clock and keyboard interrupts and the "write" syscall.

  • Additional laboratory activities:
    Continue the lab classes work.

3. Basic management of memory.
T      P      L      Alt    Ext. L Stu    A. time Total 
1,0 0 4,0 0 5,0 0 0 10,0
Description of the process address space (logical space vs physical space)
Page table handling: incidence on the process creation and context change
  • Laboratory
    Implementing routines for simple management of memory.



  • Additional laboratory activities:
    Continue the lab classes work.

4. Process management and scheduling.
T      P      L      Alt    Ext. L Stu    A. time Total 
3,0 0 12,0 0 15,0 0 0 30,0
Description of the basic data structures for process handling: PCB, lists.
Description of the routines for process handling: process creation and destruction, context change between processes, process planning and getting statistical information from the processes
  • Laboratory
    Definition of the basic data structures for process management.
    Initialization of the initial process.
    Implementation of the process creation and destruction routines.
    Implementation of the context switch between processes and a policy for its scheduling in the clock interruption.
    Implementation of a mechanism for gathering statistical information from the processes.
  • Additional laboratory activities:
    Continue the lab classes work.

5. Basic management of the input/output.
T      P      L      Alt    Ext. L Stu    A. time Total 
2,0 0 8,0 0 10,0 0 0 20,0
Description of the routines and data structures for handling basic keyboard input/output
Channel table concept.
System calls for handling the channel table.
  • Laboratory
    Definition of basic data structures providing management of the keyboard.
    Implementation of the "read" system call on the keyboard and the keyboard interruption.
    Add to the code the concept of channel table and system calls for its management.
  • Additional laboratory activities:
    Continue the lab classes work.

6. Process synchronization: semaphores. Other features.
T      P      L      Alt    Ext. L Stu    A. time Total 
1,0 0 4,0 0 5,0 0 0 10,0
Description of the data structures for synchronising the processes with semaphores.
System calls for semaphore handling.
Description of other features that the students can choose to add to the system
  • Laboratory
    Implementation of the data structures and system calls for process synchronization using semaphores.
    Implementation of the data structures and system calls associated to the new features.
  • Additional laboratory activities:
    Continue the lab classes work.

7. Management of Linux devices: device drivers.
T      P      L      Alt    Ext. L Stu    A. time Total 
1,0 0 4,0 0 5,0 0 0 10,0
Description of the following concepts: modules, devices and device drivers on Linux
  • Laboratory
    Implementation of a basic device driver for managing the logic device in the Linux kernel.

  • Additional laboratory activities:
    Continue the lab classes work.

8. Implementation of a device driver in Linux.
T      P      L      Alt    Ext. L Stu    A. time Total 
4,0 0 16,0 0 20,0 0 0 40,0
Description of the device driver concept. Description of the techniques for inserting code in the Linux kernel.
  • Laboratory
    Implementation of a device driver managing information in the Linux kernel.
  • Additional laboratory activities:
    Continue the lab classes work.


Total per kind T      P      L      Alt    Ext. L Stu    A. time Total 
15,0 0 60,0 0 75,0 0 0 150,0
Avaluation additional hours 2,5
Total work hours for student 152,5

Project

Description

The OS project comprises items:



Project 1: Implementation of an OS kernel



Project 2: Implementation of a device driver for Linux

Development plan

Each project will comprise various parts. Each part will review the relevant theoretical concepts and describe the project to be carried out.







On completion of each part, students will make a submission/be interviewed and demonstrate the project"s functioning.

Docent Methodolgy

The theory classes will review the basic concepts underlying operating systems needed to carry out the project, and will set out the project requirements.

The project will be implemented in lab classes (usually with support being provided by the lab teacher). Students will be given time in the lab to complete the project. It is mandatory to attend those classes with teacher support as the teacher will use them to assess the evolution of the project.

Evaluation Methodgy

Project 1: 70%
Project 2: 30%

Throughout the course, the student will be required to hand out two
partial deliveries for the project 1 and a final delivery for each project. The grade of each delivery counts towards the final grade of the project, but none of them is compulsory (the grade for a missed delivery is 0). The advisor will assess the evolution of the project during the laboratory classes. After each delivery, the advisor will show to each student the incorrect issues that must be solved/improved for the following deliveries.
At the end of each delivery the student will validate his project before his advisor. The validation will be done through a set of answers about the knowledge required to develop his project. Each project will be evaluated based on: the software delivered, a global evaluation about the student evolution and a continuous assessment grade (that is calculated based on the answers to his advisor's questions to validate his code both during the laboratory class and after each delivery).

Basic Bibliography

  • Jonathan Corbet, Alessandro Rubini and Greg Kroah-Hartman Linux device drivers, O'Reilly, 2005.
  • Daniel P. Bovet & Marco Cesati Understanding the Linux kernel, O'Reilly, 2005.
  • Robert Love Linux kernel development, Novell Press, 2005.

Complementary Bibliography

  • Brian W. Kernighan, Rob Pike The Practice of programming, Addison-Wesley, 1999.
  • Abraham Silberschatz, Peter Baer Galvin, Greg Gagne Operating system concepts, John Wiley & sons, 2005.
  • William Stallings Operating systems : internals and design principles, Pearson Education International, 2005.

Web links

  1. http://www.xml.com/ldd/chapter/book/


  2. http://bochs.sourceforge.net/


  3. http://www.kernel.org/


Previous capacities

Students must know:
- Basics on operating system concepts, structures and algorithms: mechanisms for entering the system, process management, input/output management and memory management
- User level understanding of the Linux system calls
- Low level programming: C language and i386 assembler
- High level programming: algorithms and data structures
- Basic tools to develop C programs in Linux: Makefile, C compiler and debuggers

Accordingly, students taking this course must previously have passed SO, EC2 and PRED.


Compartir

 
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