La lectura desde el disco [22] es mas lenta en comparaci�n con el acceso a memoria (real). Adem�s, es com�n leer la misma parte del disco varias veces durante periodos relativamente cortos de tiempo. Por ejemplo, uno podr�a leer primero un mensaje del correo electr�nico, despu�s leer la misma carta con un editor de texto cuando uno la esta respondiendo, y finalmente hacer que el programa la lea de nuevo cuando le indicamos copiarla a una carpeta. O, considere cuan seguido el comando ls es ejecutado en un sistema con muchos usuarios. Leyendo la informaci�n del disco una sola vez y luego manteni�ndola en la memoria hasta que no sea necesaria, puede acelerar todas las lecturas posteriores con respecto a la primera. Esto es llamado "buffering" de disco (disk buffering), y la memoria usada para ese prop�sito es llamada buffer cache.
Debido a que la memoria es, desafortunadamente finita, y por lo tanto, un recurso escaso, el "buffer cache" usualmente no puede ser demasiado grande (no puede mantener todos los datos que uno siempre quiere usar). Cuando la "cache" se completa, los datos que no han sido usados por un periodo de tiempo prolongado son descartados y as� la memoria es liberada para ser utilizada con nuevos datos.
El buffering de disco trabaja cuando existen escrituras tambi�n. Por un lado, los datos que son escritos son le�dos nuevamente con mucha frecuencia (por ej. el c�digo fuente de un programa es guardado a un archivo, y despu�s es le�do por el compilador), entonces, colocar los datos que son escritos en la cach� es una buena idea. Por otro lado, colocar los datos en la cach�, sin escribirlos a disco inmediatamente, acelera al programa que los guarda. Las escrituras pueden ser realizadas en segundo plano, sin disminuir la velocidad de ejecuci�n de los otros programas.
La mayor�a de los sistemas operativos tienen "buffer cach�" (aunque algunas veces son llamados de manera diferente), pero no todos funcionan de acuerdo a los mismos principios. Algunos son de escritura directa (write-through): los datos son escritos a disco inmediatamente (y obviamente, son mantenidos en la cach�). Otros son de escritura posterior (write-back), ya que las escrituras son realizadas momentos despu�s. Escritura posterior es m�s eficiente que escritura directa, pero es m�s susceptible a errores: si la m�quina cae, el suministro el�ctrico es interrumpido en un mal momento, o un medio extra�ble es removido sin ser desmontado, entonces usualmente los cambios realizados en la cach� se pierden. Esta situaci�n puede significar que el sistema de archivos (si existiese uno) no trabaje completamente bien, tal vez debido a que los datos que no pudieron ser escritos sean cambios importantes para el mantenimiento del sistema.
Debido a esto, nunca deber�a apagar el equipo sin emplear los procedimientos adecuados (ver Cap�tulo�8, Encendido y apagado Capitulo 8), como tampoco quitar un disco flexible de la unidad hasta que haya sido desmontado (si fue montado), o antes de que cualquier programa que esta haciendo uso del dispositivo no indique que ha terminado y, el "led" de la unidad de disquete ya no esta encendida. El comando sync descarga el buffer (flushes), por ejemplo, fuerza que los datos aun no grabados sean escritos al disco, y puede ser usado cuando uno quiere asegurarse que todas las escrituras se hayan realizado.En los sistemas UNIX tradicionales, hay un programa llamado update que esta ejecut�ndose en segundo plano, el cual se encarga de ejecutar el comando sync cada 30 segundos, por esto usualmente no es necesario usar sync. Linux tiene un demonio adicional, bdflush, el cual efect�a un sync mas imperfecto, pero con mas frecuentemente para evitar el repentino congelamiento debido a la sobrecarga de I/O que algunas veces "sync" produce.
Bajo Linux, bdflush is iniciado por update. No existen usualmente razones para preocuparse por bdflush, pero si bdflush termina su ejecuci�n por alguna causa, el kernel alertar� sobre esto, por lo que debe iniciarlo a mano (/sbin/update).
La cach� no realiza realmente buffer de archivos, pero s� ** de bloques, los cuales son las unidades mas peque�as de E/S a disco (en Linux usualmente son de 1 kB). De esta manera, tambi�n los directorios, super bloques, otros datos relacionados con ** en el sistema de archivos, y discos sin sistema de archivos son mantenidos en cach�.
La eficacia de una cach� es decidida principalmente por su tama�o. Una cach� peque�a es casi inservible: tiene muy pocos datos, por lo que todos los datos en la cach� ser�n descartados antes de que sean reutilizados. El tama�o cr�tico depende de la cantidad de datos escritos y le�dos, y de cuan frecuente los mismos datos son accedidos. La �nica manera de saber el tama�o �til de una cach� es experimentando.
Si la "cache" es de tama�o fijo no es muy bueno que sea demasiado grande porque eso podr�a hacer que la memoria libre sea demasiado peque�a y ocasionar "swapping" (lo cual es tambi�n muy lento). Para hacer que el uso de la memoria real sea mas eficiente, Linux usa autom�ticamente toda la memoria RAM como "buffer cache", pero tambi�n, autom�ticamente, disminuye el tama�o de la "cache" a medida que los programas van necesitando mas memoria.
Bajo Linux, usted no necesita configurar nada para hacer utilizar "cache", esto sucede de forma completamente autom�tica. A excepci�n de los adecuados procedimientos a seguir para "cerrar?apagar?desconectar?bajar?deshabilitar" o quitar �diskettes? usted no tiene necesidad de preocuparse por nada.