Projecte de Sistemes Operatius ( PROSO )
| Crèdits: |
Departament: |
Tipus: |
Requisits: |
| 7.5 |
AC |
Obligatòria per l'EI
Optativa per l'ETIG
Optativa per l'ETIS
|
|
EC2
- Pre-requisit per l' EI , ETIG , ETIS
|
|
|
PRED
- Pre-requisit per l' EI , ETIG
|
|
|
PS
- Pre-requisit per l' ETIS
|
|
|
SO
- Pre-requisit per l' EI , ETIS
|
|
|
Professors
| Responsable: | Jordi García Almiñana (jordig ac.upc.edu). |
| Altres: | Jordi Guitart Fernandez (jguitart ac.upc.edu) Julita Corbalan Gonzalez (juli ac.upc.edu) M. Luisa Gil Gomez (marisa ac.upc.edu) Sergi Girona Turell (sergi ac.upc.edu) Toni Cortés Roselló (toni ac.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
- 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.
- 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.
- Conèixer el mecanisme d'inserció dinàmica de codi sobre un SO real: mòduls a linux.
- Conèixer el concepte de dispositiu especial a linux i el concepte de manegador de dispositiu (device driver).
Habilitats
- Ser capaç d'implementar un programa complex i de molt baix nivell des de zero.
- Ser capaç d'afegir codi de baix nivell que interaccioni amb un codi real complex i de molt baix nivell.
- Domini de les eines i metodologies de desenvolupament i depuració de codi de baix nivell.
Competències
- Capacitat per treballar efectivament en grups petits de persones per a la resolució d'un problema de dificultat gran.
- 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.
- Capacitat d'abstracció. Capacitat d'enfrontar-se a problemes nous recorrent conscientment a estratègies que han estat útils en problemes resolts anteriorment.
- Capacitat de resoldre problemes aplicant els mètodes de la ciència i l'enginyeria.
- 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:
Instal.lació l'entorn de desenvolupament i creació d'un disc d'arranc amb la rutina bàsica d'inicialització del sistema operatiu i el procés inicial.
- Activitats de laboratori addicionals:
Instal.lació de linux i de les eines de desenvolupament.
Implementació del primer projecte.
|
|
2. Mecanisme de crida al sistema: trap.
|
| 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. Mecanisme de crida al sistema: trap. Creació de la llibreria de crides al sistema i de la rutina de servei a les crides al sistema.
- Laboratori:
Implementació de la llibreria de crides al sistema i de la rutina de servei a les crides al sistema.
- Activitats de laboratori addicionals:
Implementació del primer projecte.
|
|
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'adreçament d'un procés. Inicialització de la taula de pàgines.
- Laboratori:
Implementació de les rutines per la gestió simple de la memòria.
- Activitats de laboratori addicionals:
Implementació del primer projecte.
|
|
4. Gestió bàsica del terminal.
|
| 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 del terminal: taula de canals d'un procés i rutines de lectura i escriptura.
- Laboratori:
Implementació de les rutines i estructures de dades per la gestió bàsica del terminal: taula de canals d'un procés i rutines de lectura i escriptura.
- Activitats de laboratori addicionals:
Implementació del primer projecte.
|
|
5. 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 rutines i estructures de dades bàsiques per la gestió de processos: creació i destrucció de processos, planificació de processos i rutina de servei al rellotge.
- Laboratori:
Implementació de les rutines i estructures de dades bàsiques per la gestió de processos: creació i destrucció de processos, planificació de processos i rutina de servei al rellotge.
- Activitats de laboratori addicionals:
Implementació del primer projecte.
|
|
6. Càrrega d'un fitxer executable.
|
| 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 càrrega d'un fitxer executable i canvi d'imatge d'un procés.
- Laboratori:
Implementació de les rutines de càrrega d'un fitxer executable i canvi d'imatge d'un procés.
- Activitats de laboratori addicionals:
Implementació del primer projecte.
|
|
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 |
|
Concepte i ús dels mòduls a linux.
Concepte i ús dels dispositius a linux.
- Laboratori:
Implementació d'un mòdul bàsic per la gestió d'un dispositiu lògic a linux.
- Activitats de laboratori addicionals:
Implementació del segon projecte.
|
|
8. Implementació d'un manegador de dispositiu.
|
| 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 manegador de dispositius (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:
Implementació del primer projecte.
|
| - 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.
El primer projecte tindrà dues entregues de seguiment parcials i una entrega final. El segon projecte tindrà una entrega de seguiment parcial i una entrega final.
Mètode d'avaluació
Projecte 1: 60%
Projecte 2: 40%
El projecte 1 tindrà dues entregues parcials (de seguiment) i una entrega final. El projecte 2 tindrà una entrega parcial (de seguiment) i una entrega final. Totes les entregues puntuen.
Projecte 1.
- entrega parcial 1: 10%
- entrega parcial 2: 10%
- entrega final: 40% (total projecte 1 es 60%)
Projecte 2.
- entrega parcial: 10%
- entrega final: 30% (total projecte 2 es 40%)
Cap entrega és obligatòria. En cas de que no s'entregui alguna part, quedara una nota de 0 a la entrega corresponent.
Bibliografía bàsica
- RUBINI, Alessandro Linux device drivers, 2nd ed., O'Reilly & Associates, Inc., 2001.
Bibliografía complementària
- KERNIGHAN, Brian W and PIKE, Rob The Practice of Programming, Addison-Wesley Professional Computing Series, 1999.
Enllaços web
(Informació no introduïda)
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 EDA.
|