Archivos SO
Archivos SO
Archivos SO
ADMINISTRACIÓN DE ARCHIVOS
Ing. Dr. Ángel Cárdenas García
Que son los archivos
El SO es responsable de:
El administrador de archivos está a cargo de los componentes físicos del sistema, sus recursos
de información y de las políticas que se usan para almacenar y distribuir los archivos. A fin de
desempeñar sus funciones, tiene que ejecutar estas cuatro tareas:
Base de datos. Para el administrador de archivos es un tipo de archivo, pero resultan más
complicadas porque son grupos de archivos relacionados interconectados en diversos niveles,
para dar a los usuarios flexibilidad de acceso a los datos almacenados. Si la base de datos del
usuario requiere una estructura específica, el administrador de archivos debe ser capaz de
aceptarla.
Directorios y nombres de archivos. Los directorios son agrupaciones lógicas de archivo que siguen criterios
definidos por sus creadores o manipuladores, a la vez es un mecanismo que permite al usuario estructurar
el acceso a los archivos.
El directorio tiene información sobre los archivos, incluyendo atributos, ubicación y propietario. Gran
parte de esta información, especialmente la relativa al almacenamiento, la gestiona el sistema operativo.
El directorio es propiamente un archivo, poseído por el sistema operativo y accesible a través de diversas
rutinas de gestión de archivos.
a) Buscar. Cuando un usuario o aplicación referencia un archivo, debe buscarse en el directorio la entrada
correspondiente.
b) Crear archivo. Al crear un nuevo archivo, debe añadirse una entrada al directorio.
c) Borrar archivo. Al borrar un archivo, debe eliminarse una entrada del directorio.
d) Listar directorio. Puede solicitarse todo el directorio o una parte. Por lo general esta petición la hace un
usuario y el resultado es una lista de todos los archivos poseídos por dicho usuario, junto a algunos de los
atributos de cada archivo.
Almacenamiento de archivos
Modo Texto: en este caso los datos son almacenados usando Ascii
y por tanto son plenamente visibles usando cualquier editor.
1.- Creación de Archivo.- En este proceso se pretende solamente crear un archivo nuevo en disco
con su nombre tipo y especialidad de almacenamiento de datos apropiado.
2.- Apertura de Archivos.- En este caso se pretende abrir un archivo ya existente en disco para
procesarlo ya sea para cargar o grabar estructuras en sus registros o leer algun registro en especial
para mandarlo a una variable de cualquier tipo.
3.-Cierre de archivos: Es la operación mas importante en cualquier programa que maneje archivos, o
se cierra el archivo como ultima instrucción del pograma o se vera el anuncio ABORT,RETRY,FAIL.
4.-Altas en archivo.- En este proceso se captura una estructura en memoria con sus datos
pertinentes y despues se graba la estructura al archivo en disco.
5.-Lectura de archivo.- En este proceso se abre el archivo, se manda el registro de disco a una
estructura en memoria para su procesamiento.
Operaciones básicas con los archivos
6.- Consulta de archivos: En este proceso se pretende desplegar todos los registros del archivo en
disco a la pantalla ya sea consola o mejor aún, a una pagina html
7.-Busqueda en archivos: Una de las operaciones mas comunes consiste en que el usuario pide toda
la información de algun renglon en disco porporcionando la información de algun campo
generalmente el campo clave de la estructura.
8.- Filtros.- En este proceso el usuario esta interesado en algun conjunto de renglones con
caracteristicas comunes (condición), por ejemplo todos los alumnos de “sistemas” o todos los
empleados que ganen mas de $500.00 pesos, o todos los clientes que sean de “tijuana”, etc
9.-Modificaciones de registros o archivos: Problema muy comun, donde los datos originales ya
grabados se tienen que cambiar o actualizar, por ejemplo el nombre no era “juan” es “juana”, o la
calificación no es 100 es 20, etc.
10.- Bajas de registros: tambien muy comun este proceso,por ejemplo el alumno ya egreso, el
cliente huyo, etc. (baja fisica o baja logica)
Abrir y cerrar un archivo en C o C++.
Abrir y cerrar
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct {
int matricula;
char nombre[30];
int edad;}alumno;
main() {
FILE *archdisco;
// El archivo se llama alumnos.dat el el directorio raiz de C
archdisco = fopen("C:\\alumnos.txt","w");
fclose(archdisco);
getchar();
}
Comentarios:
La funcion fopen() cuando realiza el trabajo de abrir un archivo, regresa la direccion fisica donde
crea o graba el archivo en disco.
El primer parametro o argumento en esta función es la UNIDAD de disco y el nombre del archivo.
El segundo parametro o argumento es llamado modo y es una de los varios modos que podemos
usar.
“r” → Lectura.
“w” → Escritura.
“a” → Append, si el archivo ya existe append empieza a añadir los nuevos datos
al final del archivo ya existente.
“r+” → Lectura y escritura, ya debe existir el archivo.
“w+” → Crea para lectura y escritura y si ya existe, sobreescribe.
“a+” → Crea o abre para lectura y append, sino existe el archivo sera creado.
En adicion a los valores listados tambien es permitido agregar uno de los siguientes caracteres,
pero insertandolo antes del signo +
modo significado.
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct {
int matricula;
char nombre[30];
int edad;} alumno;
main() {
// captura de campos
printf("No. de Cuenta :");scanf("%d",&alumno.matricula);getchar();
printf("Nombre :");gets(alumno.nombre);
printf("Edad :");scanf("%d",&alumno.edad);
// grabando a disco
FILE *archdisco;
archdisco = fopen("C:\\alumnos.txt","ab+");
fwrite(&alumno,sizeof(alumno),1,archdisco);
fclose(archdisco);
//avisando usuario
getchar();getchar();
}
// prog27.cpp. Despliega los datos a partir del archivo alumnos.txt
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct {
int matricula;
char nombre[30];
int edad;}alumno;
main() {
// leyendo disco
FILE *archdisco;
archdisco = fopen("C:\\alumnos.txt","rb+");
while(fread(&alumno,sizeof(alumno),1,archdisco)==1)
{
// desplegando estructuras
printf("%d ",alumno.matricula);
printf("%s ",alumno.nombre);
printf("%d ",alumno.edad);
printf("\n");
printf("**>\n");
printf("Presione ENTER para continuar ..");
getchar();
}
Dirección y nombre de archivo.
Todo objeto archivo debe tener un nombre a través del que se pueda acceder. Por
ello, todos los sistemas operativos proporcionan mecanismos de nombrado que
permiten asignar un nombre a un archivo en el momento de su creación. Este
nombre acompañara al objeto mientras exista y le identificará de forma única.
Cada sistema operativo tiene sus propias características para nombrar a los archivos.
Por ejemplo en el sistema UNIX los nombres de los archivo pueden ser de hasta
4,096 caracteres y distinguen entre mayúsculas y minúsculas, mientras en el MSDOS
el máximo tamaño de un nombre de archivo es de ocho caracteres y no distingue
entre mayúsculas y minúsculas.
Explicación:
Los tres primeros representan los permisos para el propietario del archivo. Los tres
siguientes son los permisos para el grupo del archivo y los tres últimos son los
permisos para el resto del mundo o otros.
rwx rwx rwx
usuario grupo otros
En cuanto a las letras, su significado son los siguientes:
r read - lectura
w write - escritura (en archivos: permiso de modificar, en directorios: permiso de
crear archivos en el dir.)
x execution - ejecución
Permisos de los archivos.. en Linux
Las nueve posiciones de permisos son en realidad un bit que o esta encendido
(mostrado con su letra correspondiente) o esta apagado (mostrado con un guión -),
asi que, por ejemplo, permisos como rwxrw-r--, indicaría que los permisos del
propietario (rwx) puede leer, escribir y ejecutar el archivo, el grupo (o sea los
usuarios que esten en mismo grupo del archivo) (rw-) podrá leer y escribir pero no
ejecutar el archivo, y cualquier otro usuario del sistema (r--), solo podrá leer el
archivo, ya que los otros dos bits de lectura y ejecucción no se encuentran
encendidos o activados.
Permisos de los archivos..
d) Lectura. El usuario puede leer el archivo para cualquier propósito, incluyendo copia y
ejecución. Algunos sistemas son capaces de hacer valer la distinción entre visualizar y copiar.
En el primer caso, el contenido del archivo puede mostrarse al usuario, pero este no tiene
medios para hacer una copia.
e) Adición. El usuario puede añadir datos al archivo, generalmente al final, pero no puede
modificar ni borrar el contenido del mismo. Este derecho es útil en la recopilación de datos a
partir de un conjunto de fuentes.
f) Actualización. El usuario puede modificar, borrar y añadir datos al archivo. La actualización
incluye generalmente la escritura del archivo al principio, la reescritura por completo o en
parte y la eliminación de todos los datos o parte de ellos. Algunos sistemas tiene varios grados
de actualización.
g) Cambio de protección. El usuario puede cambiar los derechos de acceso otorgados a otros
usuarios. Normalmente este derecho es detentado solo por el propietario. En algunos
sistemas, el propietario puede otorgar este derecho a otros usuarios. Para evitar el abuso de
este mecanismo, el propietario del archivo es normalmente capaz de especificar qué derechos
pueden ser cambiados por el poseedor de este derecho.
i) Borrado. El usuario puede borrar el archivo del sistema de archivos.
Puede considerarse que estos derechos constituyen una jerarquía, con cada uno incluyendo a
todos los que le preceden.
Los nodos-i de UNIX.
· Tablas de Bits: Utiliza un vector que contiene un bit por cada bloque
del disco.
· Secciones libres encadenadas: Se encadenan juntas mediante un
puntero y un valor de longitud en cada sección libre.
· Indexación Trata el espacio libre como si fuera un archivo y utiliza
una tabla índice trabajando con secciones de tamaño variable mejor
que con bloques, obteniendo una entrada en la tabla para cada
sección libre del disco.