13 - Procesamiento coordinado
description
Transcript of 13 - Procesamiento coordinado
La operaciones secuenciales coordinadas
implica el procesamiento coordinado de dos
o más listas secuenciales para producir una
única lista de salida.
Dichas lista se pueden producir ya sea por:
Correspondencia (intersección)
Intercalación (unión)
Lista única
Lista 1
Lista 2
(archivo1)
(archivo 2)
Esta se usa para cuando se quiere obtener
los nombres comunes de entre dos listas.
Las listas deben de estar en orden
ascendente.
Se inicia con la lectura del nombre inicial del
la lista 1 y lo compara con el nombre inicial
de la lista 2.
Si encuentra una correspondencia se inserta
el elemento en un nuevo archivo y se leen los
siguientes de las dos listas.
• Asignación de valores iniciales. Acomodar la
información.
• Sincronización. Debe asegurarse que el nombre
actual de una de las listas nunca esté tan adelante del
nombre actual de la otra lista que se pierda una
correspondencia posible. Algunas veces esto implica
leer el siguiente nombre de la lista 1, otra vesces de
la lista 2, y otras, de ambas listas.
• Manejo del estado de fin de archivo. Cuando se llega
al final de archivo 1 o 2 es necesario detener el
programa.
• Reconocimiento de errores. (Nombre duplicados o
nombres fuera de secuencia) se debe detectar y
efectuar alguna acción.
Esta se usa para cuando se quiere obtener los nombres de ambas listas sin repeticiones.
Es la unión de los elementos de dos listas.
La diferencia entre la correspondencia y la intercalación es que con la intercalación deben leerse totalmente las listas.
La función para identificar si hay mas nombres en la lista debe estar en verdadero mientras haya registros en cualquiera de las dos listas y el proceso debe reconocer cuando una lista se agoto para dejar de leerla.
Suposiciones Comentarios Dos o más archivos de entrada se procesan
en forma paralela para producir uno o más
archivos do salida.
En algunos casos, un archivo de salida
puede ser el mismo que uno de los de
entrada.
En algunos casos debe existir un valor de
llave alto que sea más grande que cualquier
llave legítima de registro, y un valor bajo
que sea menor que cualquier llave legítima
de registro.
El uso de un valor de llave alto y de uno
bajo no es absolutamente necesario, pero
puede ayudar a evitar la necesidad de
tratar como casos especiales los estados de
inicio y final de archivo y, por lo tanto,
disminuir la complejidad.
Los registros se procesan en el orden lógico
de clasificación.
El orden físico de los registros es
irrelevante para el modelo, pero en la
práctica puede ser muy importante para la
manera de implantarlo. El orden físico
puede influir en la eficiencia del
procesamiento.
Para cada archivo existe sólo un registro
actual. Este es el registro cuya llave es
accesible dentro del ciclo de sincronización
El modelo no prohíbe buscar registros
delante o hacia atrás, pero tales
operaciones deben restringirse a
subprocedimientos, y no debe permitirse
que se afecte la estructura del ciclo
principal de sincronización.
Los registros pueden manipularse sólo en
memoria interna.
Un programa no puede alterar un registro
en el almacenamiento secundario.
1. Asignación de valores iniciales. Los
registros actuales para todos los archivos se
leen de los primeros registros lógicos en los
archivos respectivos. Los valores de
Llave_anterior para todos los archivos se
asignan con el valor bajo.
2. Se emplea un ciclo principal de
sincronización, que continúa mientras haya
registros relevantes.
3. Dentro del cuerpo del ciclo principal de sincronización hay una selección basada en la comparación de las llaves de registro de los registros respectivos de los archivos de entrada. Si hay dos archivos de entrada, la selección se ve así:
si (llave_actual_archivo3 > llave_actual_archivo2} entonces otro si (llave_actual_archivo1 llavo_actual_archivo2>
entonces otro /* Las llaves actuales son iguales */
fin si
4. Se revisa que los archivos de entrada y salida estén en secuencia, comparando el valor llave_interior, con el valor llave_actual, cuando se lee un registro. Después de revisar con éxito la secuencia, se asigna llave_interior a llave_actual, para preparar la siguiente operación de entrada en el archivo correspondiente.
5. Los valores altos se sustituyen en los valores de llave actual cuando aparece un final de archivo. El ciclo principal de procesamiento termina cuando han ocurrido los valores altos para todos los archivos de entrada relevantes. El uso de valores altos evita la necesidad de agregar un código especial para el estado de final de archivo. (Este caso no es necesario en un procedimiento de correspondencia pura, porque el procedimiento de correspondencia se detiene cuando se encuentra el primer estado de final de archivo.)
6. Todas las actividades posibles de E/S y detección de errores se relegan a subprocesos, de tal forma que los detalles de estas actividades no obscurezcan la lógica del procesamiento principal.