Introducción • 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. Tema 10a Manejo de archivos Introducción Memoria primaria (volátil) CPU A+B=C A Memoria RAM Memoria secundaria (persistente) B C • • • • • Datos.txt RAM: Random Access 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 Archivos Archivos • 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. Archivos Unidad de disco Directorios Archivos • 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... Archivos • 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 Archivos Archivos • 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) “ chao” “hola” Flujos • 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. “1” “ chao” Flujos “hola” Flujos Abrir un flujo VAR • Antes de poder utilizar un flujo, debemos abrirlo. • Al momento de abrirlo se especifica el “modo” – Solo lectura (r) – Solo escritura (w) – Lectura/escritura (rw) Abrir Leer • Al abrir: – Se asigna un descriptor del archivo a nuestro programa – Se modifica el estado del archivo Escribir Cerrar “hola” 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. 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 – Archivos de texto – Archivos binarios 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 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. • Al momento de leer, hay que tener claro el tipo de archivo desde el cual se desea leer información. 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 Escribir en un flujo 2 datos [Llenando buffer] 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. 5 datos [Llenando buffer] 1 datos [buffer lleno] [Vaciando buffer] Fin tema 10a Manejo de archivos 5