Descripción
Un sistema operativo es una capa de software que se ejecuta sobre un hardware para ofrecer una serie de servicios. Cada vez más las funcionalidades de un sistema operativo incluyen más tareas y abarcan más servicios. El objetivo de la asignatura es ver un sistema operativo en todas sus partes y, de esta manera, dotar al estudiante de conocimientos sobre uno de los componentes más importantes en los sistemas informáticos de hoy en día. En esta asignatura se profundizará en los conceptos fundamentales del sistema operativo, mientras que en otras materias se ofrecerán más detalles y especificaciones de otros módulos que lo componen. Desde el punto de vista práctico, se realizarán prácticas que implementan diversas funcionalidades, políticas o técnicas de un sistema operativo. Además, se introducirán multitud de ejemplos que ayudarán al estudiante a asimilar todos aquellos aspectos que se tratan desde el punto de vista conceptual y le permiten ver su aplicación.
Tipo asignatura
Tercer - Obligatoria
Semestre
Primero
Curso
2
Créditos
6.00

Profesores Titulares

Director de Innovación Educativa

Profesores Docentes

Conocimientos previos
Objetivos

Los Resultados de Aprendizaje de esta asignatura son:
RA.1 Conceptos básicos de los sistemas operativos.
RA.2 Conocimiento de los diferentes componentes o subsistemas de un sistema operativo y las técnicas o estrategias que se aplican a cada uno de ello.
RA.3 Identificación, formulación y resolución de problemas con procesos concurrentes que requieren un sistema de integridad de datos compartidos.
RA.4 Diseño e implementación de aplicaciones multiproceso que tienen compartición de información y comunicación entre procesos.

Contenidos

CONTENIDOS CONCEPTUALES
Tema 1. Introducción a los Sistemas Operativos
Tema 2. El núcleo del Sistema Operativo
Tema 3. Planificación
Tema 4. Mecanismos de comunicación, sincronización y exclusión mutua

CONTENIDOS PRÁCTICOS
Tema 5. Llamadas al sistema

Metodología

La asignatura tiene un funcionamiento semanal con 3 sesiones lectivas:
• En la primera se explican las herramientas necesarias para el desarrollo de las sesiones de laboratorio y se resuelven ejemplos y problemas de utilización de estos. También se desarrollan los contenidos de los temas mediante clases magistrales i de problemas.
• En la segunda sesión se realiza una sesión de laboratorio donde el alumno debe resolver un problema diseñando e implementando un programa que usa las herramientas explicadas en la primera sesión. Dicho programa debe ser entregado al final de la sesión.
SESIONES PRÁCTICAS DE LABORATORIO
Las sesiones prácticas son sesiones lectivas que forman parte de la asignatura y que tienen periodicidad semanal durante todo el desarrollo de la asignatura. El objetivo es dar soporte y favorecer el aprendizaje progresivo, necesario e imprescindible para poder superar con éxito la aplicación práctica de los contenidos de la asignatura, así como la práctica a diseñar e implementar.
El funcionamiento de estas se describe a continuación:
• Con una semana de antelación, se dará a conocer al alumno los contenidos sobre las herramientas de programación en C que se necesitarán para la sesión práctica semanal.
• Si los conocimientos necesarios son un recordatorio de cursos anteriores o fáciles de asimilar, se facilitará toda la bibliografía asociada y material para poder prepararlos.
• Si los conocimientos necesarios son nuevos para el alumno estos se habrán explicado durante las sesiones lectivas anteriores de la asignatura y, además, se facilitará también toda la bibliografía asociada y material para poder prepararlos.
• Seguidamente se facilitará al alumno un ejercicio práctico que tendrá que resolver y depositar en un pozo en el eStudy en el periodo establecido (habitualmente al final de la sesión práctica).
• Una vez cerrado el pozo se publicará una solución correcta al ejercicio para que el alumno pueda hacer una autoevaluación formativa.
• Los monitores de la asignatura calificarán los ejercicios entregados y publicarán las notas en el eStudy.
Detalle de les sesiones establecidas:
Sesión 00 Recordatorio + File Descriptors
Sesión 01 File Descriptors + Signals
Sesión 02 Forks
Sesión 03 Threads
Sesión 04 Sockets I
Sesión 05 Sockets II
Sesión 06 Pipes
Sesión 07 Semáforos I
Sesión 08 Semáforos II
Sesión 09 Global

Evaluación

SISTEMA DE EVALUACIÓN
 La asignatura tiene una duración de un semestre y consta de dos partes diferenciadas: conocimientos y la práctica. La evaluación de los conocimientos y de la práctica serán independientes. Para aprobar la asignatura se deben aprobar independientemente los conocimientos y la práctica.
 La nota final de la asignatura se calcula por la fórmula:
Nota_Final = 40% · Conocimientos + 60% · Práctica
 La nota de conocimientos se evaluará a partir de las siguientes notas: la nota de exámenes (Nota_Ex) y la nota de los ejercicios de laboratorio (Nota_Lab), según:
Conocimientos = 60% · Nota_Ex + 40% · Nota_Lab
 Este cálculo sólo se aplicará si Nota_Ex>=3.5.
 Por otro lado, Nota_Ex se calculará ponderando las notas del examen de midterm (Ex_Midterm) y la nota del examen final de semestre (Ex_Final), según:
Nota_Ex = 80% · Ex_Final + 20% · Ex_Midterm
- Si Ex_Midterm>=6 entonces la materia correspondiente a este examen quedará liberada cara al examen final del semestre (convocatoria ordinaria o extraordinaria).
- Además del examen final en la convocatoria ordinaria, habrá la posibilidad de realizar un examen final de recuperación (convocatoria extraordinaria).
- Nota_Lab tienen una función de Evaluación Continua. Esta sólo ponderará en Conocimientos en la convocatoria ordinaria. Para la extraordinaria Conocimientos = Nota_Ex.
- Por lo que se refiere a la evaluación de la práctica y a su normativa, esta se trata en un apartado posterior.
- Respecto al funcionamiento de las sesiones de laboratorio, esta se calculará realizando la media aritmética de las 8 o 9 mejores notas de las sesiones. Además, a todos los alumnos que hayan presentado y entregado el 80% de las sesiones se les garantizará una nota mínima de 5, independientemente de su calificación. Se debe destacar que una sesión se considera presentada si el ejercicio tiene entidad suficiente y muestra esfuerzo en sí mismo. De otra manera la sesión será evaluada como No Presentada (NP).
- Finalmente, el alumno podrá optar a liberar el examen final de la convocatoria ordinaria. Para ello los parámetros a tener en cuenta son cuatro: (1) que la práctica esté entregada satisfactoriamente antes de la primera convocatoria; (2) la asistencia a las sesiones de laboratorio y su calificación; (3) la nota del Midterm y (4) la asistencia y participación en las sesiones lectivas durante el semestre.
Nota = (65%*Práctica + 25%* Nota_Lab + 10%* Ex_Midterm) * Nota_Participación
Según la Normativa de Copias, la categorización de las actividades de evaluación de la asignatura es:
• Práctica: Altamente significativa.
• Examen del Midterm: Altamente significativa.
• Examen Final: Altamente significativa.
• Ejercicios de Laboratorio. Moderadamente significativa.
Si cualquier estudiante copia en una de las sesiones de laboratorio, automáticamente se le asignará un 0 en la calificación final de la Nota de Laboratorio (que ponedera el 40% de la nota de Conocimientos).
NORMATIVA DE PRÁCTICAS
La práctica de Sistemas Operativos (SO) es muy importante por diferentes motivos: la aplicación práctica de los conceptos teóricos explicados en clases, la capacidad que debe demostrar el alumno en el diseño e implementación de programas de gran volumen de código y funcionalidades, etc. Es por esto que la práctica de la asignatura pide un esfuerzo importante de dedicación y también tienen un elevado nivel de control y seguimiento por parte de monitores y profesores implicados.
Seguidamente, se exponen las normas básicas que se deben seguir en el desarrollo de la práctica el presente curso académico:
1. La práctica se podrá realizar individualmente o formando pareja con otro alumno matriculado en la asignatura.
2. Independientemente que se realice la práctica individualmente o en pareja, esta opción de ser notificada a los monitores y profesores con suficiente tiempo para dejar constancia y poder asignar un número de grupo u otros recursos técnicos, en caso de ser necesario.
3. Es imprescindible tener número de grupo para poder optar a presentar la práctica y/o los checkpoints.
4. El grupo de prácticas debe estar asignado 3 semanas antes de cualquier entrega. De no ser así, no se admitirá la presentación de la práctica en esa entrega.
5. En el caso que durante el curso haya algún cambio o modificación den los grupos, se deberá notificarlo a los monitores y profesores para actualizar la información. De la misma manera, estos cambios no se permitirán en las 3 semanas anteriores a una entrega (sí se podrán hacer separación de grupos, pero no formación de nuevos grupos).
6. El lenguaje de programación usado será el lenguaje C. Cualquier práctica presentada en cualquier otro lenguaje o variante no será admitida (C++, Java, etc.).
7. Hay 4 deadlines de entrega. Cuanto más tarde se entregue la práctica más penalización en la calificación habrá. Se detallará en el enunciado de la práctica.
8. Para cada fecha de entrega el estudiante dispone de 3 posibilidades como máximo de presentar la práctica. Estas deben ser suficientemente espaciadas en el tiempo para permitir su evaluación y dar feedback.
9. La calificación de la práctica también se puede ver afectada por las notas obtenidas en los checkpoints. Las fechas de entrega, así como los checkpoints, se especifican en el enunciado.
10. Para que una una práctica sea aceptada y opte a ser calificada se deben cumplir 5 requisitos:
a. Debe haber sido entregada en la plataforma virtual según la fecha límite.
b. Debe estar correctamente estructurada y tener una buena documentación interna.
c. Debe tener una memoria correcta.
d. Debe funcionar correctamente.
e. El grupo que presenta la práctica tiene que superar la entrevista individual donde cada alumno debe demostrar un conocimiento profundo de la práctica en si totalidad.
11. Si un alumno no demuestra un conocimiento profundo de la práctica, supondrá la no aceptación de la práctica per ese alumno, debiendo de realizarla de nuevo sin poder utilizar ningún recurso de la práctica presentada.
12. Si se detecta una copia de prácticas, se aplicarán las sanciones de la normativa de la escuela.
NORMATIVA PARA ALUMNOS REPETIDORES
Los estudiantes que repiten la asignatura podrán acogerse a la siguiente normativa:
• Entre cursos académicos se podrá guardar la calificación obtenida en el curso anterior tanto en la parte de conocimientos como en la parte práctica por separado.
• Entre cursos académicos se guardará la práctica del curso anterior si está aprobada y los objetivos de aprendizaje no han cambiado entre cursos académicos. Si el alumno repetidor quiere convalidar la práctica con la nota del curso anterior, lo debe solicitar al responsable de la asignatura antes del 15 de octubre. Si no lo realiza se considerará que el alumno renuncia a la convalidación.
• Si el alumno repetidor tiene la práctica aprobada quedará liberado de realizar las sesiones de laboratorio, y estas no afectarán a la nota de Conocimientos.
• Cualquier otra situación que se pueda dar, el estudiante deberá regirse a la normativa de evaluación del presente curso. En cualquier otro caso se recomienda mantener una entrevista con responsable de la asignatura (al inicio lectivo del curso).

Criterios evaluación
Bibliografía básica

AGANS D.J. (2002). Debugging. The 9 indispensable rules for finding even the most elusive software and hardware problems, Amacom, 2002, ISBN 0-8144-7457-8.
CANALETA, X. (2020). “Exercicis i problemes d’examen de sistemes operatius”, Publicacions La Salle, Setiembre 2020.
HARBISON S.P. y STEELE G.L. (2002). C - A Reference Manual, Prentice Hall, 5ª edición, 2002.
PETERSON, J.L. y SILBERSCHATZ A. (1989). Sistemas Operativos, Editorial Reverté, ISBN: 84-291-2693-7
SALVADOR, J. (2014) “Programació en C per a sistemes UNIX”, Publicacions La Salle, Setiembre 2014.
SALVADOR, J. (2011). Introducció al llenguatge de programació C, Publicacions La Salle, Julio 2011.
SILBERSCHATZ A., GALVIN P. y GAGNE, G. (2002). Sistemas Operativos, Editorial Limusa, ISBN: 968-18-6168-X
STALLINGS, W. (2005). Sistemas Operativos, 5ª Edición, Pearson Prentice Hall, ISBN: 84-205-4462-0
STEVENS, R., FENNER, B. y RUDOFF, A.M. (2004). UNIX Network Programming, Volumen 1: "The sockets Networking API", Addison-Wesley Professional, 2004, 3ª edición, ISBN 0-13-141155-1.
STEVENS, R. y RAGO S.A. (2008). Advanced Programming in the UNIX Environment, Addison-Wesley Professional, 2008, 2ª edición.
TANENBAUM A.S. (2009). Sistemas Operativos Modernos, 3ª Edición, Pearson Prentice Hall, Pearson Educación, ISBN: 978-607-442-046-3.

Material complementario