0% encontró este documento útil (0 votos)
24 vistas3 páginas

Comunicación entre Procesos en POSIX

Cargado por

perfect 221
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
24 vistas3 páginas

Comunicación entre Procesos en POSIX

Cargado por

perfect 221
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Formas de comunicación

Colas de mensajes de POSIX

Sistema utilizado para poder comunicarse dentro del mismo ordenador anteriormente.
Tener varios procesos ejecutándose en el mismo ordenador, entre procesos.

Señales Send/receive.
Comunicación indirecta: a través de buzones o sockets
Tamaño de mensaje variable (definido por el programador)
Buffers limitados (recibir un número máximo de mensajes)
Comunicaciones asíncronas (no bloqueantes)

Señales

Se envían como mensajes una señal del sistema típicamente con las instrucciones

“Kill” (no enmascarable, directa)


“Hup” (enmascarable: tapar datos)
“SIG INT” (ctrl+c)
“USM, USR” comunicar o dar señales a otros procesos

“SignalK” (captura señal) && “Signal” (señal, funciones)


Función para enmascarar

Tuberías

Tubería se define con dos ficheros, write and read, crear una tubería (fds[2])
Abre dos procesos de comunicación, un fichero de entrada

Indirecta
Orientada a flujos
Capacidad limitada
Síncrona

Tuberías anónimas (“ls | more”) se crean cuando se necesitan


Tuberías con nombre; fichero que está definido (sistema ficheros)
Sockets:

Librería implementada en POSIX para tratar todo lo relacionado con conexiones TCP/IP.
(conexiones de internet van a través de esta librería)

UDP: mensajes de tamaño variable con direccionamiento directo…


TCP: basada en flujos

Permite comunicar distintos ordenadores.


Basado en las direcciones IP, dirección de la máquina, siempre hay una dirección local
(127.00.00.00). ⇔ Orb 65535
Desde una dirección se envía un mensaje a otro ordenador con otra dirección
Cada puerto es único

Hilos / thread
Son puntos diferentes de ejecución en el código
SO permite tener distintos puntos de ejecución

Puntos de ejecución: se ejecutan en paralelo en distintos puntos del código, punto de


ejecución y la función asociada a él

Hilo: punto de ejecución independiente


Dentro de él se necesita un identificador de hilo, los registros CPU (dentro registros
programa counter para indicar en qué sitio se está ejecutando el hilo en el código)y la pila
específica para indicar las variables locales que está ejecutando los hilos
Pila

Ventajas:

Fácil de compartir
Eficiente: multiprocesador, se puede hacer que cada procesador ejecuta un hilo distinto
Conveniencia: más fácil programar usando muchos hilos que un único hilo (ej: char → leer
teclado y leer socket internet)

Implementación

Hilos de usuario: los hilos facilitan cosas, pero el SO no nos da soporte para hilos.
Definimos en el espacio de usuario una librería interna (hilos no conocidos por el SO, pero
que se puede definir por el programador → hilos de java)
Hilos núcleo: SO conoce los hilos del proceso, lo que implica que los puede planificar por
separado (pueden estar ejecutándose hilos simultáneamente, si uno se bloquea los demás
pueden seguir ejecutándose) como el núcleo conoce los hilos disponibles los puede usar
fácilmente, los puede ejecutar.
SO tiene que dar soporte interno a los hilos

Modelos de los hilos:

Hilos de núcleo: pesados, no bloqueantes, paralelo


Hilos de usuario: ligeros, bloqueantes, no paralelo (llamadas no bloqueantes)

Modelo muchos a uno: hilos de usuario únicamente, cualquiera que se bloquee, como el
núcleo no es consciente que tiene varios hilos detrás, bloquea todos los hilos.
Utiliza cuando solo hay hilos de usuarios

Modelo uno a uno: Cada hilo de usuario está representado por un núcleo, paralelismo
completo, SO consciente de cada uno, si uno se para los demás sigue,

Modelo muchos a muchos: serie de hilos de usuario representado por menos núcleos,
aprovechamiento de elementos, si se bloquean un hilo de usuario, siempre quedarán más
hilos de núcleo que asumir. (hilos de núcleo: tienen inconveniente de ser más pesados,
ventaja de poder procesar en paralelo y no se bloquean) - (hilos de usuario: son muy
ligeros, pero se bloquean y no pueden procesar en paralelo)

Modelo intermedio muchos a muchos: muchos hilos de usuario pero que se ejecuten en
pocos hilos de núcleo, entonces si se bloquean unos, aún le quedan muchos más
(aprovechamiento de los dos tipos de hilos)

Modelo de dos niveles: hilos de usuario representados por menos hilos de núcleo, tareas
pequeñas - hilos de usuario, tarea gorda - hilos de núcleo
tareas de uno a uno: entorno gráfico, alta disponibilidad

Operaciones de hilos:

- crear hilos: se crean estructuras de datos con los datos de hilo y sus puntos de
ejecución. SO genera estructura de datos
- Cancelar un hilo: más complicado, no se sabe el final. Estrategia de cancelación:
cancelación asíncrona: cancelación programada donde se aborta el hilo en el punto
que se esté ejecutando en ese momento.
Si está en mitad de una llamada: cancelación en diferido (poner puntos seguros de
cancelación, hay un bucle, y de vez en cuando se comprueba si hay que salir)

fork(): duplicar el proceso actual, solo duplica el proceso principal, el hilo que lo llamó, el
resto de hilos están desactivados (forkall: duplica todos los hilos)

Señales (error: hilo que envía el error)


Manejador de señal en algún hilo, se puede decidir qué hilo se va a llevar esa señal, y
compartir esa información con el resto de hilos.

También podría gustarte