[MIA]Practica1 Semestre 1 2015
-
Upload
edward-gomez -
Category
Documents
-
view
4 -
download
0
description
Transcript of [MIA]Practica1 Semestre 1 2015
UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS MANEJO E IMPLEMENTACION DE ARCHIVOS Ing. Alvaro Díaz A. Ing. Oscar Paz Campos Aux. Victor Corado Aux. Rigoberto Macario
Primera Pra ctica
Introducción La práctica consiste en la simulación de los principales métodos de asignación de espacio para
archivos, los cuales son la asignación contigua, asignación enlazada y asignación indexada. Así
también en la parte de asignación contigua se tocará el tema de las principales estrategias de
colocación las cuales son primer ajuste, peor ajuste y mejor ajuste.
Objetivos Aplicar la teoría dada en clase y laboratorio sobre los sistemas de archivos.
Implementar las estructuras o registros y técnicas de programación en el lenguaje C.
Diferenciar e identificar los tres métodos de asignación de espacio principales.
Generar reportes sobre el estado de discos y ficheros.
Implementar las diferentes operaciones sobre archivos en un disco.
Descripción La práctica consiste en realizar una aplicación la cual es capaz de simular el funcionamiento
de los distintos métodos de asignación de espacio incluyendo además las estrategias de colocación
en la parte de asignación contigua. Esta aplicación es totalmente en consola desarrollado en
lenguaje C por lo que no tendrá interfaz gráfica y las librerías utilizadas serán obligatoriamente del
lenguaje C nativo.
La aplicación tiene como funcionamiento 3 teorías principales:
Métodos de asignación de espacio.
Estrategias de Colocación.
Operaciones sobre archivos.
ADMINISTRACIÓN DE DISCO
Estructura general.
El disco se simulará con la ayuda de un fichero binario el cual será administrado exclusivamente a
través de estructuras en C. Con motivos prácticos se tendrá un solo disco con 3 particiones fijas y
creadas al momento de creación del disco.
El disco debe pesar exactamente 10 MB.
La arquitectura del disco es de la siguiente forma:
OPERACIONES SOBRE DISCO Las operaciones sobre el disco son:
Montar el disco: Se monta el disco leyendo el MBR para conocer su estructura.
Seleccionar partición: Se selecciona una partición en el que se realizarán las operaciones
sobre archivos.
Asignación de ajuste: En el caso de la partición 1 se elegirá en cualquier momento la
estrategia de colocación a trabajar. Se debe poder alternar diferentes estrategias en
caliente.
Reiniciar disco: Se reinicia el disco en el estado inicial
Formatear partición: Se reinicia la partición seleccionada en su formato inicial y sin
archivos.
EL MBR El Master Boot Record es una parte inicial del disco el cual contiene la información de las
particiones en el mismo y su estructura en general, con el fin de administrar este disco para este
caso tendrá:
La posición de la partición 1.
La posición de la partición 2.
La posición de la partición 3.
El espacio utilizado y libre de la particion1.
El espacio utilizado y libre de la particion2.
El espacio utilizado y libre de la particion3.
Particion3:
Asignación
Indexada
Particion2:
Asignación
Enlazada
MBR
Particion1:
Asignación
Contigua
Número mágico (el carnet del estudiante).
Ultima fecha de montaje.
PARTICION 1: Asignación contigua La teoría de asignación contigua es que el archivo quede en bloques contiguos y para lo cual se
necesitará una estrategia de colocación.
Las operaciones de archivos sobre dicha partición son:
Manejo de Bloques La partición está compuesta por bloques, cada bloque contendrá:
ID: Representa el número de bloque de la partición.
Archivo: Representa el nombre del archivo que se está almacenando, es dato numérico.
Data: Almacena la información del archivo, debe poder contener exactamente 5 caracteres
(5 bytes)
Estado: Indica si el bloque se encuentra OCUPADO/LIBRE. 0 para libre y 1 para ocupado.
Crear Archivo Esta opción permite crear archivos en las particiones seleccionadas; La aplicación debe de proveer
una interfaz para ingresar el nombre del archivo, y la información de dicho archivo. El nombre
será un ID numérico. Para almacenar el archivo la aplicación deberá dividirlo en “n” caracteres el
cual es el tamaño de dicho bloque, para conocer la cantidad de bloques que se requieren para
almacenarlos, luego se buscarán bloques de datos “CONTIGUOS” libres y de acuerdo al ajuste que
se esté trabajando se almacenará el archivo en los bloques contiguos libres que se
encontraron.
Si al momento de crear un archivo, la partición donde se quiere almacenar está llena,
entonces mostrara un error que indique que esa partición está llena.
Los tipos de ajustes a trabajar son:
Primer ajuste.
Mejor ajuste.
Peor ajuste.
Eliminar Archivo Se podrá indicar el ID del archivo que se desea eliminar, con este se buscaran todos los bloques
que tengan almacenado el archivo con ese id y se eliminarán los datos que se encuentren en
esos bloques y se cambiará el Estado de los mismos a Libre.
Modificar Archivo El usuario tiene posibilidad de ver en consola o interfaz el archivo que desee, y modificarlo.
(Elimina y Crea).
Consultar Archivo Se deberá poder consultar cualquier archivo conociendo su ID. Se consulta su texto.
PARTICION 2: Asignación Enlazada Las operaciones de archivos sobre dicha partición son:
El directorio de archivos Para este tipo de asignación es necesario utilizar un directorio el cual es como una tabla al inicio de
la partición y se compone de la siguiente forma:
Archivo Bloque Inicial
1 7
4 2 … …
Nota: para este caso se reservará un directorio para exactamente 500 archivos.
Manejo de Bloques La partición está compuesta por bloques, cada bloque contendrá:
ID: Representa el número de bloque relativo a la partición.
Data: Almacena la información del archivo, debe poder almacenar 5 caracteres exactos (5
bytes)
Puntero: Indica el ID del siguiente bloque utilizado por el mismo archivo, 0 si no está
utilizado, -1 si es el último bloque utilizado por un archivo.
Estructura enlazada:
Crear Archivo Esta opción permite crear un archivo preguntando su ID el cual deberá ser un número entero, luego
su contenido que es texto. La manera de almacenar dado este tipo de asignación de espacio es
buscar desde el inicio del disco un bloque libre, al encontrar el primer bloque libre se empieza a
almacenar el archivo desde esa posición y buscado el siguiente bloque libre, enlazando al mismo
tiempo todos los bloques que el archivo ocupó, colocando un valor -1 para el último bloque
utilizado para diferenciar el fin del archivo.
Al final se debe registrar el archivo en el directorio.
Eliminar Archivo Se podrá indicar el ID del archivo que se desea eliminar para luego buscar la posición en el
directorio, eliminarlo de dicho directorio y liberar cada bloque poniendo en el campo puntero un
valor de 0 el cual indicará que dicho bloque no está utilizado. No es necesario eliminar la data.
Modificar Archivo El usuario tiene posibilidad de ver en consola el archivo que desee, y modificarlo. (Elimina y
Crea es la mejor manera).
Consultar Archivo Se deberá poder consultar cualquier archivo conociendo su ID. Se consulta su texto.
PARTICION 3: Asignación Indexada Las operaciones de archivos sobre dicha partición son:
El directorio de archivos Para este tipo de asignación es necesario utilizar un directorio el cual es como una tabla al inicio de
la partición y se compone de la siguiente forma:
Archivo Bloque Índice
1 7
4 2
… … Nota: para este caso se reservará un directorio para exactamente 500 entradas.
Manejo de Bloques La partición está compuesta por bloques, cada bloque contendrá:
ID: Representa el número de bloque relativo a la partición.
Data: Almacena la información del archivo, debe poder almacenar 12 caracteres exactos (12
bytes)
o Este espacio de DATA debe poder cumplir con dos funciones, ser un bloque índice o
un bloque de datos.
o Cuando es un bloque de datos debe tener el espacio de 12 bytes para almacenar
texto, y cuando sea un bloque índice debe utilizarse este espacio para almacenar
tres apuntadores enteros.
o Se manejará solo bloques índices de primer nivel.
o En caso que un archivo ocupe más de tres bloques se realizará una nueva entrada en
el directorio duplicando el ID del archivo y asignando el siguiente bloque índice a
utilizar, así sucesivamente.
ESTADO: un entero que indica si el bloque está libre u ocupado, 0 para libre, 1 para
ocupado. Este campo se puede utilizar para identificar si el bloque es un índice o de datos.
Estructura indexada:
Crear Archivo
Esta opción permite crear un archivo preguntando su ID el cual deberá ser un número entero, luego
su contenido que es texto. La manera de almacenar dado este tipo de asignación de espacio es
buscar desde el inicio del disco un bloque libre, al encontrar el primer bloque libre se inserta una
entrada en el directorio indicando el ID del archivo y el apuntador al bloque índice, este bloque
índice almacena punteros hacia bloques que almacenarán el archivo.
Eliminar Archivo Se podrá indicar el ID del archivo que se desea eliminar para luego buscar la posición en el
directorio, eliminarlo de dicho directorio y liberar cada bloque poniendo en el campo ESTADO un
valor de 0 el cual indicará que dicho bloque no está utilizado. No es necesario eliminar la data.
Modificar Archivo El usuario tiene posibilidad de ver en consola el archivo que desee, y modificarlo. (Elimina y
Crea es la mejor manera).
Consultar Archivo Se deberá poder consultar cualquier archivo conociendo su ID. Se consulta su texto.
REPORTES
PARTICION 1
Reporte de estados de bloques
En cualquier momento, se debe permitir al usuario que seleccione la partición y proveerle un
reporte de estados de los bloques, se solicitara la ruta de almacenamiento del reporte y dicho
reporte es un archivo de texto con extensión .ids.
La estructura del reporte idDisco.ids debe de ser la siguiente:
Fecha del Reporte(dd/mm/yyyy - hh:mm:ss)
---------------------------------------------------------------
|id|id|_|id|id|_|_|_
Esto en donde dice ID tiene el id del archivo que ocupa esos bloques y en “_” los que están libres
NOTA: Para este reporte, cada línea posee únicamente información de 50 Bloques.
Reporte de contenido de bloques En cualquier momento, se debe permitir al usuario que seleccione la partición y proveerle un
reporte de estados de los bloques y la información que estos posean. El reporte es un archivo de
texto con extensión .blqs .
El reporte particion1.blqs tiene la siguiente estructura.
Fecha del Reporte: dd/mm/yyyy - hh:mm:ss
------------------------------------------------------------------
|contenido| |contenido|contenido|
|contenido|contenido| |contenido|
|contenido| |contenido|contenido|
NOTA: Para este reporte, cada línea posee únicamente información de 50 Bloques.
PARTICION 2
Reporte de directorio Se debe generar un archivo de texto con la estructura del directorio de archivos.
REPORTE DE DIRECTORIO – ASIGNACION ENLAZADA
Fecha del Reporte: dd/mm/yyyy - hh:mm:ss
------------------------------------------------------------------
ARCHIVO BLOQUE INICIAL
1 1
2 3
3 …
… …
Reporte de bloques Ester reporte muestra el estado de los campos de los bloques actualmente. El usuario podrá
ingresar cuantos bloques quiere reportar, por ejemplo al ingresar un valor 300 se reportaran los
primeros 300 bloques.
REPORTE DE BLOQUES – ASIGNACION ENLAZADA
Fecha del Reporte: dd/mm/yyyy - hh:mm:ss
------------------------------------------------------------------
|1_hola!_3|2_---------_0|3_mundo_22|4_conten_5|
|5_hola!_-1|6_---------_0|7_mundo_0|8_conten_0|
…
|22_;)!!!_-1|23_---------_0|24_mundo_0|25_conten_0|
NOTA: Para este reporte, cada línea posee únicamente información de 30 Bloques.
El formato a reportar un bloque es:
|IDBloque_CONTENIDO_PUNTERO|
Para representar espacios en blanco se utilizará el símbolo guion: “-”.
PARTICION 3
Reporte de directorio Se debe generar un archivo de texto con la estructura del directorio de archivos.
REPORTE DE DIRECTORIO – ASIGNACION INDEXADA
Fecha del Reporte: dd/mm/yyyy - hh:mm:ss
------------------------------------------------------------------
ARCHIVO BLOQUE INDICE
4 24
5 100
6 …
… …
Reporte de bloques Ester reporte muestra el estado de los campos de los bloques actualmente. El usuario podrá
ingresar cuantos bloques quiere reportar, por ejemplo al ingresar un valor 300 se reportaran los
primeros 300 bloques.
REPORTE DE BLOQUES
Fecha del Reporte: dd/mm/yyyy - hh:mm:ss
------------------------------------------------------------------
|1_hola!_1|2_---------_0|3_mundo_1|4_conten_1|
|5_hola!_-1|6_---------_0|7_mundo_0|8_conten_0|
…
|22_;)!!!_1|23_---------_0|{24_1,3,22_2}|25_conten_0|
NOTA: Para este reporte, cada línea posee únicamente información de 30 Bloques.
El formato a reportar un bloque es:
|IDBloque_CONTENIDO_ESTADO|
O en caso que sea un bloque índice:
|{ID_puntero1,puntero2,puntero3_ESTADO}|
Para representar espacios en blanco se utilizará el símbolo guion: “-”.
EL DISCO
Reporte del MBR Se reportarán en consola todos los campos del MBR y sus valores.
ESPECIFICACIONES: El lenguaje a utilizar es C.
La interfaz es en consola.
Cada bloque es una estructura de C almacenada en el archivo Binario.
El sistema operativo a utilizar es cualquier distribución de GNU/Linux (instalación física no
virtual, solo se calificará la práctica sobre una distribución GNU/Linux).
Se puede utilizar cualquier IDE que se desee, pero no se permiten clases especiales que
estos puedan proporcionar, solamente el lenguaje C como tal.
El manual técnico deberá especificar de lo que realiza cada método de la aplicación y debe
coincidir con el código de la práctica entregada.
Todo es acceso a disco en tiempo real no se debe implementar memoria para levantar todo
el disco o algo parecido, si se trabaja todo con memoria tendrán una nota de 0.
CONSIDERACIONES La práctica se entrega en la fecha indicada, se tomará en cuenta que la impuntualidad de la
entrega afectará la nota, así como también queda a discreción del auxiliar recibir algo fuera
del tiempo estipulado. Se verificaran copias de código, cualquier copia de la práctica será
sancionada con la pérdida automática del Laboratorio y la sanción correspondiente por parte de la
Escuela de Sistemas.
Si alguna persona no puede llegar a la calificación de la práctica (excepto a las personas que
ya han definido con los auxiliares que trabajan), debe informar con anticipación tanto al
Auxiliar como al Ingeniero indicando el motivo de su falta. Se determinara si puede o no
realizarse la calificación de la práctica y bajo qué términos.
ENTREGA Y CALIFICACIÓN Fecha de entrega de la Práctica: viernes 20 de febrero de 2015.
Hora de Entrega: 9:00 AM.
Lugar, Día y Hora de Calificación: Se enviará un calendario.
Forma de Calificación: Presencial y conforme entregaron el proyecto, si el estudiante no se
encuentra cuando se le llame pasará de último, y si por alguna razón se le vuelve a llamar
por segunda ocasión y no se encuentra, ya no se le calificará.
Entregables: Se deberá entregar un CD tanto la Documentación (Manual Técnico y Manual
de Usuario) como el código fuente de la aplicación y el ejecutable. Los nombres de los
archivos de código fuente deberán llevar el siguiente formato:
NombreArchivo_Carnet.extensión (miarchivo_201200001.c)