Semáforo y punto muerto en el sistema operativo de la computadora

Tabla de contenido

Mecanismo de semáforo

Prefacio:

Significado del semáforo

formando semáforo

registro de semáforo

El semáforo realiza la exclusión mutua del proceso.

Proceso específico

El mecanismo del semáforo realiza la sincronización del proceso

Proceso de implementación

Semaphore implementa la relación de predecesor

Proceso de implementación

problema del consumidor productor

Operación concreta

Cambiar el orden de operación de vacío y mutexPV

Problema de múltiples productores y múltiples consumidores

analizar

implementar 

problema del fumador

problema del lector

Problema de filósofos comedor

Monitor

¿Por qué introducir la tubería?

Definición y características básicas del monitor

Las características básicas del tubo.

punto muerto

Condiciones necesarias para el interbloqueo

Caso específico 

estrategia de manejo de punto muerto

prevención de interbloqueo

romper la condición mutex

incumplimiento de la condición inalienable

Debilitando el Programa de Condiciones Inalienables

defecto

Destruir solicitudes y mantener condiciones

condición de espera de bucle de interrupción

evitar el punto muerto

Detección y resolución de puntos muertos

Algoritmo de detección y resolución de puntos muertos

detección de punto muerto

Método para eliminar el interbloqueo

Mecanismo de semáforo

Prefacio:

  • En el primer método de verificación de doble bandera, las operaciones de "verificación" y "bloqueo" para ingresar al área no se pueden completar de una sola vez, lo que lleva a la situación de que dos procesos pueden ingresar al área crítica al mismo tiempo.
  • Todas las implementaciones del proceso de exclusión mutua no pueden realizar el derecho a esperar
  • En 1965, el erudito holandés DiJkstra propuso un método efectivo para realizar la exclusión mutua y la sincronización de procesos: el mecanismo del semáforo.

Significado del semáforo

Semáforo: un semáforo es en realidad una variable (puede ser un número entero o una variable de registro más compleja). Un semáforo se puede usar para representar la cantidad de ciertos recursos en el sistema. Por ejemplo, solo hay una impresora en el sistema. Puede establecer un semáforo con un valor inicial de 1

Aviso:

  • El proceso de usuario puede operar en el semáforo mediante el uso de un par de primitivas proporcionadas por el sistema operativo, realizando de ese modo convenientemente la exclusión mutua del proceso y la sincronización del proceso.
  • Un par de primitivos: primitivo de espera (S) y primitivo de señal (S), el primitivo puede entenderse como una función escrita por nosotros mismos, los nombres de función son espera y señal respectivamente, el semáforo S entre paréntesis es en realidad una llamada de función A parámetro pasado (podemos usar un par de primitivas proporcionadas por el sistema para operar en el semáforo)
  • Las primitivas de espera y señal se conocen como operaciones P y V para abreviar. Por lo tanto, las dos operaciones de espera(S) y señal(S) a menudo se escriben como P(S) y V(S); una operación P en el semáforo S significa que el proceso solicita una unidad de este tipo de recurso, y una operación P en el semáforo S Realizar una operación V significa que el proceso libera una unidad de este tipo de recurso

formando semáforo

Significado: use un semáforo entero para representar el número de ciertos recursos en el sistema

por ejemplo: una computadora tiene una impresora

Comprensión: cuando se ejecuta un subproceso, primero se ejecuta esperar (S). En este momento, si entra otro subproceso, porque S <= 0 es verdadero, continuará en bucle; hasta que el proceso acaba de terminar de ejecutar la señal (S) libera el semáforo

Nota: Si un proceso (P1) no puede ingresar al área crítica temporalmente, si los recursos del sistema no son suficientes, el procesador estará ocupado todo el tiempo y la verificación continua provocará una espera ocupada, que no se satisface con el derecho a esperar.

registro de semáforo

Prefacio: Para resolver el problema de la espera ocupada de semáforos de plástico

Significado: un semáforo representado por una estructura de datos de registro

Comprensión: cuando se ejecuta un hilo, primero se ejecuta esperar (S), si otro hilo entra en este momento, si el número de recursos restantes es <0, el proceso entrará en el estado de bloqueo desde el estado en ejecución (ocupando un semáforo antes bloqueo), y cuelgue Vaya a la cola de espera L del semáforo S; el proceso no se despertará hasta que el proceso anterior ejecute la señal (S) y libere el semáforo.

El semáforo realiza la exclusión mutua del proceso.

Proceso específico

  1. Analice las actividades clave de los procesos concurrentes y delinee las secciones críticas.
  2. Establezca el mutex del semáforo de exclusión mutua, el valor inicial es 1 (porque solo se puede acceder a un recurso en la sección crítica)
  3. Ejecutar P(mutex) antes de la sección crítica
  4. Ejecute V(mutex) después de la sección crítica

Aviso:

  • Es necesario configurar diferentes semáforos para diferentes recursos críticos;
  • Las operaciones P y V deben ocurrir al mismo tiempo; la falta de P no garantizará el acceso exclusivo mutuo a los recursos críticos, y la falta de V hará que los recursos nunca se liberen y el proceso de espera no se despertará

El mecanismo del semáforo realiza la sincronización del proceso

Sincronización de procesos: para hacer que cada proceso concurrente progrese de manera ordenada según sea necesario

Proceso de implementación

  1. Analizar dónde se debe realizar la "relación de sincronización", es decir, es necesario asegurarse de que se realicen dos operaciones en tándem
  2. Configure el semáforo de sincronización S, el valor inicial es 0
  3. Ejecutar V(S) después de la operación anterior
  4. Ejecutar P(S) antes de la operación de publicación

Comprensión: si desea que el código 2 se ejecute antes que el código 4, porque el semáforo inicial es 0, primero ejecute la operación V para cambiar el semáforo a 1 y luego ejecute la operación P para cambiar el semáforo a 0 antes de ejecutar la siguiente pieza de código (porque S = 0, por lo que es imposible ejecutar la operación P primero; si se ejecuta P primero, se bloqueará directamente y se activará después de ejecutar la operación V)

Semaphore implementa la relación de predecesor

Proceso de implementación

  1. Para establecer una variable de sincronización para cada par de relaciones predecesoras
  2. La variable de sincronización correspondiente realiza la operación V después de la "operación previa"
  3. La variable de sincronización correspondiente realiza la operación P antes de la "operación posterior"

Comprensión: Es equivalente a una relación de sincronización multicapa.

problema del consumidor productor

Operación concreta

Prefacio: hay un grupo de procesos productores y un grupo de procesos consumidores en el sistema. El proceso productor produce un producto cada vez y lo coloca en el búfer, y el proceso consumidor saca un producto del búfer cada vez y lo usa (nota: el producto aquí se entiende como algún tipo de datos) productores y consumidores comparten un búfer inicialmente vacío de tamaño n

Aviso:

  • Solo cuando el búfer no está lleno, el productor puede poner el producto en el búfer, de lo contrario debe esperar (relación síncrona)
  • Cuando el búfer no está vacío, el consumidor puede sacar el producto de él, de lo contrario debe esperar (relación síncrona)
  • El búfer es un recurso crítico, y cada proceso debe tener acceso mutuamente excluyente (relación de exclusión mutua)

Cambiar el orden de operación de vacío y mutexPV

Comprensión: si el búfer está lleno de productos en este momento, vacío = 0, lleno = n; entonces el productor produce productos, 1 se bloquea y luego descubre que el búfer 2 se ha ido y no puede ingresar al búfer, siempre será bloqueado; cuando se trata del consumidor, porque P se ha bloqueado y no se ha liberado, por lo que no puede ingresar directamente (los productores necesitan V (vacío), los consumidores necesitan P (mutex), esperando los recursos de los demás, interbloqueo )

Conclusión: la operación P que implementa la exclusión mutua debe ser posterior a la operación P que implementa la sincronización, para que no se produzca un interbloqueo.

Problema de múltiples productores y múltiples consumidores

Ejemplo: Hay un plato en la mesa, y solo se puede poner una fruta a la vez; el padre pone manzanas para que coma la hija; la madre pone naranjas para el hijo, solo cuando el plato está vacío se puede poner fruta; solo cuando hay algo en el plato que necesita de frutas solo son consumidos por hijos e hijas

analizar

Relación de exclusión mutua (mutex=1): el acceso al búfer debe ser mutuamente excluyente

Relación de sincronización (uno antes uno después)

  • Padre pone manzanas, hija toma
  • Mamá pone naranjas, el hijo las toma.
  • Los padres pueden poner fruta solo si el plato está vacío.

implementar 

Nota: P(mutex) y V(mutex) pueden omitirse aquí (porque solo hay un plato, el padre lo consume y la madre naturalmente no puede consumirlo [omita la operación P(mutex)]; y padre e hija, madre e hijo son relación de sincronización [omitir operación V (mutex)])

problema del fumador

Supongamos que hay un sistema con tres procesos de fumador y un proceso de proveedor. Cada fumador sigue liando cigarrillos y fumándolo, pero liar y fumar un cigarrillo requiere tres materiales: tabaco, papel y pegamento. De los tres fumadores, el primero posee tabaco, el segundo posee papel y el tercero posee pegamento. El proceso proveedor proporciona tres materiales indefinidamente, el proveedor pone dos materiales sobre la mesa cada vez, el fumador que tiene el material restante enrolla un cigarrillo y lo fuma, y ​​envía una señal al proceso proveedor para decirle Terminado, el proveedor pondrá otros dos materiales sobre la mesa, este proceso se ha repetido (objetivo del proveedor: los fumadores se turnan para fumar)

tres combinaciones

  • Combinación 1: papel + pegamento
  • Combinación 2: Tabaco + Pegamento
  • Combinación Tres: Tabaco + Papel

relación de sincronización

  • Hay combinación 1 sobre la mesa: el primer fumador se la lleva
  • Combo 2 sobre la mesa: el segundo fumador toma
  • Combo 3 sobre la mesa: el tercer fumador se lo lleva
  • Señal de hecho: el proveedor pone la siguiente combinación sobre la mesa

problema del lector

Prefacio: Hay dos procesos simultáneos de lectores y escritores que comparten un archivo. Cuando dos o más procesos de lectura acceden a los datos compartidos al mismo tiempo, no se producirán efectos secundarios, pero si un proceso de escritura y otros procesos acceden a los datos compartidos al mismo tiempo, mismo tiempo Circunstancias que pueden conducir a inconsistencias en los datos

por lo tanto requieren

  1. Permita que varios lectores realicen operaciones de lectura en el archivo al mismo tiempo
  2. Solo un escritor puede escribir información en el archivo.
  3. Cualquier escritor no permite que otros lectores o escritores trabajen hasta que se complete la operación de escritura.
  4. Antes de que el escritor ejecute la operación de escritura, todos los lectores y escritores existentes deben salir

Problema potencial: mientras el proceso de lectura siga leyendo, el proceso de escritura tiene que bloquearse y esperar, y puede "morir de hambre". Por lo tanto, el proceso de lectura tiene prioridad en este algoritmo.

Comprensión: cuando un proceso lector lee un archivo, llega un nuevo proceso escritor. Dado que el primer proceso lector ya ejecutó V(w), el proceso escritor no se bloqueará cuando ejecute la operación P(w); al realizar la operación P (rw), dado que el primer proceso lector ya ha realizado la operación P en P(rw), el proceso escritor se bloqueará en esta posición; si llega un segundo proceso lector en este momento, debido a la anterior El proceso escritor P (w), no ejecuta V(w), por lo que el proceso del lector se bloqueará en P(w)

Idea principal: establezca un recuento de contador para registrar la cantidad de procesos de lectura que actualmente acceden al archivo compartido; puede usar el valor de conteo para juzgar si el proceso que ingresa actualmente es el primero o el último proceso de lectura y realizar diferentes tratamientos

Problema de filósofos comedor

Hay cinco filósofos sentados en una mesa redonda, se coloca un palillo sobre la mesa entre cada dos filósofos y un plato de arroz está en el medio de la mesa. Los filósofos dedican su vida a pensar y comer, y los filósofos no afectan a otras personas cuando piensan. Solo cuando el filósofo tiene hambre, trata de recoger los palillos izquierdo y derecho (uno por uno).Si los palillos ya están en manos de otros, debe esperar. Un filósofo hambriento solo puede comenzar a comer tomando dos palillos. Cuando termine la comida, deje los palillos y continúe pensando.

Prefacio: configuración de semáforos, definir la matriz de semáforos mutuamente excluyentes chopstick[5] ={1,1,1,1,1} se utiliza para realizar el acceso mutuamente excluyente a 5 palillos, y los filósofos están numerados 0-4, los palillos a la izquierda del filósofo i están numerados i, y los palillos de la derecha están numerados (i+1)%5

Cuestiones clave: Resolver interbloqueos, agregar mutex de semáforo de exclusión mutua

Monitor

¿Por qué introducir la tubería?

Problemas con el mecanismo del semáforo: la programación es difícil y propensa a errores

Definición y características básicas del monitor

Un monitor es un módulo de software especial que consta de estas partes

  1. Estructuras de datos compartidas locales al monitor
  2. Un conjunto de procedimientos que operan en la estructura de datos.
  3. Una declaración que establece un valor inicial para los datos compartidos locales para el monitor
  4. Un monitor debe tener un nombre

Las características básicas del tubo.

  1. Solo se puede acceder a los datos locales del monitor mediante procesos locales del monitor
  2. Un proceso puede ingresar al monitor para acceder a datos compartidos solo llamando al proceso en el monitor
  3. Solo un proceso puede ejecutar un procedimiento interno en el monitor a la vez

Comprensión: si los dos consumidores se ejecutan primero, el proceso productor se ejecuta más tarde; luego, el primer proceso consumidor llamará al método de eliminación del monitor cuando se ejecute, y primero determinará si hay productos disponibles en el búfer en este momento, si no , luego esperará en la cola relacionada con la variable de condición vacía; de manera similar, cuando el segundo proceso consumidor comience a ejecutar eliminar, también encontrará que el valor de cuenta es 0, y también esperará el final de la variable de condición vacía. queue; después de eso, habrá un proceso productor Start para ejecutar la función de inserción, que colocará su propio producto en el búfer y verificará si el producto que coloca es el primer producto en el búfer. Si es el primer producto , significa que puede haber otros procesos de consumo que estoy esperando por mi producto, por lo que despertaré el proceso en la cola vacía. Después de que se active el primer proceso, comenzará a ejecutar count--, y luego verificaré si el búfer está lleno antes de tomar el producto.Si el búfer está lleno, significa que puede haber un proceso productor que necesita ser despertado por la señal (lleno), y luego devolver el puntero del producto para sacar el producto;

Aviso:

  • El compilador implementa la característica de que cada proceso debe tener acceso mutuamente exclusivo al monitor.
  • Las variables de condición y las operaciones de espera/activación se pueden configurar en el monitor para resolver problemas de sincronización

punto muerto

Significado: dos subprocesos mantienen los recursos que necesitan el otro, esperan los resultados de ejecución del otro, forman un punto muerto y ninguno de los subprocesos liberará sus recursos.

Inanición: una condición en la que un proceso no puede avanzar debido a una falta prolongada de acceso a los recursos deseados.

Condiciones necesarias para el interbloqueo

  • Condiciones de exclusión mutua: solo la contención por recursos que deben ser mutuamente excluyentes puede causar interbloqueo
  • Condiciones de solicitud y retención: un proceso bloquea la solicitud de recursos y retiene los recursos adquiridos
  • Condición inalienable: El proceso ha obtenido el recurso y no puede ser privado hasta que se agote.
  • Condición de espera de bucle: se forma una relación de recurso de espera de bucle de cabeza a cola entre varios procesos

Aviso:

  1. Cuando ocurre un interbloqueo, debe haber una espera circular, pero cuando ocurre una espera circular, es posible que no haya un interbloqueo.
  2. La asignación irrazonable de recursos inalienables puede conducir a un punto muerto

Caso específico 

public class DeadLock {
    public static void main(String[] args) {
        Makeup g1 = new Makeup(0, "灰姑娘");
        Makeup g2 = new Makeup(1, "白雪公主");
        g1.start();
        g2.start();
    }
}
class Lipstick{}
class Mirror{}
class Makeup extends Thread{
    //需要的资源只有一份
    static Lipstick lipstick=new Lipstick();
    static Mirror mirror=new Mirror();
    int choice;
    String girlName;
    Makeup(int choice,String girlName){
        this.choice=choice;
        this.girlName=girlName;
    }
    @Override
    public void run() {
        //化妆
        try {
            makeup();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    private void makeup() throws InterruptedException {
        if (choice==0){
            synchronized (lipstick){
                System.out.println(this.girlName+"获得口红的锁");
                Thread.sleep(1000);
                synchronized (mirror){
                    System.out.println(this.girlName+"获得镜子的锁");
                }
            }
        }else {
            synchronized (mirror){
                System.out.println(this.girlName+"获得镜子的锁");
                synchronized (lipstick){
                    System.out.println(this.girlName+"获得口红的锁");
                }
            }
        }
    }
}

estrategia de manejo de punto muerto

  1. Para evitar el interbloqueo, destruya una o más de las cuatro condiciones necesarias para el interbloqueo
  2. Evite interbloqueos, evite que el sistema entre en un estado inseguro de alguna manera, evitando así los interbloqueos
  3. La detección y eliminación de interbloqueos permite que ocurran interbloqueos, pero el sistema operativo será responsable de detectar la aparición de interbloqueos y luego tomar algunas medidas para eliminar los interbloqueos.

prevención de interbloqueo

romper la condición mutex

Condiciones de exclusión mutua: solo la contención por recursos que deben ser mutuamente excluyentes puede causar interbloqueo

Si los recursos que solo se pueden usar de forma mutuamente excluyente se cambian para permitir el uso compartido, el sistema no entrará en un estado de interbloqueo.

Por ejemplo, la tecnología SPOOLing, el sistema operativo puede usar la tecnología SPOOLing para transformar lógicamente el dispositivo exclusivo en un dispositivo compartido, como se muestra en el siguiente ejemplo

Proceso: las solicitudes enviadas por cada proceso a la impresora serán recibidas primero por el proceso de salida, y cuando se reciben sus solicitudes, estos procesos pueden ejecutar otras cosas sin problemas; luego, el proceso de salida se basará en las solicitudes de cada proceso, Ponga en la impresora para imprimir

Desventajas: No todos los recursos se pueden transformar en recursos de uso compartido. Y por el bien de la seguridad del sistema, este tipo de exclusión mutua debe protegerse en muchos lugares, por lo que la condición de exclusión mutua no se puede romper en muchos casos.

incumplimiento de la condición inalienable

Condición de inalienabilidad: antes de que los recursos obtenidos por el proceso se agoten, no pueden ser sustraídos por la fuerza por otros procesos, sino que solo pueden liberarse activamente

Debilitando el Programa de Condiciones Inalienables

  • Escenario 1: cuando un proceso solicita nuevos recursos y no puede ser satisfecho, él (el proceso) debe liberar inmediatamente todos los recursos retenidos y volver a aplicar cuando sea necesario en el futuro. Es decir, incluso si algunos recursos no se agotan, deben liberarse activamente, rompiendo así la condición inalienable.
  • Solución 2: cuando los recursos que necesita un determinado proceso están ocupados por otros procesos, el sistema operativo puede ayudar a privar a la fuerza de los recursos deseados. Este método generalmente necesita considerar la prioridad de cada proceso (como el método de programación de privación, que consiste en privar por la fuerza de los recursos del procesador a los procesos con mayor prioridad)

defecto

  • más complicado de implementar
  • Los recursos obtenidos al liberar pueden invalidar el trabajo de la etapa anterior, por lo que este método generalmente solo es adecuado para recursos que son fáciles de guardar y restaurar el estado, como la CPU.
  • La aplicación y liberación repetida de recursos aumentará la sobrecarga del sistema y reducirá el rendimiento del sistema
  • Si se adopta la Opción 1, significa que mientras un determinado recurso no esté disponible temporalmente, los recursos obtenidos antes deben abandonarse y volver a aplicarse más adelante. Si esto sucede todo el tiempo, conducirá a la inanición del proceso.

Destruir solicitudes y mantener condiciones

Condiciones de solicitud y retención: un proceso bloquea la solicitud de recursos y retiene los recursos adquiridos

Se puede utilizar el método de asignación estática, es decir, el proceso aplica para todos los recursos que necesita antes de ejecutarse, y no se pondrá en funcionamiento hasta que no se satisfagan los recursos. Una vez puestos en funcionamiento, estos recursos son siempre de su propiedad, y el proceso no solicitará ningún otro recurso.

Desventajas: algunos recursos pueden tardar poco tiempo, por lo que si el proceso mantiene todos los recursos durante todo el proceso (algunos recursos no se usan con frecuencia), provocará un grave desperdicio de recursos y la tasa de utilización de recursos es extremadamente baja. Además, esta estrategia también puede causar que algunos procesos mueran de hambre.

condición de espera de bucle de interrupción

Condición de espera circular: existe una cadena de espera circular de recursos de proceso, y los recursos obtenidos por cada proceso en la cadena son solicitados simultáneamente por el siguiente proceso

Se puede utilizar la asignación secuencial de recursos. Primero enumere los recursos en el sistema y estipule que el proceso debe solicitar recursos en orden creciente, y los recursos del mismo tipo (recursos con el mismo número) se pueden solicitar al mismo tiempo

Principio: Un proceso solo es elegible para solicitar un recurso con un número grande si ya ocupa un recurso con un número pequeño. De acuerdo con esta regla, es imposible que un proceso de recursos que ya tiene un número grande regrese y solicite un recurso con un número pequeño al revés, por lo que no habrá espera circular.

evitar el punto muerto

Secuencia segura: si el sistema asigna recursos de acuerdo con esta secuencia, cada proceso se puede completar. Siempre que se pueda encontrar una secuencia segura, el sistema se encuentra en un estado seguro. Por supuesto, las secuencias de seguridad pueden tener múltiples

La idea central del algoritmo del banquero: antes de la asignación de recursos, prejuzgue si la asignación hará que el sistema entre en un estado inseguro, para decidir si acepta la solicitud de asignación de recursos (si entrará en un estado inseguro , rechaza temporalmente esta solicitud, deja que el proceso se bloquee y espera primero)

Ejemplo: Hay 5 procesos P0-P4 en el sistema, 3 tipos de recursos R0-R2, y la cantidad inicial es (10, 5, 7), luego se puede expresar la situación en un momento determinado

Aviso:

  1. En este momento, se asigna un total de (7, 2, 5) y queda (3, 3, 2)
  2. Verifique a su vez si los recursos disponibles restantes (3, 3, 2) satisfacen las necesidades de cada proceso
  3. Asigne los recursos disponibles restantes al proceso que puede completar la tarea. Cuando se ejecute el proceso, los recursos se liberarán, de modo que el sistema pueda estar en un estado más seguro (trate de encontrar un proceso que necesite pedir prestado menos y pueda devolverlo). más recursos después de completar la tarea)
  4. Asignación de secuencia segura: {P1, P3, P0, P2, P4} (solo uno, puede haber muchos)

Los pasos del algoritmo del banquero

  1. Compruebe si esta solicitud supera el número máximo de necesidades declarado anteriormente
  2. Compruebe si los recursos disponibles restantes del sistema aún pueden satisfacer esta solicitud en este momento
  3. intente asignar, cambie la estructura de datos
  4. Use el algoritmo de seguridad para comprobar si esta asignación hará que el sistema entre en un estado inseguro 

Pasos del algoritmo de seguridad

  1. Verifique si los recursos disponibles restantes actuales cumplen con la demanda máxima de un proceso, en caso afirmativo, agregue el proceso a la secuencia de seguridad y recupere todos los recursos que posee el proceso
  2. Repita este proceso continuamente para ver si todos los procesos se pueden agregar a la secuencia de seguridad al final.

Detección y resolución de puntos muertos

Algoritmo de detección y resolución de puntos muertos

  • Algoritmo de detección de interbloqueo: se utiliza para detectar el estado del sistema y determinar si se produce un interbloqueo en el sistema
  • Algoritmo de liberación de interbloqueo: cuando se determina que se ha producido un interbloqueo en el sistema, este algoritmo se puede utilizar para liberar el sistema del estado de interbloqueo.

Para detectar si se ha producido un interbloqueo en el sistema

  • Utilice algún tipo de estructura de datos para guardar la solicitud de recursos y la información de asignación
  • Proporcione un algoritmo que use la información anterior para detectar si el sistema ha entrado en un estado de interbloqueo

detección de punto muerto

Después de que el proceso haya solicitado los recursos requeridos, liberará todos los recursos y no solicitará recursos.Si finalmente se pueden eliminar todos los bordes de acuerdo con este método, se dice que el gráfico está completamente simplificado. En este momento, no debe haber interbloqueo (equivalente a encontrar una secuencia segura); si al final no se pueden eliminar todos los bordes, entonces se produce un interbloqueo en este momento (el proceso que aún está conectado al borde está en un punto muerto )

Método para eliminar el interbloqueo

  1. Método de privación de recursos: suspender (colocar temporalmente en la memoria externa) algún proceso de interbloqueo, aprovechar sus recursos y asignar estos recursos a otros procesos de interbloqueo. Pero debería evitar que el proceso suspendido se muera de hambre debido a la falta de recursos durante mucho tiempo.
  2. Método de proceso de cancelación: forzar la cancelación de algunos o incluso todos los procesos bloqueados y privar a estos procesos de recursos. La ventaja de este enfoque es que es simple de implementar, pero el precio que se paga puede ser alto. Debido a que algunos procesos pueden haber estado funcionando durante mucho tiempo y están cerca del final, una vez que finalizan, se puede decir que se quedarán cortos y deberán comenzar de nuevo.
  3. Método de reversión del proceso: permite que uno o más procesos de bloqueo retrocedan lo suficiente para evitar el bloqueo, lo que requiere que el sistema registre la información histórica del proceso y establezca el punto de restauración

Supongo que te gusta

Origin blog.csdn.net/m0_60027772/article/details/129596293
Recomendado
Clasificación