5.30. CS2S1. Sistemas Operativos (Obligatorio)
- Semestre: 5to Sem. Créditos: 4
- Horas del curso: Teoría: 2 horas; Práctica: 2 horas; Laboratorio: 2 horas;
-
Prerrequisitos:
- CS221. Arquitectura de Computadores (4to Sem)
5.30.1. Justificación
El sistema operativo es una colección de servicios necesarios para interconectar de manera segura el hardware con las aplicaciones. Este curso explora los mecanismos y políticas necesarios para virtualizar el cómputo, la memoria y las E/S. Los estudiantes comprenderán conceptos centrales como concurrencia, persistencia y límites de confianza, los cuales son fundamentales para desarrollar sistemas de software robustos y eficientes.
5.30.2. Objetivos Generales
- 1.
- Comprender el rol y propósito de los sistemas operativos modernos.
- 2.
- Dominar la planificación de procesos y el ciclo de vida de las unidades de ejecución.
- 3.
- Analizar la gestión de memoria, incluyendo la virtualización de memoria física y virtual.
- 4.
- Evaluar sistemas de almacenamiento y técnicas de gestión de archivos.
- 5.
- Comprender los conceptos básicos de seguridad y protección dentro de un entorno de sistema operativo.
5.30.3. Contribución a los resultados (Outcomes)
-
AG-C09) Diseño y Desarrollo de Soluciones: Diseña, implementa y evalúa soluciones para problemas complejos de computación. (Usage)
-
AG-C03) Trabajo Individual y en Equipo: Se desempeña efectivamente como individuo y como miembro o líder en equipos diversos. (Usage)
5.30.4. Contenido
5.30.4.1. Rol y Propósito de los Sistemas Operativos (8 horas) [Habilidades AG-C03,AG-C09]
Referencias Bibliográficas: [Silberschatz et al., 2018, Tanenbaum and Bos, 2014]
Temas
- 1.
- Los sistemas operativos median entre el hardware de propósito general y el software específico de la aplicación.
- 2.
- Funciones universales del sistema operativo (por ejemplo, proceso, interfaces de usuario y dispositivos, persistencia de datos)
- 3.
- Funciones extendidas y/o especializadas del sistema operativo (por ejemplo, sistemas embebidos, tipos de servidor como archivos, web, multimedia, gestores de arranque y seguridad de arranque)
- 4.
- Problemas de diseño (por ejemplo, eficiencia, robustez, flexibilidad, portabilidad, seguridad, compatibilidad, energía, seguridad, compensaciones entre verificación de errores y rendimiento, flexibilidad y rendimiento, y seguridad y rendimiento). Ver también: Seguridad (SEC) -Engineering
- 5.
- Influencias de seguridad, redes, multimedia, computación paralela y distribuida
- 6.
- Preocupación general de seguridad/protección: Omitir considerar la seguridad en cada capa crea una
oportunidad para acceder de manera inapropiada a los recursos.
- a)
- Se puede lograr acceso no autorizado a archivos en una unidad no cifrada moviendo el medio a otra computadora.
- b)
- La seguridad impuesta por los sistemas operativos puede ser derrotada infiltrando la capa de arranque antes de que se cargue el sistema operativo.
- c)
- El aislamiento de procesos puede ser subvertido por una verificación de autorización inadecuada en los límites de la API.
- d)
- Las vulnerabilidades en el firmware del sistema pueden proporcionar vectores de ataque que eviten por completo el sistema operativo.
- e)
- El aislamiento inadecuado de la memoria, cómputo y hardware de la máquina virtual puede exponer el sistema anfitrión a ataques desde sistemas invitados.
- f )
- El sistema operativo puede necesitar mitigar la explotación de vulnerabilidades de hardware y firmware, lo que lleva a posibles reducciones de rendimiento (por ejemplo, mitigaciones de Spectre y Meltdown).
- 7.
- Exposición de funciones del sistema operativo en shells y programación de sistemas. Ver también: Fundamentos de los Lenguajes de Programación (FPL) -ShellScripting
Aprendizaje esperado (Learning Outcomes)
- 1.
- Comprender los objetivos y funciones de los sistemas operativos modernos [Explicar]
- 2.
- Evaluar los problemas de diseño en diferentes escenarios de uso (por ejemplo, sistema operativo en tiempo real, móvil, servidor) [Evaluar]
- 3.
- Comprender las funciones de un sistema operativo contemporáneo con respecto a conveniencia, eficiencia y capacidad de evolucionar [Explicar]
- 4.
- Comprender cómo la evolución y la estabilidad son deseables y mutuamente antagónicas en las funciones del sistema operativo [Explicar]
5.30.4.2. Scripting de Shell (8 horas) [Habilidades AG-C03,AG-C09]
Referencias Bibliográficas: [Robbins and Beebe, 2005, Silberschatz et al., 2018]
Temas
- 1.
- Manejo de errores/excepciones
- 2.
- Tuberías (piping)
- 3.
- Comandos del sistema:
- a)
- Interfaz con sistemas operativos
- 4.
- Variables de entorno
- 5.
- Abstracción de archivo y operadores
- 6.
- Estructuras de datos, como arreglos y listas.
- 7.
- Expresiones regulares
- 8.
- Programas y procesos
- 9.
- Flujo de trabajo
Aprendizaje esperado (Learning Outcomes)
- 1.
- Crear y ejecutar scripts automatizados para gestionar varias tareas del sistema [Crear]
- 2.
- Resolver varios problemas de procesamiento de texto mediante scripting [Resolver]
5.30.4.3. Planificación (16 horas) [Habilidades AG-C03,AG-C09]
Referencias Bibliográficas: [Silberschatz et al., 2018, Stallings, 2017]
Temas
- 1.
- Planificación con expropiación y sin expropiación
- 2.
- Planificadores y políticas (por ejemplo, primero en llegar primero en ser servido, trabajo más corto primero, prioridad, round robin, multinivel). Ver también: Fundamentos de Sistemas (SF) -Resource
- 3.
- Conceptos de planificación de multiprocesador simétrico (SMP) y coherencia de caché Ver también: Arquitectura y Organización (AR) -MemoryHierarchy
- 4.
- Temporizadores (por ejemplo, construir muchos temporizadores a partir de temporizadores de hardware finitos). Ver también: Arquitectura y Organización (AR) -AssemblyLevelMachineOrganization
- 5.
- Justicia e inanición
- 6.
- Subtemas de sistemas operativos como planificación consciente de energía y planificación en
tiempo real. Ver también: Arquitectura y Organización (AR) -PerformanceEnergyEfficiency,
Desarrollo de Plataformas Especializadas (SPD) -EmbeddedPlatforms, Desarrollo de
Plataformas Especializadas (SPD) -MobilePlatforms
- 7.
- Planificación cooperativa, como futexes de Linux y planificación en espacio de usuario.
Aprendizaje esperado (Learning Outcomes)
- 1.
- Comparar y contrastar los algoritmos comunes utilizados para planificación con y sin expropiación de tareas en sistemas operativos, como prioridad, comparación de rendimiento y esquemas de participación justa [Comparar]
- 2.
- Explicar las relaciones entre algoritmos de planificación y dominios de aplicación [Explicar]
- 3.
- Explicar las distinciones entre tipos de planificadores de procesador como corto plazo, mediano plazo, largo plazo y E/S [Explicar]
- 4.
- Evaluar un problema o solución para determinar la idoneidad para multiprocesamiento asimétrico y/o simétrico [Evaluar]
- 5.
- Evaluar un problema o solución para determinar la idoneidad como proceso vs hilos [Evaluar]
- 6.
- Listar algunos contextos que se benefician de la planificación con expropiación y con plazo límite [Listar/Enumerar]
- 7.
- Explicar las formas en que la lógica incorporada en los algoritmos de planificación es aplicable a otros mecanismos de sistemas operativos, como primero en llegar primero en ser servido o prioridad para E/S de disco, planificación de red, planificación de proyectos y problemas más allá de la computación [Explicar]
5.30.4.4. Gestión de Memoria (16 horas) [Habilidades AG-C03,AG-C09]
Referencias Bibliográficas: [Silberschatz et al., 2018, Arpaci-Dusseau and Arpaci-Dusseau, 2018]
Temas
- 1.
- Revisión de memoria física, traducción de direcciones y hardware de gestión de memoria. Ver también: Arquitectura y Organización (AR) -MemoryHierarchy, Fundamentos Matemáticos y Estadísticos (MSF) -Discrete
- 2.
- Impacto de la jerarquía de memoria incluyendo concepto de caché, búsqueda en caché y almacenamiento en caché por CPU en mecanismos y políticas del sistema operativo Ver también: Arquitectura y Organización (AR) -MemoryHierarchy, Fundamentos de Sistemas (SF) -Performance
- 3.
- Direccionamiento lógico y físico, virtualización de espacio de direcciones. Ver también: Arquitectura y Organización (AR) -MemoryHierarchy, Fundamentos Matemáticos y Estadísticos (MSF) -Discrete
- 4.
- Conceptos de paginación, reemplazo de páginas, trashing y asignación de páginas y marcos
- 5.
- Técnicas de asignación/desasignación/almacenamiento (algoritmos y estructura de datos) rendimiento
y flexibilidad
- a)
- Arenas, asignadores de losas (slab allocators), listas libres, clases de tamaño, páginas de tamaño heterogéneo (páginas enormes)
- 6.
- Almacenamiento en caché de memoria y coherencia de caché y el efecto de vaciar la caché para evitar
vulnerabilidades de ejecución especulativaVer también: Arquitectura y Organización (AR)
-FunctionalOrganization, Arquitectura y Organización (AR) -MemoryHierarchy, Fundamentos de Sistemas (SF) -Performance)
- 7.
- Mecanismos y conceptos de seguridad en gestión de memoria incluyendo sandboxing, protección, aislamiento y vectores relevantes de ataque. Ver también: Seguridad (SEC) -Foundations
- 8.
- Memoria virtual: aprovechando el hardware de memoria virtual para servicios del SO y eficiencia
Aprendizaje esperado (Learning Outcomes)
- 1.
- Explicar jerarquía de memoria y compensaciones costo-rendimiento [Explicar]
- 2.
- Resumir los principios de memoria virtual aplicados a almacenamiento en caché y paginación [Resumir]
- 3.
- Evaluar las compensaciones en términos de tamaño de memoria (memoria principal, memoria caché, memoria auxiliar) y velocidad del procesador [Evaluar]
- 4.
- Describir la razón y el uso de la memoria caché (rendimiento y proximidad, cómo las cachés complican el aislamiento y la abstracción de máquina virtual) [Describir]
- 5.
- Codificar/Desarrollar programas eficientes que consideren los efectos del reemplazo de páginas y asignación de marcos en el rendimiento de un proceso y el sistema en el que se ejecuta [Crear]
- 6.
- Explicar cómo se utiliza el hardware para una virtualización eficiente [Explicar]
5.30.4.5. API de Sistemas de Archivos e Implementación (12 horas) [Habilidades AG-C03,AG-C09]
Referencias Bibliográficas: [Silberschatz et al., 2018, Stallings, 2017]
Temas
- 1.
- Concepto de archivo incluyendo datos, metadatos, operaciones y modo de acceso
- 2.
- Montaje de sistema de archivos
- 3.
- Control de acceso a archivos
- 4.
- Compartición de archivos
- 5.
- Métodos básicos de asignación de archivos, incluida la tabla de asignación enlazada
- 6.
- Estructuras del sistema de archivos que comprenden asignación de archivos incluyendo varias estructuras de directorio y métodos para identificar archivos de manera única (por ejemplo, nombre, identificador o ubicación de almacenamiento de metadatos)
- 7.
- Técnicas de asignación/desasignación/almacenamiento (algoritmos y estructura de datos) impacto en rendimiento y flexibilidad (es decir, fragmentación interna y externa y compactación)
- 8.
- Gestión de espacio libre como usar tablas de bits vs enlazado
- 9.
- Implementación de directorios para segmentar y rastrear ubicación de archivos
Aprendizaje esperado (Learning Outcomes)
- 1.
- Explicar las elecciones que deben tomarse en el diseño de sistemas de archivos [Explicar]
- 2.
- Evaluar diferentes enfoques para organización de archivos, reconociendo las fortalezas y debilidades de cada uno [Evaluar]
- 3.
- Aplicar constructores de software apropiadamente dado el conocimiento de la implementación del sistema de archivos [Aplicar]
5.30.4.6. Protección y Seguridad (12 horas) [Habilidades AG-C03,AG-C09]
Referencias Bibliográficas: [Silberschatz et al., 2018, Tanenbaum and Bos, 2014]
Temas
- 1.
- Descripción general de mecanismos de seguridad del sistema operativo. Ver también: Seguridad (SEC) -Foundations
- 2.
- Ataques y antagonismo (planificación, etc.). Ver también: Seguridad (SEC) -Foundations
- 3.
- Revisión de vulnerabilidades principales en sistemas operativos reales. Ver también: Seguridad (SEC) -Foundations
- 4.
- Estrategias de mitigación del sistema operativo como copias de seguridad. Ver también: Fundamentos de Sistemas (SF) -Reliability
- 5.
- Separación política/mecanismo. Ver también: Seguridad (SEC) -Governance
- 6.
- Métodos y dispositivos de seguridad. Ver también: Seguridad (SEC) -Foundations
- a)
- Anillos de protección (historia desde Multics hasta x86 virtualizado)
- b)
- Anillos -1 y -2 de x86_64 (hipervisor y ME/PSP)
- 7.
- Protección, control de acceso y autenticación. Ver también: Seguridad (SEC) -Foundations, Seguridad (SEC) -Crypto
Aprendizaje esperado (Learning Outcomes)
- 1.
- Comprender el requisito de mecanismos de protección y seguridad en sistemas operativos [Explicar]
- 2.
- Listar y describir los vectores de ataque que aprovechan vulnerabilidades del SO [Listar/Enumerar]
- 3.
- Comprender los mecanismos disponibles en un SO para controlar el acceso a recursos [Explicar]
- 4.
- Resumir las características y limitaciones de un sistema operativo que impactan la protección y seguridad [Resumir]