Principios del sistema operativo Capítulo 6 Sincronización de procesos

Registro de estudio de principios del sistema operativo para estudiantes universitarios

registro de aprendizaje cubeta familiar

6.1 Condiciones de carrera y tramos críticos

6.1.1 Condiciones de carrera

Las formas efectivas de prevenir las condiciones de carrera incluyen: sincronización y exclusión mutua

6.1.2 Secciones críticas

Un recurso que solo permite el uso de un proceso a la vez se denomina recurso crítico, recurso mutuamente excluyente, recurso exclusivo o variable compartida.

Un recurso que puede ser utilizado por más de un proceso a la vez se denomina recurso compartido.

Sección crítica: es una sección de código que involucra recursos críticos

Algunas notas:

  • Una sección crítica es un fragmento de código.

  • Una sección crítica es el código dentro de un proceso.

  • Cada proceso tiene una o más secciones críticas.

6.1.3 Directrices para el uso de secciones críticas

Exclusión mutua:

  • Asumiendo que un proceso P1se ejecuta en una sección crítica, otros procesos serán excluidos de esta sección crítica
  • Las secciones críticas con el mismo recurso crítico deben ser mutuamente excluyentes
  • No se permite que las secciones críticas sin el mismo recurso crítico sean mutuamente excluyentes

Disponible para ceder:

  • No hay ejecución de procesos en la sección crítica, y el tiempo de espera para que el siguiente proceso ingrese a la sección crítica no puede extenderse indefinidamente.
  • Es decir, cuando otros procesos quieran entrar, que entren.

Espera limitada:

  • Cada proceso debe tener una cantidad finita de tiempo de espera antes de ingresar a una sección crítica
  • no puedo esperar para siempre

Deja que la derecha espere:

  • Cuando un proceso quiere ingresar a la sección crítica y descubre que no puede ingresar, debe liberar activamente el control de la CPU y dejar que otros procesos ocupen el control de la CPU.
  • Correr se convierte en estado de espera

Acceso a los trámites de la sección crítica

  • Implementación de criterios de exclusión mutua en zonas de entrada
  • Implementación de criterios free-to-go en la zona de salida
  • Cada sección crítica no puede ser demasiado grande para lograr el criterio de espera limitada

Dos procesos P0 P1, solo algoritmos para dos procesos

do {
    
    
    flag[i] = true;
    turn = j;
    while (flag[j] and turn == j);
    critical section;
    flag[i] = false;
    remainder section;
}while(1);

6.2 Semáforo (importante)

6.2.1 Significado físico del semáforo

Asegúrese de que dos o más segmentos de código no se llamen simultáneamente

Antes de ingresar al segmento de código crítico, el proceso debe obtener un semáforo, de lo contrario no puede ejecutarse

Después de ejecutar el segmento del código clave, se debe liberar el semáforo

El semáforo tiene un valor, si es positivo significa que está libre, y si es negativo significa que está ocupado

S>0: hay S recursos disponibles
S=0: no hay recursos disponibles
S<0: entonces |S| indica el número de procesos en la cola de espera S

P(S): Solicitar un recurso
V(S): Liberar un recurso

Valor inicial del semáforo de exclusión mutua: generalmente 1
Valor inicial del semáforo síncrono: 0-N

6.2.2 Semáforos enteros

Semáforo S - variable entera

Proporciona dos [operaciones atómicas] inseparables para acceder al semáforo

wait (S): 
		 while S <= 0 do no-op;		
                S--;
signal(S): 
			S++;

Espera(S) también conocido como P(S)

Señal(S) también conocida como V(S)

Problemas con semáforos enteros: espera ocupada

6.2.3 Semáforos grabados

Eliminar el semáforo de espera ocupada

记录型信号量定义:

typedef struct {
    
    
	int value;
	struct process *list;
} semaphore
Wait(semaphore *S) 
{
    
    
	S->value--;
	if (S->value < 0) {
    
    
		add this process to list S->list;
		block();   //阻塞自身
	}
}

Signal(semaphore *S) {
    
    
	S->value++;
	if (S->value <= 0) {
    
    
		remove a process P from list S->list;
		wakeup(P);  //唤醒的是其他进程,P变为ready状态
	}
}



El uso del semáforo S:

  • S debe configurarse una vez y el valor inicial solo puede configurarse una vez
  • El valor inicial de S no puede ser negativo
  • Excepto para la inicialización, solo se puede acceder a S realizando operaciones P, V

6.2.4 Semáforos mutex

El semáforo binario también se llama semáforo de exclusión mutua, el semáforo S solo puede tomar 1 o 0

Semaphore *S;
S.value = 1;          全局变量,可以先这么理解

wait(S);
CritiaclSection()            //临界区
signal();

6.2.5 Semáforos síncronos

Darse cuenta de varios problemas de sincronización y dispersarlos en diferentes procesos Cómo obtener el valor del problema de valor inicial de S también requiere observación y pensamiento

Ejemplo: P1y P2debe ejecutarse C1antesC2

semaphore s = 0

P1:

​	C1:

​	signal(s); //运行完了之后要告诉 C1,我运行完了

P2:

​	wait(s);      //因为一开始 S 为0,如果C1不执行,C2就会阻塞

​	C2;         //判断C1有没有运行

6.2.6 Pequeño ejemplo

Los estudiantes en dos grupos AB pueden turnarse para lanzar la pelota, cómo lograr

Aplicar para múltiples semáforos, cruzarse entre sí

semaphore s1 = 0;
semaphore s2 = 1;


A :
while(1) {
	wait(S2);
	C1:投球
	signal(S1);
}


B:
while(1) {
	wait(S1);
	C2:投球
	signal(S2);
}

problema del conductor

Cuál es el problema de sincronización entre ellos:

Cierre la puerta para arrancar el vehículo, cierre la puerta primero y luego arranque

Espera() P

Señal() V

semapheore s1 = 0
           s2 = 0

司机:
	P(s1)
C2:	启动车辆
	正常行驶
C3:	到站停车
	V(s2)
	
	
	
售票员:
C1:	关门
	V(s1)
	售票
	P(s2)
C4:	开门

6.3 Problema de sincronización clásico

6.3.1 Problema productor-consumidor

problema de búfer limitado compartido

La operación de sincronización de espera precede a la operación de sincronización de mutex

Descripción del problema

Productores (M): producir productos y ponerlos en el búfer

Consumidores (N): Toma el consumo del producto del búfer

Pregunta: ¿Cómo lograr la sincronización y la exclusión mutua entre productores y consumidores?

[Error en la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-vO8n6dU4-1641539727576) (E:\Documents and PPT\Junior Course Study\Operating System \Imágenes\Sexto Capítulo\problema productor-consumidor.png)]

proceso de analisis de problemas

Proceso de producción del productor: producir un producto y ponerlo en el búfer

El proceso de consumo del consumidor: tomar un producto del búfer y consumir el producto

Análisis de problemas de exclusión mutua:

Los problemas de exclusión mutua a menudo se generan entre el mismo proceso y la operación de exclusión mutua se realiza en la sección crítica.

Cómo encontrar el área crítica, primero debemos encontrar los recursos críticos, los recursos críticos a menudo son operaciones realizadas por una clase de procesos, pero limitan el rango de operaciones que solo puede realizar un proceso a la vez.

En este problema, el recurso crítico del productor es poner en el búfer, y el recurso crítico del consumidor es sacar el producto del búfer.

Análisis del problema de sincronización:

Los problemas de sincronización suelen ocurrir entre diferentes tipos de procesos, generalmente , cuando un proceso de este tipo realiza la operación P y S disminuye, otro tipo de proceso necesita realizar la operación V para agregar este semáforo para mantener el equilibrio.

Las partes que necesitan coordinación entre los dos:

  • Productor: coloque el producto en el búfer especificado (código clave C1)
  • Consumidor: Tomar un producto del búfer lleno (código clave C2)

Solución

[Error en la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-KDUU2KLR-1641539727605) (E:\Documents and PPT\Junior Course Study\Operating System \Imágenes\Sexto Capítulo\Problema del Consumidor Productor 01.png)]

Problema de deformación:

  1. El búfer tiene un solo tamaño.
  2. Muchos productores diferentes, un consumidor (hay un ensamblador que ensambla productos. El productor 1 produce una parte, el productor 2 produce un producto 2, el productor 3 produce 3 y luego ensambla un producto
  3. Un productor, múltiples consumidores diferentes (correspondiente al padre que pone la fruta en el plato, hay naranjas, la hija se las come y el hijo se come las manzanas)
  4. Varios procesos S envían mensajes, S1 y S2 envían mensajes para que los reciba C1; S3 y S4 envían mensajes para que los reciba C2

6.3.2 El problema lector-escritor

Descripción del problema

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-EqYepqlE-1641539727613) (E:\Documents and PPT\Junior Course Study\Operating System \Pictures\Sixth Chapter\Reader Writer Descripción del problema.png)]

Solución

Ponga el semáforo W a 1, como un semáforo mutuamente excluyente, que actúa sobre el hecho de que el escritor no puede escribir y leer y escribir al mismo tiempo

Para problemas que pueden ser leídos por múltiples lectores al mismo tiempo, configure un semáforo M, y el valor inicial del contador cnt es 0

[Error en la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-i5mXgxr6-1641539727617) (E:\Documents and PPT\Junior Course Study\Operating System \Pictures\Sixth Chapter\Reader Writer Problem Solution.png)]

6.3.3 El problema de los filósofos comedores

Si se analiza de acuerdo con el método general, habrá un problema de punto muerto, es decir, dos filósofos adyacentes han elegido los palillos de su izquierda, por lo que algunos filósofos no pueden obtener los palillos de la derecha porque son utilizados por otros filósofos. , esto eventualmente conducirá a un punto muerto.

Descripción del problema

5 filósofos,
5 palillos
Cada filósofo tiene un palillo a la izquierda y a la derecha
Cada filósofo solo puede comer con dos palillos a la izquierda y a la derecha

Medidas para evitar el estancamiento

Método 1: Solo cuatro filósofos pueden sentarse en una mesa y comer

Método 2: Recoja los palillos solo cuando los palillos izquierdo y derecho del filósofo estén disponibles

Método 3: Numere a todos los filósofos Los filósofos con números impares solo pueden recoger los palillos de la izquierda primero, y viceversa para los números pares.

método uno

[Error en la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-p6CXQj28-1641539727625) (E:\Documentos y PPT\Estudio del curso junior\Sistema operativo \Pictures\Sixth Chapter\The Philosopher's Method 1.png)]

Método dos

[Error en la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-HVMAGzKc-1641539727633) (E:\Documentos y PPT\Estudio del curso junior\Sistema operativo \Pictures\Sixth Chapter\The Philosopher's Method II 01.png)]

[Error en la transferencia de imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-APAEDyoU-1641539727639) (E:\Documents and PPT\Junior Course Learning\Operating System \Pictures\Sixth Chapter\The Philosopher's Method II 02.png)]

[Error en la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-6B7dzFnw-1641539727641) (E:\Documents and PPT\Junior Course Study\Operating System \Pictures\Sixth Chapter\The Philosopher's Method II 03.png)]

trabajo de la unidad MOOC

1. ¿Qué es una sección crítica? ¿Qué pautas se deben seguir para el acceso a las secciones críticas?

sección crítica:

La pieza de código que accede a los recursos críticos.

Pautas:

  • Exclusión mutua, si un proceso se ejecuta en una sección crítica, otros procesos serán excluidos de la sección crítica, las secciones críticas con los mismos recursos críticos necesitan exclusión mutua, las secciones críticas sin los mismos recursos críticos no necesitan exclusión mutua.

  • Si hay tiempo para ceder, no hay ejecución del proceso en el área crítica.Un proceso que solicita ingresar al área crítica debe poder ingresar a su propia área crítica de inmediato para utilizar los recursos críticos de manera efectiva.

  • Espera limitada, el tiempo de espera antes de que cada proceso ingrese a la sección crítica debe ser limitado, para no caer en el estado de "espera muerta".

2. Hable sobre el significado del valor del semáforo síncrono.

Cuando el valor del semáforo síncrono es mayor a 0, significa que no se utiliza la cantidad de este recurso, o la cantidad liberada puede destinarse al proceso que solicita usar este recurso.

Cuando el valor del semáforo síncrono es igual a 0, significa que este recurso se ha asignado o no se ha liberado, si hay un proceso que solicita este recurso ahora, debe esperar.

Cuando el valor del semáforo síncrono es menor a 0, indica que no se ha obtenido el recurso solicitado y se está esperando el número de este recurso.

3. Hay cuatro procesos S1、R1、R2y R3, entre ellos, S1enviar mensajes al búfer BUFF R1、R2y R3recibir mensajes del búfer. Las reglas para enviar y recibir son las siguientes:
(1) El búfer BUFF solo puede almacenar un mensaje a la vez;
(2) R1、R2Cada mensaje almacenado en el búfer R3puede recuperarse; (3) Cada mensaje almacenado en el búfer debe solo se borrará después de ser recibido por ambos . Utilice el mecanismo de semáforo para realizar la sincronización entre estos 4 procesos.S1
R1、R2R3

信号量初值 S1 = 1   R1 = 0  R2 = 0  R3 = 0  MUTEX = 1
int count = 0;

S1{
    
              R1{
    
                 R2{
    
                R3{
    
    
P(S1);         P(R1);          P(R2);        P(R3);
Send message;  Get message;    Get message;  Get message;
   					
P(MUTEX);      P(MUTEX);       P(MUTEX);      P(MUTEX);
V(R1);         count += 1;     count += 1;    count += 1;
V(R2);         if count == 3   if count == 3  if count==3
V(R3);	          V(S1);      	V(S1);      	V(S1);
V(MUTEX);         V(MUTEX);     V(MUTEX);      V(MUTEX);
}              }               }              }

4. Hay un plato de frutas vacío en la mesa, y solo se puede colocar una fruta en el plato a la vez. Papá pone manzanas en el plato, mamá pone naranjas en el plato, un hijo espera para comer las naranjas en el plato y una hija espera para comer las manzanas en el plato. Se fija que el padre o la madre puede poner una fruta en el plato cada vez que el plato esté vacío, y solo cuando el plato tiene la fruta que necesita, el hijo o la hija puede sacarla. Utilice PVoperaciones para sincronizar los cuatro procesos de padre, madre, hijo e hija.

信号量  Plate = 1    Orange = 0  Apple = 0
    
Dad{
    
                      Mum{
    
                   Son{
    
                        Daughter{
    
    
    while(true){
    
          while(true){
    
           while(true){
    
                while(true){
    
    
       P(Plate);      	P(Plate);        	P(Orange);           P(Apple);
    	put apple;    	put orange;         take the orange;     take the apple;
    	V(Apple); 		V(Orange);          V(Plate);            V(Plate);
    }                 }                     eat the orange;      eat the apple;
         				                 }                       }
    
}                     }                  }                       }

Ejercicios de gestión de procesos

Hay un almacén que puede contener dos tipos de artículos A y B,

设有两个信号量  a = N  b = M


En la línea de producción de bicicletas, tres trabajadores realizan sus funciones. Escriba las preguntas de gestión.

Cierto puente es tan angosto que solo puede pasar un carro, de sur a norte, si un lado no tiene carros, el otro lado puede pasar continuamente.

Si ambos lados tienen autos esperando, pase alternativamente. Configure cada vehículo como un proceso y diseñe semáforos para realizar una gestión síncrona

Supongo que te gusta

Origin blog.csdn.net/weixin_45788387/article/details/122365152
Recomendado
Clasificación