2.10. Sistemas Operativos (OS)

2.10. Sistemas Operativos (OS)

El sistema operativo es una colección de servicios necesarios para interconectar de manera segura el hardware con las aplicaciones. Los temas centrales se centran en los mecanismos y políticas necesarios para virtualizar cómputo, memoria y entrada/salida (I/O). Los temas generales que se reutilizan en muchos niveles de los sistemas informáticos están bien ilustrados en los sistemas operativos (por ejemplo, sondeo vs interrupciones, caché, flexibilidad vs costos, enfoques de planificación de procesos, reemplazo de páginas, etc.). El área de conocimiento de Sistemas Operativos contiene los conceptos subyacentes clave para otras áreas de conocimiento: límites de confianza, concurrencia, persistencia y extensibilidad segura.

Tabla 2.10: Lista de KUs del área de Sistemas Operativos.

2.10.1. OS/Rol y Propósito de los Sistemas Operativos  (CS Core: 2 hrs) ↑ Volver arriba

Temas:
Core

  • Los sistemas operativos median entre el hardware de propósito general y el software específico de la aplicación.
  • Funciones universales del sistema operativo (por ejemplo, proceso, interfaces de usuario y dispositivos, persistencia de datos)
  • 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)
  • 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: Diseño e Ingeniería de Controles de Seguridad , Análisis de Amenazas e Ingeniería de Seguridad , Computación Confiable e Ingeniería de Privacidad
  • Influencias de seguridad, redes, multimedia, computación paralela y distribuida
  • 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.
    1. Se puede lograr acceso no autorizado a archivos en una unidad no cifrada moviendo el medio a otra computadora.
    2. La seguridad impuesta por los sistemas operativos puede ser derrotada infiltrando la capa de arranque antes de que se cargue el sistema operativo.
    3. El aislamiento de procesos puede ser subvertido por una verificación de autorización inadecuada en los límites de la API.
    4. Las vulnerabilidades en el firmware del sistema pueden proporcionar vectores de ataque que eviten por completo el sistema operativo.
    5. 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.
    6. 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). enumerate
    7. Exposición de funciones del sistema operativo en shells y programación de sistemas. Ver también: Scripting de Shell

    Aprendizaje esperado (Learning Outcomes):
    Core:

    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]

    2.10.2. OS/Principios del Sistema Operativo  (CS Core: 2 hrs) ↑ Volver arriba

    Temas:
    Core

    • Diseño y enfoques de software del sistema operativo (por ejemplo, monolítico, en capas, modular, micro-kernel, unikernel)
    • Abstracciones, procesos y recursos
    • Concepto de llamadas al sistema y enlaces a interfaces de programas de aplicación (por ejemplo, Win32, Java, Posix). Ver también: Organización de Máquina a Nivel de Ensamblador
    • La evolución del vínculo entre la arquitectura del hardware y las funciones del sistema operativo
    • Protección de recursos significa proteger algunas instrucciones/funciones de la máquina. Ver también: Organización de Máquina a Nivel de Ensamblador
      1. Las aplicaciones no pueden acceder arbitrariamente a ubicaciones de memoria o direcciones de dispositivos de almacenamiento de archivos.
      2. Protección de coprocesadores y dispositivos de red enumerate
      3. Aprovechamiento de interrupciones desde el nivel de hardware: rutinas de servicio e implementaciones. Ver también: Organización de Máquina a Nivel de Ensamblador
        1. Interrupciones de temporizador para implementar segmentos de tiempo
        2. Interrupciones de E/S para poner hilos bloqueados en espera sin sondeo enumerate
        3. Concepto de estado usuario/sistema y protección, transición al modo kernel usando llamadas al sistema. Ver también: Organización de Máquina a Nivel de Ensamblador
        4. Mecanismo para invocar llamadas al sistema, el cambio de modo y contexto correspondiente y retorno desde interrupción. Ver también: Organización de Máquina a Nivel de Ensamblador
        5. Costos de rendimiento de cambios de contexto y vaciados de caché asociados al realizar cambios de proceso en entornos mitigados para Spectre.

        Aprendizaje esperado (Learning Outcomes):
        Core:

        1. Comprender cómo la aplicación de enfoques de diseño de software al diseño/implementación de sistemas operativos (por ejemplo, en capas, modular, etc.) afecta la robustez y mantenibilidad de un sistema operativo [Explicar]
        2. Categorizar llamadas al sistema por propósito [Categorizar]
        3. Comprender la dinámica de invocar una llamada al sistema (por ejemplo, pasar parámetros, cambio de modo) [Explicar]
        4. Evaluar si una función puede implementarse en la capa de aplicación o solo puede realizarse mediante llamadas al sistema [Evaluar]
        5. Aplicar técnicas de SO para aislamiento, protección y rendimiento a través de las funciones del SO (por ejemplo, similitudes de inanición en planificación de procesos, planificación de solicitudes de disco, semáforos, etc.) y más allá [Aplicar]
        6. Comprender cómo la separación en modo kernel y usuario afecta la seguridad y el rendimiento [Explicar]
        7. Comprender las ventajas y desventajas de usar procesamiento de interrupciones para habilitar la multiprogramación [Explicar]
        8. Analizar vectores potenciales de ataque a través de los sistemas operativos y las características de seguridad diseñadas para proteger contra ellos [Analizar]

        2.10.3. OS/Concurrencia  (CS Core: 2 hrs, KA Core: 1 hr) ↑ Volver arriba

        Temas:
        Core

        Non Core

        • Gestionar acceso atómico a objetos del SO (por ejemplo, gran bloqueo del kernel vs muchos bloqueos pequeños vs estructuras de datos sin bloqueo como listas)

        Aprendizaje esperado (Learning Outcomes):
        Core:

        1. Comprender las ventajas y desventajas de la concurrencia como funciones inseparables dentro del marco del sistema operativo [Explicar]
        2. Comprender cómo la implementación a nivel de arquitectura resulta en problemas de concurrencia incluyendo condiciones de carrera [Explicar]
        3. Comprender problemas de concurrencia en sistemas multiprocesador [Explicar]
        4. Comprender el rango de mecanismos que pueden emplearse a nivel del sistema operativo para realizar sistemas concurrentes y describir los beneficios de cada uno [Explicar]
        5. Comprender técnicas para lograr sincronización en un sistema operativo (por ejemplo, describir cómo puede implementarse un semáforo usando primitivas del SO) incluyendo control de intra-concurrencia y uso de atómicos de hardware [Explicar]
        6. Analizar con precisión código para identificar condiciones de carrera y soluciones apropiadas para abordarlas [Analizar]

        2.10.4. OS/Protección y Seguridad  (CS Core: 2 hrs, KA Core: 1 hr) ↑ Volver arriba

        Temas:
        Core

        Aprendizaje esperado (Learning Outcomes):
        Core:

        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]

        2.10.5. OS/Planificación  (KA Core: 2 hrs) ↑ Volver arriba

        Temas:
        Core

        • Planificación con expropiación y sin expropiación
        • 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: Gestión de Recursos
        • Conceptos de planificación de multiprocesador simétrico (SMP) y coherencia de caché Ver también: Jerarquía de Memoria
        • Temporizadores (por ejemplo, construir muchos temporizadores a partir de temporizadores de hardware finitos). Ver también: Organización de Máquina a Nivel de Ensamblador
        • Justicia e inanición

        Non Core

        Aprendizaje esperado (Learning Outcomes):
        Core:

        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]

        NonCore:

        1. 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]

        2.10.6. OS/Modelo de Proceso  (KA Core: 2 hrs) ↑ Volver arriba

        Temas:
        Core

        Aprendizaje esperado (Learning Outcomes):
        Core:

        1. Comprender cómo los procesos e hilos usan características de concurrencia para virtualizar el control [Explicar]
        2. Comprender las razones para usar interrupciones, despacho y cambio de contexto para apoyar concurrencia y virtualización en un sistema operativo [Explicar]
        3. Comprender los diferentes estados por los que puede pasar una tarea, y las estructuras de datos necesarias para apoyar la gestión de muchas tareas [Explicar]
        4. Comprender las diferentes formas de asignar memoria a tareas, citando los méritos relativos de cada una [Explicar]
        5. Aplicar el mecanismo de comunicación entre procesos apropiado para un propósito específico en un artefacto de software programado [Aplicar]

        2.10.7. OS/Gestión de Memoria  (KA Core: 1 hr) ↑ Volver arriba

        Temas:
        Core

        Non Core

        • Memoria virtual: aprovechando el hardware de memoria virtual para servicios del SO y eficiencia

        Aprendizaje esperado (Learning Outcomes):
        Core:

        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]

        NonCore:

        1. Explicar cómo se utiliza el hardware para una virtualización eficiente [Explicar]

        2.10.8. OS/Gestión de Dispositivos  (KA Core: 1 hr) ↑ Volver arriba

        Temas:
        Core

        Non Core

        • Abstracciones de interfaz de dispositivo, capa de abstracción de hardware
        • Propósito del controlador de dispositivo, abstracción, implementación y desafíos de prueba
        • Tolerancia a fallos de alto nivel en comunicación de dispositivos

        Aprendizaje esperado (Learning Outcomes):
        Core:

        1. Explicar la implementación de control de dispositivos a nivel de arquitectura y vincular mecanismos y políticas relevantes del sistema operativo (por ejemplo, estrategias de almacenamiento en búfer, acceso directo a memoria) [Explicar]
        2. Explicar las capas de gestión de dispositivos del SO y la arquitectura (por ejemplo, controlador de dispositivo, controlador de dispositivo, abstracción de dispositivo) [Explicar]
        3. Explicar la relación entre el hardware físico y los dispositivos virtuales mantenidos por el sistema operativo [Explicar]
        4. Explicar el almacenamiento en búfer de datos de E/S y describir estrategias para implementarlo [Explicar]
        5. Describir las ventajas y desventajas del acceso directo a memoria y discutir las circunstancias en las que su uso está justificado [Describir]

        NonCore:

        1. Describir la complejidad y mejores prácticas para la creación de controladores de dispositivos [Describir]

        2.10.9. OS/API de Sistemas de Archivos e Implementación  (KA Core: 2 hrs) ↑ Volver arriba

        Temas:
        Core

        • Concepto de archivo incluyendo datos, metadatos, operaciones y modo de acceso
        • Montaje de sistema de archivos
        • Control de acceso a archivos
        • Compartición de archivos
        • Métodos básicos de asignación de archivos, incluida la tabla de asignación enlazada
        • 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)
        • 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)
        • Gestión de espacio libre como usar tablas de bits vs enlazado
        • Implementación de directorios para segmentar y rastrear ubicación de archivos

        Aprendizaje esperado (Learning Outcomes):
        Core:

        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]

        2.10.10. OS/Sistemas de Archivos Avanzados  (KA Core: 1 hr) ↑ Volver arriba

        Temas:
        Core

        • Sistemas de archivos: particionamiento, montar/desmontar, sistemas de archivos virtuales
        • Técnicas de implementación en profundidad
        • Archivos mapeados en memoria. Ver también: Interconexión y Comunicación
        • Sistemas de archivos de propósito especial
        • Denominación, búsqueda, acceso, copias de seguridad
        • Sistemas de archivos con registro (journaling) y estructurados en registro (log-structured). Ver también: Confiabilidad del Sistema

        Non Core

        • Sistemas de archivos distribuidos
        • Sistemas de archivos cifrados
        • Tolerancia a fallos

        Aprendizaje esperado (Learning Outcomes):
        Core:

        1. Explicar cómo los desarrollos de hardware han llevado a cambios en las prioridades para el diseño y la gestión de sistemas de archivos [Explicar]
        2. Mapear abstracciones de archivo a una lista de dispositivos e interfaces relevantes [Mapear/Mapa conceptual]
        3. Identificar y categorizar diferentes tipos de montaje [Analizar]
        4. Explicar requisitos específicos de sistemas de archivos y las características de sistemas de archivos especializados que los satisfacen [Explicar]
        5. Explicar el uso de registro y cómo los sistemas de archivos estructurados en registro mejoran la tolerancia a fallos [Explicar]

        NonCore:

        1. Explicar propósito y complejidad de los sistemas de archivos distribuidos [Explicar]
        2. Listar ejemplos de protocolos de sistemas de archivos distribuidos [Listar/Enumerar]
        3. Explicar mecanismos en sistemas de archivos para mejorar la tolerancia a fallos [Explicar]

        2.10.11. OS/Virtualización  (KA Core: 1 hr) ↑ Volver arriba

        Temas:
        Core

        Non Core

        Aprendizaje esperado (Learning Outcomes):
        Core:

        1. Explicar cómo la arquitectura de hardware proporciona soporte y eficiencias para la virtualización [Explicar]
        2. Explicar la diferencia entre emulación y aislamiento [Explicar]
        3. Evaluar las compensaciones de la virtualización [Evaluar]

        NonCore:

        1. Explicar hipervisores y la necesidad de ellos junto con diferentes tipos de hipervisores [Explicar]

        2.10.12. OS/Sistemas en Tiempo Real y Embebidos  (KA Core: 1 hr) ↑ Volver arriba

        Temas:
        Core

        Non Core

        • Requisitos de gestión de memoria/disco en un entorno de tiempo real.
        • Fallas, riesgos y recuperación.
        • Preocupaciones especiales en sistemas de tiempo real (seguridad).

        Aprendizaje esperado (Learning Outcomes):
        Core:

        1. Explicar qué hace que un sistema sea un sistema de tiempo real [Explicar]
        2. Explicar la latencia y sus fuentes en sistemas de software y sus características [Explicar]
        3. Explicar las preocupaciones especiales que presentan los sistemas de tiempo real, incluido el riesgo, y cómo se abordan estas preocupaciones [Explicar]

        NonCore:

        1. Explicar características y mecanismos específicos de sistemas operativos de tiempo real [Explicar]

        2.10.13. OS/Tolerancia a fallos  (KA Core: 1 hr) ↑ Volver arriba

        Temas:
        Core

        Non Core

        • Redundancia espacial y temporal. Ver también: Confiabilidad del Sistema
        • Métodos utilizados para implementar tolerancia a fallos. Ver también: Confiabilidad del Sistema
        • Mecanismos de identificación y corrección de errores, sumas de comprobación (checksums) de memoria volátil en RAM. Ver también: Jerarquía de Memoria
        • Verificación de consistencia y recuperación del sistema de archivos.
        • Sistemas de archivos con registro y estructurados en registro. Ver también: Confiabilidad del Sistema
        • Casos de uso para tolerancia a fallos (bases de datos, críticos para la seguridad). Ver también: Confiabilidad del Sistema
        • Ejemplos de mecanismos del SO para detección, recuperación, reinicio para implementar tolerancia a fallos, uso de estas técnicas para los servicios propios del SO. Ver también: Confiabilidad del Sistema

        Aprendizaje esperado (Learning Outcomes):
        Core:

        1. Explicar cómo los sistemas operativos pueden facilitar la tolerancia a fallos, confiabilidad y disponibilidad [Explicar]
        2. Explicar el rango de métodos para implementar tolerancia a fallos en un sistema operativo [Explicar]
        3. Explicar cómo un sistema operativo puede continuar funcionando después de que ocurra una falla [Explicar]
        4. Explicar las compensaciones de rendimiento y flexibilidad que impactan el uso de tolerancia a fallos [Explicar]

        NonCore:

        1. Describir en detalle los problemas y mecanismos de tolerancia a fallos del sistema operativo [Describir]

        2.10.14. OS/Sociedad, ética y Profesión ↑ Volver arriba

        Temas:
        Core

        • Código abierto en sistemas operativos. Ver también: Open Source, Piratería y DRM , Derechos de PI Digital y Derechos de Autor , Fundamentos de la Propiedad Intelectual , Licencias, Plagio y Autoría
          1. Identificación de vulnerabilidades en kernels de código abierto,
          2. Sistemas operativos invitados de código abierto,
          3. Sistemas operativos anfitriones de código abierto, y
          4. Cambios en monetización (actualizaciones pagas vs gratuitas). enumerate
          5. Problemas de fin de vida con la retirada de sistemas operativos. Concepto ejemplo: Implicaciones de privacidad del uso de sistemas operativos/entornos operativos propietarios, incluyendo telemetría, escaneo automatizado de datos personales, publicidad incorporada e integración automática en la nube.

          Aprendizaje esperado (Learning Outcomes):
          Core:

          1. Explicar ventajas y desventajas de encontrar y abordar errores en kernels de código abierto [Explicar]
          2. Contextualizar la historia e impacto positivo y negativo de Linux como producto de código abierto [Contextualizar]
          3. Listar complicaciones con la dependencia de sistemas operativos pasados de fin de vida [Listar/Enumerar]
          4. Comprender diferencias en encontrar y abordar errores para varios modelos de pago de sistemas operativos [Explicar]

          ¿Encontraste una errata, un curso desactualizado, un enlace roto, o tienes una sugerencia? Cuéntanos.

          Escanea para abrir en tu teléfono