Augmentar lletres   Inici   Informació   Contactar   Mapa
Castellano   English

Projecte de Sistemes Operatius (PROSO)

Crèdits Dept.
6.0 ECTS AC

Professors

Responsable:  Yolanda Becerra Fontal (yolandab@ac.upc.edu)
Altres:Jordi Guitart Fernandez (jguitart@ac.upc.edu)
Juan José Costa Prats (jcosta@ac.upc.edu)
Julita Corbalan Gonzalez (juli@ac.upc.edu)
Maria Luisa Gil Gomez (marisa@ac.upc.edu)
Ruben Gonzalez Garcia (ruben.gonzalez-garcia@upc.edu)

Objectius Generals

1. Conèixer de manera pràctica com funciona internament un SO.
2. Ser capaç d'implementar des de zero els components bàsics del nucli d'un SO.
3. Ser capaç de desenvolupar noves funcionalitats sobre un SO real.

Objectius Específics

Coneixements

  1. Conèixer el funcionament d'un SO real, des de l'arranc de l'ordinador i l'inicialització del sistema, passant per la gestió dinàmica dels recursos, fins que s'apaga l'ordinador.
  2. Conèixer els detalls d'implementació d'alguns dels components bàsics d'un SO real: codi d'inicialització, codi de gestió de memòria, codi de gestió de l'entrada/sortida, codi de gestió dels processos i codi de càrrega de fitxers executables.
  3. Conèixer el mecanisme d'inserció dinàmica de codi sobre un SO real: mòduls a linux.
  4. Conèixer el concepte de dispositiu especial a linux i el concepte de manegador de dispositiu (device driver).

Habilitats

  1. Ser capaç d'implementar un programa complex i de molt baix nivell des de zero.
  2. Ser capaç d'afegir codi de baix nivell que interaccioni amb un codi real complex i de molt baix nivell.
  3. Domini de les eines i metodologies de desenvolupament i depuració de codi de baix nivell.

Competències

  1. Capacitat per treballar efectivament en grups petits de persones per a la resolució d'un problema de dificultat gran.
  2. Capacitat per dissenyar sistemes, components o processos que s'ajustin a unes necessitats, utilitzant els mètodes, tècniques i eines més adients en cada cas.
  3. Capacitat d'abstracció. Capacitat d'enfrontar-se a problemes nous recorrent conscientment a estratègies que han estat útils en problemes resolts anteriorment.
  4. Capacitat de resoldre problemes aplicant els mètodes de la ciència i l'enginyeria.
  5. Capacitat i experiència en la programació de codi complex i de molt baix nivell.

Continguts

Hores estimades de:

T P L Alt L Ext. Est A Ext.
Teoria Problemes Laboratori Altres activitats Laboratori extern Estudi Altres hores fora d'horari fixat

1. Procés de boot i inicialització del sistema operatiu.
T      P      L      Alt    L Ext. Est    A Ext. Total 
1,0 0 4,0 0 5,0 0 0 10,0
Descripció del procés de boot i l'inicialització del sistema operatiu.
Descripció de l'entorn de desenvolupament sobre Linux i de les eines de compilació i depuració que s'utilitzaran al primer projecte.
  • Laboratori:
    Familiarització amb l'entorn de desenvolupament i amb les eines de compilació i depuració.
    Familiarització amb l'estructura de fitxers del sistema operatiu i comprensió del seu procés de boot i inicialització.
    Generació d'una imatge bootable d'un sistema operatiu.
  • Activitats de laboratori addicionals:
    Continuació del treball realitzat a les classes de laboratori.

2. Mecanismes d'entrada al sistema.
T      P      L      Alt    L Ext. Est    A Ext. Total 
2,0 0 8,0 0 10,0 0 0 20,0
Descripció de l'arquitectura del mode d'execució protegit: mode usuari i mode sistema.
Introducció als mecanismes d'entrada al sistema: excepcions, interrupcions i traps (crides al sistema).
Descripció de la programació i el tractament dels diferents mecanismes d'entrada al sistema (inicialització IDT, programació handlers i rutines de servei i implementació de la llibreria de crides al sistema).
  • Laboratori:
    Programació i tractament dels diferents mecanismes d'entrada al sistema: excepcions, interrupcions de rellotge i de teclat i crida a sistema "write".
  • Activitats de laboratori addicionals:
    Continuació del treball realitzat a les classes de laboratori.

3. Gestió bàsica de la memòria.
T      P      L      Alt    L Ext. Est    A Ext. Total 
1,0 0 4,0 0 5,0 0 0 10,0
Descripció de l'espai d'adreces d'un procés (espai logic vs. espai físic).
Gestió de la taula de pàgines: incidència en la creació de processos i en el canvi de context.
  • Laboratori:
    Implementació de les rutines per la gestió simple de la memòria.
  • Activitats de laboratori addicionals:
    Continuació del treball realitzat a les classes de laboratori.

4. Gestió i planificació de processos.
T      P      L      Alt    L Ext. Est    A Ext. Total 
3,0 0 12,0 0 15,0 0 0 30,0
Descripció de les estructures de dades bàsiques per la gestió de processos: PCB, llistes.
Descripció de les rutines per la gestió de processos: creació i destrucció de processos, canvi de context entre processos, planificació de processos i obtenció d'informació estadística dels processos.
  • Laboratori:
    Definició de les estructures de dades bàsiques per la gestió de processos
    Inicializació del procés inicial
    Implementació de les rutines de creació i destrucció de processos
    Implementació del canvi de context entre processos i d'una política per la seva planificació en la interrupció de rellotge
    Implementació d'un mecanisme per obtenir informació estadística dels processos
  • Activitats de laboratori addicionals:
    Continuació del treball realitzat a les classes de laboratori.

5. Gestió bàsica de l'entrada/sortida.
T      P      L      Alt    L Ext. Est    A Ext. Total 
2,0 0 8,0 0 10,0 0 0 20,0
Descripció de les rutines i estructures de dades per la gestió bàsica de l'entrada/sortida al teclat
Concepte de taula de canals.
Crides a sistema per la gestió de la taula de canals.
  • Laboratori:
    Definició de les estructures de dades bàsiques per la gestió del teclat.
    Implementació de la crida a sistema "read" sobre el teclat i de la interrupció de teclat.
    Incorporar al codi el concepte de taula de canals i crides a sistema per a la seva gestió.
  • Activitats de laboratori addicionals:
    Continuació del treball realitzat a les classes de laboratori.

6. Sincronització de processos: semàfors. Altres funcionalitats.
T      P      L      Alt    L Ext. Est    A Ext. Total 
1,0 0 4,0 0 5,0 0 0 10,0
Descripció de les estructures de dades per a la sincronització de processos mitjançant semàfors.
Crides a sistema per la gestió de semàfors.
Descripció d'altres funcionalitats que podran ser escollides pels alumnes per ser incorporades al sistema.
  • Laboratori:
    Implementació de les estructures de dades i crides a sistemes per la sincronització de processos mitjançant semàfors.
    Implementació de les estructures de dades i crides a sistemes associades a les noves funcionalitats.
  • Activitats de laboratori addicionals:
    Continuació del treball realitzat a les classes de laboratori.

7. Gestió dels dispositius a Linux: device drivers.
T      P      L      Alt    L Ext. Est    A Ext. Total 
1,0 0 4,0 0 5,0 0 0 10,0
Descripció dels conceptes de mòduls, dispositius i device drivers a Linux.
  • Laboratori:
    Implementació d'un device driver bàsic per la gestió d'un dispositiu lògic a Linux.
  • Activitats de laboratori addicionals:
    Continuació del treball realitzat a les classes de laboratori.

8. Implementació d'un device driver a Linux.
T      P      L      Alt    L Ext. Est    A Ext. Total 
4,0 0 16,0 0 20,0 0 0 40,0
Descripció del concepte d'un device driver. Descripció de les tècniques d'inserció de codi al kernel de Linux.
  • Laboratori:
    Implementació d'un device driver que gestioni informació del kernel de Linux.
  • Activitats de laboratori addicionals:
    Continuació del treball realitzat a les classes de laboratori.


Total per tipus T      P      L      Alt    L Ext. Est    A Ext. Total 
15,0 0 60,0 0 75,0 0 0 150,0
Hores addicionals dedicades a l'avaluació 2,5
Total hores de treball per l'estudiant 152,5

Projecte

Descripció

El projecte de sistemes operatius consta de dues parts:
Projecte 1: Implementació del nucli d'un sistema operatiu
Projecte 2: Implementació d'un device driver per Linux

Pla de desenvolupament

Cada projecte està organitzat en diverses parts. Per cada part, es farà un repàs dels conceptes teòrics associats i una descripció del projecte a realitzar.

En acabar cada una de les parts, es farà una entrega/seguiment parcial consistent en una entrevista i una demostració del funcionament del projecte.

Metodologia docent

A les classes de teoria es repassaran els conceptes bàsics de sistemes operatius que es necessiten pel projecte i es farà una descripció de l'enunciat del projecte.

A les classes de laboratori s'anirà implementant el projecte, generalment amb el suport del professor de laboratori. Tanmateix, l'alumne disposarà d'una quantitat d'hores de laboratori per continuar i acabar el projecte.

Mètode d'avaluació

Projecte 1: 70%
Projecte 2: 30%

Al llarg del curs es faran una sèrie d'entregues parcials (de seguiment) i una entrega final. Totes les entregues puntuen.

Cap entrega és obligatòria. En cas de que no s'entregui alguna part, quedarà una nota de 0 a la entrega corresponent.

Bibliografía bàsica

  • RUBINI, Alessandro Linux device drivers, 2nd ed., O'Reilly & Associates, Inc., 2001.
  • BOVET, Daniel P.; CESATI, Marco Understanding the Linux Kernel, O'Reilly & Associates, .
  • LOVE, Robert Linux Kernel Development. A practical guide to the design and implementation of the Linux kernel, Developer's Library, .

Bibliografía complementària

  • KERNIGHAN, Brian W and PIKE, Rob The Practice of Programming, Addison-Wesley Professional Computing Series, 1999.
  • SILBERSCHATZ, Abraham; GALVIN, Peter B Operating Systems Concepts, Addison Wesley, .
  • STALLINGS, William Operating Systems: Internals and Design Principles, Pearson Education, .

Enllaços web

  1. Obrir nova finestra http://www.xml.com/ldd/chapter/book/
    Linux device drivers


  2. Obrir nova finestra http://bochs.sourceforge.net/
    Bochs IA-32 Emulator Project


  3. Obrir nova finestra http://www.kernel.org/
    Linux source code


Capacitats prèvies

L'alumne ha de conèixer els fonaments bàsics de l'estructura d'un sistema operatiu.
A més, es requereixen coneixements de programació a baix nivell, preferiblement en els llenguatges de programació C i assemblador de l'i386. També són útils conceptes de programació en alt nivell així com conceptes d'estructures de dades. Finalment, és convenient que tingui experiència en l'ús del sistema operatiu linux i d'eines bàsiques de programació i depuració de programes.

Per tant, les assignatures que s'haurien de cursar abans d'aquesta són SO, EC2 i PRED.



 
logo FIB © Facultat d'Informàtica de Barcelona - webmaster@fib.upc.edu - RSS RSS