Sistemas Operativos

Lost children will be taught the C programming language

José Luis Torres

Andrés Hernández

2025-2

Presentación del curso

Sistemas Operativos, Facultad de Ciencias, UNAM

Semestre 2025-2

  • José Luis Torres Rodríguez
  • Andrés Leonardo Hernández Bermúdez

Requisitos

  • Conocimientos básicos de GNU/Linux
  • Conocimientos de arquitectura de computadoras
  • Conocimientos de programación en un lenguaje estructurado u orientado a objetos

Requisitos (cont.)

  • No tener materias encimadas en el horario de Sistemas Operativos
  • Asistencia regular a clase
  • La asistencia a las sesiones de laboratorio es obligatoria

Objetivos

  • Introducir al estudiante en el estudio de los elementos que conforman un sistema operativo, de su estructura y de las funcionalidades proporcionadas por el mismo
  • Presentar al estudiante los elementos necesarios para comprender la forma en que un sistema operativo controla los recursos de un sistema de cómputo

Objetivos (cont.)

  • Proporcionar al estudiante bases que le permitan explotar los recursos de un sistema operativo
  • Estudiar las características de los sistemas operativos tradicionales y sentar las bases para entender los sistemas operativos distribuidos

Objetivos (cont.)

  • Llevar a cabo la implementación de algunas de las técnicas usadas en los sistemas operativos modernos, abordadas durante el curso, con el objetivo de reforzar la comprensión de las mismas
    • Esto incluye el uso de sistemas de archivos actuales, aplicaciones y arquitecturas disponibles en la nube, entre otros

Objetivos (cont.)

  • Introducir al estudiante en la instalación, configuración y uso de servicios en un sistema operativo

Sistemas Operativos

  • GNU/Linux
  • Windows

Lenguaje de programación

  • C

Impartición de las clases

Teoría

Profesor

  • Videos pre-grabados en el canal de YouTube de la materia
  • Martes y jueves de 17:00 a 18:30 hrs via Zoom.

Ayudante

  • Videos pre-grabados en el canal de YouTube de la materia
  • Lunes y miércoles de 16:00 a 17:00 hrs via Zoom.

Laboratorio

Se llevarán a cabo una serie de prácticas con el objetivo de que el alumno se familiarice con el lenguaje de programación C y para reforzar los temas abordados en las sesiones teóricas.

Recursos de cómputo

  • Se utilizará Google Drive para realizar trabajo colaborativo en equipo y para la entrega de algunas tareas
  • GitLab para la entrega de proyectos de programación y la documentación correspondiente
  • Se hará uso de un grupo en Telegram para comunicación grupal y personal

Recursos de cómputo (cont.)

Recursos de cómputo (cont.)

Se compartirán recursos adicionales a la cuenta de correo institucional @ciencias en caso de ser requerido - Google Meet o Zoom para las sesiones de dudas - Carpeta de Google Drive para trabajo colaborativo y la entrega de algunas tareas - Canal de Youtube para la publicación de videos sobre el curso

Calendario FCiencias

Calendario UNAM

Temario

  1. Propedéutico

    1. Introducción a GNU/Linux
    2. Introducción al lenguaje de programación C
    3. Control de versiones con git

Temario (cont.)

  1. Introducción a los sistemas operativos

    1. Conceptos de sistemas operativos
    2. Administración y manejo de recursos
    3. Maquinas virtuales
    4. Elementos y estructura de un sistema operativo
    5. Tipos de sistemas operativos

Temario (cont.)

  1. Procesos

    1. Descripción de un proceso
    2. Creación y finalización de procesos
    3. Estado de un proceso
    4. Comunicación entre procesos
    5. Procesos y máquinas virtuales

Temario (cont.)

  1. Hilos

    1. Revisión del concepto de hilo
    2. Uso e implementación de hilos
    3. Modelos de hilo simple y multihilos
    4. Hilos en sistemas distribuidos

Temario (cont.)

  1. Planificación

    1. Conceptos básicos
    2. Criterios y algoritmos de planificación
    3. Planificación de hilos
    4. Planificación en sistemas distribuidos
    5. Problemas clásicos

Temario (cont.)

  1. Comunicación y sincronización de procesos

    1. Condiciones de carrera
    2. Región crítica
    3. Exclusión mutua y solución de Peterson
    4. Semáforos
    5. Monitores
    6. Problemas y ejemplos

Temario (cont.)

  1. Interbloqueo

    1. Modelado de interbloqueos
    2. Métodos para el manejo de interbloqueos
    3. Prevención y evitación de interbloqueos

Temario (cont.)

  1. Manejo de memoria principal

    1. Conceptos generales
    2. Intercambio
    3. Asignación de memoria contigua
    4. Paginación
    5. Tablas de páginas
    6. Segmentación
    7. Virtualización de la memoria

Temario (cont.)

  1. Manejo de memoria virtual

    1. Introducción
    2. Paginación sobre demanda
    3. Copy-on-write
    4. Reemplazo de páginas
    5. Manejo de marcos

Temario (cont.)

  1. Sistemas de archivos

    1. Conceptos generales
    2. Métodos de acceso
    3. Estructura de directorios y discos
    4. Estructura de un sistema de archivos
    5. Métodos de asignación
    6. Manejo de espacio libre
    7. Recuperación de sistemas de archivos
    8. Archivos compartidos

Temario (cont.)

  1. Entrada y salida

    1. Introducción
    2. Hardware y software de entrada y salida
    3. Subsistema de entrada y salida en el Kernel
    4. Peticiones de entrada y salida y operaciones de hardware
    5. Virtualización de la entrada y salida

Temario (cont.)

  1. Contenedores

  2. Seguridad

Evaluación del semestre

Se considerarán los siguientes elementos para llevar a cabo la evaluación:

Examenes

Se aplicarán 4 examenes, de acuerdo al avance que se tenga en el curso

Examen Fecha
Parcial 1 Jueves 20 de febrero de 2025
Parcial 2 Jueves 20 de marzo de 2025
Parcial 3 Jueves 24 de abril de 2025
Parcial 4 Jueves 22 de mayo de 2025

NOTA: Las fechas están sujetas a cambios

Requisitos para presentar examen

  • Haber entregado puntualmente las tareas anteriores a la fecha del examen
  • No habrá reposiciones de examenes
  • Es requisito indispensable el contar con un promedio aprobatorio en los examenes y haberlos presentado todos, sin excepción, para tener derecho a obtener una calificación final aprobatoria en el semestre

Prácticas

  • Prácticas sobre cada uno de los temas principales vistos a lo largo del semestre
  • Es requisito indispensable el haber entregado todas las prácticas para tener derecho a obtener una calificación final aprobatoria en el semestre
  • No es posible obtener una calificación aprobatoria si no se ha cumplido con la entrega de las prácticas asignadas durante el semestre

Tareas teórico-prácticas

  • En estas tareas se aplicarán todos los conocimientos vistos a la fecha, complementados con material adicional

Bibliotecas de C

  • Archivos de cabecera y de implementación
  • Código objeto o, archivos a, bibliotecas de ligado dinámico so
  • Ligado y programa ejecutable
  • Bibliotecas estándar
  • Bibliotecas portables
  • Bibliotecas de terceros: curl, libssl

Notas

  • La entrega de todos los trabajos será improrrogable
  • Todos los trabajos duplicados serán evaluados con cero, sin hacer indagaciones

Notas (cont.)

  • Las tareas y prácticas se deberán trabajar en equipo, se indicará la cantidad de integrantes que puede tener cada equipo
    • El trabajo en equipo se evalua considerando la participación de todos los integrante
  • Se debe considerar que la forma de trabajo en equipo no es opcional
    • Las prácticas y proyectos están diseñados para llevarse a cabo en equipo, por lo que estos no se pueden asignar de manera individual

Notas (cont.)

  • La calificación final se entregará a más tardar el día de la segunda vuelta de los examenes finales
    • Esta fecha también es el límite para solicitar aclaraciones de cualquier trabajo entregado

Notas (cont.)

  • Sin excepción, no se aceptarán reclamaciones fuera de la fecha señalada en el punto anterior
  • Sin excepciones, no se permitirá renunciar a ninguna calificación
  • La calificación de NP sólo se asignará a quien no haya entregado ningún trabajo y no haya presentado ningún examen

Notas (cont.)

  • De ninguna manera se dará un trato ni una calificación especial a ningún estudiante, por el hecho de trabajar, tener un promedio alto en su historial académico, contar con algún tipo de beca o tener materias encimadas
  • Tampoco se tomarán en cuenta recomendaciones de ninguna persona para asignar la calificación final

Evaluación

La calificación final se calculará en base a los siguientes porcentajes:

Elemento Valor
Prácticas 50%
Examenes 30%
Tareas 20%

Las participaciones que aporten ideas a la clase pueden ayudar a incrementar la calificación final

Bibliografía

  • Operating System Concepts, 9th edition, 2013 Silverschatz, Abraham; Galvin, Peter; Gagne, Greg John Wiley & Sons

  • Sistemas Operativos Modernos, 3a edición, 2009 Tanenbaum, Andrew S. Pearson/Prentice Hall

Bibliografía (cont.)

  • Fundamentos de Sistemas Operativos. Primera edición Golf, Gunnar; Ruiz, Esteban; Bergero, Federico; Meza, Erwin Universidad Nacional Autónoma de México, Instituto de Investigaciones Económicas, Facultad de Ingeniería. 2015 Distribuido libremente bajo los términos de la CC BY-SA versión 4.0

Tareas

  • Crear una cuenta en GitLab asociada al correo @ciencias
    • No utilizar Google/GitHub/etc. para iniciar sesión
  • Utilizaremos una máquina virtual de GNU/Linux para las tareas y prácticas
    • Necesitamos permisos administrativos en esa máquina virtual
  • Utilizaremos Python para instalar algunas herramientas del flujo de trabajo

Dudas u observaciones adicionales