Este es el temario teórico de la asignatura, con un mayor nivel de detalle en sus contenidos.
1. Conceptos generales
1.1. Introducción a los sistemas operativos
1.1.1. Sistema informático y sistema operativo
Componentes de un sistema informático: sistema lógico, sistema físico y sistema humano. Aplicaciones y programas del sistema. Concepto de sistema operativo.
1.1.2. Objetivos de los sistemas operativos
El sistema operativo como administrador de recursos, máquina extendida, programa de control y entorno de operación y programación. Objetivos funcionales y criterios.
1.1.3. Recorrido histórico. Tipos de sistemas informáticos
Sistemas primitivos. Monitor residente. Procesamiento por lotes. La multiprogramación. Sistemas interactivos: tiempo compartido. Sistemas de tiempo real. Informática personal. Sistemas paralelos. Sistemas distribuidos.
1.2. Estructura de computadoras y sistema operativo
1.2.1. El sistema de entrada/salida. Eventos
Sistema de interrupciones. Interrupciones vectorizadas. Acceso directo a memoria (DMA). Excepciones e interrupciones software.
1.2.2. Jerarquía de memorias
Concepto y ejemplos de jerarquía de memorias. Principio de caché. Consistencia y coherencia.
1.2.3. Elementos de protección
Necesidad de protección en el sistema operativo. Instrucciones privilegiadas. Modo dual de operación. Implementación en hardware.
1.3. Estructura y funciones de los sistemas operativos
1.3.1. Componentes funcionales de un sistema operativo
Gestión de procesos. Gestión de la memoria. Gestión de la entrada/salida. Sistemas de ficheros. Interfaces de usuario y de programación. Programas del sistema.
1.3.2. El núcleo del sistema operativo
1.3.3. Interfaz con los servicios del sistema
El sistema operativo como programa guiado por eventos. Las llamadas al sistema. Implementación.
1.3.4. Diseño de sistemas operativos
Principios fundamentales: Principio de abstracción. Principio de caché. Políticas y mecanismos.
Modelos de diseño:Sistemas monolíticos. Sistemas jerárquicos. Modelo de máquina virtual. El modelo cliente/servidor. Micronúcleos.
2. Procesos
2.1. Fundamentos de procesos y concurrencia
2.1.1. Concepto de proceso
Estados de actividad de un proceso. Primitivas de gestión de procesos. Jerarquías de procesos.
2.1.2. Sistemas concurrentes
Propósito y objetivos de la concurrencia. Cooperación y competencia entre procesos. Especificación de la concurrencia.
2.2. Planificación de procesos
2.2.1. Estructuras y niveles de planificación
El bloque de control de proceso. Colas de gestión de procesos. Niveles de planificación. Hilos.
2.2.2. Objetivos de la planificación de procesos
Modelo de comportamiento de un proceso. Criterios de evaluación de las políticas.
2.2.3. Políticas de planificación
FCFS. SJF. Métodos expulsivos (preemptive). Round-Robin. Métodos basados en prioridades. Métodos multicolas.
2.3. Sincronización y comunicación entre procesos
2.3.1. Sincronización entre procesos
Concepto y necesidad. Postergación indefinida e interbloqueo. El problema de la sección crítica. Soluciones algorítmicas y hardware.
2.3.2. Herramientas de programación concurrente
Semáforos. Regiones críticas. Monitores. Problemas clásicos de sincronización entre procesos.
2.3.3. Comunicación entre procesos
Primitivas de comunicación. Mensajes. Taxonomía de los mecanismos de paso de mensajes.
3. Entrada/salida
3.1. Principios de funcionamiento del hardware de E/S
3.1.1. Dispositivos de entrada/salida
3.1.2. Controladores de dispositivo
3.1.3. Acceso directo a memoria (DMA)
3.2. Estructura del subsistema de entrada/salida
3.2.1. Elementos
Gestores de interrupciones. Manejadores de dispositivo. Llamadas al sistema para entrada/salida. Ejemplos de UNIX y Windows NT
3.2.2. Técnicas fundamentales
Buffering. Spooling.
3.3. Planificación de peticiones a discos
4. Sistemas de Ficheros
4.1. Funciones del sistema de ficheros
4.1.1. Concepto de fichero.
El fichero como tipo abstracto de datos: operaciones. Tipos de ficheros. Bloques lógicos.
4.1.2. Operaciones sobre ficheros
Métodos de acceso: directo, secuencial, indexado. Protocolos de uso de ficheros. Semánticas de consistencia.
4.2. Organización del sistema de ficheros
4.2.1. Directorios
Concepto. Nominación de ficheros: rutas. Organización en dos niveles. Organizaciones jerárquicas en árbol. Organizaciones no arbóreas: enlaces, alias. Implementación.
4.3. Protección
Listas de control de acceso. Tipos de operaciones. Propietarios. Permisos.
4.4. Implementación del sistema de ficheros
4.4.1. Arquitecturas típicas
4.4.2. Estructura interna del sistema
Estructuras para directorios y ficheros. Nodos-i. Soporte de múltiples discos.
4.4.3. Gestión del espacio
Almacenamientos contiguo, encadenado e indexado. FAT. Gestión del espacio libre: mapas de bits, listas, grupos. Comparación
4.5. Otros conceptos
Tolerancia a fallos. Semánticas de consistencia. Transacciones.
5. Gestión de la memoria
5.1. Conceptos fundamentales
5.1.1. Organización de la memoria
Nivel físico de memoria: espacio de direcciones lineal. Jerarquía de memorias y caché. El espacio de direcciones en el lenguaje de alto nivel. Elementos y fases en la traducción de direcciones: compilación, enlace, carga del programa, traducción dinámica.
5.1.2. Elementos y objetivos de la gestión de memoria
Transparencia. Concepto de espacio virtual. Reubicación estática y dinámica.Hardware de traducción de direcciones
5.2. Gestión de la memoria principal
5.2.1. Gestión del espacio contiguo
Políticas de gestión de huecos libres. Particiones fijas (MFT) y variables (MVT). Estructuras de control. El problema de la fragmentación. Compactación.
5.2.2. Intercambio (swapping)
Descripción. Relación con la planificación de procesos.
5.2.3. Paginación
Arquitectura de un sistema paginado. Circuitería de traducción y estructuras de control. Protección.
5.2.4. Segmentación
Arquitectura de un sistema segmentado. Circuitería de traducción y estructuras de control. Protección de segmentos. Reubicación y compartición de áreas de memoria. Combinación de la segmentación con la paginación.
5.3. Memoria virtual
5.3.1. Generalidades
Principios y objetivos de la memoria virtual. El almacenamiento secundario. Memoria virtual única y múltiple.
5.3.2. Paginación bajo demanda
Descripción. Fallos de página. Políticas de reemplazo: LRU, LFU, NRU, etc.
5.3.3. Otras técnicas de paginación
El modelo del conjunto de trabajo. Hiperpaginación. Políticas de frecuencia de fallos de página
6. Protección y seguridad
6.1. Seguridad informática
6.1.1. Conceptos sobre seguridad y protección
Distinción entre seguridad y protección. Ámbitos de la seguridad. Amenazas al sistema.
6.1.2. Diseño del sistema de seguridad
Objetivos y principios de diseño. Auditoría y registro. Sistemas de validación: contraseñas, artefactos, sistemas biométricos. Criptografía.
6.2. Protección
6.2.1. Hardware de protección
6.2.2. Modelos formales de protección
Dominios de protección. Matriz de control de acceso.
6.2.3. Mecanismos de protección
Reglas implícitas. Jerarquías de acceso. Listas de acceso. Capacidades. Llaves y cerraduras.
7. Interbloqueo
7.1. Definición del problema
Caracterización del interbloqueo. Modelos formales
7.2. Tratamiento del interbloqueo
7.2.1. Prevención y evitación del interbloqueo
Negación de condiciones del interbloqueo. Ordenación lineal de recursos. Algoritmo del banquero
7.2.2. Detección y recuperación del interbloqueo
Algoritmos de detección. Criterios para la recuperación del interbloqueo
8. Casos de estudio
8.1. Sistema operativo Unix
8.1.1. Generalidades
Historia del Unix. Principios de diseño. Arquitectura general. Organización del sistema de ficheros.
8.1.2. Interfaz de usuario
Programas del sistema. Los shells. Flujos o streams.
8.1.3. Interfaz de programación
Llamadas al sistema. Ficheros. Gestión de procesos. Comunicación y sincronización entre procesos. Entrada/salida.
8.1.4. Arquitectura del sistema
El núcleo y sus módulos. Gestión de procesos y de memoria. Implementación del sistema de ficheros: nodos-i, ubicación de bloques de datos, montaje de sistemas de ficheros. Entrada/salida y manejadores de dispositivos.
8.2. Sistema operativo Windows NT
8.2.1. Generalidades
Historia de MS-DOS y Windows NT. Principios de diseño.
8.2.2. Arquitectura del sistema
El modelo cliente/servidor. Objetos del Windows NT. Multiprocesamiento simétrico. Subsistemas protegidos. El ejecutor.
8.2.3. Elementos del sistema
Los objetos en Windows NT. Tipos de objetos. Administración y protección de objetos. Gestión de procesos e hilos. Memoria virtual. Entrada/salida: manejadores estratificados. El núcleo. Ejemplos de subsistemas protegidos.