Actividades U5

INSTITUTO TECNOLOGICO SUPERIOR DE PÁNUCO CARRERA Ingeniería Informática MATERIA Sistemas Operativos I UNIDAD V Sistema

Views 117 Downloads 6 File size 223KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

INSTITUTO TECNOLOGICO SUPERIOR DE PÁNUCO CARRERA Ingeniería Informática

MATERIA Sistemas Operativos I

UNIDAD V Sistemas de Archivos INVESTIGACIÓN ALUMNO Erick Manuel Lara Diaz DOCENTE MTI. Ángela Perez Florentino

Pánuco, Ver a 21 de noviembre del 2019 1

Índice Actividad 1. Definir la composición genérica, funciones y atributos de los sistemas de archivos empleados en la industria...................................................................................3 Actividad 2. Investigar la arquitectura que siguen los sistemas de archivos. ............12 Actividad 3. Investigar las interfaces empleadas (funciones o llamadas al sistema) para crear, escribir y leer un archivo.....................................................................................16 Actividad 4. Investigar los problemas que se presentan en la gestión de memoria, aplicados a los sistemas de archivos, así como sus mecanismos de optimización. .........................................................................................................................................................21

Actividad 5. Plantear un caso de recuperación de datos en caso de falla en el sistema de archivos y proponer dos soluciones diferentes. ...........................................25 Referencias Bibliográficas.......................................................................................................27

2

Actividad 1. Definir la composición genérica, funciones y atributos de los sistemas de archivos empleados en la industria. Los Sistemas Operativos que son utilizados con más frecuencia en la actualidad son los siguientes:   

Microsoft Windows (En sur versiones 7, 8 y 10). GNU / Linux (En su distribución Manjaro Linux, Arch Linux, OpenSUSE, SUSE Linux, Ubuntu, Debian GNU / Linux, Linux Mint). Android en sus últimas versiones.

A continuación, se menciona la composición genérica y atributos del sistema de archivos de los S.O antes mencionados:

Microsoft Windows (Versiones 7, 8 y 10).

Composición genérica del Sistema de Archivos NTFS. El sistema de archivos que se utiliza en las versiones 7, 8 y 10 es el NTFS (New Technology File System), del cual se muestra a continuación su información: NTFS permite el uso de nombres extensos, aunque, a diferencia de FAT32, distingue entre mayúsculas y minúsculas. En cuanto a rendimiento, el acceso a los archivos en una partición NTFS es más rápido que en una partición de tipo FAT, ya que usa estructuras de datos avanzadas (B+Tree) para localizar los archivos. En teoría, el tamaño límite de una partición es de 16 exabytes (17 mil millones de TB). Este sistema como tal se basa en una estructura llamada MFT (Master File Table), la que contiene información detallada de los archivos.

*(Master File Table), Tabla Maestra de Archivos. Archivo de sistema NTFS en volúmenes con formato NTFS, que contiene información acerca de cada archivo y carpeta del volumen. La tabla maestra de archivos es el primer archivo de un volumen NTFS. Básicamente, constituye un directorio centralizado de todos los ficheros del disco y de sí misma, haciendo referencia continuamente a ellos mientras el sistema localiza información, la lee y la escribe en el disco.

3

*Composición de los archivos MFT. Se divide en registros de un tamaño fijo (normalmente 1 Kbyte) y cada uno de ellos corresponde a algún archivo. Los 16 primeros son propios e inaccesibles a través del sistema operativo, son los llamados metafiles. Estos elementos de la MFT son la única parte del disco que tiene una posición fija. Cada uno es responsable de ciertos aspectos del funcionamiento del sistema. La ventaja radica en que exhiben una flexibilidad asombrosa. Por ejemplo, un fallo físico en el área de la FAT resultaría fatal para toda operación en disco, mientras que NTFS puede desplazar e incluso fragmentar todas las áreas de sistema del disco evitando cualquier daño en la superficie, exceptuando los primeros 16 elementos de la MFT.

Funciones del Sistema de Archivos NTFS. Todo lo que tiene que ver con los ficheros se almacena en forma de metadatos. Esto permitió una fácil ampliación de características durante el desarrollo de Windows NT. Un ejemplo lo hallamos en la inclusión de campos de indizados añadidos para posibilitar el funcionamiento de Active Directory. Los nombres de archivo son almacenados en Unicode (UTF-16), y la estructura de ficheros en árboles-B, una estructura de datos compleja que acelera el acceso a los ficheros y reduce la fragmentación, que era lo más criticado del sistema FAT. Se emplea un registro transaccional (journal) para garantizar la integridad del sistema de ficheros (pero no la de cada archivo). Los sistemas que emplean NTFS han demostrado tener una estabilidad mejorada, que resultaba un requisito ineludible considerando la naturaleza inestable de las versiones más antiguas de Windows NT. Sin embargo, a pesar de lo descrito anteriormente, este sistema de archivos posee un funcionamiento prácticamente secreto, ya que Microsoft no ha liberado su código, como hizo con FAT. Gracias a la ingeniería inversa, aplicada sobre el sistema de archivos, se desarrollaron controladores como el NTFS-3G que actualmente proveen a sistemas operativos GNU/Linux, Solaris, MacOS X o BSD, entre otros, de soporte completo de lectura y escritura en particiones NTFS.

4

Atributos del Sistema de Archivos NTFS. 

Control total: Cambiar permisos, tomas la propiedad y configurar las acciones permitidas por todos los demás permisos NTFS.



 Modificar: Modificar, borrar el archivo y configurar las acciones permitidas por el permiso de escritura, el de lectura y el de ejecución.



Leer y ejecutar: Permiso para mostrar el contenido de una carpeta; para mostrarlos datos, atributos, propietario y permisos para los archivos dentro de la carpeta y para ejecutar archivos dentro de la carpeta.



Lista de contenido de la carpeta: Permiso para mostrar el contenido de una carpeta, así como mostrar los datos, atributos, propietario y permisos para los archivos dentro de la carpeta.

GNU / Linux (En su distribución Manjaro Linux, Arch Linux, OpenSUSE, SUSE Linux, Ubuntu, Debian GNU / Linux, Linux Mint). Los sistemas de archivos que utilizan estas versiones son los siguientes: 1. EXT2 (Second Extended FileSystem). El Segundo sistema de ficheros Extendido fue pensado (por Rémy Card) como un sistema de ficheros extensible para Linux y es el sistema de ficheros que tuvo más éxito en la comunidad Linux y es básico para todas las distribuciones actuales de Linux. El sistema de ficheros EXT2 se construye con la premisa de que los datos contenidos en los ficheros se guarden en Bloques de Datos. Estos bloques de datos son todos de la misma longitud y, si bien esa longitud puede variar entre diferentes sistemas de ficheros EXT2 el tamaño de los bloques de un sistema de ficheros EXT2 en particular se decide cuando se crea (usando mke2fs). El tamaño de cada fichero se redondea hasta un numero entero de bloques. Si el tamaño de

5

bloque es 1024 bytes, entonces un fichero de 1025 bytes ocupará dos bloques de 1024 bytes. No todos los bloques del sistema de ficheros contienen datos, algunos deben usarse para mantener la información que describe la estructura del sistema de ficheros. EXT2 define la topologia del sistema de ficheros describiendo cada uno de ellos con una estructura de datos inodo. Un Inodo describe que bloques ocupan los datos de un fichero y también los permisos de acceso del fichero, las horas de modificación del fichero y el tipo del fichero. Cada fichero en el sistema EXT2 se describe por un único inodo y cada inodo tiene un único número que lo identifica. Los inodos del sistema de ficheros se almacenan juntos en Tablas de inodos. Los directorios EXT2 son simplemente ficheros especiales (ellos mismos descritos por inodos) que contienen punteros a los inodos de sus entradas de directorio.

1.1 Estructura del Sistema de Archivos de EXT2. El espacio en ext2 está dividido en bloques, y los bloques organizados en grupos, análogamente los grupos de cilindro del sistema de archivos Unix. Esto se hace para reducir la fragmentación externa y reducir al mínimo el número de búsquedas de disco cuando se lee una gran cantidad de datos consecutivos. Cada bloque contiene un superbloque grupo, el grupo de bloques de mapa de bits, mapa de bits i-nodo, seguidos por los bloques de datos reales. El superbloque contiene información importante que es crucial para el arranque del sistema operativo, con lo que las copias se realizan en cada bloque de grupo de cada bloque en el sistema de archivos. Sin embargo, sólo la primera copia de la misma, que se encuentra en el primer bloque del sistema de archivos, se utiliza en el arranque.

6

El grupo descriptor almacena el valor del bloque de mapa de bits, mapa de bits inodo y el comienzo de la tabla de i-nodos por cada bloque de grupo y éstos, a su vez, se almacena en un grupo descriptor tabla. Dentro de cada inodo existe la siguiente información: 

Número de inodo



Tipo de fichero



Propietario de dicho fichero



Permisos del fichero



Fecha de creación del mismo

2. EXT3 (Third Extended FileSystem). Es un sistema de archivos con registro por diario (journaling). Es el sistema de archivo más usado en distribuciones Linux, aunque en la actualidad está siendo remplazado por su sucesor, ext4. La principal diferencia con ext2 es el registro por diario. Un sistema de archivos ext3 puede ser montado y usado como un sistema de archivos ext2. Otra diferencia importante es que ext3 utiliza un árbol binario balanceado (árbol AVL) e incorpora el asignador de bloques de disco Orlov. Aunque su velocidad y escalabilidad es menor que sus competidores, como JFS, ReiserFS o XFS, tiene la ventaja de permitir actualizar de ext2 a ext3 sin perder los datos almacenados ni tener que formatear el disco. Tiene un menor consumo de CPU y está considerado más seguro que otros sistemas de ficheros en Linux dada su relativa sencillez y su mayor tiempo de prueba. El sistema de archivo ext3 agrega a ext2 lo siguiente: 

Registro por diario, Índices en árbol para directorios que ocupan múltiples bloques.

7



Crecimiento en línea.

2.1 Funcionalidades del Sistema de Archivos EXT3. Como ext3 está hecho para ser compatible con ext2, la mayoría de las estructuras del archivación son similares a las del ext2. Por ello, ext3 carece de muchas características de los diseños más recientes como las extensiones, la localización dinámica de los inodos, y la sublocalización de los bloques. Hay un límite de 31998 subdirectorios por cada directorio, que se derivan de su límite de 32 links por inodo. Ext3, como la mayoría de los sistemas de archivos actuales de Linux, no puede ser chequeado por el fsck mientras el sistema de archivos está montado para la escritura. Si se intenta chequear un sistema de ficheros que está montado puede detectar falsos errores donde los datos no han sido volcados al disco todavía, y corromper el sistema de archivos al intentar arreglar esos errores.

3. ReiserFS. ReiserFS es un sistema de archivos de propósito general, diseñado e implementado por un equipo de la empresa Namesys, liderado por Hans Reiser. Actualmente es soportado por Linux y existen planes de futuro para incluirlo en otros sistemas operativos. También es soportado por Windows (de forma no oficial), aunque por el momento de manera inestable y rudimentaria (ReiserFS bajo windows).

3.1 Composición del Sistema de Archivos ReiserFS.

8

ReiserFS almacena metadatos sobre los ficheros, entradas de directorio y listas de inodos en un único árbol B+ cuya clave principal es un identificador único. Los bloques de disco asignados a los nodos del árbol son los "bloques internos formateados" y los bloques de las hojas son los "bloques de hojas formateados". Todos los bloques restantes son los "bloques sin formatear", que contienen los datos de los ficheros. Los directorios con muchas entradas, ya sean directas o indirectas, que no caben en un solo nodo, se reparten con el nodo vecino de la derecha. La asignación de bloques se lleva a cabo mediante un bitmap de espacio libre almacenado en localizaciones fijas. En contraste, ext2 y otros sistemas de ficheros, usan una fórmula fija para calcular localizaciones de inodos, por lo que limitan el número de archivos que pueden almacenar. Otros también almacenan los directorios como una simple lista de entradas, lo que provoca que las búsquedas y modificaciones sean operaciones lineales temporalmente y degradan el rendimiento de directorios con muchos archivos. El árbol B+ en ReiserFS evita estos problemas.

3.2 Funcionalidades y Atributos del Sistema de Archivos ReiserFS. ReiserFS ofrece funcionalidades que pocas veces se han visto en otros sistemas de archivos: 

Journaling. Esta es la mejora a la que se ha dado más publicidad, ya que previene el riesgo de corrupción del sistema de archivos.



Reparticionamiento con el sistema de ficheros montado y desmontado. Podemos aumentar el tamaño del sistema de ficheros mientras lo tenemos montado y desmontado (online y offline). Para disminuirlo, únicamente se permite

estando

offline

(desmontado).

Namesys

proporciona

las

herramientas para estas operaciones, e incluso, podemos usarlas bajo un gestor de volúmenes lógicos como LVM o EVMS. 

Tail packing, un esquema para reducir la fragmentación interna.

9

4. Android En primer lugar, hay que saber cómo se almacena Android y demás aplicaciones en tu dispositivo físicamente. Lo habitual es que cuente con una memoria interna física donde, por un lado, se guardan todos los archivos y carpetas generados por Android, y por otro lado, se guarda la memoria root (o root device) que son los archivos más importantes, la estructura de ficheros del propio sistema Android. Esta estructura es inaccesible y cómo mucho puedes saber cuánto ocupa desde Almacenamiento y USB (aparece como root o como SO Android directamente). Nota: con acceso root y el explorador de archivos adecuado, puedes acceder a ese sistema de ficheros, pero no es recomendable a no ser que sepas al 100% lo que estás haciendo. Adicionalmente, la mayoría de dispositivos suelen tener una ranura donde insertar una tarjeta SD, de mayor capacidad que la memoria interna y que es imprescindible si guardas fotografías, vídeos, música o juegos.

4.1 Estructura de Archivos de Android. Android está basado en Linux y entre sus particularidades, estructura todo en carpetas, tanto hardware como software. Esto significa que las unidades de disco, internas o externas, aparecen representadas como una carpeta más. En Android ocurre igual, y de ahí que una de las carpetas más útiles sea SDCARD, ya que ahí encontrarás las subcarpetas y

10

archivos guardados en tu tarjeta de memoria SD externa. Suele aparecer directamente o dentro de las carpetas storage o mnt, según la versión de Android. Tanto en la memoria interna como en esa carpeta SDCARD encontrarás las habituales carpetas DCIM (fotografías realizadas con las cámaras integradas en tu dispositivo Android) y otras como Download, Movies, Music, Video, Podcasts, Ringtones o similares. Puedes encontrarlas en el directorio raíz o dentro de la carpeta data. Dentro de data encontrarás la carpeta app (sólo visible con permisos root o administrador) donde se guardan las aplicaciones instaladas en Android. Básicamente son archivos APK que, a su vez, contienen los archivos y carpetas que forman parte de la aplicación. En /data/data es posible encontrar las configuraciones guardadas por las aplicaciones que utilizas en Android, así como los contactos almacenados. Estos últimos están en una carpeta cuyo nombre varía en función del fabricante de tu dispositivo Android.

11

Actividad 2. Investigar la arquitectura que siguen los sistemas de archivos. 1. Archivo Secuencialmente Indexado. Los registros se organizan en una secuencia basada en un campo clave presentando dos características, un índice del archivo para soportar los accesos aleatorios y un archivo de desbordamiento. El índice proporciona una capacidad de búsqueda para llagar rápidamente al registro deseado y el archivo de desbordamiento es similar al archivo de registros usado en un archivo secuencial, pero está integrado de forma que los archivos de desbordamiento se ubiquen siguiendo un puntero desde su registro predecesor. La estructura más simple tiene como índice un archivo secuencial simple, cada registro del archivo índice tiene dos campos, un campo clave igual al del archivo principal y un puntero al archivo principal. Para encontrar un campo especifico se busca en el índice hasta encontrar el valor mayor de la clave que es iguale o precede al valor deseado de la clave, la búsqueda continua en el archivo principal a partir de la posición que indique el puntero. Cada registro del archivo principal tiene un campo adicional que es un puntero al archivo de desbordamiento. Cuando se inserta un nuevo registro al archivo, también se añade al archivo de desbordamiento. El registro del archivo principal que precede inmediatamente al nuevo registro según la secuencia lógica se actualiza con un puntero del registro nuevo en el archivo de desbordamiento, si el registro inmediatamente anterior está también en el archivo de desbordamiento se actualizará el puntero en el registro. Para procesar secuencialmente un archivo completo los registros del archivo principal se procesarán en secuencia hasta encontrar un puntero al archivo de desbordamiento, el acceso continúa en el

12

archivo de desbordamiento hasta que encuentra un puntero nulo, entonces renueva el acceso donde se abandonó en el archivo principal.

2. Archivo Secuencial. Es la forma básica de organizar un conjunto de registros, que forman un archivo, utilizando

una

organización

secuencial.

En

un

archivo

organizado

secuencialmente, lo registros quedan grabados consecutivamente cuando el archivo se utiliza como entrada. En la mayoría de los casos, los registros de un archivo secuencial quedan ordenados de acuerdo con el valor de algún campo de cada registro. Semejante archivo se dice que es un archivo ordenado; el campo, o los campos, cuyo valor se utiliza para determinar el ordenamiento es conocido como la llave del ordenamiento. Un archivo puede ordenarse ascendente o descendentemente con base en su llave de ordenamiento. La forma más común de estructura de archivo es el archivo secuencial. En este tipo de archivo, un formato fijo es usado para los registros. Todos los registros tienen el mismo tamaño, constan del mismo número de campos de tamaño fijo en un orden particular. Como se conocen la longitud y la posición de cada campo, solamente los valores de los campos se necesitan almacenarse; el nombre del campo y longitud de cada campo son atributos de la estructura de archivos. Una característica de los archivos secuenciales es que todos los registros se almacenan por posición: de primer registro, segundo registro etc. Los archivos secuenciales proveen la mejor utilización de espacio y son rápidos cuando los registros son accesados secuencialmente. Los archivos con poca volatilidad, gran actividad y tamaño variable son altamente susceptibles de ser organizados secuencialmente.

13

La ventaja más importante de la técnica de organización secuencial de archivos es la capacidad de acceso al "siguiente" registro rápidamente: Mientras que el patrón de acceso a un archivo secuencial se conforme al ordenamiento de registros en el archivo, los tiempos de acceso serán muy buenos.

3. Archivo Particionado. BPAM manipula bloques de datos y produce una salida y entrada de datos. Construye y causa la escritura de entradas en el directorio como una salida de información mientras que la búsqueda y la lectura de las entradas del directorio como una entrada de información. Finalmente es más flexibilidad que algunos otros métodos de acceso. También organiza registros como miembros de un conjunto de datos particionados (PDS) o un conjunto de datos particionados extendido (PDSE). Este método se puede usar para ver un directorio de UNIX y sus archivos como si fuera un conjunto de datos particionados. Puede ver cada miembro de PDS, PDSE o UNIX de forma secuencial se puede hacer con este método o con el método de acceso en cola secuencial. Un conjunto de datos particionados o un conjunto de datos particionados extendidos incluye un directorio que relaciona los nombres de los miembros con las ubicaciones dentro del conjunto de datos. A continuación, se describen algunas de las características de los PDS, PDSE y archivos UNIX: Conjunto de datos particionados: Los PDS pueden tener cualquier tipo de registros secuenciales. Partición de conjunto de datos extendido: Un PDSE tiene un formato de almacenamiento interno diferente que un PDS, lo que le da a PDSE características de usabilidad mejoradas. Puede usar un PDSE en lugar de la mayoría de los PDS, pero no puede usar un PDSE para ciertos conjuntos de datos del sistema.

14

Archivos UNIX: Los archivos UNIX son flujos de bytes y no contienen registros. El método de acceso básico particionado (BPAM) convierte los bytes de los archivos UNIX en registros. Puede usar BPAM para leer, pero no para escribir en archivos UNIX. El método de acceso básico particionado comparte características con el método de acceso básico secuencial (BSAM). 4. Arquitectura de Pila. Con la llegada de los dispositivos de acceso directo (como los discos magnéticos), surgió la forma de acceso directo, o aleatorio, a un archivo. El archivo se considera como un conjunto de registros, cada uno de los cuales puede ser un byte. Se puede acceder al mismo desordenadamente moviendo el apuntador de acceso al archivo a uno u otro registro. Esta forma de acceso se basa en un modelo de archivo almacenado en disco, ya que se asume que el dispositivo se puede mover de forma aleatoria entre los distintos bloques que componen el archivo. Organiza registros en cualquier secuencia que indique su programa, y recupera registros por dirección relativa. Si no conoce la ubicación exacta de un registro, puede especificar un punto en el conjunto de datos donde comenzará la búsqueda del registro. Los conjuntos de datos organizados de esta manera se llaman conjuntos de datos directos. Direccionamiento relativo al PC, donde se forma una dirección sumando una constante, que está en la instrucción, con el registro PC (Program Counter). El resultado de la suma corresponde a la dirección destino.

15

Actividad 3. Investigar las interfaces empleadas (funciones o llamadas al sistema) para crear, escribir y leer un archivo. Las llamadas al sistema de archivo para realizar la creación, escritura y lectura de un archivo son las siguientes: Open La llamada al sistema open es el primer paso que debe ejecutar todo proceso que quiera acceder a los datos de un archivo. Su sintaxis es: fd = open (pathname, flags, modes); donde: pathname: nombre del archivo. flags: modo de apertura, para lectura, escritura, etc. modes: permisos del archivo en caso de que se deba crear. fd: entero que representa el descriptor del archivo.

read

16

Su sintaxis es: number = read (fd, buffer, count); donde: fd: descriptor de archivo que devuelve la llamada open buffer: dirección del buffer donde se van a colocar los datos leídos

count: número de bytes que el usuario quiere leer number: número de bytes leídos si es positivo en caso contrario la ejecución no ha sido correcta.

write La sintaxis es: number=write (fd, buffer, count); Donde el significado de las variables es el mismo que para la llamada al sistema read. El algoritmo que utiliza el sistema operativo para escribir un archivo es similar al que utiliza para leerlo.

close Un proceso cierra un archivo cuando no lo va a utilizar más. La sintaxis de la llamada close es:

17

close(fd); Donde fd es el descriptor del archivo.

Sintaxis en Java para Crear un Archivo:

import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; public class CrearArchivo { public static void main(String ars[]){ try { String ruta = "/ruta/filename.txt"; String contenido = "Contenido de ejemplo"; File file = new File(ruta); // Si el archivo no existe es creado if (!file.exists()) { file.createNewFile();

18

} FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw); bw.write(contenido); bw.close(); } catch (Exception e) { e.printStackTrace(); } } }

Sintaxis en Java Leer un archivo.

import java.io.File; import java.util.Scanner; public class LeerArchivo { public static void main(String[] args) { try {

19

Scanner input = new Scanner(new File("/ruta/filename.txt")); while (input.hasNextLine()) { String line = input.nextLine(); System.out.println(line); } input.close(); } catch (Exception ex) { ex.printStackTrace(); } } }

Sintaxis para Escribir en un Archivo de Texto. String sFichero = "fichero.txt"; File fichero = new File(sFichero); if (fichero.exists()) {...} BufferedWriter bw = new BufferedWriter(new FileWriter(sFichero)); for (int x=0;x