Sei sulla pagina 1di 7

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.

Potrebbero piacerti anche