Introducción Tema 10a Manejo de archivos Un computador puede almacenar grandes cantidades de información. Puede acceder a ella de manera muy rápida. Para hacer cualquier cosa es necesario tener MEMORIA disponible, para almacenar variables, recordar valores, etc. Esta memoria puede ser volátil o persistente. Introducción Memoria RAM CPU A+B=C Memoria primaria (volátil) A B C Memoria secundaria (persistente) Datos.txt RAM: RandomAccess Memory. Acceso aleatorio. Volátil, por tanto insegura. Capacidades de cientos de MB. Velocidad de acceso: Del orden de los nanosegundos (10-9 seg.) 133 MHz 8 ns Implica que puede transmitir mas de 1 GB/seg. Memoria RAM Es necesario Evitar la volatilidad de la memoria RAM. Aumentar su capacidad a costos razonables. Realizar respaldos de información. HDD HDD: Hard Drive Disk Acceso aleatorio. Persistente y confiable. Capacidades de decenas de GB. Velocidad de acceso Del orden de los milisegundos (10-3 seg) 5 10 ms Transmiten en tasas de decenas de MB/seg. 1
Cintas magnéticas Acceso secuencial. Cada cinta almacena cientos de GB. Persistente y muy confiable. Se crean bibliotecas de cintas, que alcanzan las decenas o cientos de TB. Velocidad de acceso Del orden de los milisegundos. Transmiten en tasas de decenas de MB/seg. (menos que un HDD y considerando acceso secuencial). Otros Otros discos magnéticos Discos de 3.5 y 5.25 Discos Zip SuperDisk Discos ópticos CD DVD Memoria ROM La memoria secundaria puede almacenar cantidades inmensas de información. Para organizar los datos en ella, se crean los conceptos de archivos. Además, se crea el concepto de directorio. Unidad de disco Directorios Los archivos son entidades que define el sistema operativo para identificar un conjunto de datos Un archivo tiene un conjunto de atributos Nombre y extensión. Ubicación (muchas veces es solo parte del nombre). Tamaño. Tipo. Permisos: Lectura, escritura y ejecución (puede estar especificado por usuarios y grupos) Fecha de creación y modificación. Etc... Debido a su facilidad de uso y compresión, muchos sistemas utilizan archivos especiales para manejar dispositivos Teclado Entrada secuencial Pantalla Salida secuencial Impresora Salida secuencial Red, Serial, paralela E/S secuencial Etc... Todo se resume a saber manejar archivos Si manejan archivos, manejarán al mundo. 2
Se pueden realizar un conjunto de operaciones a través del sistema operativo con los archivos: Abrir Cerrar Leer Escribir Mover a una posición (solo acceso aleatorio) Para abstraer la interacción entre los archivos y los programas que realicen operaciones sobre ellos, se define el concepto de flujo. Un flujo es como una manguera por donde fluyen datos en uno o ambos sentidos. chao 1 chao Abrir un flujo VAR Antes de poder utilizar un flujo, debemos abrirlo. Al momento de abrirlo se especifica el modo Abrir Leer Solo lectura (r) Solo escritura (w) Lectura/escritura (rw) Al abrir: Escribir Cerrar Se asigna un descriptor del archivo a nuestro programa Se modifica el estado del archivo 3
Abrir un flujo Estado de un archivo Si esta abierto para lectura, otros programas pueden también abrirlo para lectura, pero no para escritura. Si está abierto para escritura, nadie más puede abrirlo. Cerrar un flujo Al terminar de usarlos, los flujos deben ser cerrados. Al cerrar los flujos, nuevamente se modifica el estado del archivo (para que otros puedan abrirlo). Al salir del programa de manera normal, los flujos se cierran en forma automática. Si el programa termina de manera anormal, los flujos pueden quedar abiertos. Leer desde un flujo Los archivos contienen información binaria. Esta información puede representar cualquier cosa. Los archivos se separan en dos grandes grupos de texto binarios Al momento de leer, hay que tener claro el tipo de archivo desde el cual se desea leer información. Leer desde un flujo de texto Se pueden leer letras, palabras o frases completas. Por lo general se leen de manera secuencial, desde la primera letra hasta el fin de archivo. Leer desde un flujo binario Pueden contener cualquier cosa. Por lo general se leen de manera aleatoria. Pueden contener estructuras de datos. Escribir en un flujo También depende del tipo de archivo. Por lo general, el escribir en un flujo no significa que la información se guarde de manera inmediata en el archivo. La operación de escritura en memoria secundaria es muy costosa. Para mejorar el rendimiento se utiliza un buffer. 4
2 datos [Llenando buffer] 5 datos [Llenando buffer] 1 datos [buffer lleno] Escribir en un flujo Mover a una posición Acción permitida solo para archivos de acceso directo. Al abrir un archivo, se define una posición al comienzo de este. Al leer o escribir de manera secuencial, esta posición se actualiza automáticamente al la posición siguiente. Se puede modificar de manera manual esta posición para leer o modificar un datos especifico o en un orden distinto al secuencial. [Vaciando buffer] Fin tema 10a Manejo de archivos 5