Mi información de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
2024-07-04: Notas de estudio de exclusión mutua y sincronización del sistema operativo
Los procesos o programas concurrentes perderán su cierre cuando se ejecuten. Es decir, si dos programas usan un recurso compartido en áreas separadas, los resultados de cada ejecución pueden ser diferentes.
La razón es que no protegemos el recurso compartido x al que tienen acceso tanto el programa a como el programa b.
La relación mutuamente restrictiva es la sincronización. Una comprensión simple de la sincronización es que debe haber un orden en la ejecución de los procesos.
La relación que se restringe indirectamente entre sí se denomina relación mutuamente excluyente, por ejemplo, impresora.
"Modelo de Productor y Consumidor"
contador+ +
首先把变量放到寄存器里面
register1 = counter;
接下来对寄存器进行一个自增
register1 = register1 + 1;
再把结果返回到counter里
counter = register1;
encimera- -
首先把变量放到寄存器里面
register2 = counter;
接下来对寄存器进行一个自减
register2 = register2 - 1;
再把结果返回到counter里
counter = register2;
Solución: trate el contador como un recurso crítico y permita que el proceso acceda al contador variable mutuamente (aprenderá el mecanismo de sincronización más adelante)
Ya sea que se trate de un recurso crítico de hardware o de software, varios procesos deben acceder a él mutuamente.
Estas áreas son esencialmente códigos.
Cuando no hay ningún proceso en la sección crítica, indica que los recursos de la sección crítica están inactivos. A un proceso que solicita ingresar a la sección crítica se le debe permitir ingresar inmediatamente a su propia sección crítica para utilizar los recursos de manera efectiva.
Cuando un proceso existente ingresa a la sección crítica, indica que se está accediendo al recurso crítico. Por lo tanto, otros procesos que intentan ingresar a la sección crítica deben esperar para garantizar un acceso mutuamente excluyente al recurso crítico.
Para los procesos que requieren acceso a recursos críticos, deben asegurarse de poder ingresar a su propia sección crítica dentro de un tiempo limitado para evitar caer en un estado de "esperando a morir".
Cuando un proceso no puede ingresar a su propia sección crítica, el procesador (CPU) debe liberarse inmediatamente para evitar que el proceso caiga en un estado de "ocupado en espera".
两个进程必须交替进入临界区,若一个进程不再进入临界区,则另一个进程也无法进入临界区,违背了“空闲让进”准则
El método de primera verificación de doble bandera establece una bandera de matriz booleana [2] para marcar la voluntad de cada proceso de ingresar a la sección crítica. bandera [i] = verdadero significa que Pi quiere ingresar a la sección crítica.
- El bucle while es equivalente al mecanismo del semáforo.
- Establecer la bandera de la otra parte equivale a cambiar el semáforo de la otra parte.
- Sin embargo, dado que ambos procesos verifican la bandera primero [mira primero el semáforo], y ambos son falsos [ambas luces verdes] inicialmente, es posible que los dos procesos pasen el semáforo al mismo tiempo y entren juntos a la sección crítica. .
El método de verificación posterior de doble bandera verificará la bandera de la otra parte y luego establecerá la suya propia. Estas dos operaciones no se pueden realizar de una vez, por lo que los dos procesos pueden ingresar a la sección crítica al mismo tiempo. método de verificación posterior, primero establece mi propia bandera y luego verifica la bandera de la otra parte. Si la bandera de la otra parte es verdadera, espere; de lo contrario, ingrese a la sección crítica;
El algoritmo de Peterson combinamétodo de marca únicayMétodo de verificación posterior de doble marcaLa idea es usar flag [] para resolver el problema de acceso mutuamente excluyente y usar turn para resolver el problema del hambre.
Si ambas partes compiten para ingresar a la sección crítica, se puede permitir que el proceso le dé a la otra parte la oportunidad de ingresar a la sección crítica.
Antes de que cada proceso ingrese a la sección crítica, establece su propia bandera y establece la bandera de turno a la que se le permite ingresar. Después de eso, detecta la bandera de la otra parte y gira al mismo tiempo para garantizar que solo se permita la entrada a un proceso. Ambas partes solicitan ingresar a la sección crítica al mismo tiempo.
No renunciar al derecho a esperar.
Es difícil para el software resolver el problema de la exclusión mutua de cada proceso para que no ingrese a la sección crítica y tiene grandes limitaciones, por lo que la computadora proporciona algunas instrucciones de hardware especiales para resolver el problema.
La instrucción TS puede considerarse como un proceso funcional (primitivo) cuyo proceso de ejecución es indivisible.
Utilice TS para gestionar secciones críticas y establecer un bloqueo para cada recurso crítico.
Se llama instrucción de intercambio y se utiliza para intercambiar el contenido de dos palabras.
Se define como un número entero S utilizado para representar la cantidad de recursos. Solo hay tres operaciones para este semáforo entero: inicialización (asignar un valor inicial), esperar (disminuir), señal (incrementar).
Mecanismo de sincronización de procesos sin fenómeno de "espera ocupada"
- La operación de espera es equivalente a la operación P.
- La operación de señal es equivalente a la operación V.
- Sólo dos nombres diferentes, las funciones son exactamente las mismas.
- esperar(A) = P(A)
- señal(B) = V(A)
Establezca un semáforo mutuamente excluyente mutex = 1 y luego coloque la sección crítica para que cada proceso acceda a recursos críticos entre espera (mutex) y señal (mutex)
Establezca un semáforo de sincronización S = 0, de modo que la señal de declaración (S) que debe ejecutarse primero y luego la espera (S)