|
Crèdits: |
Departament: |
Tipus: |
Requisits: |
||||||||
|
7.5 |
AC |
· Obligatòria per l'EI · Optativa per l'ETIG ·
Optativa per l'ETIS |
|
|
Aquesta assignatura té 7.5 crédits asignats, aixó implica un tota
d'hores de treball de 150 hores per curs. Recordeu que té un alt components
de treball extra pel tipus de assignatura. No és recomanable matricular-se
conjuntament amb altres assignatures de projecte. |
Els estudiants disposeu d'un fòrum de discussió de l'assignatura al mateix
Racó.
Deixarem els avissos i notes al Raco
de
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: dimarts de 10:00 a 12:00 i de
16:00 a 18:00, i dimecres de 11:00 a 13:00
Juan Jose Costa (email:
jcosta )
Despatx: C6-117
Consultes: dilluns de 10:00 a 12:00 i de 17:00 a
18:00, i dijous de 10:00 a 13:00
Marisa Gil (email: marisa)
Despatx: C6-110
Consultes: dimarts i dijous de 10:00 a 12:00
Rubén González (email: gonzalez )
Despatx: D6-212
Consultes: dimecres de 12:00 a 14:00 i de
17:00 a 19:00, i dijous de 15:00 a 17:00
Jordi Guitart (email: jguitart)
Despatx: C6-205
Consultes: dimarts de 15:00 a 18:00 i dijous de 14:00 a 17:00
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.
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
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.

Les
classes de teoria s’han d’haver preparat prèviament. 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.
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
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 amb una entrevista i demostració del funcionament del
projecte. Cada entrega parcial es farà via racó i ha d'incloure,
a més a més del codi del vostre projecte,
El joc de proves ha de demostrar:
Durant les entrevistes es faran preguntes tant de la vostra
pràctica com de sistemes operatius en general.
Juntament amb la ú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.
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. Aquesta primera sessió no té entrevista amb el tutor però és obligatòria fer-la. Es podran preguntar aspectes relacionats amb aquesta entrega durant qualsevol de la resta de les entrevistes. El fet de no saber utilitzar l'entorn de treball, per exemple el debugger o comandes com l'objdump podria suposar perdre punts a l'entrega corresponent.
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 28/09 que es farà via Racó. Durant la setmana següent es faran les entrevistes amb el tutor.
E1.2. La tercera part correspon principalment a la gestió de processos. Aquesta part correspon a la segona entrega que es farà el dia 26/10 via Racó. Durant la setmana següent es faran les entrevistes amb el vostre tutor.
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 23/11 via Racó. Les entrevistes es faran la setmana següent amb el
vostre tutor.
Entrega P2
E2.1 (entrega única P2) La del segon projecte es farà el dia 14/12. Les entrevistes es faran la última setmana de curs.
INFORMES PREVIS
Per evitar aquells cassos en que arribeu a les entrevistes sense haver validat les vostres propostes amb el vostre tutor hem incorporat la obligatorietat d’entregar uns informes previs a les entregues. Haureu d'entregar un informe previ a la entrega 1.2, 1.3 i al P2. (E2.1). Aquests informes seran de com a màxim un parell de fulls perquè l’objectiu no és donar feina addicional sinó que és validar el que penseu fer. Per tant, idealment els hauríeu de validar abans de començar a picar codi. Sempre s'han de validar amb el vostre tutor i en cas que no pugueu anar al laboratori haureu de quedar en algun moment fora d’hores de laboratori. El fet de no validar amb el tutor aquest informe previ implicarà tenir un 0 en aquesta entrega.
Els informes previs es faran la primera setmana de teoria
de cada entrega. Aquest
document descriu que heu d'entregar en el cas dels informes previs del P1 (és
una guia que heu d’aplicar segons la entrega en concret) (guidelines to write the prelimary reports for P1).
Test amb conceptes previs que tothom hauria de
conèixer.
- Enunciat
Projecte 1 (english
version: deliver E1.3 not included)
- Transparencies
de l’assignatura (versió
mht)
- Per la entrega final: Descripció de la documentació a entregar i que s'ha de fer al projecte 1 ZEOS ( guidelines to write the final documentation of P1)
-
Llibreries amb tests:
Aquí teniu unes llibreries amb uns tests que us poden ajudar a validar el vostre
codi. Tingueu en compte que fer un bon joc de proves forma part de
l'avaluació del vostre projecte i que el vostre
joc de proves hauria de ser suficient per a validar el vostre codi.
Amb aquestes llibreries només volem ajudar-vos a detectar si el
vostre joc de proves és incomplet, però no serveixen per a saber
quines proves falten, o, dit d'una altra manera, on és l'error del
vostre codi. Tingueu en compte també 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.
- Apèndix programació en C: Convencions i punters
- Enunciat Projecte 2
El projecte 1 té tres entregues:
Projecte 2: 30%
(Consulteu la guia docent de
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 primer projecte tindrà dues entregues de seguiment parcials i una entrega
final. El segon projecte tindrà una només una entrega final.
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
The Linux Documentation
project
Pàgina web de
Willian Stallings (amb transparencies del llibre i altres links molt
interesants)
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
![]()
Aquesta obra està subjecta a una Llicència de Creative
Commons.
Última modificació:24 abril, 2008