1 Procesos en Unix/C
Estudia el siguiente programa:
|
|
- Comenta qué se espera que ocurra en cada porción de código y la
salida. ¿Qué crees que hace
WEXITSTATUS
? ¿Es una función o una macro del preprocesador deC
? - ¿Que hace la expresión
salida >> 8
? ¿Crees que le puede faltar algo? ¿Por qué? - Ahora edita y ejecuta un programa de ejemplo con dos procesos
concurrentes que impriman en pantalla
1
y2
respectivamente. - Transforma el código anterior para que definamos una única función
a la que se le pase como parámetro el valor entero que se desea
imprimir. Instancia a continuación dos procesos que ejecuten dicha
función a la que le pasaremos como parámetro un
1
y un2
respectivamente. - Implementa un programa que contenga una función imprimir que
imprima un carácter cualquiera
5
veces. En el programa principal debemos crear3
procesos concurrentes que impriman, utilizando la función imprimir, una ‘A’, una ‘B’ y una ‘C’ respectivamente.
2 Hilos POSIX
Estudia el siguiente programa:
|
|
-
Si no comprendes bien lo que son los punteros
void*
presta atención a este vídeo. -
Comenta qué se espera que ocurra en cada porción de código y la salida. Comenta a continuación las diferencias más importantes entre este programa y el equivalente con procesos de la sesión
1
. -
Implementa un programa que contenga una función imprimir que imprima un carácter
n
veces. A la función se le debe pasar como parámetro una estructura en la que deben ir encapsulados el carácter yn
.En el programa principal debemos crear
3
hilos concurrentes que impriman una ‘A’50
veces, una ‘B’100
veces y una ‘C’150
veces respectivamente. -
¿Qué diferencias observas entre la versión que usa procesos y esta versión que hace uso de hilos?
3 Entrega
-
Se realiza en pracdlsi en las fechas allí indicadas. Puedes entregar tantas veces como quieras, solo se corrige la ultima entrega.
-
Crea una carpeta llamada
p1
y dentro de ella estarán el código y archivos de texto o PDF donde contestas a las preguntas. Esta carpeta la comprimes en un archivo llamadop1.tgz
p.e. así usando el terminal:tar cfz p1.tgz p1