El objetivo básico de la asignatura Diseño y Administración de los Sistemas Operativos es dar una visión, lo más completa y clara posible, de las estrategias fundamentales para realizar el diseño y la administración de los sistemas operativos. Como resultado del estudio y aprendizaje de los contenidos de esta asignatura el estudiante será capaz de:
- Conocer los elementos y objetivos que se deben considerar en el diseño de un sistema operativo.
- Entender y conocer los diferentes aspectos que se deben tener en cuenta en la administración de un sistema operativo.
- Conocer en profundidad los aspectos más importantes (estructuras de datos y algoritmos) del núcleo de UNIX como son: gestión y control de procesos de procesos, gestión de memoria, sistemas de archivos y gestión de dispositivos de E/S.
- Ser capaz de manejar las órdenes del shell y programar en lenguaje C aplicando las llamadas al sistema básicas bajo plataforma UNIX (Linux).
TEMA 1: DISEÑO DEL SISTEMA OPERATIVO UNIX
RA1.1 Descripción de la arquitectura UNIX.
RA1.2 Principales servicios prestados por el núcleo.
RA1.3 Cuáles son los dos modos de ejecución un UNIX: modo usuario y modo núcleo.
RA1.4 Clasificación de los tipos de procesos en función de modo de ejecución.
RA1.5 Introducción a las interrupciones y las excepciones, dos de los principales eventos atendidos en modo núcleo.
RA1.6 Descripción de la estructura del sistema operativo UNIX.
RA1.7 Descripción de la interfaz de usuario para el sistema de ficheros.
RA1.8 Principales funciones de la librería estándar de funciones de E/S de C.
RA1.9 Término proceso demonio
TEMA 2: ADMINISTRACIÓN BÁSICA DEL SISTEMA OPERATIVO UNIX
RA2.1 Conceptos de consola virtual e intérpretes de comandos (shell).
RA2.2 Comandos de UNIX más comunes: para manejo de directorios y ficheros, ayuda, edición de ficheros, y para salir del sistema.
RA2.3 Gestión de usuarios en UNIX.
RA2.4 Análisis de la configuración de los permisos de acceso a un fichero.
RA2.5 Consideraciones generales sobre los intérpretes de comandos: uso de caracteres comodines, redirección de la entrada y salida, encadenamiento de órdenes, asignación de alias a comandos, shell scripts, variables del intérprete de comandos, y variables de entorno.
RA2.6 Descripción del control de tareas.
TEMA 3: ESTRUCTURAS DE DATOS DE CONTROL DE PROCESOS EN UNIX
RA3.1 Descripción del espacio de direcciones virtuales asociado a un proceso,
RA3.2 Identificadores y las estructuras de datos del núcleo asociadas a un proceso.
RA3.3 Análisis de los diferentes elementos que constituyen el contexto de un proceso.
RA3.4 Tratamiento de las interrupciones por parte del núcleo
RA3.5 Interfaz de las llamadas al sistema.
RA3.6 Conocimiento y descripción de los posibles estados de un proceso
TEMA 4: ALGORITMOS DE CONTROL DE PROCESOS EN UNIX
RA4.1 Cómo se produce la creación de procesos mediante la función fork.
RA4.2 Qué son las señales.
RA4.3 Descripción de los algoritmos dormir (sleep) y despertar (wakeup) a un proceso.
RA4.4 Descripción de la terminación de procesos mediante la función exit.
RA4.5 Descripción del algoritmo esperar la terminación de un proceso (wait), que permite sincronizar la ejecución de un proceso con la terminación de algunos de sus procesos hijos.
RA4.6 Invocación de otros programas.
RA4.7 Funciones de librería.
RA4.8 Funcionamiento del algoritmo exec().
RA4.9 Qué es una hebra y para qué sirve.
TEMA 5: PLANIFICACIÓN DE PROCESOS EN UNIX
RA5.1 Cómo se tratan las interrupciones del reloj.
RA5.2 Planificación tradicional en UNIX, tareas basadas en consideraciones temporales, tales como callouts y alarmas, así como el estudio de algunas llamadas al sistema asociadas con el tiempo.
RA5.3 Análisis en detalle del Planificador del SVR4.
RA5.4 Análisis del Planificador del Solaris 2.x.
TEMA 6: COMUNICACIÓN Y SINCRONIZACIÓN DE PROCESOS EN UNIX
RA6.1 Conocimiento de los servicios IPC (interprocess comunication) universales: señales y tuberías, y seguimiento de procesos.
RA6.2 Conocimiento de los mecanismos IPC del System V: semáforos, colas de mensajes y memoria compartida.
RA6.3 Conocimiento de los principales mecanismos de sincronización tradicionales.
RA6.4 Descripción del seguimiento de procesos.
RA6.5 Conocimiento de los mecanismos de sincronización modernos de UNIX.
TEMA 7: GESTIÓN DE MEMORIA EN UNIX
RA7.1 Cuál es la política de demanda de páginas en el SVR3.
RA7.2 Cuáles son las estructuras de datos del núcleo asociadas a la gestión de memoria mediante demanda de páginas.
RA7.3 Análisis de la realización de la llamada al sistema fork en un sistema con paginación.
RA7.4 Análisis de la realización de la llamada al sistema exec en un sistema de paginación.
RA7.5 Transferencia de páginas de memoria principal en el área de intercambio
RA7.6 Tratamiento de los fallos de página
RA7.7 Cómo se realiza el cambio de modo de un proceso desde el punto de vista de la gestión de memoria.
RA7.8 Localización y estructura en memoria del área U de un proceso.
TEMA 8: SISTEMAS DE ARCHIVOS EN UNIX
RA8.1 Qué es un sistema de ficheros y para qué sirve.
RA8.2 Cómo se construye la estructura jerárquica de ficheros (proceso de montaje).
RA8.3 Qué es un enlace simbólico y qué tipos de enlaces hay.
RA8.4 Cómo se acelera el acceso a los ficheros mediante la caché de buffers de bloques y cuáles son las ventajas e inconvenientes de esta técnica.
RA8.5 La interfaz nodo-V/SVF que permite al núcleo gestionar distintos sistemas de archivos.
RA8.6 El sistema de ficheros System V file system s5fs.
RA8.7 Cómo se arreglan los errores en un sistema de fichero.
RA8.8 El sistema de ficheros FFS o UFS.
RA8.9 Algunas de las características de los sistemas de archivos modernos.
TEMA 9: GESTIÓN ENTRADA/SALIDA EN UNIX
RA9.1 Qué es la entrada/salida y cómo se gestiona.
RA9.2 Para qué sirven las interrupciones de dispositivo.
RA9.3 Cuál es el cometido de un driver.
RA9.4 Cómo se organiza el subsistema de entradas y salidas.
RA9.5 Cómo los procesos se comunican con los drivers a través de streams.