¿Cuáles son los diversos tipos de semáforos disponibles en el kernel de Linux?

Semáforos: en Linux hay bloqueos de suspensión. Cuando una tarea intenta adquirir un semáforo que no está disponible, el semáforo coloca la tarea en una cola de espera y la pone en suspensión. El procesador queda libre para ejecutar otro código. Cuando el semáforo se convierte disponible, una de las tareas en la cola de espera se despierta para que luego pueda adquirir el semáforo.

Hay dos tipos de semáforos en el kernel de Linux:

1. Semáforo binario: si el recuento es igual a uno, y el semáforo se llama semáforo binario (porque lo tiene una tarea o no lo tiene) o un mutex (porque obliga a la exclusión mutua).

2. Recuento de semáforos: el recuento se puede inicializar a un valor distinto de cero mayor que Uno. en este caso, el semáforo se llama semáforo de conteo, y permite a la mayoría de los titulares del bloqueo a la vez. Los semáforos de conteo no se usan para forzar la exclusión mutua porque permiten múltiples hilos de ejecución en la región crítica a la vez.

● La implementación del semáforo de Linux:

● estructura semáforo:

● Inicialización básica:

● void sema_init (struct semaphore * sem, int val);

● P está “abajo” y V está “arriba”

Versiones de “abajo”:

vacío (struct semáforo * sem); Disminuya y espere tanto como sea necesario

int down_interruptible (estructura semáforo * sem); Disminuya y espere, pero permita que el proceso de espacio de usuario continúe recibiendo señales. Debe probar el valor de retorno para la interrupción.

int down_trylock (estructura semáforo * sem); Nunca espere, intente y falle si no puede bloquear. Debe probar retval.

Versión de “arriba”

vacío (struct semáforo * sem);

Semáforos de lector / escritor:

Las situaciones en las que se prefieren los semáforos de lector-escritor sobre los semáforos estándar Todos los semáforos de lector-escritor son mutexes, es decir, su recuento de uso es uno, aunque imponen la exclusión mutua solo para escritores, no lectores. bloqueo, siempre que no haya escritores. Por el contrario, solo un único escritor (sin lectores) puede adquirir la variante de escritura de la cerradura. Todas las cerraduras de lector-escritor usan suspensión ininterrumpida.

Encabezado: struct rw_semaphore:
Inicialización: void init_rwsem (struct rw_semaphore * sem);

Acceso de solo lectura:

vacío down_read (struct rw_semaphore * sem);

int down_read_trylock (struct rw_sempaphore * sem);

vacío up_read (struct rw_semaphore * sem);

Acceso de escritura:

vacío down_write (struct rw_semaphore * sem);

int down_write_trylock (struct rw_semaphore * sem);

vacío up_write (struct rw_semaphore * sem);

anular downgrade_write (struct rw_semaphore * sem);

Simplemente “grep” para la API up_read o down_read, ya que estas API se utilizan para adquirir / liberar el uso del semáforo:

kernel / futex.c: up_read (& mm-> mmap_sem);
kernel / kmod.c: up_read (& umhelper_sem);
kernel / notifier.c: up_read (& nh-> rwsem);
kernel / sys.c: up_read (& uts_sem);
kernel / sys.c: up_read (& mm-> mmap_sem);
kernel / taskstats.c: up_read (& listeners-> sem);
lib / digsig.c: up_read (& key-> sem);
mm / filemap.c: up_read (& mm-> mmap_sem);

Un semáforo importante es el proceso por mm-> mmap_sem, que se usa para bloquear las tablas de páginas por proceso.

More Interesting

¿Queremos que la máquina o el software de IA sean perfectos? La prueba de Turing no requiere que sea perfecta, sino que exhiba una inteligencia equivalente o indistinguible de la de un humano. Si no estamos buscando algo perfecto o superior, ¿por qué desarrollar una máquina o software de IA?

¿Por qué los estudiantes de informática deben estudiar cursos como cálculo diferencial, único y multivariable en su primer año o más tarde?

¿Cuántas páginas (estándar de 8.5 "x11") se necesitarían para almacenar 100 TB de datos de texto sin formato?

¿Las imágenes generadas por computadoras que están imbuidas de aprendizaje automático profundo se consideran arte?

¿Cuáles son las 3 mejores mejoras tangibles logradas con IA o aprendizaje profundo que han ayudado más a la medicina clínica?

¿Qué se entiende por ejecución, instalación, bat.exe, BCD, arranque, etc.?

¿Qué es una explicación intuitiva del mecanismo de Laplace?

¿Las computadoras alguna vez crearán ideas originales?

¿Qué debo hacer como estudiante de primer año de pregrado para obtener una visión completa de CS?

¿Las computadoras se volverán limitadas en conocimiento y complejidad?

¿Qué cursos en Stanford enseñan usando el libro "Matemáticas concretas" de Knuth?

¿En qué se diferencian AI y ML, y qué podría ser un posible diagrama de Venn de cómo se superponen la IA y el aprendizaje automático?

Cómo trazar la capacidad calorífica específica en función de la temperatura, en una simulación MC

¿Qué es la ingeniería de características y cuál es su importancia en diversas aplicaciones de aprendizaje automático?

¿Es posible sincronizar datos en un clúster informático con la nube?