Está en la página 1de 2

Conceptos de programación concurrente.

-la programación concurrente es la rama de la informática que trata de las técnicas de programación que se usan para
expresar el paralelismo entre tareas y para resolver los problemas de comunicación y sincronización entre procesos. El
principal problema de la programación concurrente es no saber en qué orden se ejecutan los programas. Se debe tener
cuidado en que el orden no afecte el resultado de los programas.-
-Hace referencia a las técnicas de programación que son utilizadas para expresar la concurrencia entre tareas y solución
de los problemas de comunicación y sincronización entre procesos. La programación concurrente es la ejecución
simultánea de múltiples tareas interactivamente. Estas tareas pueden ser un conjunto de procesos o hilos de ejecución
creados por un único programa. Las tareas se pueden ejecutar en una sola CPU (multiprogramación), en varios
procesadores, o en una red de computadores distribuidos.

Programa: conjunto de sentencias/instrucciones que se ejecutan secuencialmente.


Proceso: básicamente, se puede definir como un programa en ejecución. Son las líneasde código en ejecución de forma
dinámica.

Región Critica
Las secciones críticas o regiones críticas son fragmentos de programa que acceden a recursos no compartidos. Si dos
procesos no están nunca en suscepciones críticas al mismo tiempo, se evita que haya conflicto entre estos por el
recurso.
Requisitos para la exclusión mutua:
El uso adecuado de la concurrencia entre procesos exige la capacidad de definir secciones críticas y hacer cumplir la
exclusión mutua. Esto es fundamental para cualquier esquema de proceso concurrente. Cualquier servicio o capacidad
que dé soporte para la exclusión mutua debe cumplirlos requisitos siguientes:1.Solo un proceso, de entre todos los que
poseen secciones críticas por el mismo recurso u objeto compartido, debe tener permiso para entrar en ella en un
instante dado.2.Un proceso que se interrumpe en una sección no crítica debe hacerlo sin estorbar a los
otrosprocesos.3.Un proceso no debe poder solicitar acceso a una sección crítica para después ser demorado
indefinidamente; no puede permitirse el interbloqueo o la inanición.4.Cuando ningún proceso está en su sección crítica,
cualquier proceso que solicite entrar en la suya debe poder hacerlo sin dilación.

Semáforos: sugirió usar una variable entera llamada semáforo, utilizada para contar el número de señales de despertar
guardadas para uso futuro. Un semáforo podía tener el valor O, indicando que no había señales de despertar guardadas,
o en caso contrario, algún valor positivo que indicaba que si había una o más señales de despertar pendientes.
Dijkstra propuso tener 2 operaciones, DOWN y UP. La operación DOWN (abajo) aplicada a un semáforo verifica si el
valor es mayor que O; en el caso de ser así, decrementa el valor y continúa. Si el valor es O, el proceso se pone a dormir
sin completar la operación DOWN por el momento. La verificación del valor, su modificación y la acción de dormirse, si
es necesaria, se realizan como una sola acción indivisible. Una vez que una operación de semáforo se ha iniciado, ningún
otro proceso podrá acceder al semáforo hasta que la operación se haya completado o bloqueado. La operación UP
(arriba) incrementa el valor del semáforo direccionado, si uno o más procesos están durmiendo en espera de ese
semáforo, imposibilitados de completar una operación DOWN previa, el sistema elige uno de ellos aleatoriamente y le
permite completar su DOWN. Así, después de un UP con un semáforo que tiene procesos durmiendo esperando, el
semáforo seguirá siendo O, pero habrá un proceso menos que se halle en fase de durmiendo esperando. La operación
de incrementar el semáforo y despertar un proceso, también es indivisible. Ningún proceso se bloquea durante un UP.
-Los semáforos se implementan con una cola de tareas o de condición a la cual se añaden los procesos que están en
espera del recurso. Los semáforos pueden realizar3 operaciones, que son: Inicializar; Espera (wait); y Señal (signal).
Inicializa: se debe realizar antes de que comience la ejecución concurrente de los procesos, ya que su función principal
es dar un valor inicial al semáforo.
Espera: un proceso que realiza la operación espera, y encuentra el semáforo a 1, lo pone a 0 y prosigue su ejecución. Si
el semáforo está en 0, el proceso queda en estado de espera hasta que el semáforo se libera, dicho estado se debe
considerar como uno más de los posibles de un proceso, esto es así debido a que un proceso en espera de un semáforo
no está en ejecución ni listo para pasar a dicho estado, debido a que no tiene la CPU ni puede tenerla mientras que no se
lo indique el semáforo. Tampoco es válido el estado suspendido, ya que este estado está pensado para que lo utilicen
llamadas al S.O. para suspender o reactivar un proceso que no tiene por qué
tener una conexión con los semáforos.
Señal: cuando se ejecuta la operación “señal” puede haber varios procesos en la lista o cola, el proceso que la dejará
para pasar al estado listo dependerá del esquema de gestión de la cola de tareas suspendidas que se haya
implementado en el diseño del semáforo, por ejemplo: por prioridades, FIFO, etc. Si no hay ningún proceso en espera
del semáforo este se deja libre para el1ro que lo requiera.

Overlays: esta técnica consiste en que el programador divide lógicamente un programa muy grande en secciones que
puedan almacenarse en las particiones de RAM. Al final de cada sección del programa el programador insertaba una o
varias llamadas al sistema con el fin de descargar la sección presente de RAM y cargar otra, que en ese momento residía
en disco duro u otro dispositivo de almacenamiento secundario

Demanda de página: se considera como podría cargarse un programa ejecutable desde el disco a la memoria, una
opción consiste en encargar el programa completo en memoria física en el momento de ejecutar el programa, pero esta
técnica presenta el problema de que no puede necesitar inicialmente todo el programa en la memoria. Las páginas de
un proceso deben cargarse por demanda, no se debe transferir ninguna página al almacenamiento secundario o
primario, hasta que un proceso en ejecución haga referencia a ella, así que, en cualquier intento de cargar páginas con
anticipación a su uso, puede provocar que se carguen páginas equivocadas.

Algoritmos de reemplazo de páginas: cuando ocurre un fallo de página, el S.O. tiene que elegir una página para
eliminarla de memoria y hacer espacio para la página entrante. Si la página a eliminar se modificó mientras estaba en
memoria, debe volver a escribirse en el disco para actualizar la copia del mismo, pero si la página no se ha modificado, la
copia ya está actualizada y no se necesita reescribir. Aunque sería posible elegir una página al azar para eliminarla en
cada falla de página, el rendimiento del sistema es mucho mayor si se selecciona una página que no sea de uso
frecuente, pero si se elimina una página de uso frecuente, provoca que haya que trae de vuelta rápidamente, lo cual
produce una sobrecarga adicional. Cuando se debe cargar una página a memoria pero todos los frames están ocupados,
se necesita reemplazar el contenido de alguno de ellos por la información requerida. Para seleccionar cual es la mejor
opción para hacer este cambio existen los algoritmos de reemplazos de páginas:
-Algoritmo de reemplazo de páginas óptimo: el mejor algoritmo de reemplazo de páginas posible es fácil de describir,
pero imposible de implementar, al momento en que ocurre una falla de página, hay un conjunto de páginas en memoria
y una de éstas se referenciará en la siguiente instrucción (la página que contiene la instrucción); otras páginas a lo mejor
no se referencien hasta 10, 100 o 1000 instrucciones después. Cadapágina se puede etiquetar con el N° de instrucciones
que se ejecutarán antes de que se haga referencia por 1ra vez a esa página.El algoritmo óptimo de reemplazo de páginas
establece que la página con la } etiqueta más alta debe eliminarse. Si una página no se va a utilizar durante 8 o 6
millones de instrucciones, al eliminarla se enviará la falla de página que la obtendrá de vuelta lo más lejos posible en el
futuro. El único problema con este algoritmo es que no se puede realizar, al momento de la falla de página, es decir, el
S.O. no sabe cuándo será la próxima referencia a c/u de las páginas. Como conclusión se puede decir que este algoritmo
consiste en quitar de memoria la página que no será utilizada con el mayor tiempo, es solo un algoritmo teórico, es
imposible de implementar debido a que no se puede saber el futuro, solamente sirve para analizar y compararlo con los
demás algoritmos.

-Asignación de Frames o Marcos de página: existen 2 esquemas para determinar cual es


el N° de frames o marcos de página que tendrá cada proceso para su paginación:
-Asignación fija:
-Igualitaria: es decir, si existe un determinado N° de frames o marcos de página
“m” y un N° de procesos “n”, a cada proceso le corresponden m / n frames o marcos de
página.
-Proporcional: es aquella que asigna una cantidad de frames o marcos de página acorde al tamaño del proceso. Con “tn”
como el tamaño del proceso, “stn” como la suma del tamaño de todos los procesos y “m” como el N° de frames o
marcos de página, que permiten obtener el N° de frames o marcos de página para cada proceso realizando:
-Asignación por prioridad: funciona como la asignación por prioridad, pero en vez de utilizar el tamaño de los procesos
usa la prioridad de los mismos procesos. El proceso de reemplazo de página puede ser de forma local o global, es decir,
si un proceso necesita hacer un reemplazo, el enfoque local le obliga a hacerlo en sus propios frames o marcos de
página, mientras que el global le permite usar algún frames o marcos de página de otro proceso con prioridad más baja.

También podría gustarte