El significado físico del semáforo

El significado físico del semáforo es el siguiente:

Semáforo Sgt; cuando es 0, el valor de S representa el número de recursos disponibles de un determinado tipo de ejecución de la operación P. Solicitar la asignación de una unidad de recursos. Cuando S ≤ 0, significa que no hay recursos disponibles. En este momento, el valor absoluto de S representa el número de procesos en la cola de bloqueo del semáforo. Realizar una operación V significa liberar una unidad de recursos.

El semáforo, a veces llamado semáforo, es una función utilizada en un entorno de subprocesos múltiples. Puede usarse para garantizar que dos o más segmentos de código clave no se llamen simultáneamente. Antes de ingresar a una sección de código crítico, el hilo debe obtener un semáforo; una vez que se completa la sección de código crítico, el hilo debe liberar el semáforo.

Otros hilos que quieran ingresar a esta sección de código crítico deben esperar hasta que el primer hilo libere el semáforo. Para completar este proceso, necesita crear un VI de semáforo y luego colocar Acquire Semaphore VI y Release Semaphore VI al principio y al final de cada sección de código crítica. Asegúrese de que estos VI de semáforo se refieran al semáforo creado originalmente.

Tomemos como ejemplo el funcionamiento de un aparcamiento. Para simplificar, supongamos que solo hay tres espacios de estacionamiento en el estacionamiento y que los tres espacios de estacionamiento están vacíos al principio. En este momento, si llegan cinco autos al mismo tiempo, el portero permitirá que tres de ellos entren directamente y luego colocará el bloque de autos. Los autos restantes deben esperar en la entrada y los autos siguientes también tendrán que esperar en la entrada. la entrada.

En ese momento, un automóvil salió del estacionamiento. Después de que el portero se enteró, abrió la barrera para automóviles y metió el automóvil afuera. Si salían dos autos más, podía meter dos autos más. , y así sucesivamente. En este sistema de estacionamiento, las plazas de aparcamiento son recursos públicos. Cada coche es como un hilo y el portero desempeña el papel de semáforo.

En resumen, las características del semáforo son las siguientes: el semáforo es un número entero no negativo (el número de espacios de estacionamiento), y todos los subprocesos/procesos (vehículos) que lo pasan reducirán el número entero en uno (pasarlo, por supuesto, es usar recursos), cuando el valor entero es cero, todos los subprocesos que intenten pasarlo estarán en estado de espera. Definimos dos operaciones en el semáforo: Wait (esperar) y Release (liberar).

Cuando un hilo llama a la operación Esperar, obtiene el recurso y disminuye el semáforo en uno, o espera (refiriéndose a colocarlo en la cola de bloqueo) hasta que el semáforo sea mayor o igual a uno. La liberación en realidad realiza una operación de suma en el semáforo, que corresponde a la salida del vehículo del estacionamiento. La razón por la que esta operación se llama "liberación" es porque se liberan los recursos custodiados por el semáforo.

ji.js">