Procesos de Solaris

PROCESOS DE SOLARIS El proceso es la abstracción más básica y fundamental provista por un sistema operativo. Un proceso

Views 63 Downloads 0 File size 124KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

PROCESOS DE SOLARIS 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.

Cuando pulsamos el botón de encendido de la maquina se inicia la PROM y esta ejecuta un POST que realiza unchequeo al hardware y la memoria del sistema. La PROM muestra en pantalla información sobre el modelo de máquina, versión de PROM, número de serie de la PROM y host ID. Una vez finalizado el chequeo boot identifica el dispositivo de arranque y carga bootblk situado en dicho dispositivo. bootblk tiene ahora la función de cargar el programa secundario de arranque llamado ufsboot que se encuentra en el sistema de ficheros ufs del dispositivo de arranque.

Una vez cargado ufsboot en memoria este tiene la misión decargar el kernel en 32 o 64 bits. El kernel comienza a cargar los módulos y se apoya en ufsbootpara poder tener acceso a los ficheros. Cuando ha cargado lo smódulos necesarios para poder montar el sistema de fichero sroot “/” descarga de memoria ufsboot. El kernel lee el fichero/etc/system que contiene parámetros de configuración queafectan directamente al comportamiento del sistema y son modificables. Una vez leído los parámetros de configuración arranca el proceso /sbin/init. El proceso init comienza la carga de los procesos que están declarados en el fichero /etc/inittab. En versiones anteriores a Solaris 10 se iniciaba la carga de los Runlevel. A partir de Solaris 10 se inicia el proceso /lib/svc/bin/svc.startd que ejecuta el proceso de arranque basado en SMF y que por compatibilidad ejecutará o parará las aplicaciones incluidas en los directorios rc*d.