Interprocess Communication
PROCESOS
§ Señales(Signals)
Comunicación entre procesos
§ Los procesos pueden ser independientes o cooperar entre
si § ¿Porqué puede ser útil que varios procesos cooperen?
ü Para compartir información ü Para acelerar la computación que realizan ü Por modularidad
§ Para poder cooperar, los procesos necesitan comunicarse
ü Interprocess communication(IPC) = Comunicación entre
§ Para comunicar datos hay 2 modelos principalmente
ü Memoria compartida (Shared memory)
w Los procesos utilizan variables que pueden leer/escribir
procesos
ü Paso de mensajes (Message passing)
w Los procesos utilizan funciones para enviar/recibir datos
Comunicación entre procesos en Linux
§ Signals
ü Eventos enviados por otros procesos(del mismo
usuario) o por el kernel para indicar determinadas condiciones
§ Pipes
ü Dispositivo que permite comunicar dos procesos que
se ejecutan en la misma máquina. ü Los primeros datos que se envían son los primeros que se reciben. La idea principal es conectar la salida de un programa con la entrada de otro. Utilizado principalmente por la shell
§ FIFOS
ü Funciona conpipes que tienen un nombre el sistema de
Archivos. Se ofrecen como pipes con nombre.
Comunicación entre procesos en Linux
§ Sockets
ü Dispositivo que permite comunicar dos
procesos a través de la red
§ Semaphores
ü Contadores que permiten controlar el acceso a
recursos compartidos. Se utilizan para prevenir el acceso de más de un proceso a un recurso compartido (por ejemplomemoria)
§ Shared memory
ü Memoria accesible por más de un proceso a la
vez
Signals:
Envío y recepción
§ IDEA:
ü Un proceso puede recibir signals de otro proceso (del
mismo usuario) o del kernel ü Un proceso puede enviar signals a otro proceso (del mismo usuario)
Proceso A A envía signal a B
Proceso B Kernel envía signal a B
kernel
Signals:
Envío yrecepción
Que sucede realmente?, el kernel ofrece el servicio de pasar la información.
Proceso A
“A envía signal a B”= llamada a sistema Kill(PID_B,signal)
Proceso B
kernel
PCB proceso B Kernel ejecuta código Asociado a signal • Código por defecto • Código indicado por el proceso
Admin signals
Signals:
Tarea:
§ Investigar:
ü Conceptos básicos ü Importancía ü Tiposü Utilización ü Relación existente con fork() y exec()
Ejemplo básico de signal
Ejemplo básico de signal
Signals: basicos
Nombre SIGCHLD SIGCONT SIGSTOP SIGTERM SIGALRM
Default IGNORAR
Evento Un proceso hijo ha terminado o ha sido parado Continua si estaba parado
STOP TERMINAR TERMINAR
Parar proceso Interrumpido desde el teclado (CtrC) El contador definido por la llamada alarm haterminado Terminar el proceso Referencia inválida a memoria Definido por el usuario (proceso) Definido por el usuario (proceso)
SIGKILL SIGSEGV SIGUSR1 SIGUSR2
TERMINAR CORE TERMINAR TERMINAR
Signals:
Tarea:
§ Investigar:
ü Dada la tabla Anterior, profundizar la
definición y utilización de las diferentes señales mostradas. ü Elaborar tabla.
Signals
§ El PCB de unproceso contiene información con:
ü Una tabla de acciones asociados a los signals ü Un vector de bits con los signals pendientes de procesar ( 1 bit
por signal) ü Una máscara para indicar que eventos hay que tratar ü Un temporizador (para alarm)
§ Relación con fork y exec
ü FORK: Proceso nuevo
w El hijo hereda la tabla de acciones asociadas a los signals del proceso
padrew Los eventos son enviados a procesos concretos (PID’s), el hijo es un proceso nuevo à La lista de eventos pendientes se borra (tampoco se heredan los temporizadores pendientes)
ü EXECLP: Mismo proceso, cambio de ejecutable
w La tabla de acciones asociadas a signals se pone por defecto ya que el
código es diferente w Los eventos son enviados a procesos concretos (PID’s), el...
Regístrate para leer el documento completo.