Estructuras de Archivos
Enviado por Kevin Jiménez Garro • 19 de Enero de 2017 • Ensayo • 3.469 Palabras (14 Páginas) • 183 Visitas
Estructuras de Archivos
La clave del diseño de estructuras de archivos es acerca del tiempo que toma obtener alguna información desde el disco. El diseño de la estructura de un archivo se centra en minimizar la cantidad de accesos, así como maximizar la información, en memoria, que el usuario pueda necesitar.
Capitulo 2
Fundamentos de operación de archivos.
Archivos físicos y lógicos.
Un archivo en disco es representado como una colección de bytes almacenados en él. Pero esto es distinto para los programas, ya que estos los perciben como un flujo de bytes, pero no saben su destino ni procedencia. Para que un programa pueda abrir un archivo, es necesario para que el sistema operativo realice una relación entre un archivo lógico y uno físico en el disco; esto devuelve una dirección o nombre lógico que se le asigna al archivo para ser manejado.
Apertura de Archivos
Una vez que el sistema operativo crea el identificador se necesita indicar la forma de manejo; apertura, crear archivo o borrar contenido del archivo. Al abrir un archivo se indica que se quiere modificar su contenido.
Los aspectos de protección de archivos están ligados directamente al sistema operativo y su forma de manejar archivos.
Cerrado de Archivos
Después de cerrar un archivo, el nombre lógico o identificador queda libre para que pueda ser definido o tomado por otro archivo.
Esta operación de cerrado asegura que todos los cambios fueron realizados satisfactoriamente en el archivo; esto sucede porque el sistema operativo escribe los datos que se están enviando, en un buffer para luego enviar bloques de datos. Al cerrar el archivo, se asegura que el buffer fue descargado y los datos escritos en el archivo.
Normalmente el sistema operativo cierra el archivo y descarga el buffer al cerrar el programa, por lo que esta operación se realiza solo para proteger de perdida de información.
Lectura y Escritura
Leer y escribir es lo que da al archivo las acciones de entrada y salida (E/S). La forma de realizar estas operaciones en lenguajes de programación varia, los de alto nivel se encargan y manejan todo lo relacionado a ello mientras que los de bajo nivel permite una exploración más a fondo de estas funciones.
Archivos con Clases de flujos en C y C++
Las operaciones de entrada y salida en C y C++ están basadas en el concepto de flujos, los cuales pueden ser archivos o alguna fuente de datos. En C++ se manejan dos formas de manipular datos. La primera es como en C, con funciones definidas en el encabezado stdio.h y la otra es con iostream.h y fstream. Ambas formas permiten la apertura, manejo y cerrado de los archivos.
Detectando el final del archivo
En los dos lenguajes antes mencionados, las señales de final de archivo son distintas. El fread de C devuelve un valor como indicador de esto, mientras que en C++ se requieren comprobaciones adicionales para saber si es el final del archivo. En otros lenguajes se lleva un puntero dentro del archivo que indica cuando es el fin.
Búsqueda
Cada vez que un byte es leído, el sistema operativo mueve el puntero hacia el siguiente byte para continuar con la lectura. A veces se necesita buscar un dato en algún archivo, pero resulta muy costoso o ineficiente hacer búsquedas secuenciales, más aún si se sabe dónde se encuentra el dato; para esto es posible mover el puntero de lectura/escritura hacia esa posición. Esta acción de mover el puntero a la posición deseada se llama Búsqueda.
Búsqueda con Flujos en C
En este lenguaje se realiza mediante la función fseek.
Búsqueda con Flujos en C++
Se realiza con fstream, el cual tiene dos punteros uno de obtener, para lectura, y otro de poner, para escritura; y sus funciones seekg (mueve el puntero de obtener) y seekp (mueve el puntero de escritura).
Caracteres especiales en archivos
Estos caracteres los maneja el sistema operativo, haciendo pequeños cambios dentro de los archivos para que se desplieguen no como caracteres separados sino como un símbolos o carácter de control.
Las estructuras de directorio de UNIX
El sistema de archivos de UNIX es una estructura de árbol organizada por directorios. Todos los directorios incluyendo la raíz pueden contener dos tipos de archivos: Archivos normales con programas y datos y otros directorios. Los directorios también pueden tener referencias a dispositivos, esto debido a que, en UNIX, los dispositivos son tratados como archivos.
Archivos Lógicos y Dispositivos Físicos
Dispositivos Físicos como archivos
En Unix, un archivo es una secuencia de bytes sin importar de donde vienen o donde se dirigen. Este concepto permite hacer pocas operaciones y podría requerir muchos procedimientos de varias operaciones en diversos sistemas operativos.
Un ejemplo de esto son los teclados, que producen una secuencia de bytes que es enviada a la computadora cuando se presionan las teclas.
Un archivo en UNIX es representado lógicamente por un identificador de tipo entero. Este numero entero es un índice de una lista o vector de información completa acerca de un archivo. Los teclados, archivos de disco y cintas magnéticas se representan de esta forma. Una vez identificado el numero, el programa puede acceder a ellos.
La consola, el teclado y el error estándar
Hay dos archivos que corresponden a dispositivos específicos en los flujos de C: Al teclado se le llama con stdin y su error relacionado es el stderr.
Como la mayoría de los dispositivos de entrada y salida utilizan esto, la mayoría de los lenguajes de programación poseen funciones para imprimir en consola y solicitar datos por ellas.
Redireccionamiento E/S y canales (Pipes)
Los sistemas operativos proveen atajos convenientes para cambiar entre salida y entrada y la entrada normal de E/S. Estos atajos son llamados Redireccionamiento E/S y canales.
...