Saltar al contenido

¿Qué es el progreso y la espera acotada en la sección crítica?

Hola, hallamos la solución a lo que buscas, desplázate y la hallarás a continuación.

Solución:

Primero, permítanme presentarles algo de terminología. A sección crítica (CS) es una secuencia de instrucciones que puede ejecutar como máximo un proceso al mismo tiempo. Cuando se utilizan secciones críticas, el código se puede dividir en las siguientes secciones:

// Some arbitrary code (such as initialization).

EnterCriticalSection(cs);

// The code that constitutes the CS.
// Only one process can be executing this code at the same time. 

LeaveCriticalSection(cs);

// Some arbitrary code. This is called the remainder section.

La primera sección contiene algo de código, como el código de inicialización. No tenemos un nombre para esa sección. La segunda sección es el código que intenta ingresar al CS. La tercera sección es la propia CS. La cuarta sección es el código que sale de la sección crítica. La quinta y última sección se llama sección del resto que puede contener cualquier código. Tenga en cuenta que el CS en sí puede ser diferente entre procesos (considere por ejemplo un proceso que recibe solicitudes de un cliente y las inserta en una cola y otro proceso que procesa estas solicitudes).

Para asegurarse de que una implementación de secciones críticas funcione correctamente, hay tres condiciones que deben cumplirse. Mencionaste dos de ellos (que explicaré a continuación). El tercero es la exclusión mutua, que obviamente es vital. Vale la pena señalar que la exclusión mutua se aplica solo a la CS y la sección de licencia. Sin embargo, las otras tres secciones no son exclusivas.

La primera condición es Progreso. El propósito de esta condición es asegurarse de que algún proceso esté actualmente en la CS y esté realizando algún trabajo o, si hubo al menos un proceso que quiere ingresar a la CS, lo hará y luego hará algo de trabajo. En ambos casos, se está realizando algo de trabajo y, por lo tanto, todos los procesos están progresando en general.

Progreso: Si ningún proceso se está ejecutando en su sección crítica y algunos procesos desean ingresar a sus secciones críticas, entonces solo aquellos procesos que no se están ejecutando en su sección restante pueden participar para decidir cuál entrará a continuación en su sección crítica, y esta selección no puede ser pospuesto indefinidamente.

Entendamos esta definición frase por frase.

Si no se está ejecutando ningún proceso en su sección crítica

Si hay un proceso ejecutándose en su sección crítica (aunque no se indique explícitamente, esto también incluye la sección de licencia), entonces esto significa que se está haciendo algo de trabajo. Entonces estamos progresando. De lo contrario, si este no fuera el caso …

y algunos procesos desean ingresar a sus secciones críticas

Si ningún proceso quiere ingresar a sus secciones críticas, entonces no hay más trabajo por hacer. De lo contrario, si hay al menos un proceso que desea entrar en su sección crítica …

entonces solo aquellos procesos que no se están ejecutando en su sección restante

Esto significa que estamos hablando de aquellos procesos que se están ejecutando en cualquiera de las dos primeras secciones (recuerde, ningún proceso se está ejecutando en su sección crítica o en la sección de salida) …

puede participar en la decisión de cuál entrará a continuación en su sección crítica,

Dado que hay al menos un proceso que desea ingresar a su CS, de alguna manera debemos elegir uno de ellos para ingresar a su CS. Pero, ¿quién va a tomar esta decisión? Aquellos procesos que ya solicitaron permiso para ingresar a sus secciones críticas tienen derecho a participar en la toma de esta decisión. Además, aquellos procesos que mayo desean ingresar sus CS pero aún no han solicitado el permiso para hacerlo (esto significa que están en ejecución en la primera sección) también tienen derecho a participar en la toma de esta decisión.

y esta selección no puede posponerse indefinidamente.

Esto indica que tomará una cantidad limitada de tiempo seleccionar un proceso para ingresar a su CS. En particular, no se producirá ningún interbloqueo o bloqueo activo. Entonces, después de esta cantidad limitada de tiempo, un proceso ingresará a su CS y hará algo de trabajo, con lo que avanzará.

Ahora explicaré la última condición, a saber limitado esperando. El propósito de esta condición es asegurarse de que cada proceso tenga la oportunidad de entrar realmente en su sección crítica para que ningún proceso muera de hambre para siempre. Sin embargo, tenga en cuenta que ni esta condición ni el progreso garantizan la equidad. La implementación de una CS no tiene por qué ser justa.

Espera limitada: existe un límite, o límite, en la cantidad de veces que se permite que otros procesos ingresen a sus secciones críticas después de que un proceso haya solicitado ingresar a su sección crítica y antes de que se otorgue dicha solicitud.

Entendamos esta definición frase por frase, empezando por la última.

después de que un proceso haya solicitado ingresar a su sección crítica y antes de que se otorgue dicha solicitud.

Es decir, si hay un proceso que ha solicitado ingresar a su CS pero aún no lo ha ingresado. Llamemos a este proceso P.

Existe un límite, o límite, en la cantidad de veces que se permite que otros procesos ingresen a sus secciones críticas.

Mientras P está esperando para ingresar a su CS, otros procesos también pueden estar esperando y algún proceso se está ejecutando en su CS. Cuando sale de su CS, se debe seleccionar algún otro proceso para ingresar a la CS que puede o no ser P. Supongamos que se seleccionó un proceso distinto de P. Esta situación puede suceder una y otra vez. Es decir, otros procesos tienen la oportunidad de ingresar a sus CS, pero nunca P. Tenga en cuenta que se está progresando, pero por otros procesos, no por P. El problema es que P no tiene la oportunidad de realizar ningún trabajo. Para evitar la inanición, debe haber una garantía de que P eventualmente ingresará a su CS. Para que esto suceda, la cantidad de veces que otros procesos ingresan a sus CS debe ser limitada. En este caso, P definitivamente tendrá la oportunidad de ingresar a su CS.

Me gustaría mencionar que la definición de un CS se puede generalizar para que como máximo N procesos se estén ejecutando en sus secciones críticas donde N es cualquier número entero positivo. También hay variantes de secciones críticas de lector-escritor.

Exclusión mutua

No pueden estar presentes dos procesos simultáneamente dentro de la sección crítica en cualquier momento, solo un proceso puede entrar en una sección crítica en cualquier momento.

Imagen para el progreso:

Progreso

Progreso

Ningún proceso que se ejecute fuera de la sección crítica debería impedir que el otro proceso interesante entre en una sección crítica cuando en realidad la sección crítica está libre. En esta imagen, P1 (que se ejecuta fuera de la sección crítica) impide que P2 ingrese a la sección crítica donde, de hecho, la sección crítica está libre.

Espera limitada

Ningún proceso debería tener que esperar una eternidad para entrar en la sección crítica. debe haber un límite para tener oportunidades de entrar en la sección crítica. Si la espera limitada no se satisface, existe la posibilidad de morir de hambre.

Nota

Ninguna suposición está relacionada con H / W o velocidad de procesamiento.

En general, una solución al problema de la sección crítica debe satisfacer tres condiciones:

  1. Exclusión mutua: Acceso exclusivo de cada proceso a la memoria compartida. Solo un proceso puede estar en su sección crítica en un momento dado.

  2. Progreso: Si ningún proceso se encuentra en su sección crítica, y si uno o más subprocesos desean ejecutar su sección crítica, entonces se debe permitir que cualquiera de estos subprocesos ingrese en su sección crítica.

  3. Espera limitada: Después de que un proceso solicita ingresar a su sección crítica, existe un límite para la cantidad de otros procesos que pueden ingresar a su sección crítica, antes de que se otorgue la solicitud de este proceso. Entonces, una vez que se alcanza el límite, el sistema debe otorgar permiso al proceso para ingresar a su sección crítica. El propósito de esta condición es asegurarse de que cada proceso tenga la oportunidad de entrar realmente en su sección crítica para que ningún proceso muera de hambre para siempre.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *