1. INTRODUCCIÓN 1.1. ¿Qué es un sistema operativo? 1.1.1. El

Transcripción

1. INTRODUCCIÓN 1.1. ¿Qué es un sistema operativo? 1.1.1. El
1.
INTRODUCCIÓN
1.1. ¿Qué es un sistema operativo?
1.1.1. El sistema operativo como máquina extendida
1.1.2. El sistema operativo como gestor de recursos
1.2. Historia de los sistemas operativos /* solo para explicar los conceptos de batch,
multiprogramación, SPOOL, tiempo compartido */
1.2.1. La primera generación (1945-55)
1.2.2. La segunda generación (1955-65)
1.2.3. La tercera generación (1965-1980)
1.2.4. La cuarta generación (1980-Presente)
1.2.5. La ontogenía recapitula la filogenía (LEERLO)
1.3. Tipos de sistemas operativos
1.3.1. Sistemas operativos para mainframe
1.3.2. Sistemas operativos para servidores
1.3.3. Sistemas operativos para multiprocesadores
1.3.4. Sistemas operativos para ordenadores personales
1.3.5. Sistemas operativos de tiempo real
1.3.6. Sistemas operativos empotrados
1.3.7. Sistemas operativos para tarjetas inteligentes
1.4. Recordando aspectos hardware (LEERLO)
1.4.1. Procesadores
1.4.2. Memoria
1.4.3. Dispositivos de E/S
1.4.4. Buses
1.5. Conceptos de sistemas operativos
1.5.1. Procesos
1.5.2. Interbloqueos
1.5.3. Gestión de memoria
1.5.4. Entrada/Salida
1.5.5. Ficheros
1.5.6. Seguridad
1.5.7. La shell
1.5.8. Reciclando conceptos (LEERLO)
1.6. Llamadas al sistema
1.6.1. Llamadas al sistema para gestión de procesos
1.6.2. Llamadas al sistema para gestión de ficheros
1.6.3. Llamadas al sistema para gestión de directorios
1.6.4. Otras llamadas al sistema
1.6.5. El API Win32 de Windows
1.7. Estructura del sistema operativo
1.7.1. Sistemas monolíticos
1.7.2. Sistemas por capas /* contamos Minix y no THE; tampoco MULTICS */
1.7.3. Máquinas virtuales
1.7.4. Exokernels
1.7.5. Modelo cliente-servidor
1.8. Investigación en sistemas operativos
2.
PROCESOS Y THREADS
2.1. Procesos
2.1.1. El modelo de proceso
2.1.2. Creación de procesos
2.1.3. Terminación de procesos
2.1.4. Jerarquías de procesos
2.1.5. Estados de proceso
2.1.6. Implementación de procesos
2.2. Threads
2.2.1. El modelo de thread
2.2.2. Uso de threads
2.2.3. Implementación de threads en espacio de usuario
2.2.4. Implementación de threads en el kernel
2.2.5. Implementaciones híbridas
2.2.6. Planificador de activaciones
2.2.7. Threads pop-up
2.2.8. Convirtiendo código monothread en multithread
2.3. Comunicación entre procesos
2.3.1. Condiciones de carrera
2.3.2. Regiones críticas
2.3.3. Exclusión mutua con espera activa
2.3.3.1. Inhibiendo interrupciones
2.3.3.2. Variables cerrojo
2.3.3.3. Alternancia estricta
2.3.3.4. Solución de Peterson
2.3.3.5. La instrucción TSL
2.3.4. Sleep and Wakeup
2.3.4.1. El problema del productor-consumidor
2.3.5. Semáforos /* se sustituye esta sección por las transparencias */
2.3.6. Mutexes
2.3.7. Monitores
2.3.8. Paso de mensajes /* se sustituye esta sección por las transparencias */
2.3.9. Barreras
2.4. Problemas clásicos de IPC
2.5. Planificación
2.5.1. Introducción a la planificación.
2.5.1.1. Comportamiento de procesos
2.5.1.2. Cuándo planificar
2.5.1.3. Categorías de los algoritmos de planificación
2.5.1.4. Objetivos de los algoritmos de planificación
2.5.2. Planificación en sistemas batch
2.5.2.1. Primero en llegar, primero en ser servido
2.5.2.2. Trabajo más corto el siguiente
2.5.2.3. Tiempo restante menor el siguiente
2.5.2.4. Planificación a tres niveles
2.5.3. Planificación en sistemas interactivos
2.5.3.1. Roun-robin
2.5.3.2. Por prioridades
2.5.3.3. Múltiples colas
2.5.3.4. Envejecimiento
2.5.3.5. Planificación garantizada (LEERLO)
2.5.3.6. Planificación de la lotería (LEERLO)
2.5.3.7. Planificación justa (LEERLO)
2.5.4. Planificación en sistemas de tiempo real
2.5.5. Política vs. Mecanismo
2.5.6. Planificación de threads
2.5.7. Investigación en procesos y threads
3.
INTERBLOQUEOS
4.
GESTIÓN DE MEMORIA
4.1. Gestión Básica de memoria
4.1.1. Monoprogramación sin intercambio ni paginación
4.1.2. Multiprogramación con particiones fijas
4.1.3. Modelando la multiprogramación
4.1.4. Análisis del rendimiento de sistemas multiprogramados
4.1.5. Reubicación y protección
4.2. Swapping
4.2.1. Gestión de memoria con mapa de bits
4.2.2. Gestión de memoria con listas enlazadas
4.3. Memoria virtual
4.3.1. Paginación
4.3.2. Tablas de páginas
4.3.2.1. Tablas de páginas multinivel
4.3.2.2. Estructura de una entrada a la tabla de páginas
4.3.3. TLB
4.3.3.1. Gestión software de la TLB
4.3.4. Tabla invertida de páginas
4.4. Algoritmos de sustitución de páginas
4.4.1. Algoritmo óptimo de sustitución de páginas
4.4.2. No utilizada recientemente
4.4.3. FIFO
4.4.4. Segunda oportunidad
4.4.5. Reloj
4.4.6. LRU
4.4.7. Simulando LRU en software
4.4.8. El algoritmo del conjunto de trabajo /* el concepto de conjunto de trabajo se
cuenta en el punto 4.6 */
4.4.9. El algoritmo WSClock
4.4.10. Resumen de los algoritmos de sustitución de páginas
4.5. Modelando los algoritmos de sustitución de páginas
4.5.1. La anomalía de Belady /* se cuenta con el FIFO */
4.5.2. Algoritmos de pila
4.5.3. El string distancia
4.5.4. Predicción de la frecuencia de faltas de página
4.6. Cuestiones de diseño en sistemas paginados
Conjunto de trabajo y trasiego
4.6.1. Política de asignación global vs. Local
4.6.2. Control de carga
4.6.3. Tamaño de página
4.6.4. Espacios separados de instrucciones y datos
4.6.5. Páginas compartidas
4.6.6. Política de limpieza
4.6.7. Interfaz de memoria virtual
4.7. Cuestiones de implementación
4.8. Segmentación
4.9. Investigación en gestión de memoria
5.
ENTRADA/SALIDA
5.1. Principios hardware de E/S
5.1.1. Dispositivos de E/S
5.1.2. Controladores de dispositivos
5.1.3. Memoria mapeada /* La discusión sobre las ventajas/desventajas de ambas
opciones, sección 5.1.3, no entra para el examen */
5.1.4. Acceso Directo a Memoria /* No entra para examen: múltiples transferencias,
cycle stealing, burst mode, transformación dir. Virtual a dir. Física. */
5.1.5. Interrupciones revisadas
5.2. Principios software de E/S
5.2.1. Objetivos del software de E/S
5.2.2. E/S Programada (LEERLO)
5.2.3. E/S dirigida por interrupciones (LEERLO)
5.2.4. E/S mediante DMA (LEERLO)
5.3. Niveles software de E/S
5.3.1. Gestores de interrupción
5.3.2. Drivers de dispositivos
5.3.3. Software de E/S independiente del dispositivo
5.3.4. Software de E/S en espacio de usuario
5.4. Discos
5.4.1. Hardware
Discos Magnéticos
RAID
CD-ROMs
CD-grabables
CD-regrabables
DVD
5.4.2. Formateo de discos
5.4.3. Algoritmos de planificación del brazo del disco
5.4.4. Gestión de errores (LEERLO)
5.4.5. Almacenamiento estable
5.5. Relojes
5.6. Terminales orientados a caracteres
5.7. Interfaces gráficos de usuario
5.8. Terminales de red
5.9. Administración de energía
5.10. Investigación en entrada/salida
6.
SISTEMA DE FICHEROS
6.1. Ficheros
6.1.1. Nombres de ficheros
6.1.2. Estructuras de ficheros
6.1.3. Tipos de ficheros
6.1.4. Accesos a ficheros
6.1.5. Atributos de fichero
6.1.6. Operaciones sobre ficheros
6.1.7. Un ejemplo de uso de llamadas al sistema relacionadas con ficheros
(LEERLO).
6.1.8. Ficheros mapeados en memoria.
6.2. Directorios
6.2.1. Directorios de un nivel
6.2.2. Directorios de dos niveles
6.2.3. Directorios jerárquicos
6.2.4. Nombres de ruta
6.2.5. Operaciones sobre directorios
6.3. Implementación del sistema de ficheros
6.3.1. Estructura del sistema de ficheros
6.3.2. Implementación de ficheros
6.3.3. Implementación de directorios
6.3.4. Ficheros compartidos
6.3.5. Gestión de espacio en disco
6.3.6. Fiabilidad del sistema de ficheros
6.3.7. Rendimiento del sistema de ficheros
6.3.8. Sistemas de ficheros con estructura de registro
6.4. Ejemplos de sistemas de ficheros
6.5. Investigación en sistemas de ficheros

Documentos relacionados