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
Lenguaje de programación
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
Propedéutico
- Introducción a GNU/Linux
- Introducción al lenguaje de programación
C
- Control de versiones con
git
Temario (cont.)
Introducción a los sistemas operativos
- Conceptos de sistemas operativos
- Administración y manejo de recursos
- Maquinas virtuales
- Elementos y estructura de un sistema operativo
- Tipos de sistemas operativos
Temario (cont.)
Procesos
- Descripción de un proceso
- Creación y finalización de procesos
- Estado de un proceso
- Comunicación entre procesos
- Procesos y máquinas virtuales
Temario (cont.)
Hilos
- Revisión del concepto de hilo
- Uso e implementación de hilos
- Modelos de hilo simple y multihilos
- Hilos en sistemas distribuidos
Temario (cont.)
Planificación
- Conceptos básicos
- Criterios y algoritmos de planificación
- Planificación de hilos
- Planificación en sistemas distribuidos
- Problemas clásicos
Temario (cont.)
Comunicación y sincronización de procesos
- Condiciones de carrera
- Región crítica
- Exclusión mutua y solución de Peterson
- Semáforos
- Monitores
- Problemas y ejemplos
Temario (cont.)
Interbloqueo
- Modelado de interbloqueos
- Métodos para el manejo de interbloqueos
- Prevención y evitación de interbloqueos
Temario (cont.)
Manejo de memoria principal
- Conceptos generales
- Intercambio
- Asignación de memoria contigua
- Paginación
- Tablas de páginas
- Segmentación
- Virtualización de la memoria
Temario (cont.)
Manejo de memoria virtual
- Introducción
- Paginación sobre demanda
- Copy-on-write
- Reemplazo de páginas
- Manejo de marcos
Temario (cont.)
Sistemas de archivos
- Conceptos generales
- Métodos de acceso
- Estructura de directorios y discos
- Estructura de un sistema de archivos
- Métodos de asignación
- Manejo de espacio libre
- Recuperación de sistemas de archivos
- Archivos compartidos
Temario (cont.)
Entrada y salida
- Introducción
- Hardware y software de entrada y salida
- Subsistema de entrada y salida en el Kernel
- Peticiones de entrada y salida y operaciones de hardware
- Virtualización de la entrada y salida
Temario (cont.)
Contenedores
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