Un búfer es un área de memoria que almacena datos que se transfieren entre dos dispositivos o entre un dispositivo y una aplicación.
Usos del búfer de E/S:
- El almacenamiento en búfer se realiza para tratar de manera efectiva una falta de coincidencia de velocidad entre el productor y el consumidor del flujo de datos.
- Se produce un búfer en la memoria principal para acumular los bytes recibidos del módem.
- Después de recibir los datos en el búfer, los datos se transfieren al disco desde el búfer en una sola operación.
- Este proceso de transferencia de datos no es instantáneo, por lo que el módem necesita otro búfer para almacenar datos entrantes adicionales.
- Cuando se llena el primer búfer, se solicita transferir los datos al disco.
- Luego, el módem comienza a llenar los datos entrantes adicionales en el segundo búfer mientras los datos en el primer búfer se transfieren al disco.
- Cuando ambos búfer completaron sus tareas, el módem vuelve al primer búfer mientras los datos del segundo búfer se transfieren al disco.
- El uso de dos buffers desintegra al productor y al consumidor de los datos, minimizando así los requisitos de tiempo entre ellos.
- El almacenamiento en búfer también proporciona variaciones para dispositivos que tienen diferentes tamaños de transferencia de datos.
Tipos de diversas técnicas de almacenamiento en búfer de E/S:
1. Búfer único:
el sistema operativo proporciona un búfer a la parte del sistema de la memoria principal.
Dispositivo orientado a bloques –
- El búfer del sistema toma la entrada.
- Después de tomar la entrada, el proceso transfiere el bloque al espacio del usuario y luego el proceso solicita otro bloque.
- Dos bloques funcionan simultáneamente, cuando el proceso del usuario procesa un bloque de datos, se lee el siguiente bloque.
- El sistema operativo puede intercambiar los procesos.
- El sistema operativo puede registrar los datos del búfer del sistema en los procesos del usuario.
Dispositivo orientado a la transmisión:
- La operación de línea a la vez se utiliza para terminales de desplazamiento. El usuario ingresa una línea a la vez, con una señalización de retorno de carro al final de una línea.
- La operación de byte a la vez se usa en modo de formularios, terminales cuando cada pulsación de tecla es significativa.
2. Doble búfer:
Orientado a bloques –
- Hay dos buffers en el sistema.
- El controlador o controlador utiliza un búfer para almacenar datos mientras espera que los tome un nivel superior de la jerarquía.
- Otro búfer se utiliza para almacenar datos del módulo de nivel inferior.
- El doble almacenamiento en búfer también se conoce como intercambio de búfer.
- Una gran desventaja del doble almacenamiento en búfer es que aumenta la complejidad del proceso.
- Si el proceso realiza ráfagas rápidas de E/S, el uso de doble búfer puede ser deficiente.
Orientado a la corriente –
- E/S de línea a la vez, el proceso de usuario no necesita suspenderse para entrada o salida, a menos que el proceso se ejecute antes que el búfer doble.
- Operaciones de byte a la vez, el doble búfer no ofrece ninguna ventaja sobre un solo búfer del doble de longitud.
3. Amortiguador circular:
- Cuando se utilizan más de dos búferes, la colección de búferes en sí misma se denomina búfer circular.
- En esto, los datos no pasan directamente del productor al consumidor porque los datos cambiarían debido a la sobrescritura de los búferes antes de que se hayan consumido.
- El productor solo puede llenar hasta el búfer i-1 mientras los datos en el búfer i están a la espera de ser consumidos.