(A mi entender, "descripción de archivo" se refiere a la información/opciones sobre un archivo abierto, como la posición actual del marcador. "Descriptor de archivo", en cambio, se refiere solo al número utilizado en un proceso para referirse a una descripción.)¿Cada descripción de archivo Unix tiene sus propios búferes de lectura/escritura?
Respuesta
Esto depende un poco si usted está hablando de sockets o archivos reales.
Estrictamente hablando, un descriptor nunca tiene sus propios búferes; es solo un manejar a una abstracción más profunda.
Los objetos del sistema de archivos tienen sus propios "buffers", al menos cuando son necesarios. Es decir, si un programa escribe menos que el tamaño del bloque del sistema de archivos, el kernel no tiene otra opción que leer un bloque FS y fusionar la escritura con los datos existentes.
Este búfer se adjunta al vnode y en un nivel inferior, posiblemente un inodo. Es propiedad del archivo y no del descriptor. Puede mantenerse durante mucho tiempo si hay memoria disponible.
En el caso de un socket, un stream, pero no específicamente un solo descriptor, en realidad tiene buffers de su propiedad.
Gracias. Como alguien más lo puso en la otra pregunta, esto puede variar entre los sistemas operativos, pero generalmente los bloques enteros del sistema de archivos subyacente se almacenan de forma individual, y cada bloque almacenado se comparte entre muchos lectores/escritores que accedan al archivo. Suena como un sistema de mini-paginación donde los buffers de bloques individuales se marcan como sucios cuando se escriben. Es bueno saber acerca de los sockets, aunque tenía curiosidad sobre los archivos 'regulares'. – Jegschemesch
Si los archivos se abrieron en modo bloqueo, entonces sí, solo debería haber un buffer. Apostaría que el valor predeterminado es no bloquear por razones de rendimiento.
- 1. Múltiple UIAlertView; cada uno con sus propios botones y acciones
- 2. Creando sus propios permisos
- 3. Protección del código de sus propios desarrolladores
- 4. RailsAdmin - Personalización de sus propios filtros
- 5. do interfaces pertenecen a sus propios archivos
- 6. ¿Cómo descomprimir programáticamente archivos en sus propios directorios en Windows con un comando de DOS?
- 7. Complementos MEF con sus propios archivos de configuración?
- 8. Defina sus propios mensajes de retroalimentación en Wicket
- 9. ¿Los AppDomains se ejecutan en sus propios hilos?
- 10. PHP no confirma sus propios archivos temporales cargados
- 11. Usando SQL, ¿cómo actualizo las filas, usando sus propios valores?
- 12. Xcode 4 ayuda incorporada para sus propios archivos
- 13. ¿Mi clase debe suscribirse a sus propios eventos públicos?
- 14. roxygen2 no actualizar plenamente archivo de descripción
- 15. "descripción del archivo" descript.ion "?
- 16. ¿Está bien agregar sus propios atributos a elementos HTML?
- 17. git push .git/archivo de descripción
- 18. Utilice openpyxl para editar un archivo Excel2007 (.xlsx) sin cambiar sus propios estilos?
- 19. 3 búferes de índice
- 20. Obtener Intellisense en la interfaz que implementa un método si ese método no tiene sus propios comentarios XML
- 21. Protocolo de búferes con JPA
- 22. ¿Cómo limito las aplicaciones de PHP a sus propios directorios y su propio php.ini?
- 23. ¿Debería un evento que no tiene argumentos definir sus propios EventArgs personalizados o simplemente usar System.EventArgs en su lugar?
- 24. unix redirigir cola al archivo
- 25. ¿Qué problemas de seguridad aparecen cuando los usuarios pueden cargar sus propios archivos?
- 26. WooCommerce muestran cada categoría con sus productos
- 27. ¿Cómo usar los búferes de protocolo?
- 28. ¿Cómo usan las aplicaciones de Google App-Engine las personas con sus propios dominios?
- 29. La definición de sus propios operadores de ruta clave en el cacao
- 30. Cambiar encabezado de solicitud MVC de ASP predeterminado para agregar sus propios valores
Creo que el nivel bajo de E/S de Unix está casi sin búfer. Pero si se abre como una secuencia (fopen, etc.), se crea un búfer para la estructura de ARCHIVO. – seand
@seand A mi entender, la lectura/escritura se almacenan en el búfer por defecto a menos que el archivo se abra con O_DIRECT. La biblioteca de E/S basada en secuencias en realidad agrega una segunda capa de almacenamiento en búfer, esta vez en el proceso. – Jegschemesch