Saltar al contingut Menu
Mapa
  • Inici
  • Informació
  • Contacte
  • Mapa

Projecte de Sistemes Operatius (PROSO)

Crèdits Dept. Tipus Requisits
7.5 (6.0 ECTS) AC
  • Obligatòria per a l'EI
  • Optativa per a l'ETIG
  • Optativa per a l'ETIS
EC2 - Pre-correquisit per la EI , ETIG , ETIS
PRED - Pre-correquisit per la EI , ETIG
PS - Pre-correquisit per la ETIS
SO - Pre-requisit per la EI , ETIS
USO - Pre-requisit per la ETIG

Professors

Responsable:  (-)
Altres:(-)

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. Es obligatori assistir a aquestes classes amb suport de professor per tal de que el professor faci el seguiment del project.

Mètode d'avaluació

Projecte 1: 70%
Projecte 2: 30%

Durant el curs es faran dues entregues parcials (de seguiment) pel projecte 1 i una entrega final per a cada projecte. Totes les entregues puntuen, tot i que cap és imprescindible (si no es fa una entrega determinada, es puntua amb un 0). Durant les classes de laboratori, el tutor farà un seguiment dels estudiants per avaluar l'evolució del projecte. Després de cada entrega, el tutor farà saber a cada estudiant els aspectes del seu projecte que són incorrectes i que s'han de corregir/millorar de cara a les properes entregues. Al final de cada entrega, l'estudiant haurà de validar el codi que ha entregat. Això ho farà responent al seu tutor una sèrie de preguntes sobre els conceptes que ha hagut d'aplicar per al seu desenvolupament. L'avaluació de cada projecte tindrà en compte tres components: la correcció del codi entregat, una valoració global de l'evolució de l'estudiant i una nota de seguiment del projecte (que inclou les respostes donades al seu tutor tant a les classes de laboratori com en el qüestionari final de cada entrega).

Bibliografía bàsica

  • 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.

Bibliografía complementària

  • 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.

Enllaços web

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


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


  3. http://www.kernel.org/
    Linux source code


Capacitats prèvies

L'alumne ha de conèixer:
- Conceptes bàsics, estructures i algorismes d'un sistema operatiu: mecanismes d'entrada al sistema, gestió de processos, gestió d'entrada/sortida i gestió de memòria.
- L'ús a nivell d'usuari de les crides a sistema de Linux.
- Programació de baix nivell: Llenguatge C i ensamblador i386.
- Programació d'alt nivell: algorismes i estructures de dades.
- Eines bàsiques de desenvolupament de programes en C sobre Linux: Makefiles, compilador de C i depuradors.

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


Compartir

 
logo FIB © Facultat d'Informàtica de Barcelona - Contacte - RSS
Aquest web utilitza cookies pròpies per oferir una millor experiència i servei. En continuar amb la navegació entenem que acceptes la nostra política de cookies.
Versió clàssica Versió mòbil