content top

Comunicación interprocesos del sistema operativo Solaris

Colas de mensajes, semáforos, memoria compartida.

El principio del funcionamiento de los semáforos es inicializar un contador, llevar la cuenta del mismo, y notificar al proceso interesado cuando el contador cambia. El contador debe ser inicializado en un valor tal que simbolice el número de recursos disponibles

 Las primitivas de acceso a los semáforos son wait()y notify(). La operación wait() decrementa en uno el valor del contador del semáforo, y en caso que el contador valga cero, el proceso que haya llamado al wait() se queda en espera hasta que haya recursos. La operación notify() incrementa en uno el valor del contador del semáforo, y notifica a los procesos que estén en espera que hay recursos disponibles.

Solaris 10 implementa los semáforos siguiendo tanto los estándares establecidos en UNIX System V como los establecidos en POSIX.

Memoria compartida

La memoria compartida constituye uno de los mecanismos más eficientes para compartir datos entre múltiples procesos, ya que éstos no requieren ser movidos del espacio de direcciones de un proceso al de otro. Consiste en implementar el uso compartido de las mismas páginas de memoria física (RAM) por múltiples procesos, donde cada proceso tiene mapeadas dichas páginas físicas de memoria que son acezadas a través de apuntadores referenciados en el código de cada proceso.

Para hacer uso de memoria compartida, los procesos deben utilizar las siguientes llamadas de sistema

  • shmget() Recibe como parámetro un key, y a partir del mismo crea un segmento compartido. Retorna un identificador asociado al segmento.
  • shmat() Recibe como parámetro el identificador retornado por shmget() , y adjunta el segmento compartido al espacio de direcciones del proceso. Retorna un apuntador al segmento. Una vez que un proceso se ha “attachado” a un segmento de memoria, puede leer y escribir datos en el mismo.
  • shmdt() “Desattacha” un segmento de memoria compartida del espacio de direcciones del proceso

El acceso a memoria compartida por lo general debe ser coordinado mediante mecanismos de sincronización, para evitar que varios procesos escriban simultáneamente en las mismas posiciones de memoria, o que un proceso escriba mientras otro está leyendo.

Solaris 10 introdujo una mejora al manejo de memoria compartida, mediante la implementación de Intimate Shared Memory (ISM). ISM ofrece las siguientes ventajas:

  • El segmento de memora compartida es bloqueado automáticamente por el kernel al momento de su creación, lo que por un lado asegura que la memoria no pueda ser direccionada hasta que su carga se haya completado, y por otro ahorra tiempo de uso de CPU
  • Las estructuras de memoria del kernel utilizadas en la traducción de direcciones físicas a direcciones virtuales son compartidas por procesos que se “attachan” al segmento de memoria, ahorrando memoria del kernel
  • No requiere espacio de swapping, lo que ahorra espacio en disco
1
Liked it
Etiquetas: , , , , , , ,
votar


One Response to “Comunicación interprocesos del sistema operativo Solaris”

  1. Hey! Quick question that’s completely off topic. Do you know how to make your site mobile friendly? My blog looks weird when browsing from my iphone 4. I’m trying to find a theme or plugin that might be able to resolve this issue. If you have any suggestions, please share. Thank you!

Leave a Reply