¿Qué es un buffer? Una porción de memoria que se destina a la entrada y salida para un archivo determinado. El periférico lee y escribe los datos desde y hacia el buffer, el cual es luego manejado por el Sistema Operativo trasladando los datos desde y hacia la memoria del usuario. Existe un buffer por cada archivo abierto y cada buffer tiene la longitud necesaria para almacenar un registro físico del archivo. Un programa que trabaje con muchos archivos puede por ejemplo utilizar en buffers tanta memoria que no quede suficiente para los datos del programa.
El tamaño máximo absoluto que puede tener un buffer de I/O está dado por el máximo tamaño de registro físico que permite manejar el conjunto periférico-canal.
Pero además puede haber limitaciones de tamaño sin llegar a ese valor extremo, debido a la restricción de espacio en memoria, pues en la misma memoria donde deben estar el programa, las subrutinas y los datos esta el buffer. El tamaño requerido para un buffer es siempre el necesario para alojar a un registro físico.
Dos archivos con distintos tamaños de RF utilizarán buffers de distinto tamaño.
Limitaciones que son dato, el buffer y la longitud de la pista.
En cintas el registro físico podía, ser tan grande como se quisiera dependiendo de la memoria disponible. En discos esto no ocurre, pues además del buffer existe una limitación muy importante en cuanto a la longitud del registro físico: la longitud de la pista. Al trabajar con discos que no admiten spanning un registro físico no puede ocupar más de una pista, luego la longitud máxima de un registro físico es:
MaxLRF= LP - IRG (sin considerar el buffer)
Con lo cual la pista quedaría totalmente utilizada por un registro físico y su correspondiente IRG. A LP-IRG suele llamársele longitud "ideal" de un registro físico.
El otro factor que limita la longitud del registro físico es la disponibilidad de espacio en memoria para el buffer. Si la longitud máxima disponible para el buffer es mayor o igual que MaxLrf se dice que el buffer "no restringe", esto quiere decir que se puede fijar cualquier longitud de registro físico sin inconvenientes pues hay memoria suficiente para el buffer y MaxLRF queda como LP-IRG.
Si la longitud máxima del buffer es menor que MaxLRF, decimos que el buffer "restringe" al problema. Si el buffer restringe la longitud máxima del registro físico no podrá ser Lp-IRG con lo cual no podremos lograr nunca el caso en el cual toda la pista esta utilizada por un único registro físico y su IRG en este caso MaxLRF=MaxBuf.
Por ejemplo:
Si la longitud Máxima que puede tener un
buffer es 3541 bytes y LRL=300 bytes,
¿Cuál es la máxima longitud de un RF de acuerdo al buffer?
¿Cuál es el mayor FB factible según el buffer?
Tomando este FB (LRF máximo) ¿Cuánto mide el buffer?
MaxLRF = MaxBuf = 3541 bytes.
MaxFb = 3541/300 = 11,803 (Si Fb=12 LRF>Maxbuf) => Fb=11
Con MaxFb=11 re-calculo MaxLRF = 11 * 300 = 330 => MaxLRF=3300.
La longitud máxima de un RF es 3541 bytes. (sin considerar LRL) El mayor FB factible es 11. (considerando ahora si LRL) Utilizando este FB, LRF=3300 bytes por lo tanto el buffer medirá 3300 bytes.
Observación: Este problema se aplica tanto a cintas como a discos.