Estructura del sistema operativo
Contenidos
(T2 y T3)
Introducción Diseño por capas Ventajas del empleo de capas Niveles clásicos de un SO Núcleo de un SO Funciones básicas del núcleo Enfoques de diseño: Comparativa Estructura de UNIX clásico Estructura de Mach Estructura de Linux El núcleo de Linux Estructura de W2K Llamadas al sistema APIs de llamadas al sistema Realización Estructura del sistema operativo
Introducción
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 30 – 35 millones de líneas de código?
Estructura del sistema operativo
Diseño por capas (i) Intérprete de órdenes
Aplicaciones
S.O. Hardware
Interfaces del SO que debe conocer el diseñador: Interfaz hardware:
Interrupciones, repertorio de instrucciones, traducción de direcciones de la MMU, punto de entrada para cargar el SO
Interfaz usuario y programas
API (Application Program Interface)
Estructura del sistema operativo
Diseño por capas (ii)
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 Capa N-1
Entidad N-1
Entidad N-1
Estructura del sistema operativo
Diseño por capas (iii)
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, para luego hacer las pruebas de integración y de conjunto Esto es muy importante en el desarrollo del software Estructura del sistema operativo
Niveles clásicos de un SO (i) Usuario y aplicaciones N5: N4: N3: N2: N1:
Gestión Gestión Gestión Gestión Gestión
de la información de los dispositivos de procesos de memoria del procesador
Hardware
Estructura del sistema operativo
Niveles clásicos de un SO (ii) 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 Arranque inicial
Estructura del sistema operativo
Niveles clásicos de un SO (iii) 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
Estructura del sistema operativo
Niveles clásicos de un SO (iv) NIVEL 3 Nivel superior de gestión de procesos
Objetivo:
Gestión de procesos de alto nivel
Funciones:
Creación y destrucción de procesos Intercambio de mensajes entre procesos Detención y arranque de procesos
Estructura del sistema operativo
1
Niveles clásicos de un SO (v) 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
Estructura del sistema operativo
1
Niveles clásicos de un SO (vi) 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 del sistema operativo
1
Núcleo del sistema operativo (i)
Proporciona la funcionalidad básica del SO Es la parte más dependiente del hw de todo el SO Suele permanecer en el almacenamiento primario porque su código se ejecuta muy frecuentemente Otros niveles Núcleo HW
Estructura del sistema operativo
1
Núcleo del sistema operativo (ii) Funciones básicas del núcleo
Proporcionar el entorno adecuado para la existencia de procesos Funciones:
Tratamiento de interrupciones Conmutación del procesador entre procesos (soporte al diagrama de estados) Mecanismos básicos de comunicación y sincronización entre hilos y procesos Carga inicial y activación de la configuración del sistema
EDSO Estructura del sistema operativo
1
Núcleo del sistema operativo (iii) Funciones básicas del núcleo
Tratamiento de interrupciones:
El núcleo transforma las interrupciones en eventos de más alto nivel (p. ej. mensajes) El núcleo determina qué proceso espera una interrupción y le envía un mensaje
Estructura del sistema operativo
1
Núcleo del sistema operativo (iv) Funciones básicas del núcleo
Conmutación de CPU entre procesos
Los procesos de usuario pasan por varios estados durante su tiempo de vida en el sistema El núcleo proporciona los mecanismos de conmutación de la CPU entre procesos
Ejecución Dormir
Espera
Asignar
Despertar
Revocar
Listo
Estructura del sistema operativo
1
Núcleo del sistema operativo (v) Funciones básicas del núcleo
Comunicación y sincronización entre procesos
El núcleo proporciona mecanismos para que los procesos puedan intercambiar información y sincronizarse Mecanismos:
Señales Semáforos Mensajes RPCs (remote procedure calls)
Ejemplo:
NFS (Sistema de ficheros en red) construido a partir de RPCs
Estructura del sistema operativo
1
Enfoques de diseño (i)
Enfoques de diseño:
Monitor monolítico
Monitor monolítico Micronúcleo Toda la funcionalidad del SO se incluye se incluye en el núcleo Ejemplos: MS-DOS, Linux
Micronúcleo
Parte de los sevicios del SO la llevan a cabo los procesos de sistema, que se sirven de la funcionalidad mínima proporcionada por un micronúcleo Ejemplos: Mach, L4, Chorus Estructura del sistema operativo
1
Enfoques de diseño (ii) Comparativa
Monitor monolítico Todo el SO se ejecuta en modo supervisor Menos robusto El SO es ininterrumpible Mayor rendimiento
Difícil de modificar en tiempo de ejecución Menos adaptable
Micronúcleo Sólo el µnúcleo se ejecuta en modo supervisor Más robusto El SO es interrumpible Menor rendimiento debido a la sobrecarga de comunicaciones
Fácil de modificar en tiempo de ejecución Más adaptable
Estructura del sistema operativo
1
Estructura de UNIX clásico
Nivel de usuario Nivel kernel
Programas de usuario Trap
Interfaz de llamadas al sistema Subsistema de control de procesos Manejo de memoria IPC Planificador
Nivel kernel Nivel hardware
Biblioteca s
Subsiste Subsiste ma ma de de E/S archivos Buffer cache Carácter Bloque Drivers
Control hardware Hardware Estructura del sistema operativo
2
Estructura de Mach
Programas de usuario
Servidor de proces os
Servidor de memori a
Servidor de archivos
Servidor de gráficos
Nivel de usuario Nivel kernel
Manejo de hilos Nivel kernel Nivel hardware
Manejadores de dispositivos
Hardware
Estructura del sistema operativo
2
Estructura de Linux (i) Interfaz de llamadas de alto nivel
Modo usuario
archivo
de
Sistemas
Conmutador de sistemas de archivo Manejador Interfaz de de archivos sockets y streams Manejador Manejador de de Manejador procesos terminalesPila de red de memoria Manejador del buffer de cache Manejadores de dispositivo
Bibliotecas del kernel
Validación de argumentos de las llamadas al sistema
Alto nivel del núcleo Manejador de callouts Estructuras del núcleo (alto nivel) Est. datos compartidas entre nivel alto y bajo
Manejador de interrupciones Manejador Cambio Bajo nivel Tabla Callout de Manejador traps de llamadas al sist. procesos de de del núcleo dispatch bajo nivel bajo nivel contexto Manejador de excepciones
Hardware
Estructura de Linux (ii) El núcleo de Linux
Comunicación entre procesos Señales Tuberías Sockets (TCP/IP) Manejadores (drivers) Modo carácter Modo bloque Sistema de archivos Archivos, directorios Bloqueo de archivos
Facilidades básicas Manejo del reloj y temporizador Manejo del estado de los procesos Manejo de descriptores Semáforos Gestión de memoria Memoria virtual Trasiego Memoria compartida
Estructura del sistema operativo
2
Estructura de W2K Procesos de sistema Servicios Aplicaciones WinLogon Replicador Controlador Alertador servicios RPC Aplicaciones DLLs Manejador Registrador de usuario DLLs NtosKrnl.exe de sesiones de eventos DLLs Hilos del sistema
Subsistemas POSIX OS2 Win32
NTDLL.DLL
API del núcleo Manejador Manejador PnP SeguridadMemoria Procesos Win32 de E/S de caché Control de virtual e hilos GDI alimentación Sistema de archivos Manejador de objetos Manejadores de dispositivo Kernel HAL Hardware Estructura del sistema operativo
2
Llamadas al sistema (i)
Interfaz de llamadas al sistema Funciones de biblioteca compartidas por todos los procesos que se ejecutan en la máquina
Intérprete de órdenes
Aplicaciones
Interfaz de llamadas al sistema
S.O.
Hardware
Estructura del sistema operativo
2
Llamadas al sistema (ii)
Llamadas al sistema
Mecanismo controlado de acceso por parte de los procesos a los recursos del S.O.
Funcionalidad básica:
Comunicación y sincronización de procesos Ejecución de programas Manejo de operaciones de E/S Manipulación del sistema de archivos Detección y control de errores en tiempo de ejecución Asignación no conflictiva de recursos Protección en el empleo de recursos Contabilidad de los recursos empleados
Estructura del sistema operativo
2
Llamadas al sistema (iii)
APIs de llamadas al sistema
Las llamadas al sistema están definidas a nivel de ensamblador
Existen APIs (Application Program Interface) para mejorar la portabilidad y facilitar la codificación
Código no portable (depende de la arquitectura) Incómodo de programar
El API es un “envoltorio” para realizar llamadas al sistema desde un lenguaje de alto nivel (portable y cómodo) API estándar: POSIX (Portable Operating System Unix)
Ejemplo de llamada de interfaz POSIX para abrir un fichero: int open( char* archivo, int modo); Estructura del sistema operativo
2
Llamadas al sistema (iv) APIs de llamadas al sistema
Manipulación de archivos: int open (const char *pathname, int flags, mode_t mode); int close (int fd) int creat (const char *pathname, mode_t mode) int unlink (const char *pathname); ssize_t read (int fd, void *buf, size_t count); ssize_t write (int fd, const void *buf, size_t count); off_t lseek (int fildes, off_t offset, int whence); int rename (const char *oldpath, const char *newpath);
Estructura del sistema operativo
2
Llamadas al sistema (v) Realización
Método:
A través de una instrucción máquina específica, el hw la trata como una interrupción sw
Al ejecutarse esta instrucción toma el control el S.O. Modo supervisor Carga vector interrupción
P1
switch N { case 0:
... ... syscall N ... ... ...
case 1: … case N: }
Estructura del sistema operativo
2
Llamadas al sistema (vi) Realización
Su implementación depende de la arquitectura del ordenador
IBM 360: instrucción SVC MIPS: instrucción syscall i386: int # (DOS: 21h, Linux: 80h, W2k: 2Eh)
Paso de parámetros:
En registros internos del procesador En zona de memoria cuya dirección se pasa en registros En la pila
Estructura del sistema operativo
3