Universidad Pública de Navarra



Año Académico: 2023/2024 | Otros años:  2022/2023  |  2021/2022  |  2020/2021  |  2019/2020 
Graduado o Graduada en Ingeniería Informática por la Universidad Pública de Navarra (Programa Internacional)
Código: 250304 Asignatura: SISTEMAS OPERATIVOS
Créditos: 6 Tipo: Obligatoria Curso: 2 Periodo: 1º S
Departamento: Estadística, Informática y Matemáticas
Profesorado:
VILLADANGOS ALONSO, JESÚS   [Tutorías ] ASTRAIN ESCOLA, JOSÉ JAVIER (Resp)   [Tutorías ]
EZCURDIA AGUIRRE, IÑIGO FERMIN   [Tutorías ] ALAEZ GOMEZ, DANIEL   [Tutorías ]

Partes de este texto:

 

Módulo/Materia

Módulo: Común a la Rama de Informática

Sistemas operativos.

Subir

Competencias genéricas

Competencias Básicas

CB2 - Que los estudiantes sepan aplicar sus conocimientos a su trabajo o vocación de una forma profesional y posean las competencias que suelen demostrarse por medio de la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio.

CB5 - Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía.

T1 - Capacidad de análisis y síntesis.

T4 - Resolución de problemas.

T8 - Aprendizaje autónomo.

 

 

Competencias Generales

G4 - Capacidad para definir, evaluar y seleccionar plataformas hardware y software para el desarrollo y la ejecución de sistemas, servicios y aplicaciones informáticas.

G6 - Capacidad para concebir y desarrollar sistemas o arquitecturas informáticas centralizadas o distribuidas integrando hardware, software y redes.

G7 - Capacidad para conocer, comprender y aplicar la legislación necesaria durante el desarrollo de la profesión de Ingeniero Técnico en Informática y manejar especificaciones, reglamentos y normas de obligado cumplimiento.

G8 - Conocimiento de las materias básicas y tecnologías, que capaciten para el aprendizaje y desarrollo de nuevos métodos y tecnologías, así como las que les doten de una gran versatilidad para adaptarse a nuevas situaciones.

G9 - Capacidad para resolver problemas con iniciativa, toma de decisiones, autonomía y creatividad. Capacidad para saber comunicar y transmitir los conocimientos, habilidades y destrezas de la profesión de Ingeniero Técnico en Informática.

 

Subir

Competencias específicas

FB4: Conocimientos básicos sobre el uso y programación de los ordenadores, sistemas operativos, bases de datos y programas informáticos con aplicación en ingeniería.

FC1 - Capacidad para diseñar, desarrollar, seleccionar y evaluar aplicaciones y sistemas informáticos, asegurando su fiabilidad, seguridad y calidad, conforme a principios éticos y a la legislación y normativa vigente.

FC2 - Capacidad para planificar, concebir, desplegar y dirigir proyectos, servicios y sistemas informáticos en todos los ámbitos, liderando su puesta en marcha y su mejora continua y valorando su impacto económico y social.

FC5 - Conocimiento, administración y mantenimiento de sistemas, servicios y aplicaciones informáticas.

FC10 - Conocimiento de las características, funcionalidades y estructura de los sistemas Operativos y diseñar e implementar aplicaciones basadas en sus servicios.

FC11 - Conocimiento y aplicación de las características, funcionalidades y estructura de los Sistemas Distribuidos, las Redes de Computadores e Internet y diseñar e implementar aplicaciones basadas en ellas.

FC14 - Conocimiento y aplicación de los principios fundamentales y técnicas básicas de la programación paralela, concurrente, distribuida y de tiempo real.

FC18 - Conocimiento de la normativa y la regulación de la informática en los ámbitos nacional, europeo e internacional.

 

Subir

Resultados aprendizaje

RA01 Conocer los principios fundamentales de los Sistemas Operativos, así como su evolución a lo largo de los años.

RA02 Capacitar al estudiante en el manejo de procesos, que le permitirán lanzar las distintas tareas a realizar por el ordenador.

RA03 Capacitar al estudiante en el manejo de las diferentes estrategias de planificación, de sus ventajas e inconvenientes y de sus objetivos, así como su relación con el diseño de los sistemas operativos.

RA04 Capacitar al estudiante en el manejo de diferentes mecanismos de comunicación entre procesos.

RA05 Capacitar al estudiante en el manejo de dispositivos de entrada y salida, y de los sistemas de ficheros que permiten obtener, almacenar y recuperar datos.

RA06 Capacitar al estudiante en la gestión de un recurso tan preciado como es la memoria de un ordenador.

RA07 Capacitar al estudiante en la gestión de los sistemas de ficheros y dispositivos de entrada/salida.

RA08 Capacitar al estudiante en la utilización práctica de un sistema operativo concreto y en la utilización de los servicios que el sistema provee mediante las llamadas al sistema.

RA09 Introducir los conceptos principales de la programación concurrente y las construcciones básicas que los sistemas operativos suministran para soportar la concurrencia de procesos. Comprender y analizar los problemas ligados a los procesos concurrentes.

RA10 Conocer, comprender y aplicar los conceptos básicos sobre sistemas distribuidos.

RA11 Conocer, comprender y aplicar las técnicas para construir nuevos servicios sobre dichos sistemas, en concreto los modelos basados en middleware.

RA12 Conocer, comprender y aplicar el estado del arte de tecnologías middleware.

RA13 Conocer, comprender y aplicar el conjunto de técnicas de programación que se deben utilizar a la hora de construir sistemas basados en middleware.

RA14 Utilizar un lenguaje de programación orientado a objetos para implementar los aspectos prácticos de la asignatura.

RA15 Diseñar soluciones a problemas aplicando los conceptos, técnicas, tecnologías y técnicas de programación de la asignatura.

RA16 Implementar prototipo que prueben la solución.

RA17 Búsqueda autónoma de soluciones. Solucionar problemas en grupo. Preparar entregables de un proyecto. Defender en público solución propuesta.

Subir

Metodología

Se trata de una docencia centrada en el alumno en la que prima el aprendizaje activo. Las distintas actividades formativas se centran en el desarrollo de las competencias genéricas y específicas anteriormente descritas. La formación del estudiante será evaluada de acuerdo al tipo de docencia presencial de la titulación.

Se imparten un total de 20 horas presenciales dedicadas a clases expositivas en el aula. Estas clases se dedican a impartir la parte teórica de la asignatura con la ayuda de un ordenador y un cañón de vídeo para la proyección de material en formato digital, y con la pizarra del aula.  Esta formación teórica se completa con un aprendizaje basado en problemas y casos de estudio (10 horas) para lo cual se propondrán al estudiante colecciones de problemas que se pueden resolver de forma autónoma y cuya realización ayuda notablemente al estudiante en su asimilación de los conceptos de la asignatura, y también se resolverán algunos de ellos en clase.

Se imparten clases presenciales de contenido práctico en el laboratorio, hasta un total de 30 horas, en las que se trabaja con el sistema operativo Linux y el lenguaje de programación C los aspectos más relevantes de los sistemas operativos (procesos, comunicación entre procesos, llamadas al sistema).

Al final del semestre se realizarán dos pruebas de evaluación, una para la parte teórica y otra para la parte práctica para la convocatoria ordinaria, y otras dos para la de recuperación.

Observación: si la situación sanitaria por motivo del COVID excepcionalmente así lo requiriese, se sustituirá la docencia presencial por docencia por videoconferencia y mediante el laboratorio virtual.

Metodología - Actividad Horas presenciales Horas no presenciales
A-1 Clases expositivas 20 (magistrales en aula) 10 (repaso de clase)
A-2 Prácticas de laboratorio 30 (laboratorio) 20 (preparación de prácticas)
A-4 Trabajos prácticos, elaboración de problemas 10 30 (realización de problemas)
A-6 Estudio y trabajo autónomo del estudiante   25 (estudio para exámenes)
A-7 Exámenes 4 (pruebas de evaluación)  
A-8 Tutorías individuales 1 (consultas)  
TOTAL 65 85

Subir

Relación actividades formativas-competencias/resultados de aprendizaje

 

Resultado de aprendizaje Contenido Actividad formativa Instrumento de evaluación
RA01 Historia y evolución de los SSOO A-1, A-4 A-5
RA02 Procesos A-1, A-2, A-3, A-4 A-2, A-5
RA03 Planificación de procesos A-1, A-2, A-3, A-4 A-2, A-3, A-5
RA04 Mecanismos de comunicación entre procesos (IPC) A-1, A-2, A-4 A-2, A-5
RA05 Manejo de dispositivos de E/S y ficheros A-4 A-2, A-5
RA06 Gestión de memoria A-1, A-2, A-3, A-4 A-2, A-3, A-5
RA07 Dispositivos de E/S. Ficheros A-1, A-2, A-3, A-4 A-2, A-3, A-5
RA08 Manejo de llamadas al sistema A-1, A-2, A-4 A-2, A-5
RA09 Programación concurrente A-1, A-2, A-3, A-4 A-2, A-3, A-5
RA10 Sistemas distribuidos A-1, A-2, A-3, A-4 A-2, A-3, A-5
RA11 Construcción de servicios A-2, A-4 A-2, A-5
RA12 Middleware A-1, A-4 A-5
RA13 Programación en middleware A-2, A-4 A-5
RA14 Programación orientada a objetos A-2 A-2, A-5
RA15 Diseño A-1, A-2, A-3, A-4 A-2, A-3, A-5
RA16 Implementación de prototipo A2, A-3 A-2, A-5
RA17 Autonomía A-2, A-3, A-4 A-2, A-3, A-5

Subir

Idiomas

Castellano

 

 

Subir

Evaluación

 

Resultados de
aprendizaje
Actividad de
evaluación
Peso (%) Carácter
recuperable
Nota mínima
requerida
RA01, RA02, RA03, RA06, RA07, RA09, RA10, RA12, RA13, RA15, RA17 Examen teórico 50 Recuperable Nota mínima para que pondere en calificación final = 5/10
RA02, RA03, RA04, RA05, RA06, RA07, RA08, RA09, RA10, RA11, RA14, RA15, RA16, RA17 Trabajo en clase (entrega de prácticas) 30 Recuperable No
RA02, RA03, RA04, RA05, RA06, RA07, RA08, RA09, RA10, RA11, RA14, RA15, RA17  Examen práctico 20 Recuperable Nota mínima para que pondere en calificación final = 5/10

Cada una de las convocatorias (ordinaria y recuperación) constará de dos pruebas de evaluación (contenidos teórico-prácticos y prácticas de laboratorio). Cada una de estas dos partes (teoría y prácticas) tendrá un peso del 50% de la nota, y para la superación de la asignatura es imprescindible superar ambas partes

Si (NotaTeoría < 5) O (NotaPráctica < 5) => NotaAsignatura = mínimo(promedio(NotaTeoría, NotaPráctica),4'5)

Si (NotaTeoría >= 5) Y (NotaPráctica >= 5)  =>  NotaAsignatura = promedio (NotaTeoría, NotaPráctica)

En la convocatoria ordinaria, la nota de la parte práctica (50% de la calificación final) será la suma de la nota del trabajo de clase (60% de la calificación de la parte práctica) y la obtenida en el examen práctico (prueba de evaluación en el laboratorio, 40% de la calificación de la parte práctica). Para superar esta parte es necesario aprobar el examen práctico. Si no se aprueba el examen práctico, la calificación de la parte práctica será como máximo de 4'5 sobre 10 (suspenso). La nota de la parte teórica corresponderá a la calificación del examen teórico (50% de la calificación final).

La evaluación de recuperación consistirá en un examen de la parte de teoría (50% de la nota) en el aula y un examen de la parte práctica (50% de la nota) en el laboratorio. La entrega de prácticas realizada en la convocatoria ordinaria NO será tenida en cuenta, y se recuperará mediante el examen de prácticas, cuya calificación corresponderá al 50% de la nota final. Como en el caso de la convocatoria ordinaria, para la superación de la asignatura es imprescindible superar ambas partes.

Subir

Contenidos

En esta asignatura se introduce al estudiante en la organización y manejo de los sistemas operativos. Se analiza las abstracciones más importantes que los sistemas operativos ofrecen al usuario como son los procesos y los ficheros. Además, se estudia la gestión de los dispositivos de entrada y salida, el acceso a memoria, la planificación de procesos, los sistemas de ficheros, la comunicación entre procesos, la sincronización de procesos y los sistemas distribuidos.

Los sistemas operativos realizan una serie de tareas relativas a la gestión de procesos y recursos, además de proporcionar los mecanismos para su utilización, que el estudiante debe conocer para poder construir aplicaciones de una cierta entidad y envergadura.

El estudiante debe ser capaz de emplear las llamadas al sistema y los recursos que el sistema operativo provee en las aplicaciones que desarrolle.

 

 

Subir

Temario

Programa de la Parte I (Teoría y ejercicios)

Las sesiones se distribuyen en 10 sesiones de dos horas de duración cada una, y se abordan los siguientes temas.

 

Bloque 1: Introducción a los sistemas operativos.

Tema 1: Introducción a los sistemas operativos y conceptos básicos. (1 sesión)

  • Introducción a los sistemas operativos.
  • Conceptos básicos.
  • Características de los sistemas operativos.
  • Estructuras de los sistemas operativos.
  • Clases de sistemas operativos.

Bloque 2: Procesos.

Tema 2: Procesos e hilos. (1 sesión)

  • Concepto de proceso.
  • Concepto de hilo.
  • Diferencias entre proceso e hilo.
  • Operaciones de los procesos.
  • Estados de un proceso.
  • Mecanismos de comunicación entre procesos.

Tema 3: Planificación de procesos. (1 sesión)

  • Conceptos básicos.
  • Criterios de planificación.
  • Algoritmos de planificación.

Tema 4: Sincronización de procesos. (1 sesión)

  • Conceptos básicos.
  • Problema de la sección crítica.
  • Semáforos.
  • Interbloqueo.

Bloque 3: Memoria.

Tema 5: Gestión de la memoria principal. (2 sesiones)

  • Conceptos básicos.
  • Modelos de gestión de memoria: particionamiento fijo o dinámico.
  • Memoria de intercambio.
  • Paginación.
  • Segmentación.

Tema 6: Memoria virtual. (1 sesión)

  • Concepto de memoria virtual.
  • Paginación bajo demanda.
  • Fallos de página.
  • Algoritmos de remplazo.

Bloque 4: Dispositivos de entrada y salida. Sistemas de ficheros.

Tema 7: Dispositivos de Entrada/Salida. (1 sesión)

  • Conceptos básicos.
  • Funciones de entrada/salida.
  • Planificación de discos.
  • Caché de disco.

Tema 8: Sistemas de ficheros. (1 sesión)

  • Abstracción del sistema de Ficheros.
  • Conceptos de fichero y directorio.
  • Nombrado del fichero, propietarios y permisos.
  • Estructura y almacenamiento del fichero.
  • Seguridad en los sistemas de ficheros.
  • Sistemas de ficheros.

 

Bloque 5: Sistemas distribuidos.

Tema 9: Sistemas distribuidos. (1 sesión)

  • Conceptos básicos.
  • Programación distribuida.
  • Paradigmas de Sistemas distribuidos. Modelos cliente/servidor, Peer-to-peer, y comunicación a grupo.
  • Introducción a los Sistemas Operativos Distribuidos. Funciones, servicios, estructura general. Casos de Estudio.
  • Servicios distribuidos. Middleware.
  • Seguridad en sistemas operativos.

El enfoque de la parte teórica será eminentemente práctico y se tratará de ilustrar los conceptos explicados con casos reales de diferentes sistemas operativos. Además, se trabajará la resolución de problemas y casos prácticos. Para ello, se incluyen cinco sesiones, de dos horas de duración cada una, para la resolución de problemas y ejercicios.

 

Programa de la Parte II (Prácticas)

Las prácticas se distribuyen en 15 sesiones, de dos horas de duración cada una, e incluyen un primer bloque de formación básica en llamadas al sistema operativo y un segundo bloque de casos prácticos (shell, planificador de procesos y sistema distribuido).

 

Bloque 1. Llamadas al sistema en Linux (Linux system calls).

Práctica 1: Operaciones de E/S, manejo de ficheros.

Práctica 2: Procesos e hilos.

Práctica 3: Comunicación entre procesos: pipes.

Práctica 4: Comunicación entre procesos: señales.

Práctica 6: Comunicación entre procesos: semáforos y memoria compartida.

Práctica 7: Comunicación entre procesos: colas de mensajes.

 

Bloque 2. Casos prácticos.

Práctica 5: Construcción de una Shell.

Práctica 8: Construcción de un planificador de procesos.

Práctica 9: Construcción de un pequeño sistema concurrente.

 

Subir

Programa de prácticas experimentales

Las prácticas se distribuyen en 15 sesiones, de dos horas de duración cada una, e incluyen un primer bloque de formación básica en llamadas al sistema operativo y un segundo bloque de casos prácticos (shell, planificador de procesos y sistema distribuido).

 

Bloque 1. Llamadas al sistema en Linux (Linux system calls).

Práctica 1: Operaciones de E/S, manejo de ficheros.

Práctica 2: Procesos e hilos.

Práctica 3: Comunicación entre procesos: pipes.

Práctica 4: Comunicación entre procesos: señales.

Práctica 6: Comunicación entre procesos: semáforos y memoria compartida.

Práctica 7 Comunicación entre procesos: colas de mensajes.

 

Bloque 2. Casos prácticos.

Práctica 5: Construcción de una Shell.

Práctica 8: Construcción de un planificador de procesos.

Práctica 9: Construcción de un pequeño sistema concurrente.

 

Las prácticas 5, 8 y 9 tendrán una duración de tres sesiones cada una (siempre que el calendario lo permita) y concluirán con la entrega de la práctica desarrollada para su evaluación. El resto de prácticas, no evaluables, serán de una sesión de duración cada una.

Subir

Bibliografía

Acceda a la bibliografía que el profesorado de la asignatura ha solicitado a la Biblioteca.


A continuación se ofrece una extensa bibliografía a la que los estudiantes puede acudir como material de referencia. La mayor parte de estas referencias se encuentran en la biblioteca de la universidad y el resto puede obtenerse por préstamo inter-bibliotecario.

Se organiza la bibliografía por bloques temáticos y se marcan con la etiqueta [Texto básico] aquellos textos que se consideran básicos. No se pretende, ni mucho menos, que el estudiante consulte todas las referencias, pero sí que sea consciente de que existe una gran variedad de fuentes de información a las que puede acudir cuando lo necesite.

 

Programación concurrente

[Andr08] G. Andrews, Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-Wesley, Reading, MA, 2000. [Texto básico]

[Silb10] A. Silberschatz, P.B. Galvin, G. Gagne Operating System Concepts with Java, 8th edition, John Wiley & Sons, 2010.

[Lea99]  Doug Lea, Concurrent Programming in Java: Design Principles and Patterns (Java Series, 2nd Edition), Addison-Wesley Educational Publishers Inc, 25 de octubre de 1999.

 

Sistemas distribuidos

[Cou11] G. Coulouris, J. Dollimore, T. Kindberg, G. Blair, Distributed Systems: Concepts and Design, Addison-Wesley, 5th Edition, 2011. [Texto básico]

[Lim14]  T.A. Limoncelli, S.R. Chalup, C.J. Hogan, The Practice of Cloud System Administration: Designing and Operating Large Distributed Systems, Volume 2, 2014.

 

Diseño de Sistemas Operativos

[Stal18] W. Stallings, Operating Systems: Internals and Design Principles. Ninth edition, Pearson, 2018. [Texto básico]

[Tane08] A.S. Tanenbaum, A.S. Woodhull. Operating Systems Design and Implementation. Prentice Hall, 3rd revised edition, 2008. 

[Stal10] W. Stallings, Computer Organization and Architecture: Designing for Performance, 8th Edition, 2010.

 

Fundamentos de los Sistemas operativos

[Silb13] A. Silberschatz, P.B. Galvin, G. Gagne, Operating System Concepts. Update, John Wiley & Sons, 2013. [Texto básico]

[Nutt06] G. Nutt, Sistemas Operativos. 3 edición, Pearson Educacion, 2006.

[Tane14] A.S. Tanenbaum, H. Bos, Modern Operating Systems, Pearson, 4th edition, 2014.

[MCh13] A. McHoes, I. M. Flynn, Understanding Operating Systems, Cengage Learning, 7th edition, 2013.

[And14] T. Anderson, M. Dahlin, Operating Systems: Principles and Practice, Recursive Books, 2014

 

Linux/UNIX

[Stev92] W.R. Stevens, Advanced Programming in the Unix environment. Addison-Wesley, 1992. [Texto básico]

[Sobe09] M.G. Sobell, A Practical Guide to Linux Commands, Editors, and Shell Programming, Prentice Hall, 2nd edition, 2009.

[Stev99] W.R. Stevens, Unix interprocess communications. Addison-Wesley, 1999.

[Pala20] S.M. Palakollu. Practical System Programming with C: Pragmatic Example Applications in Linux and Unix-Based Operating Systems. Apress, 2020.

[Pers21] J.B. Persson. Linux System Programming Techniques: Become a proficient Linux system programmer using expert recipes and techniques. Packt, 2021.

 

Windows

[Catl17] B. Catlin, J. Hanrahan, P. Yosifovich, M.E. Russinovich, D.A. Solomon, A. Ionescu, Windows Internals, Part 1: User Mode (Developer Reference), Microsoft, 2017 (ISBN 10: 0735684189  ISBN 13: 9780735684188) [Texto básico]

[Russ20] M.E. Russinovich, A. Allievi, A. Ionescu, D.A. Solomon, Windows Internals, Part 2: Developer Reference, Microsoft, 2020 [Texto básico]

[Hart10] J.M. Hart, Windows System Programming, Addison-Wesley, Microsoft Technology Series, 4th Edition, 2010.

 

Lenguaje C

[Kern88] B.W. Kernighan, D.M. Ritchie. The C programming language. 2 edición, Prentice-Hall, 1988. [Texto básico]

[Mitc01] M. Mitchell, J. Oldham, A. Samuel. Advanced Linux Programming, New Riders, Pearson Education, 2001.

 

 

Material docente

En MiAulario (https://miaulario.unavarra.es) se encuentran los siguientes materiales:

  1. Transparencias utilizadas en las sesiones presenciales.
  2. Colecciones de enunciados de ejercicios.
  3. Guiones de las prácticas.
  4. Lecturas recomendadas.
  5. Casos prácticos.

 

Subir

Lugar de impartición

Las clases de la Parte I se impartirán en el Aulario en el aula que destine a tal efecto la ETSIIT, mientras que la Parte II se impartirá en el laboratorio del aulario que destine a tal efecto la ETSIIT.

 

Para más información consultar el siguiente enlace: http://www.unavarra.es/ets-industrialesytelecos/estudios/grado/grado-en-ingenieria-informatica/presentacion?submenu=yes

Subir