Grado en International Computer Engineering La Salle Campus Barcelona

Grado en International Computer Engineering

El Grado en Ingeniería Informática de La Salle es el único programa de grado en Barcelona que te proporcionará las habilidades y el conocimiento para dar respuesta a las necesidades internacionales del sector de la informática y de los negocios.

Sistemas operativos

Descripción: 

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.

Tipo asignatura
Obligatoria no de Primer
Semestre
Primero
Curso
3
Créditos
5.00

Profesores Titulares

Conocimientos previos: 

Conceptos de programación (algorítmica y estructuras de datos) y conceptos básicos de utilización de un sistema operativo.





 

 




Objetivos: 

Los estudiantes que cursan la asignatura de Sistemas Operativos deben adquirir los conocimientos y desarrollar las habilidades que se indican a continuación:









  • Comprender las funcionalidades de un sistema operativo, su estructura y sus relaciones con el resto del sistema informático
  • Conocer los conceptos, técnicas y terminología asociada al desarrollo y creación de un sistema operativo en cada una de sus diferentes capas.
  • Saber aplicar estas técnicas desarrollando software que las implemente.
  • Saber expresarse de manera correcta utilizando la terminología adecuada tanto de forma oral como escrita.
  • Saber desarrollar software de forma modular y bien documentada.
  • Saber resolver problemas asociados al ámbito que nos ocupa, tanto de manera individual como colectiva.







Contenidos: 

Durante el curso académico se desarrollarán los siguientes contenidos:

CONTENIDOS CONCEPTUALES

Tema 1. Introducción a los Sistemas Operativos

  1. Introducción a los ordenadores

    • Componentes básicos

    • Ejecución de instrucciones
    • Interrupciones
    • Múltiples interrupciones
    • Multiprogramación
  2. Ubicación del Sistema Operativo en el sistema informático
  3. Funciones de los sistemas operativos
  4. Evolución histórica de los sistemas operativos
  5. Componentes de un sistema operativo

Tema 2. El núcleo del Sistema Operativo

  1. Descripción
  2. Esquema del núcleo
  3. Representación de los procesos: PCB (Process Control Block)
  4. Controlador de la interrupción: FLIH (First Level Interrupt Handler)
  5. El Dispatcher
  6. Mecanismos de comunicación, sincronización y exclusión mutua
  7. Clasificación de los kernels
  8. Núcleos de sistemas operativos contemporáneos

Tema 3. Planificación

  1. Introducción
  2. Criterios de planificación
  3. 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)
  4. Algoritmos de planificación en colas

    • Planificación en colas multinivel

    • Planificación en colas multinivel con realimentación
  5. Planificación con procesadores múltiples
  6. Planificación en tiempo real
  7. Ejemplos de implementación

Tema 4. Mecanismos de comunicación, sincronización y exclusión mutua

  1. 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
  2. Soluciones hardware
  3. Soluciones software
  4. Comunicación entre procesos

    • Pipes

    • Paso de mensajes en C
    • Sockets
    • Memoria compartida
  5. 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

  1. Entorno de trabajo
  2. File descriptors
  3. Señales
  4. Fork, exec
  5. Threads
  6. Sockets
  7. Pipes
  8. Select
  9. Memoria compartida
  10. Colas de mensajes
  11. Semáforos

Metodología: 

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.









En la segunda sesión se lleva a cabo una actividad de laboratorio en la que el estudiante debe diseñar e implementar soluciones prácticas utilizando las técnicas presentadas previamente, especialmente en el contexto de la programación en lenguaje C en sistemas UNIX y el uso de llamadas al sistema. A lo largo del curso se proponen ejercicios adicionales para resolver de manera individual o en equipo fuera del aula, que posteriormente se revisan total o parcialmente en sesiones posteriores.

Finalmente, la asignatura incluye una práctica de mayor alcance, estructurada en diversas fases, que permite integrar y aplicar de manera global los conocimientos y competencias adquiridos.








Evaluación: 

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

Criterios evaluació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.









RA.10. Conceptos básicos de los sistemas operativos. El estudiante debe ser capaz de:

  • identificar y describir los conceptos fundamentales asociados a los sistemas operativos, su estructura y su papel dentro del sistema informático [A, C, J]
  • utilizar correctamente la terminología propia de la asignatura en contextos teóricos y prácticos [A, C, J]
  • resolver cuestiones conceptuales relacionadas con los contenidos básicos de la asignatura [A, C]

RA.11. Conocimiento de los diferentes componentes o subsistemas de un sistema operativo y de las técnicas o estrategias que se aplican en cada uno de ellos. El estudiante debe ser capaz de:

  • describir la estructura básica de un sistema operativo y el funcionamiento de sus principales componentes [A, C]
  • analizar mecanismos relacionados con procesos, interrupciones, planificación y gestión de recursos [A, C, D]
  • comparar y justificar el uso de diferentes técnicas y estrategias aplicadas a los subsistemas de un sistema operativo [A, D, J]
  • interpretar problemas y casos prácticos relacionados con el comportamiento y la organización interna del sistema operativo [A, D, G]

RA.12. Identificación, formulación y resolución de problemas con procesos concurrentes que requieren un sistema de integridad de datos compartidos. El estudiante debe ser capaz de:

  • identificar situaciones de concurrencia y los problemas asociados, como exclusión mutua, deadlock, starvation o fairness [A, C, D]
  • formular y resolver problemas de sincronización y comunicación entre procesos utilizando las técnicas adecuadas [A, D, G]
  • seleccionar y aplicar correctamente mecanismos como semáforos, memoria compartida, pipes, colas de mensajes o sockets en función del problema planteado [A, D, G]
  • justificar las decisiones adoptadas en la resolución de problemas concurrentes [A, G, M]

RA.13. Diseño e implementación de aplicaciones multiproceso que impliquen compartición de información y comunicación entre procesos. El estudiante debe ser capaz de:

  • diseñar e implementar programas en lenguaje C sobre sistemas UNIX que utilicen llamadas al sistema y mecanismos de comunicación y sincronización [G, D]
  • desarrollar soluciones modulares, correctamente estructuradas y documentadas [F, G]
  • elaborar memorias técnicas que describan adecuadamente el diseño, la implementación y el funcionamiento de las soluciones desarrolladas [F]
  • defender oralmente las decisiones de diseño y demostrar un conocimiento suficiente del funcionamiento del programa implementado [M]
  • trabajar de manera individual o colaborativa en el desarrollo de soluciones prácticas [F, G, M]







Bibliografía básica: 

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

Material complementario: 

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.