Sistemas operativos modernos
Número de nodo- Tamaño de la entrada Tipo Longitud del nombre de archivo Figura 10-34. a) Directorio BSD con tres archivos, b) El mismo directorio después de eliminarse el archivo voluminoso. tud del nombre de archivo en bytes, 7, 10 y 6 en este ejemplo. Al final viene el nombre de ar chivo en sí, terminado con un byte Oy rellenado hasta una frontera de 32 bits. Después podría haber relleno adicional. En la figura 10-34b se muestra el mismo directorio después de que se ha eliminado la en trada de voluminoso. Lo único que se hace es incrementar el campo de tamaño total de la entra da de colosal, convirtiendo el espacio que ocupaba la entrada de voluminoso en relleno de la primera entrada. Claro que este relleno puede utilizarse después para otra entrada. Puesto que las búsquedas en directorios son lineales, localizar una entrada que está al fi nal de un directorio grande puede tardar mucho fiempo. Para mejorar el desempeño de las bús quedas, se añadió un caché de nombres a BSD. Antes de buscar un nombre, el sistema primero examina el caché. Si lo encuentra, puede ahorrarse la búsqueda lineal. El segundo cambio importante que introdujo Berkeley en el sistema de archivos fue la división del disco en grupos de cilindros, cada uno con su propio superbloque, nodos-i y blo ques de datos. Lo que se buscó con este cambio fue mantener cercanos nodo-i y los bloques de datos de un archivo dado, para evitar desplazamientos largos del brazo del disco. Siempre que sea posible, los bloques de disco se asignan en el grupo de cilindros que confiene el nodo-i. El tercer cambio fue la introducción de dos tamaños de bloque en vez de sólo uno. Si se van a almacenar archivos grandes es más eficiente tener un número reducido de bloques gran des, en vez de muchos bloques pequeños. Por otra parte, muchos archivos UNIX son peque ños, por lo que tener sólo bloques grandes implicaría un desperdicio de espacio de disco. Tener dos tamaños de bloque permite efectuar transferencias eficientes de archivos grandes y apro vechar de forma eficiente el espacio en el caso de archivos pequeños. El precio que se paga es un aumento considerable en la complejidad del código.
RkJQdWJsaXNoZXIy MjI4NDcx