Projecte de Sistemes Operatius ( PROSO)

Curs 2008/2009 (quadrimestre primavera)

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

 

 

 

Aquesta assignatura té 7.5 crèdits assignats, això implica un total de 150 hores de treball per curs. Recordeu que té un alt component de treball extra pel tipus d'assignatura. No és recomanable matricular-se conjuntament amb altres assignatures de projecte.

 


 

Professors

Objectius de l'assignatura

Projectes

Contingut detallat

Metodologia docent

Avaluacio

Bibliografia i documentació

Conceptes previs

Planificació

 

        Els estudiants disposeu d'un fòrum de discussió de l'assignatura al mateix Racó.   
        Deixarem els avissos i notes al Raco de la FIB


Professors

Per consultes sempre confirmeu prèviament per e-mail. Totes les adreces d'e-mail acaben amb @ac.upc.edu

Yolanda Becerra (coordinadora, email: yolandab)

   Despatx: C6-206

   Consultes: Dilluns de 11:00 a 13:00 i de 15:00 a 17:00, i Dijous de 10:00 a 12:00

 Juan Jose Costa (email: jcosta )

    Despatx:  C6-117
    Consultes: Dimarts de 10:00 a 12:00 i de 16:00 a 17:00, i Dijous de 15:00 a 17:00 i de 18:00 a 19:00

Rubén González (email: gonzalez )

   Despatx: D6-212

   Consultes: Dijous de 15:00 a 18:00 i Divendres de 11:00 a 14:00  

 

 

Tornar


Objectius de l'assignatura

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.

Tornar


Conceptes previs

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.

Tornar


PLANIFICACIó

 

Aquesta és la planificació del curs per setmanes. Potser modificada per cada grup. En aquest cas s’avisaria o be a classe de teoria o mitjançant una nota al raco.

 

 

Els estudiants han de preparar previament les classes de teoria. Això vol dir haver llegit prèviament la documentació d’aquesta part i haver repassat aquells conceptes d’assignatures anteriors que no es tinguin clars.


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 professor anirà a unes hores de laboratori prèviament concertades.

El projecte de sistemes operatius consta de dues parts:
Projecte 1: implementació del nucli d'un sistema operatiu . En aquest projecte utilitzarem l’eina Bochs.
Projecte 2: implementació d’un device driver per Linux


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). 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 projecte, l'estudiant haurà de validar el codi que ha entregat. Això ho farà responent per escrit 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 les respostes donades al seu tutor per validar el codi. El primer projecte tindrà dues entregues de seguiment parcials i una entrega final. El segon projecte tindrà una només una entrega final.


Tornar

 


Projectes

Cada entrega parcial es farà via racó. Juntament amb l'última entrega de cada projecte es farà també entrega de la documentació global del projecte.  És convenient per tant anar preparant-la durant tot el projecte. També al final de cada projecte, els estudiants hauran de validar el projecte que han entregat responent per escrit un conjunt de preguntes sobre els conceptes aplicats en el desenvolupament del seu codi.

Entregues P1

P0 : La primera es una sessió introductòria, en la qual s’introdueixen les eines que s’utilitzaran  durant el projecte i es treballa el mecanisme d’arrencada del sistema. Tot i que aquesta primera sessió no té nota associada és obligatori fer-la. Al qüestionari final del projecte es podran preguntar aspectes relacionats amb aquesta entrega. El fet de no saber utilitzar l'entorn de treball, per exemple el debugger o comandes com l'objdump podria suposar perdre punts a la nota del projecte.

E1.1: La segona part correspon als mecanismes d'entrada al sistema: interrupcions (rellotge i teclat), excepcions i crides a sistema. Aquesta part correspon a la primera entrega parcial que es farà el dia 27/02 que es farà via Racó.

E1.2. La tercera part correspon principalment a la gestió de processos. Aquesta part correspon a la segona entrega que es farà el dia 27/3 via Racó

E1.3. La quarta part correspon a la gestió d’Entrada/sortida. En aquesta entrega s'haurà d'entregar la documentació i el codi de tot el projecte (fitxer .tar.gz), així com també fer una entrevista amb el vostre tutor. Aquesta entrega es farà el dia 1/5 via Racó.

Entrega P2

E2.1 (entrega única P2) La del segon projecte es farà el dia 22/5.

ENUNCIATS

Test amb conceptes previs que tothom hauria de conèixer.

PROJECTE 1

- Fitxers bàsics de Zeos

- Enunciat Projecte 1

- Transparencies de l’assignatura

- Per la entrega final: Descripció de la documentació a entregar i que s'ha de fer al projecte 1 ZEOS

- Llibreries amb tests : Aquest paquet conté unes llibreries amb uns tests que us poden ajudar a validar el vostre codi. Tingueu en compte que hi han coses que no es poden control.lar amb un joc de proves genèric per tothom (això vol dir que hi poden haver errors en el vostre codi que aquestes llibreries no detecti). Per executar els tests només heu de cridar la rutina runjp des del user.c i enllaçar l'executable d'usuari amb la llibreria corresponent (al paquet hi trobareu un fitxer README amb unes instruccions d'us més detallades).

- Apèndix assemblador i386

- Apèndix preprocessador C

- Apèndix programació en C: Convencions i punters

PROJECTE 2

- Enunciat Projecte 2

- Transparències Projecte 2

Tornar


Avaluació

Normativa còpies

El codi font de les vostres pràctiques ha de ser totalment original. Si en algun cas consulteu algun codi que no és original vostre, heu d'incloure una referència indicant el seu origen. Si no apareix aquesta referència es considerarà un cas de còpia i aquella entrega tindrà una nota de 0.

A final de curs els estudiants hauran de validar el codi que han entregat responent per escrit un conjunt de preguntes sobre els conceptes necessaris per a desenvolupar el codi dels seus projectes. El resultat d'aquest qüestionari farà mitja amb la nota treta amb les entregues de cada projecte.

Projecte 1: 70%

 

    El projecte 1 té tres entregues:


    Nota final projecte 1: 50% entregues, 50% qüestionari

   

Projecte 2: 30%


    Nota final projecte 2: 50% entregues, 50% qüestionari


Tornar


 

Bibliografia i documentació

Bibliografia bàsica

Bibliografia complementària

Links d’utilitat

Sobre bochs

En aquest link trobareu un video sobre com instalar bochs 2.3 en Ubuntu. Es cortesia d'un company vostre del curs 2006-2206Q1 (Lluis M. García)
     http://www.labav1.org/bochs_proso/bochs_proso.html

Bochs debugging

Instal.lació de Bochs

Sobre Linux

The Linux Documentation project

Linux i386 Boot Code HOWTO

Linux 2.4.x Initialization for IA-32 HOWTO

Linux kernel online book

Linux Cross-Reference

Linux source code

Linux kernel coding style

Sobre S.O en general

Pàgina web de Willian Stallings (amb transparencies del llibre i altres links molt interesants)

Sobre arquitectura

Transparencias de las asignatura ec2 de plan nuevo. Código ensamblador

Manuals sobre l'arquitectura del PC i manuals tècnica de Intel 80x86

Intel, Intel Architecture Software Developer's Manual, vol 3: System programming

Sobre compiladors

Manuales GCC

Manual us Makefile

 

Tornar


Creative Commons License
Aquesta obra està subjecta a una Llicència de Creative Commons.

Última modificació:24 abril, 2008