Un sistema operativo es una capa de software que se ejecuta sobre el hardware para ofrecer una serie de servicios. Cada vez las funcionalidades de un sistema operativo incluyen más tareas y abarcan más servicios. El objetivo de la asignatura es analizar un sistema operativo en todas sus partes y, de este modo, dotar al estudiante de conocimientos sobre uno de los componentes más importantes de los sistemas informáticos actuales. En esta asignatura se profundizará en los conceptos fundamentales del sistema operativo, dejando para otras materias los detalles y especificaciones de otros módulos que lo componen.
Desde el punto de vista práctico, se realizan prácticas que implementan diversas funcionalidades, políticas o técnicas de un sistema operativo. Además, se introducen numerosos ejemplos que ayudan al estudiante a profundizar en todos aquellos aspectos tratados desde el punto de vista teórico y le permiten ver su aplicación.
Profesores Titulares
Profesores Docentes
Conceptos de programación (algorítmica y estructuras de datos) y conceptos básicos de utilización de un sistema operativo.
Los estudiantes que cursan la asignatura de Sistemas Operativos deben adquirir los conocimientos y desarrollar las habilidades que se indican a continuación:
Durante el curso académico se desarrollarán los siguientes contenidos:
CONTENIDOS CONCEPTUALES
Tema 1. Introducción a los Sistemas Operativos
- Introducción a los ordenadores
Componentes básicos
- Ejecución de instrucciones
- Interrupciones
- Múltiples interrupciones
- Multiprogramación
- Ubicación del Sistema Operativo en el sistema informático
- Funciones de los sistemas operativos
- Evolución histórica de los sistemas operativos
- Componentes de un sistema operativo
Tema 2. El núcleo del Sistema Operativo
- Descripción
- Esquema del núcleo
- Representación de los procesos: PCB (Process Control Block)
- Controlador de la interrupción: FLIH (First Level Interrupt Handler)
- El Dispatcher
- Mecanismos de comunicación, sincronización y exclusión mutua
- Clasificación de los kernels
- Núcleos de sistemas operativos contemporáneos
Tema 3. Planificación
- Introducción
- Criterios de planificación
- Algoritmos de planificación básicos en monoprocesador
FCFS (First Come First Served)
- SJF (SPN, SRT)
- Por prioridades
- Round Robin (turno rotatorio)
- HRRN (Highest Response Ratio Next)
- Algoritmos de planificación en colas
Planificación en colas multinivel
- Planificación en colas multinivel con realimentación
- Planificación con procesadores múltiples
- Planificación en tiempo real
- Ejemplos de implementación
Tema 4. Mecanismos de comunicación, sincronización y exclusión mutua
- El problema de la exclusión mutua y el deadlock
Ejemplo Productores–Consumidores
- Postulados de Dijkstra
- Conceptos asociados: starvation, deadlock, fairness
- Deadlock
- Grafos de precedencia
- Soluciones hardware
- Soluciones software
- Comunicación entre procesos
Pipes
- Paso de mensajes en C
- Sockets
- Memoria compartida
- Herramientas de exclusión mutua y sincronización
Semáforos
- Implementación
- Utilización
- Semáforos en C
- Monitores
CONTENIDOS PRÁCTICOS
Tema 5. Llamadas al sistema
- Entorno de trabajo
- File descriptors
- Señales
- Fork, exec
- Threads
- Sockets
- Pipes
- Select
- Memoria compartida
- Colas de mensajes
- Semáforos
La asignatura combina explicación teórica y trabajo práctico con el objetivo de facilitar una comprensión progresiva y aplicada de los conceptos. Semanalmente se realizan dos sesiones lectivas. En la primera sesión se introducen nuevos contenidos y herramientas mediante explicaciones magistrales, que se complementan con ejemplos y problemas para fomentar la participación activa del alumnado y la conexión entre los diferentes temas del temario.
Los métodos utilizados para evaluar la asignatura son:
- A. Exámenes
- C. Exámenes tipo test
- D. Ejercicios realizados en casa
- F. Informes o trabajos en grupo
- G. Trabajos prácticos con ordenador
- J. Participación en clase
- M. Otros (entrevistas individuales de validación)
La asignatura consta de dos partes diferenciadas: conocimientos y práctica, que se evalúan de manera independiente.
Para aprobar la asignatura es necesario superar ambas partes.
La nota final se calcula según:
Nota_Final = 50% · Conocimientos + 50% · Práctica
Evaluación de conocimientos
La nota de conocimientos se calcula como:
Conocimientos = 70% · Nota_Ex + 30% · Nota_Lab
donde:
Nota_Ex = 80% · Ex_Final + 20% · Ex_Midterm
Para aplicar esta fórmula es necesario obtener una calificación mínima de 5 en cada examen.
Si el Midterm no se aprueba en la convocatoria ordinaria, puede recuperarse en la segunda convocatoria.
También existe un examen final de recuperación.
La nota de laboratorio tiene función de evaluación continua y solo pondera en la primera convocatoria.
En la segunda convocatoria:
Conocimientos = Nota_Ex
Liberación del examen final
El estudiante puede liberar el examen final si cumple:
- Práctica entregada satisfactoriamente antes de la primera convocatoria
- Asistencia y calificación de laboratorio ≥ 4
- Nota de Midterm ≥ 5
- Asistencia y participación en clase
En este caso:
Nota_liberación = (55% · Práctica + 30% · Nota_Lab + 15% · Ex_Midterm) · Nota_Participación
Los criterios de evaluación de la asignatura se definen a partir de los resultados de aprendizaje establecidos y permiten verificar el grado de consecución de los conocimientos y competencias previstos.
CANALETA, X. (2020). ''Exercicis i problemes d'examen de sistemes operatius´´, Publicacions La Salle, 2020.
HARBISON S.P. & STEELE G.L. (2002). C - A Reference Manual, Prentice Hall, 5th edition, 2002.
PETERSON, J.L. & 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, September 2014.
SALVADOR, J. (2011). Introducció al llenguatge de programació C, Publicacions La Salle, July 2011.
SILBERSCHATZ A., GALVIN P. & GAGNE, G. (2002). Sistemas Operativos, Editorial Limusa, ISBN: 968-18-6168-X STALLINGS, W. (2005). Sistemas Operativos, 5th Edition, Pearson Prentice Hall, ISBN: 84-205-4462-0
STEVENS, R., FENNER, B. & RUDOFF, A.M. (2004). UNIX Network Programming, Volume 1: "The sockets Networking API", Addison-Wesley Professional, 2004, 3rd edition, ISBN 0-13-141155-1.
STEVENS, R. & RAGO S.A. (2008). Advanced Programming in the UNIX Environment, Addison-Wesley Professional, 2008, 2nd edition.
TANENBAUM A.S. (2009). Sistemas Operativos Modernos, 3rd Edition, Pearson Prentice Hall, Pearson Educación, ISBN: 978-607-442-046-3.