Bloqueo de aviso obligatorio de bloqueo

  

fcntl tiene una función poderosa, puede copiar un descriptor existente, obtener /establecer la marca del descriptor de archivo, obtener /establecer la marca de estado del archivo, obtener /configurar la propiedad de E /S asíncrona, Obtener /establecer el bloqueo de grabación.

Cuando varios usuarios usan juntos y operan un archivo, Linux usualmente usa un método para bloquear archivos para evitar recursos de la competencia.

Los bloqueos de archivos fcntl son de dos tipos: los bloqueos de aviso y los bloqueos de aviso obligatorios se definen de la siguiente manera: cada proceso que utiliza un archivo de bloqueo comprueba si hay un cierre, por supuesto Respetar las cerraduras existentes. El kernel y el sistema generalmente insisten en no usar bloqueos de advertencia, y dependen de los programadores para cumplir con esta regla.
(Linux utiliza de forma predeterminada los bloqueos de advertencia) • Los bloqueos obligatorios son aplicados por el kernel. Cuando un archivo se bloquea para una operación de escritura, el kernel bloquea cualquier acceso de lectura o escritura al archivo antes de que el proceso que bloquea el archivo libere el bloqueo. Cada acceso de lectura o escritura verifica la existencia del bloqueo.

El uso de los bloqueos de archivos fcntl para las operaciones de E /S debe ser cuidadoso: se debe considerar cómo el proceso maneja el bloqueo antes de iniciar cualquier operación de E /S y cómo hacer todo antes de desbloquear el archivo. Si el archivo se abre antes de que se establezca el bloqueo, o el archivo se cierra después de leer el bloqueo, otro proceso puede acceder al archivo en una fracción de segundo entre la operación de bloqueo /desbloqueo y la operación de apertura /cierre. Cuando un proceso bloquea un archivo, libere o no el bloqueo agregado, siempre que el archivo esté cerrado, el kernel libera automáticamente el bloqueo sugerido adjunto al archivo (esta es también la mayor diferencia entre el bloqueo recomendado y el bloqueo obligatorio), por lo que No desea establecer un bloqueo de sugerencias para lograr el objetivo de no permitir permanentemente que otros procesos accedan al archivo (los bloqueos obligatorios están disponibles) ^ _ ^; los bloqueos obligatorios funcionan para todos los procesos.

Las funciones que implementan el bloqueo en Linux son lock () y fcntl (). • lock () se utiliza para aplicar bloqueos de advertencia a los archivos • fcntl () se usa para aplicar bloqueos de advertencia y obligatorios a los archivos. Al mismo tiempo, también es posible bloquear un determinado registro del archivo, es decir, registrar el bloqueo.

Ejemplo: • Ejemplo 1, tengo varios procesos (no necesariamente relacionados) que utilizan el mecanismo fctnl para manipular archivos. Esto se denomina método consistente. Ver [2] Sin embargo, si hay otro proceso deshonesto al mismo tiempo, se administra 3721, se apresura, abre, escribe. En este momento, varios procesos fcntl no pueden hacer nada al respecto, por lo que se denomina inconsistencia. El estado final del archivo no es fijo. Debido a que este bloqueo no restringe otros métodos de acceso, se denomina bloqueo de fila recomendado. Los bloqueos obligatorios requieren soporte del kernel, y los bloqueos se comprueban para leer, escribir y abrir. • Ejemplo 2, el llamado bloqueo sugestivo es asumir que las personas seguirán ciertas reglas para hacer una cosa. Por ejemplo, las personas y los automóviles se detendrán cuando vean la luz roja, y seguirán viendo la luz verde. Podemos llamar rojo y verde como candados recomendados. Pero esto es solo una regla. No evitas que algunas personas apaguen las luces rojas. El bloqueo obligatorio es que quieres romper la luz roja. Consulte [3]

¿Cómo uso los bloqueos obligatorios en los sistemas Linux?

Si desea que Linux admita bloqueos obligatorios, debe agregar -o mand al montar (la versión en chino de APUE es incorrecta, está escrita como _omand), y debe configurar los archivos para que se bloqueen. Con relación a (activar set-group-ID y desactivar la ejecución de grupos) vea [4].

Copyright © Conocimiento de Windows All Rights Reserved