Requisitos
- Prerrequisito:
EC
- Prerrequisito:
IC
La asignatura ofrece una visión del SO desde tres perspectivas: servicios que ofrece el sistema a los usuarios-programas y su utilización, principales elementos de diseño internos de un kernel (estructuras de datos y algoritmos) y finalmente relaciona estos dos componentes para entender cómo afecta al rendimiento de un sistema la ejecución de los programas de forma concurrente (o paralela según la arquitectura). La asignatura se centra en el contexto del kernel de un SO (dentro de un nodo), no entrando en aspectos de red.
Profesorado
Responsable
-
Yolanda Becerra Fontal (
)
Otros
-
Adrià Armejach Sanosa (
)
-
Amador Millán Vizuete (
)
-
Carlos Garcia Calatrava (
)
-
David Álvarez Robert (
)
-
Enric Morancho Llena (
)
-
Javier Verdu Mula (
)
-
Jordi Fornes de Juan (
)
-
Jordi Guitart Fernandez (
)
-
Jordi Torres Viñals (
)
-
Julita Corbalan Gonzalez (
)
-
Pere Barlet Ros (
)
Competencias
Competencias Técnicas
Competencias técnicas comunes
-
CT2 - Utilizar de forma apropiada teorías, procedimientos y herramientas en el desarrollo profesional de la ingeniería informática en todos sus ámbitos (especificación, diseño, implementación, despliegue -implantación- y evaluación de productos) de manera que se demuestre la comprensión de los compromisos adoptados en las decisiones de diseño.
-
CT2.3
- Diseñar, desarrollar, seleccionar y evaluar aplicaciones, sistemas y servicios informáticos, y al mismo tiempo asegurar su fiabilidad, su seguridad y su calidad, conforme a principios éticos y a la legislación y la normativa vigente.
-
CT3 - Demostrar conocimiento y comprensión del contexto organizativo, económico y legal en el que desarrolla su trabajo (Conocimiento adecuado del concepto de empresa, marco institucional y jurídico de la empresa, organización y gestión de empresas.)
-
CT3.6
- Demostrar conocimiento de la dimensión ética en la empresa: la responsabilidad social y corporativa en general y, en particular, las responsabilidades civiles y profesionales del ingeniero en informática.
-
CT6 - Demostrar conocimiento y comprensión del funcionamiento interno de un computador y del funcionamiento de las comunicaciones entre ordenadores.
-
CT6.1
- Demostrar conocimiento y tener capacidad para administrar y mantener sistemas, servicios y aplicaciones informáticas.
-
CT6.2
- Demostrar conocimiento, comprensión y capacidad de evaluar la estructura y la arquitectura de los computadores, así como los componentes básicos que los conforman.
-
CT6.3
- Demostrar conocimiento de las características, funcionalidades y estructura de los Sistemas Operativos que permita su uso adecuado, administración y diseño, así como la implementación de aplicaciones basadas en sus servicios.
-
CT7 - Evaluar y seleccionar plataformas de producción hardware y software para la ejecución de aplicaciones y de servicios informáticos.
-
CT7.1
- Demostrar conocimiento de las métricas de calidad y saber utilizarlas.
-
CT7.2
- Evaluar sistemas hardware/software en función de un criterio de calidad determinado.
-
CT7.3
- Determinar los factores que inciden negativamente en la seguridad y la fiabilidad de un sistema hardware/software, y minimizar sus efectos.
-
CT8 - Planificar, concebir, desplegar y dirigir proyectos, servicios y sistemas informáticos en todos los ámbitos, liderando su puesta en marcha, su mejora continua y valorando su impacto económico y social
-
CT8.4
- Elaborar el pliego de condiciones técnicas de una instalación informática que cumpla los estándares y la normativa vigente.
Competencias Transversales
Actitud frente al trabajo
-
G8 [Avaluable] - Tener motivación para la realización profesional y para afrontar nuevos retos, así como una visión amplia de las posibilidades de la carrera profesional en el ámbito de la Ingeniería en Informática. Tener motivación por la calidad y la mejora continua, y actuar con rigor en el desarrollo profesional. Capacidad de adaptación a los cambios organizativos o tecnológicos. Capacidad de trabajar en situaciones de falta de información y/o con restricciones temporales y/o de recursos.
-
G8.1
- Tener una visión amplia de las posibilidades de la carrera profesional en el ámbito de la Ingeniería en Informática. Tener una actitud positiva y receptiva respecto de la calidad en el desarrollo de la profesión.
Objetivos
-
Conocer las principales funciones de un SO y el porqué de su necesidad (abstracción / cirtualització del hardware, seguridad, eficiencia)
Competencias relacionadas:
CT6.1,
CT6.3,
CT7.1,
CT7.2,
CT7.3,
CT6.2,
CT8.4,
CT3.6,
CT2.3,
-
Entender cómo ofrece y gestiona el SO sus servicios y funcionalidades internamente mediante datos de representación y gestión de los recursos, algoritmos y soporte hardware
Competencias relacionadas:
CT6.1,
CT6.3,
CT7.1,
CT7.2,
CT7.3,
CT6.2,
CT8.4,
CT3.6,
CT2.3,
-
Tener una visión general de los sistemas informáticos: conocer las diferentes interfaces y componentes que interactúan con el SO (hardware, librerías de sistema, librerías de lenguaje + programas de usuario)
Competencias relacionadas:
CT6.1,
CT6.3,
CT7.1,
CT7.2,
CT7.3,
CT6.2,
CT8.4,
CT3.6,
CT2.3,
-
Por cada funcionalidad básica del sistema (gestión de procesos, memoria y e/ s): conocer cómo influyen aspectos básicos de las diferentes arquitecturas y entornos que pueden soportar los sistemas operativos
Competencias relacionadas:
CT7.3,
CT8.4,
-
Por cada funcionalidad básica del sistema (gestión de procesos, memoria y E/S): Entender el elemento hardware que pretendemos virtualizar
Competencias relacionadas:
CT6.1,
CT6.3,
CT7.1,
CT7.2,
CT7.3,
CT6.2,
CT8.4,
CT3.6,
CT2.3,
-
Por cada funcionalidad básica del sistema (gestión de procesos, memoria y E/S): conocer y ser capaz de usar la funcionalidad básica que ofrece el sistema al usuario.
Competencias relacionadas:
CT6.1,
CT7.3,
CT2.3,
-
Por cada funcionalidad básica del sistema (gestión de procesos, memoria y E/S): conocer los elementos básicos de diseño (tipo de datos, estructuras de gestión de datos y algoritmos de gestión) para ofrecer esta funcionalidad.
Competencias relacionadas:
CT6.3,
CT7.3,
CT2.3,
-
Por cada funcionalidad básica del sistema (gestión de procesos, memoria y E/S): conocer la relacion básica con la arquitectura de los elementos de diseño básicos en SO
Competencias relacionadas:
CT6.3,
CT7.3,
CT2.3,
-
Por cada recurso básico que gestiona el SO (procesos, memoria virtual y E/S) conocer las métricas básicas para evaluar un servicio de sistema y ser capaz de aplicarlas a nivel teórico.
Competencias relacionadas:
CT7.1,
CT7.2,
-
Por cada recurso básico que gestiona el sistema (procesos, memoria y E/S), conocer y ser capaz de utilizar las herramientas básicas del sistema para analizar una aplicación así como para monitorizar el estado del sistema para detectar posibles problemas.
Competencias relacionadas:
CT6.1,
CT6.3,
CT7.3,
CT2.3,
-
Entender las implicaciones, desde el punto de vista de sistema y de usuario, de un sistema multi-usuario y paralelo.
Competencias relacionadas:
CT7.1,
CT7.3,
CT6.2,
CT8.4,
-
Ser capaz de participar con actitud proactiva en el desarrollo profesional, demostrando asistencia, puntualidad y respeto
Competencias relacionadas:
G8.1,
-
Ser capaz de mostrar motivación por la calidad y la mejora continua
Competencias relacionadas:
G8.1,
Contenidos
-
Introducción a los Sistemas Operativos
En este capítulo se dará una visión de lo que es un SO los recursos hardware que gestiona, cuáles son los servicios que ofrece, funcionalidades etc. También se introducirán los diferentes tipos de usuarios y aplicaciones que interactúan con el SO así como las diferentes formas de acceder.
-
Gestión de procesos
En este capítulo se tratarán los siguientes puntos: Concepto de proceso. Contexto de un proceso. La vida de un proceso. Concepto de planificación de procesos. Concepto de concurrencia. Mecanismo de cambio de contexto. Gestión de eventos (signals). Concepto de flujo. Concepto de concurrencia. Problemas associados a la concurrencia. Comunicación entre procesos: memoria compartida y paso de mensajes (sólo a nivel de concepto).. Servicios básicos ofrecidos por el sistema asociados a procesos y flujos: llamadas al sistema y gestión de la eficiencia, seguridad entre usuarios, fiabilidad, etc. Idea / Contexto: registros, pila, memoria (espacio de direcciones) / estados / eventos (signals) / usuario / variables de entorno. Representación interna de procesos y flujos en linux así como el algoritmo round robin de planificación a modo ilustrativo .
-
Gestión de memoria
En este capítulo se tratarán los siguientes puntos: Requerimientos en cuanto a memoria de un sistema multiprogramado de propósito general (espacio de direcciones de un proceso y necesidad de la memoria virtual). Servicios básicos de gestión de memoria ofrecidos por el sistema: apoyo a la traducción de direcciones, protección de procesos, carga de procesos, memoria dinámica, gestión de la memoria virtual, etc. Estructuras y algoritmos para la Gestión de la memoria virtual.
-
Gestión de la entrada / salida
En este tema se tratarán los siguientes puntos: Características y tipos de dispositivos. Concepto de Independencia de dispositivos. Relación entre la gestión de entrada / salida y la gestión de procesos: operaciones bloqueantes. Tipos de dispositivos lógicos: pipes, consola, sockets y ficheros. Servicios básicos y estructuras de datos necesarias. Gestión del espacio de nombres. Representación interna y algoritmos: Apoyo a la gestión eficiente de los dispositivos (buffering, spooling, caching, bloqueo).( traducció:)En este tema se tratarán los siguientes puntos: Características y tipos de dispositivos. Concepto de Independencia de dispositivos. Relación entre la gestión de entrada / salida y la gestión de procesos: operaciones bloqueantes. Tipos de dispositivos lógicos: pipas, consola, sockets y ficheros. Servicios básicos y estructuras de datos necesarias. Gestión del espacio de nombres. Representación interna y algoritmos: Apoyo a la gestión eficiente de los dispositivos (buffering, spooling, caching, bloqueo).
Concepto de Sistema de Ficheros (SF) y para qué sirve. Arquitectura en capas de un SF. Introducción al VFS. Diferentes tipos de ficheros y servicios básicos asociados a archivos. Organización interna en Linux: directorios, i-nodos, etc. Organización del espacio en el disco: fragmentación,, particiones, servicios asociados a SF's, gestión del espacio libre / ocupado. Fiabilidad a los SF's.
Actividades
Actividad
Acto evaluativo
Desarrollo del tema de Introducción a los SO
Durante esta actividad se dará al alumno una visión general de lo que es un SO, cuáles son sus funcionalidades y servicios y cuáles son los principales componentes del sistema que iremos desarrollando durante el curso.
Objetivos:
1
2
3
Contenidos:
Familiarización con el entorno de trabajo
Durante esta actividad se utilizarán comandos básicos para trabajar con un entorno de trabajo Linux, especialmente para trabajar desde la línea de comandos pero también entender la relación con un entorno gráfico. Se practicarán pedidos para navegar por el sistema de ficheros, para manipular ficheros, etc.
Objetivos:
1
2
3
12
13
Contenidos:
Programación en C y desarrollo de proyectos
Durante esta actividad se trabajará la programación en C y se darán algunas guías básicas para desarrollar los pequeños proyectos que harán los alumnos en las sesiones de laboratorio de forma que tengan una estructura similar en cuanto a herramientas, organización de archivos etc.
Objetivos:
1
2
3
12
13
Contenidos:
Desarrollo de los conceptos de Teoría asociados a Procesos
Durante estas horas se practicarán los conceptos y servicios básicos relacionados con procesos y flujos. Se explicarán los conceptos relacionados con la organización y gestión internas que hace el SO para ofrecer estos servicios y funcionalidades. También se tratarán aspectos relacionados con la eficiencia de los sistemas, fiabilidad, protección, etc.
Objetivos:
4
5
6
7
8
9
10
11
Contenidos:
Servicios básicos relacionados con procesos
Durante esta actividad se practicarán las llamadas al sistema básicas que podemos encontrar en un sistema Linux para crear un proceso, cambiar su ejecutable, esperar el proceso y finalizar el proceso. También practicaremos pedidos desde un punto de vista de administrador relacionadas con la monitorización de procesos.
Objetivos:
6
7
10
11
12
13
Contenidos:
Utilización de flujos y servicios avanzados de procesos
Durante esta actividad practicaremos con flujos (POSIX). También introduciremos la gestión de eventos entre procesos (signals) tanto como mecanismo de comunicación como servicio de gestión de procesos avanzado. Se trabajarán aspectos relacionados con la concurrencia de los procesos.
Objetivos:
4
5
6
7
10
11
12
13
Contenidos:
Gestión de problemas. Sesión de problemas
Durante esta sesión se resolveran ejercicios de gestión de problemas
Objetivos:
4
5
6
7
8
9
10
11
Contenidos:
Desarrollo de los conceptos asociados a gestión de memoria
Durante estas horas se practicarán los conceptos básicos relacionados con la gestión de la memoria, se describirán los servicios y funcionalidades que ofrece el sistema a los usuarios (incluyendo las optimizaciones que se hacen típicamente a nivel de librería) y se describirán los mecanismos y algoritmos de gestión internos del kernel para gestionar la memoria virtual.
Objetivos:
4
5
6
7
8
9
10
11
Contenidos:
Servicios básicos para gestionar memoria
Durante esta sesión de laboratorio se practicará con servicios básicos para gestionar la memoria de los procesos y algunos comandos para monitorizar el estado de los procesos
Objetivos:
5
6
12
13
Contenidos:
Medidas de rendimiento y planificación de procesos. Impacto del entorno multiproceso.
Se evaluarán diferentes programas con diferentes configuraciones en cuanto a procesos y carga del sistema para ver analíticamente cómo influye en las aplicaciones su propia estructura y el estado del sistema.
Objetivos:
4
5
6
7
8
9
11
12
13
Contenidos:
Primer control evaluación continuada
Este control incluirá los temas de Introducción, Procesos y memoria. Este examen puede incluir tanto preguntas teóricas como problemas.
Objetivos:
1
2
3
4
5
6
7
8
9
Semana:
9 (Fuera de horario lectivo)
Desarrollo de los conceptos asociados a la entrada y salida de datos
Durante estas horas se explicarán los conceptos relacionados con la gestión de la entrada / salida de datos: tipo de dispositivos, servicios y funcionalidades relacionados con la entrada / salida y gestión del sistema de la independencia de dispositivos.
Objetivos:
4
5
6
7
8
9
10
11
Contenidos:
Servicios básicos de gestión entrada y salida
En esta sesión se practicarán servicios básicos para gestionar la entrada y salida de procesos. Se harán ejercicios para consolidar los conceptos relacionados con la independencia de dispositivos.
Objetivos:
5
6
12
13
Contenidos:
Servicios avanzados para gestionar la entrada y salida
Durante esta sesión se profundizarán en servicios y comandos más complejos para gestionar la entrada y salida de procesos así como la relación con otros servicios del sistema como por ejemplo la gestión de eventos (signals)
Objetivos:
6
7
11
12
13
4
5
Contenidos:
Sistemas de ficheros y Ficheros de datos
Durante esta sesión se practicaran comandos relacionados con la gestión del sistema de ficheros y se practicará con llamadas a sistema específicas de ficheros de datos
Objetivos:
5
6
7
8
9
12
13
Contenidos:
Gestión entrada/salida y comunicación entre procesos: sesión de resolución de problemas
Durant aquesta sessió es fan exercicis rel.lacionats amb la gestió de la entrada/sortida de dades i la comunicació entre procesos
Objetivos:
4
5
6
7
8
9
10
11
Contenidos:
Sistemas de ficheros: problemas
Objetivos:
1
2
4
5
6
Examen final laboratorio
Examen final de laboratorio que incluirá cualquier llamada a sistema, herramienta, concepto, etc practicado en el laboratorio.
Objetivos:
6
10
11
Semana:
14
Examen final de teoria
Examen escrito que incluirá todo el temario del curso. Este examen puede incluir tanto preguntas teóricas como problemas.
Objetivos:
1
2
3
4
5
6
7
8
9
10
11
Semana:
15 (Fuera de horario lectivo)
Ejercicio práctico sobre gestión de procesos
Esta actividad consiste en resolver un enunciado del mismo estilo y en las mismas condiciones que los examenes de la asignatura
Contenidos:
Primer control de laboratorio de evaluación continua
Este control evalúa los conceptos trabajados en las sesiones de laboratorio de la 1 a la 5
Objetivos:
1
2
3
4
5
6
7
8
9
11
Semana:
9 (Fuera de horario lectivo)
Ejercicio práctico sobre gestión de la entrada-salida
Metodología docente
La asignatura tendrá principalmente dos tipos de clase: teoría y laboratorios. Las clases de teoría serán para explicar conceptos principalmente genéricos o aplicados al caso particular de Linux. Estas clases se harán con el apoyo de transparencias. Las clases de laboratorio serán semanales e incluirán un trabajo previo a realizar por el alumno, unos ejercicios para hacer en clase de forma individual y unas preguntas que se deberán entregar a final de clase. La asistencia al menos al 80% de las sesiones de laboratorio es condición necesaria para poder aprobar la evaluación continua de la asignatura.Aunque todas las sesiones incluirán estas preguntas para entregar, no todas suponen un acto evaluativo, sólo aquellas que estén marcadas como tal. El resto servirán para hacer el seguimiento del alumno y para controlar la realizacion del trabajo previo y la actitud del alumno en clase. Especialmente en las clases de laboratorio se valorarán aspectos como la puntualidad del alumno y la actitud positiva ante la asignatura.
Método de evaluación
La nota de la competencia técnica se basa en dos componentes: nota evaluación continua (EC) i nota evaluación no continua (EF). La componente EC sólo se tendrá en cuenta para los estudiantes que acrediten haber hecho seguimiento de la asignatura: han asistido como mínimo al 80% de las sesiones de laboratorio y han hecho el trabajo de las sesiones. Entregar un trabajo no original (no hecho por el estudiante) se considera fraude e implica una nota de 0 en la componente EC.
Nota= max(EF, 0,6*EF+0,4*EC).
EC: 35% CT + 10% ST+ 30% laboratorio+ 25% SL
- CT: resultante de 1 parcial al final del tema de procesos. Este examen se hace fuera de horas de clase
- ST (seguimiento teoría): pequeños tests sobre conceptos de teoría que se harán al final de algunos temas
- CL: resultante de 1 ejercicio puntuable después de hacer la sesión 4 de laboratorio. Este examen se hace fuera de horas de clase
- SL (seguimiento laboratorio): evaluará el trabajo hecho en algunas sesiones de laboratorio
EF: 50% Teoria+ 50% laboratori
- Prueba puntuable que consta de dos partes: teoría y laboratorio. Se hace a final de curso y evalúa todo el contenido del curso.
Evaluación de la Competencia Genérica
En este caso, se valorarán los siguientes puntos:
1) Actitud proactiva (rigor) en el desarrollo profesional.
* Asistencia. Los estudiantes deberán asistir a un 80% de las sesiones de laboratorio. .
* Puntualidad. Los estudiantes deberán llegar puntuales a clase, con un margen de 10 minutos. Se penalizará a los estudiantes que reiteradamente lleguen tarde.
- Esta información se obtendrá de los test de Atenea.
* Respeto. Los estudiantes deberán actuar con respeto hacia los compañeros y los profesores.
- El profesor será el encargado de detectar y anotar los casos de falta de respeto, ya sea hacia sí mismo o hacia los compañeros del estudiante. Si durante la evolución de la asignatura estos casos no mejoran obtendrá una evaluación negativa de la competencia.
2) Actitud proactiva (motivación) por la calidad y la mejora continua.
* Calidad. Se valorará la calidad del código entregado teniendo en cuenta, principalmente: el cumplimiento de los requerimientos de los enunciados, la claridad del código y la organización del documento.
* Motivación y responsabilidad. En las sesiones de laboratorio se pedirá a los estudiantes un trabajo previo que deberán realizar necesariamente.
- El trabajo previo tendrá preguntas asociadas que ayudarán a identificar y penalizar a los estudiantes que no realicen correctamente estos trabajos. Asimismo se podrá evaluar muy positivamente aquellos estudiantes que realicen unos trabajos excelentes
NOTA de la Competencia:
La nota de la competencia se obtendrá a partir de los valores de las informaciones obtenidas por: Asistencia, Puntualidad, Respeto, Motivación, Calidad y Responsabilidad.
Excepciones:
- No asistir al 80% de las sesiones de laboratorio implicará automáticamente una D en la nota de la competencia
- Si un estudiante copia en las entregas de laboratorio tiene automáticamente una D en la nota de la competencia
- Aquellos alumnos que muestren una clara falta de motivación y respecto, por ejemplo, apuntándose tarde al examen final, tendrán una D en la competencia.
Bibliografía
Básica:
Complementaria:
-
The C programming language -
Kernighan, B.W.; Ritchie, D.M, Prentice Hall ,
1988.
ISBN: 0131103628
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991000708719706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
-
Operating systems: internals and design principles -
Stallings, W, Pearson Education Limited ,
2017.
ISBN: 9781292214306
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991001576049706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
-
Understanding the Linux kernel -
Bovet, D.P.; Cesati, M, O'Reilly ,
2005.
ISBN: 9780596005658
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003076469706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Capacidades previas
El estudiante debe tener las capacidades técnicas que le otorgan las asignaturas cursadas previamente además de un nivel de inglés técnico mínimo como para leer una documentación. En cuanto a capacidades técnicas podríamos resumir en:
-En cuanto a estructura de computadoras: Conocimiento de los elementos principales de un ordenador, relacion de estos elementos entre sí, representación interna de datos y conocimientos básicos de lenguaje máquina.
-En cuanto a programación: Capacidad de hacer programas desde cero que incluyan definición de tipo de datos, diseño de un programa, más o menos complejo, en diferentes funciones (que puedan estar en más de un archivo) y fases de creación de un ejecutable.