Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GRUPO No.3
Realice y responda las siguientes preguntas (DEBEN LEER TODA LA GUÍA, YA QUE LAS
PREGUNTAS SERÁN DESDE EL LA 1ra. PÁG HASTA LA ÚLTIMA PÁGINA, LEER BIEN EL
MARCO TEÓRICO):
3. Explique los dos tipos de comunicación presente entre los procesos concurrentes.
4. Realice una comparación entre las propiedades de los dos tipos de comunicaciones entre
los procesos.
5. Defina: ¿Qué es un archivo? ¿Qué es paso de mensajes? ¿Que son Tuberías? ¿Qué son
variables en memoria compartida?
¿Qué es un archivo?
En sistema operativos, un sistema de paso de mensajes, que son herramientas que se basan
en la valides de la memoria compartida. Los mensajes puede ser de tamaño fijo o variable, los
mensajes son enviados y recibidos a través de una cola de mensajes y puertas.
Las variables en una memoria son compartida, son aquellas pueden leer y escribir para
comunicarse, los procesos que desean comunicarme para que sea una memoria compartida
deben de ser físicos.
Lenguajes concurrentes
Mutex
Las variables mutex también conocidas como mutexes, son buenas para administrar la exclusión
mutua, para los recursos compartidos o las piezas de código. Son fáciles de implementar, lo que
se hace que sea útiles en paquetes de hilos, que se implementan en un espacio de usuario, un
matex es unas variables que pueden permanecer en uno o dos estados.
Abierto (Desbloqueado) o cerrado (Bloqueado). Se requiere un solo bit para replantarla. Pero
en la práctica se utiliza con frecuencia un entero, en donde 0 indica que está abierto y todos los
demás valores indican que está cerrado. Se utilizan dos procedimientos con los mutexes.
Variables condicionales
Las variables de sincronización asociada a un mutex, estas variables ayudan a sincronizar los
bloqueos entre los hilos. Se ejecutan entre un lock y unlock, estas variables realizan dos
opciones wait y signal, donde se conviene realizarlas dentro de un lock o un unlock de un mutex.
Las funciones de un Wait y signal, Wait bloquea al proceso ligero que la ejecuta y le expulsa del
mutex y signal desbloquea a uno o varios procesos su pendidos en la variable condicional.
Ada
Java
Sr
Occam
Parlog
8. ¿Qué lenguaje maneja las palabras reservadas COBEGIN Y COEND para indicar
concurrencia?
pascalFC
9. ¿En Windows se le llama a los programas: procesos o hilos, cómo se le llama en Linux?
componentes generales
Identificador único para cada hilo
Conjunto de registros que representa el estado del procesador
Dos pilas una para el usuario y otra para el modo kernel
Un almacenamiento privado empleado por varias librerías en tiempo de ejecución y en
enlaces dinámicos
13. ¿Qué es un semáforo? ¿Cuáles son las variables que se implementan para poner en
práctica un semáforo en un prg, explíquelas?
14. Corra Bajo Linux y en Lenguaje C los siguientes programas y responda las preguntas que
están al pie de cada Prg:
14.1 HILOS
Compile los siguientes ejercicios, analice el código y la salida. Para la compilar el código con
la librería pthread es necesario utilizar la opción –lpthread, como se muestra este ejemplo:
a) Creación de un hilo:
#include <pthread.h>
#include <stdio.h>
while (1)
return NULL;
pthread_t thread_id;
while (1)
return 0;
#include <pthread.h>
#include <stdio.h>
int candidate = 2;
while (1) {
int factor;
int is_prime = 1;
if (candidate % factor == 0) {
is_prime = 0;
break;
if (is_prime) {
if (--n == 0)
++candidate;
}
return NULL;
int main () {
pthread_t thread;
int prime;
return 0;
• Según lo visto en este ejercicio ¿Cuál es la forma de retornar valores desde un hilo? Explique
de manera clara y en sus propias palabras.
Mientras que, Una limitación de pipes es que sólo se pueden usar entre procesos relacionados
(padre-hijo etc). FIFOs están relacionadas con una entrada en el sistema de archivo y así pueden ser
usadas por procesos no relacionados (pero deben tener acceso al mismo archivo). Las FIFOs son un
tipo especial de archivo. la creación de un FIFO es similar a la creación de un archivo.
16. Investigue como se crea una Tubería Pipes y una Tubería Fifos.
Creación Pipe
Hay dos formas para crear una pipe entre dos procesos: popen() y pipe()
La forma más simple es a través de la función popen.
#include <stdio.h>
FILE *popen (const char * command, const char *type),
Esta función crea una pipe para leer desde o escribir a otro comando. El comando se pasa como
argumento. Type puede ser "r" o "w".
Este función crea un nuevo proceso y ejecuta el comando. Luego crea una pipe desde la entrada o
salida estándar de este proceso dependiendo de si se abrió para escritura o lectura.
Para cerrar la pipe use:
#include <stdio.h>
int pclose(FILE * stream);
Esta función ejecuta un waitpid para esperar por el término del comando y su código de término.
Una pipe puede ser creada con la función pipe
#include <unistd.h>
int pipe (int f [2]);
Creación avanzada
Se crean dos descriptores de archivo, uno para lectura f [0] y otro para escritura f [1].
Lo que se escribe por fd[1] se puede leer por fd[0].
Condiciones especiales:
1. Si el extremo escritor cierra la pipe, el lector puede continuar hasta que los datos terminan y
luego recibe end-of-file.
2. Si el extremo lector cierra la pipe, un intento por escribir en la pipe genera la señal SIGPIPE.
Creación Fifo
#include <sys/types.h>
#include <sys/stat.h>
int mkfifo (const char *path, mode_t mode);
path es el nombre de la FIFO a ser creada en el sistema de archivo, la cual no debe existir
previamente.
mode contiene los permisos de la FIFO, es similar a su uso en la función open().
Escrituras sobre una FIFO que no tiene proceso lector genera una señal SIGPIPE.
Ejemplo: mkfifo también existe como comando de consola. En este caso supongamos que deseamos
procesar la salida de un programa de dos formas, cada una con un programa distinto. Podemos usar
el comando tee para duplicar el contenido de la salida estándar en un archivo, que en lugar de irse a
disco será una FIFO.
% mkfifo fifo1
% prog3 < fifo1 &
% prog1 < infile | tee fifo1 | prog2
prog3 quedara esperando en background por datos desde fifo1.
prog1 lee infile, lo procesa y su salida es duplicada por tee hacia la entrada de fifo1 y la salida
estándar que es conducida a prog2.
Así, sin hace uso de archivos temporales, hemos podido enviar la salida de prog1 a prog2 y prog3.
17. Realice un cuadro de ventajas y desventajas entre los tres requisitos que se ofrecen para solucionar
la sección crítica (Exclusión mutua, Progreso y Espera Limitada).