Reklama

Problemas de sincronización en el sistema operativo

Проблемы синхронизации в ОС

La literatura sobre los sistemas operativos contiene una gran cantidad de interesantes problemas, que han sido ampliamente discutidos y analizados con el uso de diferentes métodos de sincronización de. En esta sección examinaremos tres de los más conocidos problemas.

El problema de los comensales de los filósofos

En 1965 año Дейкстра formulado y resuelto el problema de la sincronización, llamado a ellos el problema de los comensales de los filósofos. Desde entonces, cada, quién inventó otro nuevo primitiva de sincronización, consideraba su deber de demostrar la dignidad de un nuevo primitiva en el ejemplo, el problema de los comensales de los filósofos. El problema se puede formular de la siguiente manera: cinco de los filósofos, sentados a la mesa redonda, y cada uno tiene un plato de espaguetis. Espaguetis tan resbaladizas, que cada filósofo necesita dos conectores, para terminar con ellos. Entre cada dos platos es el macho .

La vida del filósofo se compone de alternancia de períodos de absorción de los alimentos y la reflexión. (Por supuesto, se trata de una abstracción, incluso en el caso de los filósofos, pero el resto de los procesos de la actividad vital para nuestra tarea inconsecuentes.) Cuando el filósofo hambre, él está tratando de obtener dos tenedores, la izquierda y la derecha, en cualquier orden. Si se las arregló para conseguir dos tenedores, pasó algún tiempo come, luego pone el enchufe de nuevo y continúa la reflexión. La pregunta es la siguiente: ¿se puede escribir un algoritmo, que modela estos pasos para cada filósofo y nunca se queda atascado? (Algunos opinan, que la necesidad de dos tenedores se ve un poco artificial. Es posible, debemos reemplazar italiana comer platos de la cocina china, los spaghetti de arroz, y la horquilla que corresponden a los palillos.)

 

Se puede modificar el programa, para después de la recepción de la izquierda de la horquilla se midió la disponibilidad de la derecha. Si el de la derecha el enchufe no está disponible, el filósofo da la izquierda de nuevo, espera un tiempo y se repite todo el proceso. Asimismo, este enfoque no funcionará, aunque por otra razón. Si no estás de suerte, todos los cinco de los filósofos pueden iniciar el proceso al mismo tiempo, tomar a la izquierda el tenedor, detectar la ausencia de la derecha, poner a la izquierda de nuevo en la mesa, al mismo tiempo tomar a la izquierda el tenedor, y así hasta el infinito. La situación, en la que todos los programas siguen funcionando indefinidamente, pero no se pueden lograr aunque algunos avances, se llama proceso de inmovilización de la (inglés hambre, literalmente, "morir de hambre". Este

El término se aplica incluso en el caso de, cuando el problema no se plantea en italiano o en el restaurante chino, y en los ordenadores).

Usted puede pensar: "Si los filósofos se meditar durante algún accidentalmente de tiempo especificado después de un intento fallido de tomar la derecha de la horquilla, la probabilidad de, que todos los procesos se sigan quedarse en el lugar al menos durante una hora, poco". Esto es correcto, y para la mayoría de las aplicaciones de la repetición de intentos después de algún tiempo, no es un problema. Por ejemplo, en la red de área local Ethernet en una situación de, cuando los dos equipos se envían los paquetes a la vez, cada uno debe esperar accidentalmente el tiempo y volver a intentarlo — en la práctica, esta solución funciona bien. Sin embargo, en algunas aplicaciones es preferible otra solución, funciona siempre y no depende de números aleatorios (por ejemplo, en el anexo para garantizar la seguridad en las centrales nucleares).

Realizar la mejora de la, excluye la situación de bloqueo y el bloqueo del proceso de: proteger a cinco operadores, siguientes a la solicitud de think, binario semáforos doble. Entonces el filósofo debe realizar una operación de Down en la variable mutex antes, que estirar a la clavija. Y después de la devolución de las horquillas en su lugar se le debe realizar la operación de la Up en la variable mutex. Desde el punto de vista teórico, la decisión es. Desde el punto de vista de la práctica surgen problemas con la eficiencia de la: en cada momento puede comer espaguetis sólo un filósofo. Pero cinco tenedores, por lo tanto, se debe permitir en cualquier momento, dos de los filósofos.

La solución, excluye la situación de bloqueo y permite realizar el máximo posible la concurrencia de cualquier número de filósofos. Aquí se utiliza una matriz de state para el seguimiento de ánimo de cada filósofo: él come, o reflexiona, o se muere de hambre (tratando de conseguir la horquilla). El filósofo puede comenzar a comer, sólo si ninguno de sus vecinos no come. Los vecinos del filósofo con el número i se definen las macros LEFT y RIGHT (es decir, si i = 2, el LEFT=

El problema de los lectores y escritores

El problema de los comensales de los filósofos es útil para el modelado de procesos de, compiten por el acceso exclusivo a un número limitado de recursos, por ejemplo, a los dispositivos de e / s. Otro conocido de la tarea es el problema de los lectores y escritores [78], que modela el acceso a la base de datos. Imagínese la base de datos de la reserva de los billetes de avión, a la que intenta obtener acceso muchos de los procesos de. Puede permitir simultánea de la lectura de datos de la base de, pero si el proceso registra la información en la base de, el acceso del resto de los procesos debe ser desestimada, incluso el acceso a la lectura. Cómo programar los lectores y escritores?

Para evitar esta situación, es necesario cambiar un poco el programa: si una grabadora proceso de espera de acceso a la base de, el nuevo lee el proceso de acceso no recibe, y se convierte en la cola detrás de la grabadora de proceso. Ahora пишущему proceso es necesario esperar, hasta que salgan de la base de que ya están en ella leen los procesos de, pero no debemos omitir adelante leen los procesos de, han llegado a la base después de él. La desventaja de esta solución es la reducción de la productividad, una disminución de la competencia. En la nota presentada por la decisión de, en el que una grabadora de procesos con más alta prioridad.

El problema de la hibernación брадобрея

La acción de otro de los clásicos de la situación problemática la comunicación entre procesos se desarrolla en la peluquería. En la peluquería hay una брадобрей, su sillón y p sillas para los visitantes. Si desean hacer uso de sus servicios no, брадобрей se sienta en su silla y se duerme .Si en la peluquería llega el cliente, se debe despertar брадобрея. Si el cliente llega y ve, que брадобрей ocupado, él se sienta en una silla (si hay un lugar), o se va (si el espacio no). Es necesario programar la брадобрея y visitantes así, para evitar una condición de anticipación. Junto a esta tarea, hay muchos precedentes en el ámbito de la masa de servicio, por ejemplo servicio de información, manufacturera al mismo tiempo un número limitado de consultas, con un sistema automatizado de espera para las consultas.

 

En el proyecto de decisión se utilizan tres semáforo: customers, para calcular la pendiente de los visitantes (el cliente, sentado en una silla брадобрея, no se tiene en cuenta — que ya no espera); barbers, el número de брадобреев (0 o 1), inactivas en espera de un cliente, y de exclusión mutua para la aplicación de la exclusión mutua. También se utiliza la variable de waiting, se emplea para calcular la espera de los visitantes.

Ella es una copia de la variable customers. La presencia en el programa de esta variable se relaciona con el hecho de, que leer el valor actual del semáforo no se puede. En esta decisión, el visitante, заглядывающий en la peluquería, debe contar el número de pendientes de los visitantes. Si los visitantes menos, que las sillas, un nuevo visitante se queda, en caso contrario, se va.

Cuando брадобрей viene a trabajar por la mañana, se realiza el procedimiento de barber, блокируясь en семафоре customers, debido a que el valor del semáforo es 0. A continuación, брадобрей duerme, y se duerme, hasta que no llegue el primer cliente.

Llegando a la peluqueria, el visitante realiza un procedimiento customer, intenta acceder a la exclusión mutua para entrar en un área crítica en la. Si, después de él, aparece otro visitante, no se puede hacer algo, hasta que el primer visitante no libera el acceso a la exclusión mutua. A continuación, el visitante comprueba la disponibilidad de sillas, en caso de fracaso, se libera el acceso a la exclusión mutua y se va.

Si hay una silla vacía, el visitante aumenta el valor de una variable de tipo entero waiting. A continuación se realiza el procedimiento de la up en семафоре customers, sin

Más para estimular el flujo de брадобрея. En este momento ambos — el visitante y брадобрей — activo. Cuando un visitante libera el acceso a la exclusión mutua, брадобрей se apodera de sus, hace algunas utilidades de operación y comienza a cortar el cliente.

Al terminar de cepillar el visitante sale de procedimientos y sale de la peluquería. A diferencia de los programas anteriores, ciclo de visitante no, dado que cada visitante esquilan sólo una vez. El ciclo de брадобрея existe, y брадобрей tratando de encontrar al próximo visitante. Si lo consigue, se esquilaba próximo visitante, en caso contrario, брадобрей duerme.

Vale la pena señalar, que, a pesar de la falta de transferencia de datos en el problema de los lectores y escritores y en el problema de la suspensión брадобрея, ambos de estos problemas se refieren a problemas de comunicación entre procesos, puesto que requieren la sincronización de varios procesos.

 

Reklama