Temas de teoría
En el tema 1 (Visión General e Introducción al Kernel) haremos un breve recorrido por los conceptos básicos relacionados con los sistemas operativos UNIX y Linux. Se hará también una introducción al funcionamiento de los kernels que gobiernan dichos sistemas operativos, observando sus diferencias y sus similitudes. Y se presentará la estructura general de ambos kernels (diagrama de bloques), analizando cómo interactúan con los procesos de usuario y con el hardware de la máquina (ya que el kernel es el verdadero intermediario entre estos dos componentes (usuario-hardware) dentro de un sistema operativo). [pps]
En el tema 2 (Gestión de Procesos) estudiamos la gestión de los procesos tanto en UNIX como en Linux, prestando especial atención a los estados por los que pasa un proceso (diagrama de transiciones), estructuras de datos principales del sistema para la gestión de los procesos, el espacio de direccionamiento de memoria de los procesos, y las llamadas al sistema que se encargan de dicha gestión. También, se estudian los mecanismos internos (a nivel del kernel) para la sincronización de procesos, las señales y funciones de tiempo (temporizadores), y nociones básicas de planificación, haciendo hincapié en el scheduler de Linux. [pps]. Interrupciones, tareas diferidas y mecanismos de sincronización. [pps]
En el tema 3 (Gestión de Memoria) haremos un análisis exhaustivo de la gestión de memoria tanto en UNIX como en Linux. Para empezar se hace una introducción a esta tarea tan importante del sistema operativo y al mecanismo de memoria virtual. A continuación, se estudia la gestión de memoria de UNIX abordando tres técnicas: intercambio (swapping), paginación por demanda y cómo actua el gestor de memoria del kernel (Buddy system) en UNIX. Y para finalizar, se analiza de forma minuciosa la gestión de memoria que hace Linux en la arquitectura i386, prestando especial atención a direccionamiento de memoria en Linux (segmentación y paginación en el i386 y en Linux, y gestión de las tablas de páginas), gestión de memoria en Linux (Buddy system, Slab allocator, regiones de memoria, gestor de faltas de páginas, etc.) y el intercambio (swapping) en Linux. [pps].
El tema 4 (Sistema de Archivos), es el dedicado a la gestión de sistemas de archivos, y como en temas anteriores se hace un estudio del sistema de archivos de UNIX y el sistema de archivos de Linux, aunque se profundizará en este último. Se exponen las características y estructura general de estos sistemas de archivos y se analiza la estructura interna de los archivos en UNIX, junto con las llamadas al sistema (desde el punto de vista algorítmico) que se encargan de la gestión de los archivos bajo este sistema operativo. A continuación, se pasa a estudiar en profundidad el sistema de archivos virtual (virtual file system, VFS) de Linux, las estructuras de datos que emplean y las operaciones que hacen posible su correcto funcionamiento. Después, se estudia el buffer caché y el papel que juega en el subsistema de E/S para los dispositivos de bloque (discos), y uno de los sistemas de archivos reales que soporta Linux, el Segundo Sistema de Archivos Extendido (The Second Extended File System, EXT2), que además es uno de los sistemas de archivos nativos de este sistema operativo, describiéndose las características, estructura, funcionalidades y las estructuras de datos principales (el superbloque, el inodo, la estructura de directorio, etc.). Para finalizar, se estudia el sistema de archivos /proc, que es algo particular al no dar acceso a datos almacenados en disco, sino que hace accesibles, en forma de archivos virtuales, ciertas informaciones gestionadas por el kernel.
El tema 5 (Gestión de Dispositivos de E/S) está dedicado a la gestión de dispositivos de E/S en Linux bajo la arquitectura i386, estudiándose la arquitectura de E/S, puertos e interfaces de E/S, controladores y archivos de dispositivo y los drivers de dispositivo. Se profundizará en estos últimos, ya que se analizan los niveles de soporte del kernel, las estrategias de buffering de drivers de dispositivos, y los procesos de registro, inicialización y monitorización de un driver de dispositivo. Seguidamente, se analizan en detalle los drivers de dispositivo de bloque y de carácter, prestando especial atención a los primeros por su dificultad a la hora de gestionarlos. Por último, se presentan dos ejemplos de dispositivos, uno de bloque (el disco en memoria) y otro de carácter (la impresora), analizando sus estructuras y las operaciones principales para su funcionamiento.
Por último, el tema 6 (Comunicación de Procesos) está dedicado a la comunicación entre procesos, y en él se trata de estudiar las primitivas de comunicación entre procesos IPC System V, junto con las tuberías (anónimas o PIPE y con nombre o FIFO) como mecanismos para la comunicación y sincronización de procesos en modo usuario dentro del sistema. Se analizan los mecanismos de colas de mensajes, semáforos y memoria compartida, con las estructuras de datos y procedimientos que los implementan, además de ejemplos de uso que hacen más fácil la comprensión de estas técnicas por parte del alumnado. . . .