Revisión final del sistema operativo - clase siete - sincronización de procesos (1)

1. Los conceptos básicos de sincronización y exclusión mutua

1) Recursos críticos
(1) Recursos críticos: son recursos compartidos que solo pueden ser utilizados por un proceso a la vez. Cada proceso adopta un método mutuamente excluyente y los recursos compartidos se denominan recursos críticos. El hardware que es un recurso crítico incluye impresoras, unidades de cinta, etc.; el software incluye colas de mensajes, variables, matrices, búferes, etc.
(2) Sección crítica: la sección de código que accede a los recursos críticos en cada proceso se denomina sección crítica. Solo un proceso puede ingresar a la sección crítica a la vez. Después de ingresar, no se permite la entrada de otros procesos.
Una sección crítica en la que múltiples procesos se refieren al mismo recurso crítico se denomina sección crítica dependiente.
El proceso de acceso a los recursos críticos se divide en cuatro partes:
a) Ingreso al área. Responsable de verificar si se puede ingresar a una sección crítica, configurando la bandera de que se está accediendo a un recurso crítico.
B. Sección crítica. La pieza de código que accede a los recursos críticos.
c. Zona de salida. Responsable de tocar la bandera de que se está accediendo a un recurso crítico.
D. Área restante. Haz otro procesamiento.
2) Sincronización de procesos
La sincronización también se denomina relación de restricción directa y se refiere a la finalización de una tarea por parte de múltiples procesos.Estos procesos tienen ciertas relaciones de restricción debido a la cooperación y la necesidad de coordinar su orden de trabajo en ciertas posiciones.

Nota: No confunda la sincronización de procesos con la programación de procesos
(1) La programación de procesos es para maximizar el uso de los recursos de la CPU y seleccionar un algoritmo adecuado para programar los procesos en la cola de procesos listos.
(2) La sincronización de procesos consiste en coordinar algunos procesos para completar una determinada tarea, como leer y escribir. Debe escribirse primero y luego leerse. No puede leerse primero y luego escribirse. Esto es lo que hace la sincronización de procesos. Especificación de la ejecución El orden de estos procesos hace que una tarea se pueda completar con éxito.

3) Exclusión mutua de procesos:
La exclusión mutua de procesos también se denomina relación de restricción indirecta. Cuando un determinado proceso A usa un recurso crítico en el área crítica de acceso, otro proceso B debe esperar hasta que el proceso A termine de acceder y libere el recurso de la impresora antes de que el proceso B pueda acceder a él.
Para prohibir que dos procesos ingresen al área crítica al mismo tiempo, el mecanismo de sincronización debe seguir las siguientes pautas:
(1) Suéltelo cuando esté inactivo. Cuando el área crítica está inactiva, un proceso que solicita ingresar al área crítica puede ingresar al área crítica inmediatamente
(2) esperar mientras está ocupado. Cuando un proceso existente ingresa a la sección crítica, otros procesos que intentan ingresar a la sección crítica deben esperar
(3) espera limitada. Se debe garantizar que el proceso que solicita acceso ingrese a la sección crítica dentro de un tiempo limitado.
(4) Renunciar al derecho a esperar. Cuando el proceso no puede ingresar a la sección crítica, el procesador debe liberarse inmediatamente para evitar que el proceso esté ocupado esperando

2. Mecanismo de sincronización de procesos

1) Mecanismo de sincronización de software
Una solución clásica: el algoritmo de Peterson.
Idea de algoritmo: para evitar que dos procesos esperen infinitamente para ingresar al área crítica, se establece el turno variable, y cada proceso primero establece su propia bandera y luego establece la bandera de turno. En este momento, otro indicador de estado del proceso y el indicador de no entrada se detectan al mismo tiempo, de modo que cuando dos procesos requieren ingresar a la sección crítica al mismo tiempo, solo se permite que un proceso ingrese a la sección crítica.
El algoritmo es como sigue:

bool flag[2];
int turn=0;
p0进程:
flag[0]=true;
turn=1;
while(flag[1]&&turn==1);
critical section;//临界区
flag[0]=false;
remainder section;//释放资源
P1进程:
flag[1]=true;
turn=0;
while(flag[0]&&turn=0);
critical section;//临界区
flag[1]=false;
remainder section;//释放资源

Nota: El significado de la variable de turno: cuando un proceso intenta acceder a un recurso crítico, primero establece su propia variable indicadora en VERDADERO, lo que indica que desea acceder; pero también establece la variable de turno en el número de proceso del otro parte, indicando humildad, porque la variable turno tendrá un final Por lo tanto, el proceso que hace la primera concesión primero entra en la sección crítica, y el proceso que hace la segunda concesión necesita esperar en un bucle, lo que no causará "hambruna". .

El algoritmo de Peterson resuelve el problema de exclusión mutua de los procesos mediante el uso de software y sigue los tres principios de rendimiento cuando está inactivo, espera cuando está ocupado y espera limitada, pero aún no sigue el principio de rendimiento y espera. Pero en comparación con otros algoritmos, esta solución es la mejor.
2) Mecanismo de sincronización de hardware

(1) Desactivar interrupciones
Desactivar interrupciones es una de las formas más fáciles de lograr la exclusión mutua. Antes de ingresar a la prueba de bloqueo, apague la interrupción y luego apague la interrupción hasta que se complete la prueba de bloqueo y el bloqueo esté bloqueado.
Ventajas: simple y eficiente
Desventajas: no apto para sistemas multi-CPU; sólo apto para procesos del núcleo del sistema operativo, no apto para procesos de usuario.
(2) Use la instrucción Test-and-Set para realizar la exclusión mutua,
denominada instrucción TS o instrucción TSL. La instrucción TSL se implementa por hardware y no se permite que se interrumpa el proceso de ejecución, es decir, una primitiva.

bool TestAndSet(bool*lock){
    
    
bool old;
old=*lock;
*lock=true;
return old;
}
while(TestAndSet(&lock));
临界区代码段...
lock=false;
剩余区代码段...

Ventajas: Implementación simple, adecuada para sistemas multi-CPU;
Desventajas: No satisface el principio de "esperar a la derecha", y el proceso que no puede ingresar a la sección crítica temporalmente ocupará la CPU y ejecutará instrucciones TSL en bucle, lo que resultará en "espera ocupada".
(3) Utilice la instrucción de intercambio para ejecutar la exclusión mutua del proceso
La instrucción de intercambio se denomina instrucción de intercambio, que se implementa por hardware y no se permite que se interrumpa el proceso de ejecución.
(4) Sistema en tiempo real Sistema en
tiempo real significa que el sistema responde a la solicitud de eventos externos de manera oportuna, completa el procesamiento del evento dentro del tiempo especificado y controla todas las tareas en tiempo real para que se ejecuten de manera coordinada. manera.

estAndSet(
swap(bool*a,bool*b){
    
    
bool temp;
temp=*a;
*a=*b;
*b=temp;
}
bool old=ture;
while(old==ture)
swap(&lock,&old);
临界区代码段...
lock=false;
剩余区代码段...

Vale la pena señalar que no hay mucha diferencia entre la instrucción de intercambio y TSL lógicamente.
Ventajas: simple de implementar, adecuado para sistemas multi-CPU.
Desventajas: no satisface el principio de "esperar a la derecha", y el proceso que no puede ingresar temporalmente a la sección crítica ocupará la CPU y ejecutará las instrucciones TSL en un bucle, lo que resultará en una "espera ocupada".

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_52030647/article/details/130832543
Recomendado
Clasificación