240 likes | 544 Views
Estructura del sistema operativo. Sebastián Sánchez Prieto. Introducción. En el tema anterior se dio una visión desde el punto de vista funcional del sistema operativo ¿Qué hace? En este tema lo analizaremos desde el punto de vista estructural ¿Cómo lo hace? Objetivo de la estructuración:
E N D
Estructura del sistema operativo Sebastián Sánchez Prieto
Introducción • En el tema anterior se dio una visión desde el punto de vista funcional del sistema operativo • ¿Qué hace? • En este tema lo analizaremos desde el punto de vista estructural • ¿Cómo lo hace? • Objetivo de la estructuración: • Buscar una organización interna que facilite la comprensión, incremente la portabilidad, extensión y favorezca el mantenimiento • ¿Cómo abordar un programa de hasta 50 millones de líneas de código?
Hardware y SSOO • El sistema operativo debe ser seguro, robusto, estable y con un alto rendimiento • El diseñador de sistemas operativos solicita al arquitecto de computadores: • Modo dual de ejecución de instrucciones • Instrucciones normales e instrucciones privilegiadas • Mecanismos para pasar a modo protegido • Interrupciones y llamadas al sistema • Mecanismos de protección de: • Memoria (hardware de protección) • Dispositivos (hardware de protección o instrucciones privilegiadas) • Procesador (Interrupciones)
Mecanismo de interrupciones • El hardware salva el contador de programa • Se carga un nuevo contador de programa • Se salvan los registros • Se cambia el valor del puntero de pila • Se conmuta el proceso que estaba bloqueado al estado de listo • El planificador elige el siguiente proceso • Se cede el control a un programa ensamblador que arranca proceso elegido
Niveles de interrupción • Mecanismo empleado para determinar en qué orden se atienden las interrupciones • Puede ser proporcionado por el hardware o por el software • Típicamente existen 32 niveles de nivel de prioridad de interrupción (NPI) • En UNIX se les suele conocer como Interrupt Priority Level o IPL • En W2K se les conoce como Interrupt Request Level o IRQL
Diagrama de manejo de interrupciones Interrupción ¿Nuevo NPI > actual NPI? No Guardar interrupción Sí Crear un nuevo contexto Guardar el CP y lo flags NPI = nuevo NPI Llamada al manejador Bloquear Manejador de interrupción Sí ¿Hay int. pendientes? Desbloquear No Retornar
Niveles de interrupción en W2K 31 Alta Fallo de alimentación IPI Reloj Perfiles Interrupciones HW Dispositivo n ... Dispositivo 1 DPC/Dispatch Interrupciones SW APC Nivel de ejecución ordinario 0 Base
Enfoques de diseño • A grandes rasgos cabe considerar dos enfoques de diseño: • Enfoque monitor monolítico • Enfoque micronúcleo • En el primero, toda la funcionalidad del SO se incluye se incluye en el núcleo • Ejemplo: MS-DOS, Windows XP, Linux • En el segundo, parte de esa funcionalidad es llevada a cabo por procesos de sistema que se sirven de la funcionalidad mínima proporcionada por un micronúcleo • Ejemplo: Mach, L4, Chorus
Monitor monolítico Proceso de usuario Proceso de usuario Proceso de usuario Procesos de usuario SVC Despertar Intérprete de la SVC Desbloquear Monitor Petición de E/S Proceso de la interrupción Comienzo de la E/S Interrupción Dispositivos
Micronúcleo Proceso de usuario Proceso de usuario Proceso de usuario Proceso de usuario Devolver los datos Inicio de la E/S Proceso gestionador de dispositivo Dispositivo Lectura de disco Interrupción Despertar Determinación del proceso que solicitó la E/S Proceso de la interrupción Micronúcleo
Monitor monolítico Micronúcleo Comparativa • Todo el SO se ejecuta en modo supervisor • Sólo el núcleo se ejecuta en modo supervisor • Menos robusto • Más robusto • El SO es interrumpible • El SO es ininterrumpible • Menor rendimiento debido a la sobrecarga de comunicaciones • Mayor rendimiento • Empleado en sistemas pequeños • Empleado en sistemas grandes • Fácil de modificar en tiempo de ejecución • Difícil de modificar en tiempo de ejecución • Más adaptable • Menos adaptable
Diseño por capas • El diseño por capas lleva asociada una jerarquización que permite disminuir la complejidad observable de un sistema • Concepto de capa: conjunto de funciones claramente definidas hacia un objetivo común Entidad N Capa N Servicios Entidad N-1 Entidad N-1 Capa N-1
Ventajas del empleo de capas • Las estructuras internas y algoritmos de una capa no son visibles a las demás • El sistema puede evolucionar fácilmente. Lo único que hay que mantener son las interfaces • Pueden existir realizaciones alternativas llevadas a cabo por diferentes grupos de trabajo • Algunas capas pueden ser transparentes si sus servicios no son necesarios • Cada capa se codifica y prueba de modo independiente. Esto es muy importante en el desarrollo del software
Niveles clásicos de un SO NIVEL 1 Nivel inferior de gestión del procesador • Objetivo: • Compartir la CPU entre procesos • Funciones: • Sincronización entre procesos • Conmutación de la CPU • Gestión de interrupciones
Niveles clásicos de un SO NIVEL 2 Gestión de memoria • Objetivo: • Repartir la memoria entre procesos • Funciones: • Asignación y liberación de memoria • Control violación de acceso
Niveles clásicos de un SO NIVEL 3 Nivel superior de gestión de procesos • Objetivo: • Gestión de procesos • Funciones: • Creación y destrucción de procesos • Intercambio de mensajes entre procesos • Detención y arranque de procesos
Niveles clásicos de un SO NIVEL 4 Nivel de gestión de dispositivos • Objetivo: • Realizar la gestión de las E/S en función de los dispositivos existentes • Funciones: • Creación de procesos de E/S • Asignación y liberación de dispositivos de E/S • Planificación de la E/S
Niveles clásicos de un SO NIVEL 5 Nivel de gestión de la información • Objetivo: • Gestionar el espacio de nombres lógicos y la protección de la información. • Funciones: • Creación y destrucción de archivos y directorios • Apertura y cierre de archivos • Lectura y escritura de archivos • Protección de acceso
Estructura de UNIX Bibliotecas Programas de usuario Trap Nivel de usuario Nivel kernel Interfaz de llamadas al sistema Subsistema Subsistema de Subsistema control de procesos de archivos de E/S Manejo de memoria Buffer caché IPC Bloque Carácter Planificador Drivers Control hardware Nivel kernel Nivel hardware HARDWARE
Estructura de Mach Programas de usuario Servidor de memoria Servidor de archivos Servidor de gráficos Servidor de procesos Nivel de usuario Nivel kernel Manejo de hilos Manejadores de dispositivo Nivel kernel Nivel hardware Hardware
Estructura de Linux Interfaz de llamadas de alto nivel Modo usuario Validación de argumentos de las llamadas al sistema Alto nivel del núcleo Conmutador de sistemas de archivo Manejador de memoria Manejador de procesos Manejador de archivos Manejador de terminales Interfaz de sockets y streams Bibliotecas del kernel Manejador de callouts Sistemas de archivo Estructuras del núcleo (alto nivel) Pila de red Estructuras de datos compartidas entre el alto y el bajo nivel Manejadores de dispositivo Manejador de interrupciones Tabla de dispatch Manejador de procesos de bajo nivel Callout de bajo nivel Cambio de contexto Bajo nivel del núcleo Manejador de traps de llamadas al sistema Manejador de excepciones HARDWARE
Estructura de W2K Procesos de sistema Servicios Aplicaciones Subsistemas POSIX Controlador de servicios Replicador Alertador OS2 WinLogon RPC Aplicaciones de usuario Manejador de sesiones DLLs Registrador de eventos Win32 DLLs DLLs Hilos del sistema NTDLL.DLL API del núcleo Manejador de E/S Sistema de archivos Manejador de cache PnP Control de alimentación Seguridad Memoria virtual Procesos e hilos Win32 GDI NtosKrnl.exe Manejador de objetos Manejadores de dispositivo Kernel HAL HARDWARE