Kernel Solaris

Cómo es la arquitectura del Kernel del sistema operativo Solaris. Las funciones primarias del kernel pueden ser dividid

Views 262 Downloads 41 File size 237KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Cómo es la arquitectura del Kernel del sistema operativo Solaris.

Las funciones primarias del kernel pueden ser divididas en dos categorías: manejo del hardware mediante la asignación de sus recursos a los programas que están en ejecución, y proveer un conjunto de servicios de sistema a estos programas para su uso. El kernel de Solaris, como otros sistemas operativos, provee una máquina virtual que permite que múltiples programas se ejecuten concurrentemente en le plataforma de hardware. Cada programa tiene su propio ambiente de máquina virtual, con su contexto de ejecución y estado de ejecución.

El kernel posee mecanismos que permiten acceder los servicios del sistema operativo, tales como I/O, servicios de red, creación y terminación de procesos y threads, y comunicación interprocesos (IPC). Los procesos acceden estos servicios a través del uso de llamadas de sistema (system calls).

El kernel de Solaris 10 se divide en los siguientes componentes o capas:

Capa de Interface de llamadas de sistema. Permite a los procesos de usuario acceder a los servicios del kernel. De ese modo, el kernel lleva a caobo tareas específicas “en nombre” del proceso que lo llama, tales como leer o escribir un archivo, o establecer una conexión de red. Capa de Ejecución y Schedule de procesos. Habilita la creación, ejecución, manejo y terminación de procesos. Para ello dividen los recursos de procesamiento de la máquina entre los threads en ejecución. Solaris soporta diferentes clases de scheduling, que otorgan distinto comportamiento a los procesos. Capa de manejo de memoria. El sistema de memoria virtual maneja el mapeo de memoria física a los procesos de usuario y al propio kernel. El manejo de memoria se divide a su vez en dos capas: las funciones comunes de manejo de memoria y los componentes específicos de hardware. Capa de manejo de recursos. El kernel de Solaris contiene la infraestructura para asignar recursos de sistema específicos a los procesos. Esto permite maximizar el uso del hardware, manejar múltiples cargas de trabajo con una sola instancia del kernel, y soportar múltiples ambientes de ejecución. Capa de manejo de archivos. Solaris implementa una estructura virtual de filesystems, en la cual se pueden configurar al mismo tiempo múltiples tipos de filesystems, entre ellos filesystems convencionales basados en discos, filesystems basados en redes, y pseudo filesystems.

Capa de buses de I/O y manejo de dispositivos. Implementa una serie de módulos jerárquicos que reflejan la organización física de las interconexiones entre los buses y los dispositivos. Capa de facilidades del kernel. Incluye relojes, timers de sistema, primitivas de sincronización, etc. Capa de manejo de redes. Provee soporte a IPv4 e IPv6, interfaces basadas en sockets para programación de aplicaciones en red. Las implementaciones de TCP/IP y UDP/IP han sido totalmente rescritas para mejorar su rendimiento.

Administración de memoria del sistema operativo Solaris El esquema de administración de memoria de Solaris.

Solaris 10 es un sistema operativo de memoria virtual. Las ventajas de un manejo virtual de la memoria son:

 Presenta un modelo simple de manipulación de la memoria a los programadores de aplicaciones, quienes no requieren conocer como está organizada la memoria física  Permite que los procesos “vean” rangos lineales de bytes en sus espacios de direcciones, independientemente de la fragmentación física que pueda tener la memoria real

 Proporciona un modelo de programación de aplicaciones con un tamaño de memoria disponible muchas veces mayor a la memoria existente, al habilitar el uso de almacenamiento secundario como contenedor de secciones de memoria que no caben en la memoria físicamente disponible

En este esquema de manejo de memoria, la memoria física (RAM) es dividida en pedazos de tamaño fijo llamadas páginas. El tamaño de una página puede variar dependiendo de la plataforma, por ejemplo, el tamaño de página típico de un sistema UltraSPARC es de 8 KB. Cada página está asociada con un archivo y un offset dentro del mismo; ambos datos identifican el “backing store” de la página. Se conoce como “backing store” a la ubicación en almacenamiento secundario a la cual el contenido de la página debe ser migrado cuando la memoria física requiera ser tomada para otro uso; análogamente, indica la ubicación de la cual debe ser leído su contenido cuando se requiera que esté nuevamente en

memoria. El mecanismo que ejecuta ambas acciones es conocido como paginación.

Para acceder a la memoria física, Solaris implementa mecanismos de traslación de la memoria virtual a la memoria física. La figura 1 muestra la estructura de estos mecanismos

Espacio de direcciones virtual de un proceso

El concepto de paginación se complementa con el de swapping. El swapping permite definir un espacio de direcciones virtual más grande que el espacio de direcciones físico. Cuando la demanda de memoria supera la cantidad de memoria física, las páginas de memoria menos recientemente usadas del proceso con mayor tiempo de inactividad son “sacadas” al llamado espacio de swap, que es un área de disco definida para tal fin. De esta manera se libera memoria para otros procesos.

GESTIÓN DE PROCESOS DEL SISTEMA OPERATIVO SOLARIS 10

El proceso es la abstracción más básica y fundamental provista por un sistema operativo. Un proceso es un objeto ejecutable que ocupa páginas de memoria física que contienen segmentos de memoria específicos con instrucciones, espacio para stack, espacio para data, y otros componentes necesarios para su ejecución.

Solaris implementa una tabla de procesos, donde cada proceso es identificado de manera única con un número entero positivo llamado PID (Process Identification Number).

Solaris es un sistema operativo multi thread, es decir, las tareas llevadas a cabo por el sistema operativo son ejecutadas como threads del kernel. Para los procesos de usuario, se crean los threads de usuario, los cuales son creados con un “proceso ligero” (lightweight process o LWP), un objeto del kernel que permite a los threads de usuario ejecutarse y entrar al kernel independientemente de otros threads del mismo proceso. Para que un thread de usuario pueda ser ejecutado, Solaris crea y le linkea un thread de kernel.

El modelo de threads de Solaris 10 define internamente a los threads de usuario como LWP de usuario. A pesar que los LWP de usuario y los LWP del kernel son representados como dos estructuras de datos diferentes, están integrados tan intrínsecamente que pueden ser vistos como una entidad de ejecución única.

Desde el punto de vista del kernel, un proceso es un contenedor de estado para los threads. El estado de un proceso se refiere a todos los bits de información contenidos en un proceso que el kernel necesita para manejar efectivamente al proceso. Desde la perspectiva del proceso, el kernel abstrae los recursos de ejecución a una máquina virtual para la ejecución de sus instrucciones.

El kernel mantiene una estructura de proceso (proc_t) para cada proceso en el sistema; dentro de la proc_t, la data de estado del proceso es mantenida y referenciada. La proc_t reside en el espacio de direcciones del kernel, y está protegida de accesos por parte de procesos de usuario.

Todos los procesos se originan de un archivo ejecutable en disco. Una imagen del proceso es cargada en memoria por el kernel para su ejecución.

La creación de un proceso ocurre cuando se efectúa el system call fork(). Al proceso recién creado se le asigna su PID; el proceso que llamó el fork() es el proceso padre; el proceso recién creado es el proceso hijo.