17
Visión general de UNIX
Estructura del sistema UNIX
18
Visión general de UNIX
Diagrama de bloques del kernel de UNIX
19
Visión general de UNIX
Subsistema de archivos en UNIX
Estructura jerárquica y tratamiento consistente de los datos
Crecimiento dinámico de los archivos (crear y borrar archivos)
Proteger los datos de los archivos
Tratar a los dispositivos y periféricos como si fuesen archivos
20
Visión general de UNIX
Organización del sistema de archivos en UNIX
Boot block ? cotiene el código de arranque
Superblock ? Describe el estado del sistema de archivos (tamaño, número total de archivos que puede contener, espacio libre dispon.
Lista de inodos ? Cada archivo en UNIX tiene asociado un inodo, que lo describe (propietario, permisos, fecha de actualización, …)
Bloques de datos ? datos de los archivos, donde cada uno de los bloques puede ser asignado a un archivo
21
Visión general de UNIX
Representación interna y gestión de archivos en UNIX
Tabla de inodos ? Lista de inodos + información adicional
Tabla de archivos ? Estructura global al kernel y tiene una entrada por cada archivos que los procesos (kern. & usr.) tienen abiertos
Tabla de descriptores de archivos de usuario ? Estructura local a cada proceso e idenfica a los archivos abiertos por un proceso
22
Visión general de UNIX
Subsistema de procesos en UNIX
Tabla de procesos ? Entrada = PID, estado, temporizadores, etc.
U-área ? Datos manipulables por el kernel y que son necesarios sólo cuando el proceso se está ejecutando
Tabla de regiones por proceso ? espacio de direcciones virtuales del proceso
Tabla de regiones
23
Visión general de UNIX
Contexto de un proceso en UNIX
Contexto de un proceso = Estado del proceso ? su código, los valores de sus variables de usuario globales y de sus estructuras de datos, el valor de los registros de la CPU, los valores almacenados en su entrada de la tabla de procesos y en su área de usuario; y el contenido de sus pilas (stacks) de usuario y kernel
Contexto de nivel de usuario ? los segmentos de texto, datos y pila del proceso, las zonas de memoria compartida, direcciones virtuales en el área de swap
Contexto de registros ? el contador de programa, el registro de estado del procesador (PS), el puntero de la pila, y registros de propósito general
Contexto de nivel de sistema ? entrada en la tabla de procesos, U-área, entrada en la tabla de regiones por proceso, tabla de regiones y tabla de páginas, y pila del kernel
24
Visión general de UNIX
Estados de un proceso en UNIX. Perspectiva general
(1) El proceso se está ejecutando en modo usuario
(2) El proceso se está ejecutando en modo kernel
(3) El proceso está listo para ejecutarse (puede haber varios)
(4) El proceso está durmiendo/bloqueado por una operación E/S
25
Visión general de Linux
De forma general … qué es un kernel de un S.O.
Es la parte del S.O. (software de sistema) encargado de monitorizar y controlar todos los recursos hardware del ordenador ? interface entre usuario y el hardware
Controla y media en el acceso al hardware
Abstrae todos los recursos hardware ? procesos, regiones, archivos, dispositivos, etc.
Planifica y ubica los recursos del sistema ? CPU, memoria, disco, etc.
Impone fuertes medidas de seguridad y protección en el sistema
Responde a las demandas de los servicios por parte de los usuarios
26
Visión general de Linux
Objetivos de diseño del kernel
Rendimiento ? eficiencia y velocidad ? Obtener el mejor uso de los recursos del sistema con la menor sobrecarga posible (rápido)
Estabilidad ? Robistez y capacidad de recuperación
Flexibilidad y compatibilidad ? diferentes plataformas y compatible con muchos sistemas operativos comunes
Seguridad y protección ? Proteger a los usuarios entre ellos y proteger el sistema de ataque malignos por parte de otros usuarios
Portabilidad
Extensibilidad y dinamismo ? Módulos cargables
27
Visión general de Linux
Diagrama de bloques del kernel de Linux (1)
28
Visión general de Linux
Diagrama de bloques del kernel de Linux (2)
29
Visión general de Linux
Características destacables de Linux
Sistema operativo tipo UNIX
Multi*
Multitarea expulsiva/interrumpible (preemtive multi-tasking)
Memoria virtual ? memoria protegida, paginación, etc.
Librerías compartidas
Carga de funcionalidad a demanda ? Dinamismo del kernel a través de los módulos cargables
Ejecutables ‘Copy-On-Write’ (COW) compartidos ? siempre que sea posible, compartir marcos de páginas entre el proceso padre y los procesos hijo, en lugar de duplicarlos
Redes TCP/IP
Soporte de SMP (Symmetric MultiProcessor)
Open source ? código abierto
30
Visión general de Linux
Arquitectura conceptual de Linux
El S.O. Linux está compuesto por 4 grandes subsistemas
(1) Aplicaciones de usuario
(2) Servicios del S.O.
(3) El kernel de Linux
(4) Controladores hardware
Esta descomposición se puede representar por niveles
31
Visión general de Linux
Estructura del kernel de Linux a nivel de subsistemas
Planificador de Procesos (Process Scheduler, SCHED) ? Controla el acceso de los procesos a la CPU, dando un acceso justo a todos los procesos
Gestor de Memoria (Memory Manager, MM) ? Permite que muchos procesos compartan memoria, implementando mecanismos de memoria virtual
Sistema de Archivos Virtual (Virtual File System, VFS) ? Abstrae los detalles de los dispositivos hardware presentándolos como una interface de archivos común
Interface de Red (Networking Interface, NET) ? Proporciona acceso a los sistemas de red
Comunicación entre procesos (Inter-Process Communication, IPC) ? Proporciona mecanismos para la comunicación de procesos (colas de mensaje, semáforos y memorias compartidas)
32
Visión general de Linux
Diagrama de bloques de la estructura del kernel
33
Visión general de Linux
Dependencias entre subsistemas (1)
Todos los subsistemas dependen de SCHED ? Todos ellos necesitan supender o reanudar procesos. Por ejemplo, un proceso que intenta enviar un mensaje a través de la red (subsistema NET) ? el SCHED lo suspende hasta que el mensaje se envía
El subsistema SCHED utiliza el subsistema MM para ajustar el mapa de memoria hardware de un proceso específico cuando dicho proceso reanuda su ejecución
El subsistema IPC depende del subsistema MM para soportar mecanismos de comunicación de memoria compartida en la comunicación entre procesos, y también del SCHED puesto que deben de estar sincronizados los procesos que intervienen en la comunicación
34
Visión general de Linux
Dependencias entre subsistemas (2)
El subsistema VFS depende de los subsistemas MM y NET para soportar sistemas de archivos en red y ram-disks
El subsistema MM utiliza el subsistema VFS para gestionar los datos del swap (implementa mecanismo de memoria virtual) ? Por ejemplo, cuando un proceso accede a memoria que está actualmente en el área de swap (swap-out), el subsistema MM realiza una petición al subsistema VFS para traer los datos del dispositivo de almacenamiento secundario, y suspender el proceso
Todos los subsistemas se basan en recursos comunes (información de estado, etc.) que son propios de cada subsistema ? Cada subsistema es responsable de manterner sus propios recursos
35
Visión general de Linux
Estructuras de datos de los subsistemas (1)
SCHED: Task list
El scheduler mantiene un bloque de datos por cada proceso que está activo (thread_info, task_struct)
Estos bloques están almacenados en una lista encadenada (list_head)
El scheduler siempre mantiene un puntero current que indica el proceso activo
MM: Memory Map
El MM almacena un mapping de dirección virtual a física sobre un proceso base (page)
La estructura de datos (memory map, mm) se encuentra como un campo del descriptor de procesos
36
Visión general de Linux
Estructuras de datos de los subsistemas (2)
VFS: I-nodes
El VFS utiliza index-nodes para representar archivos sobre un sistema de archivos lógico (super_block, inode, file, dentry_cache, fs_struct)
La estructura de datos inode almacena el mapping de los números de bloques de archivos a las direcciones de dispositivo físicas. También inode puede ser compartida entre procesos
NET: Data Connection
Punteros a información del mapping de memoria
Punteros a inodos que representan todos los archivos abiertos
Estructuras de datos que representan todas las conexiones de red abiertas
NET hace transparente muchos dispositivos hardware y protoc.
37
Visión general de Linux
Diagrama de la estructura del fuente del kernel
38
Visión general de Linux
Características más relevantes que aporta Linux 2.6
HyperThreading
Kernel expulsivo/interrumpible (Preemtive kernel)
Scheduler O(1)
Mejora del soporte NUMA (non-uniform memory architecture)
Soporte RMAP (Reverse Mapping for Anonymous Pages) para memoria virtual
Nueva estructura de dispositivo del kernel (kdev_t)
Threading POSIX mejorado (NGPT (Next Generation POSIX Threading Package) y NPTL (Native POSIX Thread Library))
Nuevo modelo de driver y estructura de dispositivo unificada
AMD 64-bit, PPC64
ACPI, ALSA, USB 2.0
Página anterior | Volver al principio del trabajo | Página siguiente |