2.4 Concurrencia y secuenciabilidad
Concurrencia:
Es
la existencia de varias actividades ejecutándose simultáneamente, y
necesitan sincronizarse para actuar conjuntamente. Se trata, en este
caso, de un concepto lógico, ya que sólo hace referencia a las
actividades, sin importar el número de procesadores presentes.
Para
que dos actividades, sean concurrentes, es necesario que tengan
relación entre sí, como puede ser la cooperación en un trabajo
determinado o el uso de información compartida.
Los
procesos son concurrentes si existen simultáneamente. Los procesos
concurrentes pueden funcionar en forma totalmente independiente unos de
otros, o pueden ser asíncronos, lo cual significa que en ocasiones
requiere cierta sincronización y cooperación.
En
un sistema monoprocesador, la existencia de multiprogramación es
condición necesaria, pero no suficiente para que exista concurrencia, ya
que los procesos pueden ejecutarse independientemente. Por ejemplo, un
editor y un compilador pueden estar ejecutándose simultáneamente en una
computadora sin que exista concurrencia entre ellos. Por otro lado si un
programa se está ejecutando y se encuentra grabando datos en un
archivo, y otro programa también en ejecución está leyendo datos de ese
mismo archivo, sí existe concurrencia entre ellos, pues el
funcionamiento de uno interfiere en el funcionamiento de otro.
Si
un sistema es multiprocesador, también pueden presentarse situaciones
de concurrencia siempre y cuando las actividades necesiten actuar entre
sí, bien por utilizar información común, o por cualquier otra causa.
Los
procesos del sistema pueden ejecutarse concurrentemente, puede haber
múltiples tareas en el CPU con varios procesos. Existen varias razones
para permitir la ejecución concurrente:
- Compartir recursos físicos: Ya que los recursos del hardware de la computadora son limitados, nos podemos ver obligados a compartirlos en un entorno multiusuario.
- Compartir recursos lógicos: Puesto que varios usuarios pueden interesarse en el mismo elemento de información (por ejemplo un archivo compartido), debemos proporcionar un entorno que permita el acceso concurrente a estos tipos de recursos.
- Acelerar los cálculos: Si queremos que una tarea se ejecute con mayor rapidez, debemos dividirla en subtareas, cada una de las cuales se ejecutara, en paralelo con las demás.
- Modularidad: Podremos construir el sistema en forma modular, dividiendo las funciones del sistema en procesos separados.
- Comodidad: Un usuario puede tener que ejecutar varias tareas a la vez, por ejemplo puede editar, imprimir y compilar en paralelo.
La
ejecución concurrente que requiere la cooperación entre procesos
necesita un mecanismo para la sincronización y comunicación de procesos,
exclusión mutua y sincronización.
Secuenciabilidad:
Los archivos secuenciales son un
tipo de archivo en los que la información puede leerse y escribirse empezando
desde el principio del archivo.
Debemos tomar en consideración algunas características que deben tener los
archivos secuenciales:
1. La escritura de nuevos datos siempre se hace al final del archivo.
2. Para leer una zona concreta del archivo hay que avanzar siempre, si la zona
está antes de la zona actual de lectura, será necesario "rebobinar"
el archivo.
3. Los ficheros sólo se pueden abrir para lectura o para escritura, nunca de
los dos modos a la vez.
Archivos Secuenciales
Se refiere al procesamiento de los registros, no importa el orden en que se
haga, para eso los registros están organizados en forma de una lista y
recuperarlos y procesarlos uno por uno de principio a fin.
Rendimientos de los archivos Secuenciales; dependiendo del dispositivo de
almacenamiento utilizado el archivo se puede mostrar el usuario como si fuera
un sistema secuencial.
Al finalizar un archivo secuencial se denota con una marca de fin de archivo.
(End end-of-file)
Seriabilidad:
Cuando hablamos de seriabilidad nos referimos a la capacidad de reproducir un
producto x en número limitado de veces.
Comentarios
Publicar un comentario