Responsable: | (-) |
Otros: | (-) |
Créditos | Dept. |
---|---|
7.5 (6.0 ECTS) | AC |
Responsable: | (-) |
Otros: | (-) |
1. Conocer de forma práctica cómo funciona internamente un sistema operativo (SO). 2. Ser capaz de implementar desde cero los componentes básicos del núcleo de un SO. 3. Ser capaz de desarrollar nuevas funcionalidades sobre un SO real.
Horas estimadas de:
T | P | L | Alt | L Ext. | Est | O. Ext. |
Teoria | Problemas | Laboratorio | Otras actividades | Laboratorio externo | Estudio | Otras horas fuera del horario fijado |
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
---|---|---|---|---|---|---|---|---|---|---|
2,0 | 0 | 8,0 | 0 | 10,0 | 0 | 0 | 20,0 | |||
Descripción de la arquitectura del modo de ejecución protegido: modo usuario y modo sistema.
Introducción a los mecanismos de entrada al sistema: excepciones, interrupciones y traps (llamadas al sistema). Descripción de la programació y el tratamiento de los diferentes mecanismos de entrada al sistema (inicialización IDT, programación handlers y rutinas de servicio e implementación de la librería de llamadas al sistema).
|
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
---|---|---|---|---|---|---|---|---|---|---|
1,0 | 0 | 4,0 | 0 | 5,0 | 0 | 0 | 10,0 | |||
Descripción del espacio de direcciones de un proceso (espacio lógico vs. espacio físico).
Gestión de la tabla de páginas: incidencia en la creación de procesos y en el cambio de contexto.
|
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
---|---|---|---|---|---|---|---|---|---|---|
3,0 | 0 | 12,0 | 0 | 15,0 | 0 | 0 | 30,0 | |||
Descripción de las estructuras de datos básicas para la gestión de procesos: PCB, listas.
Descripción de las rutines para la gestión de procesos: creación y destrucción de procesos, cambio de contexto entre procesos, planificación de procesos y obtención de información estadística de los procesos.
|
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
---|---|---|---|---|---|---|---|---|---|---|
2,0 | 0 | 8,0 | 0 | 10,0 | 0 | 0 | 20,0 | |||
Descripción de las rutines y estructuras de datos para la gestión básica de la entrada/salida en el teclado
Concepto de tabla de canales. Llamadas al sistema para la gestión de la tabla de canales.
|
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
---|---|---|---|---|---|---|---|---|---|---|
1,0 | 0 | 4,0 | 0 | 5,0 | 0 | 0 | 10,0 | |||
Descripción de las estructuras de datos para la sincronización de procesos mediante semáforos.
Llamadas al sistema para la gestión de semáforos. Descripción de otras funcionalidades que podrán escogerse por los alumnos para ser incorporadas al sistema.
|
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
---|---|---|---|---|---|---|---|---|---|---|
1,0 | 0 | 4,0 | 0 | 5,0 | 0 | 0 | 10,0 | |||
Descripción de los conceptos de módulos, dispositivos y device drivers en Linux.
|
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
---|---|---|---|---|---|---|---|---|---|---|
4,0 | 0 | 16,0 | 0 | 20,0 | 0 | 0 | 40,0 | |||
Descripción del concepto de un device driver. Descripción de las técnicas de inserción de código en el kernel de linux.
|
Total por tipo | T | P | L | Alt | L Ext. | Est | O. Ext. | Total |
15,0 | 0 | 60,0 | 0 | 75,0 | 0 | 0 | 150,0 | |
Horas adicionales dedicadas a la evaluación | 2,5 | |||||||
Total horas de trabajo para el estudiante | 152,5 |
El proyecto de sistemas operativos consta de dos partes:Proyecto 1: implementación del núcleo de un sistema operativo
Proyecto 2: implementación de un device driver para linux
Cada proyecto está organizado en varias partes. Para cada parte se hará un repaso de los conceptos teóricos asociados y una descripción del proyecto a realizar.
Al acabar cada una de las partes, se hará una entrega/seguimiento parcial consistente en una entrevista y una demostración del funcionamiento del proyecto.
En las clases de teoría se repasarán los conceptos básicos de sistemas operativos que se necesitan para el proyecto y se hará una descripción del enunciado del proyecto.
En las clases de laboratorio se irá implementando el proyecto, generalmente con el apoyo del profesor de laboratorio. Aun así, el alumno dispondrá de una cantidad de horas de laboratorio para continuar y acabar el proyecto.
Es obligatorio asistir a las clases con apoyo del profesor para que el profesor pueda evaluar la evolución del proyecto.
Proyecto 1: 70%
Proyecto 2: 30%
A lo largo del curso se harán dos entregas parciales (de seguimiento) para el proyecto 1 y una entrega final para cada proyecto. Todas las entregas puntúan, aunque ninguna es imprescindible (si no se hace una entrega determinada, se puntúa con un 0). Durante las clases de laboratorio, el tutor hará un seguimiento de los estudiantes para evaluar la evolución del proyecto. Después de cada entrega, el tutor hará saber a cada estudiante los aspectos de su proyecto que son incorrectos y que debe corregir/mejorar de cara a las siguientes entregas. Al final de cada entrega, el estudiante tendrá que validar el código que ha entregado. Para ello, responderá a su tutor una serie de preguntas sobre los conceptos que ha aplicado para su desarrollo. La evaluación de cada proyecto tendrá en cuenta tres componentes: la corrección del código entregado, una valoración global de la evolución del estudiante y una nota de seguimiento del proyecto (que incluye las respuestas dadas a su tutor tanto en las clases de laboratorio como en el cuestionario final de cada entrega).
El alumno debe conocer:
- Conceptos básicos, estructuras y algoritmos de un sistema operativo: mecanismos de entrada al sistema, gestión de procesos, gestión de entrada/salida y gestión de memoria.
- La utilización a nivel usuario de les llamadas a sistema de Linux.
- Programación de bajo nivel: Lenguaje C y ensamblador i386.
- Programación de alto nivel: algoritmos y estructures de datos.
- Herramientas básicas de desarrollo de programes en C sobre Linux: Makefiles, compilador de C y depuradores.
Por lo tanto, las asignaturas que se deberán cursar antes de esta son SO, EC2 y PRED.