View
72
Download
0
Category
Preview:
Citation preview
UNIVERSIDAD CENTROAMERICANA Página # 1 de 2
Facultad de Ciencia, Tecnología y Ambiente / Coordinación TIC´s
Arquitectura de Sistemas Concurrentes
Ingeniería en Sistemas y Tecnologías de la Información
Guía de Ejercicio #1: Programación Concurrente
Objetivos de Aprendizaje
Al finalizar esta unidad, las/los estudiantes serán capaces de demostrar los siguientes resultados y
dominios:
1. Explicar el concepto de programación concurrente mediante el estudio de los procesos
concurrentes, sus características, sus interacciones y su aplicación en sistemas distribuidos.
2. Analizar la filosofía de la concurrencia así como las técnicas y herramientas para el manejo de
concurrencia.
1. Usando su propias palabras, escriba algunas frases para explicar los siguientes términos:
a) API (Interfaz de Programador de Aplicaciones).
b) El API de Sockets.
c) Winsock.
d) La comunicación orientada a conexión frente a la comunicación sin conexión.
2. Describa cada una de las razones para que un proceso entre a un estado de interbloqueo.
3. De acuerdo al código y a la salida del Ejercicio No.1: Concurrencia, varios subprocesos
imprimiendo en distintos intervalos (ProbadorSubprocesos – ImprimirSubprocesos), describa
detalladamente el Ciclo de Vida de un Proceso (Estados del Subproceso1).
4. Este ejercicio guía al estudiante mediante experimentos con un socket en modo stream orientado a
conexión utilizando el código del Ejercicio No.2: Flujo de Datos en Modo Stream (Socket
SolicitarConexion y Socket AceptarConexion).
a) Compile y arranque en primer lugar AceptarConexion y, después, SolicitarConexion
(distintas ventanas). Un ejemplo de los mandatos necesarios para ello son:
<número de puerto del socket del servidor utilizado en este proceso> <mensaje, una cadena, para mandar> <nombre de la máquina del aceptador de la conexión> <número de puerto del aceptador de la conexión>
localhost 12345 ¡Buenos Días!
localhost 12345
Describa y explique el resultado.
b) Repita el último apartado pero cambie el orden de ejecución de los programas:
localhost 12345
localhost 12345 ¡Buenos Días!
Describa y explique el resultado.
UNIVERSIDAD CENTROAMERICANA Página # 2 de 2
Facultad de Ciencia, Tecnología y Ambiente / Coordinación TIC´s
Arquitectura de Sistemas Concurrentes
Ingeniería en Sistemas y Tecnologías de la Información
c) Añada un tiempo de retraso de 5 segundos (Thread.sleep(5000)) en el proceso
AceptarConexion justo antes de que el mensaje se escriba en el socket, después repita el
apartado a). Esto producirá el efecto de mantener al Solicitante bloqueado en la lectura
durante 5 segundos adicionales de manera que se pueda observar visualmente el bloqueo.
Muestre una traza de la salida de los procesos. ¿Están de acuerdo los mensajes de
diagnósticos mostrados en la pantalla con el Diagrama de Eventos del ejercicio Flujo de
Datos en Modo Stream (Socket SolicitarConexion y Socket AceptarConexion).
5. Interprete los resultados de tres ejecuciones (salidas) de la aplicación Ejercicio No.3: Caso del
Productor/Consumidor sin Sincronización al Objeto Compartido.
6. Escriba un programa en Java para demostrar que, a medida que se ejecute un subproceso de alta
prioridad, éste retrasará la ejecución de todos los subprocesos de menor prioridad
(Thread.MAX_PRIORITY, Thread.NORM_PRIORITY, Thread.MIN_PRIORITY).
7. Escriba un programa en Java para demostrar cómo un subproceso de alta prioridad, usa a sleep para
dar a los subprocesos de menor prioridad la oportunidad de ejecutarse.
8. Defina la siguiente terminología básica:
arquitectura sistólica búfer compartido ciclo de vida de
un subproceso concurrencia consumidor
currentThread() exclusión mutua getName() inanición interbloqueo
memoria compartida memoria distribuida monitor paso de
mensajes
prioridad de un
subproceso
productor programación
cíclica (round-robin) quantum (cuanto)
recolector de
basura región crítica
relación
producto/consumidor run() sincronización
sistemas
distribuidos
sistemas
empotrados
sleep() start() subprocesamiento
múltiple subproceso tiempo real
Recommended