Tipos de acceso por sistema operativo
# Tipos de acceso por sistema operativo

En cada sistema operativo existen distintas formas de utilización de los tipos de acceso para la organización óptima de sus archivos y su información. Cada sistema operativo cuenta con uno o varios sistemas diferentes de organización, los cuales trabajan acorde a las necesidades del usuario y su uso de la información. Dicho lo anterior, los tipos de accesos más utilizados para manipular los archivos son acceso indexado, acceso secuencial, acceso directo y por último el acceso secuencial indexado el cual es el más utilizado por dichos sistemas de organización de archivos ya que es el de mejor rendimiento.

## Sistemas de organización de archivos en Windows

Los sistemas de organización de archivos que utiliza Windows utilizan el acceso secuencial indexado (acceso secuencial y acceso indexado adjuntos en un mismo método), el acceso directo en algunos casos en la utilización de los sistemas de organización por tablas.

En Windows, se le llama "unidad" a cada dispositivo de almacenamiento. El sistema le adjudica una letra a cada uno. La estructura del sistema de archivos normalmente es jerárquica, con un directorio raíz y una determinada cantidad de sub directorios y archivos. Los archivos siempre llevan extensión, de lo contrario el sistema operativo no sabrá qué hacer con ellos. Los sistemas que utiliza Windows son los siguientes:

-FAT: Tabla de asignación de archivos, comúnmente conocido como FAT (del inglés file allocation table), es un sistema de archivos. Es un formato popular para disquetes admitido prácticamente por todos los sistemas operativos existentes para computadora personal. Se utiliza como mecanismo de intercambio de datos entre sistemas operativos distintos que coexisten en la misma computadora, lo que se conoce como entorno multiarranque.

-FAT16: Se utiliza preferiblemente, en unidades o particiones de más de 200MB. Este sistema de archivos a medida que aumenta el tamaño del volumen, el rendimiento disminuye rápidamente. No soporta archivos extremadamente grandes. Es menos "robusto" que NTFS ya que no permite la automática recuperación del disco.

-FAT32: Mantiene la misma estructura de sectores y tablas, pero disminuye el tamaño de los sectores. En discos entre los 512MB, así el espacio desperdiciado es mucho menor. Admite unidades de hasta 2TB de tamaño. Utiliza clústeres menores (de 4KB a 8KB), lo que significa un 10 y un 15 % de mejora en el uso del espacio con respecto a unidades grandes con sistemas de archivos FAT o FAT16. Es incompatible con todo lo anterior y posterior.

-NTFS: Sistema de archivos de nueva tecnología, Soporta completa seguridad. Puede decidir los tipos de acceso a los archivos y directorios. Guarda un archivo de actividades para reconstruir el disco en el caso de problemas eléctricos. Automáticamente genera archivos de corrección en DOS que pueden ser utilizados y compartidos. Permite un diseño de programa para correr bajo otro sistema operativo. Todo lo que tiene que ver con los archivos se almacena en forma de metadatos (una estructura de datos compleja que acelera el acceso a los archivos y reduce la fragmentación).

## Sistemas de organización de archivos en Linux

Linux es el sistema operativo que soporta más sistemas de organización lo cual lo convierte en uno de los más versátiles; La estructura de archivos es una estructura jerárquica en forma de árbol invertido, donde el directorio principal (raíz) es el directorio "/", del que cuelga toda la estructura del sistema. Este sistema de archivos permite al usuario crear, borrar y acceder a los archivos sin necesidad de saber el lugar exacto en el que se encuentran. No existen unidades físicas, sino archivos que hacen referencia a ellas. Consta de tres partes importantes, superbloque, tabla de i-nodos y bloques de datos. Los diferentes sistemas de archivos que maneja Linux son:

(-FAT -FAT32 -NTFS): Funcionan de la misma manera que Windows.

-EXT: El sistema de archivos extendido (extended file system o ext), fue el primer sistema de archivos de Linux. Tiene metadatos estructura inspirada en el tradicional sistema de archivos UNIX (UFS). Fue diseñado por Rémy Card para vencer las limitaciones del sistema de archivos MINIX.

-EXT2: Sistema de archivos extendido. El sistema de archivos tiene una tabla donde se almacenan los i-nodos. Un i-nodo almacena información del archivo (ruta o path, tamaño, ubicación física). En cuanto a la ubicación, es una referencia a un sector del disco donde están todas y cada una de las referencias a los bloques del archivo fragmentado. Estos bloques son de tamaño especificable cuando se crea el sistema de archivos, desde los 512 bytes hasta los 4 KiB, lo cual asegura un buen aprovechamiento del espacio libre con archivos pequeños. No dispone de soporte para transacciones, lo que significa que las comprobaciones rutinarias al arrancar pueden tardar bastante tiempo. Los transaccionales previenen retrasos durante el reinicio del equipo, incluso cuando el sistema de archivos está en un estado inconsistente.

-EXT3: Proporciona soporte para una rápida recuperación además de otros modos mejorados de funcionamiento como registro completo y ordenado de datos. Posee una opción adicional para indización basada en árboles que proporciona un alto rendimiento en casi todas las situaciones. Es un sistema de archivos con registro por diario. Utiliza un árbol binario balanceado (árbol AVL) e incorpora el asignador de bloques de disco Orlov (asignador de bloques de disco originario de BSD). Tiene un menor consumo de CPU y está considerado más seguro que otros sistemas de archivos dada su relativa sencillez y su mayor tiempo de prueba.

-EXT4: Rendimiento y tasas de transferencia superiores a sus antecesores. Una de sus ventajas notables es porque la eficiencia de los descriptores de disco, reduciendo los tiempos de borrado de archivos largos, también añade soporte para la desfragmentación, que mejorará el rendimiento global, además soporta undelete (desborrado), herramienta para recuperar archivos que han sido borrados de forma accidental.

-ReiserFS: Es un sistema que tiene un gran rendimiento y que sobrepasa a EXT2 y EXT3 cuando se trate de trabajar con archivos pequeños (menores de 4kb), a veces diez o quince veces mejor, además soporta transaccionalidad. Es sólido y estable para su uso en casos genéricos así como en casos extremos cuando es necesario trabajar con sistemas de archivos grandes, utilizar múltiples archivos pequeños o manejar archivos grandes y directorios con miles y miles de archivos.

-JFS: Es un sistema de archivos de 64-bit con respaldo de transacciones creado por IBM. Eficiente respaldo de transacciones (Journaling). sigue el principio de metadata only. En vez de una completa comprobación sólo se tienen en cuenta las modificaciones en los metadatos provocadas por las actividades del sistema. Esto ahorra una gran cantidad de tiempo en la fase de recuperación del sistema tras una caída. Las actividades simultáneas que requieren más entradas de protocolo se pueden unir en un grupo, en el que la pérdida de rendimiento del sistema de archivos se reduce en gran medida mediante múltiples procesos de escritura. Eficiente administración de directorios. Mejor utilización de la memoria mediante adjudicación dinámica de i-nodos.

-UFS: Sistema de datos de Unix. unos pocos bloques al inicio de la partición reservados para bootstrap (el cual debe ser inicializado separadamente del sistema de archivos). Un superbloque que contiene un número mágico (del inglés magic number) identificando esto como un UFS (Unix File System), y algunos otros números vitales describiendo la geometría y parámetros de un punto del comportamiento. Contiene una colección de grupos de cilindros, en cada grupo de cilindros tienen un respaldo del superbloque, una cabecera de cilindro, con estadísticas, lista de espacio libre, etc. Acerca de este bloque de cilindros, similar a los que se encuentran en el superbloque. Un número de i-nodos, en el cual cada conteniendo guarda los atributos del archivo. Los i-nodos son numerados secuencialmente. Los primeros i-nodos están reservados por razones históricas, seguidos por los i-nodos del directorio raíz. Los archivos de directorio contienen sólo la lista de archivos en el directorio y el i-nodo asociado para cada archivo. Todos los metadatos (metadata) son mantenidos en el i-nodo.

-NFS: (Sistema de archivos de red) es un protocolo de nivel de aplicación, según el Modelo OSI. Es utilizado para sistemas de archivos distribuido en un entorno de red de computadoras de área local. Posibilita que distintos sistemas conectados a una misma red accedan a archivos remotos como si se tratara de locales. Se creó con el objetivo de que sea independiente de la máquina, el sistema operativo y el protocolo de transporte. El sistema NFS está dividido al menos en dos partes principales: un servidor y uno o más clientes. Los clientes acceden de forma remota a los datos que se encuentran almacenados en el servidor. Las estaciones de trabajo locales utilizan menos espacio de disco debido a que los datos se encuentran centralizados en un único lugar pero pueden ser accedidos y modificados por varios usuarios, de tal forma que no es necesario replicar la información. Los usuarios no necesitan disponer de un directorio “home” en cada una de las máquinas de la organización. Los directorios “home” pueden crearse en el servidor de NFS para posteriormente poder acceder a ellos desde cualquier máquina a través de la infraestructura de red. También se pueden compartir a través de la red dispositivos de almacenamiento como disqueteras, CD-ROM y unidades ZIP. Esto puede reducir la inversión en dichos dispositivos y mejorar el aprovechamiento del hardware existente en la organización.

## Sistema de organización de archivos en macOS

-HFS: Sistema de Archivos Jerárquico. Originalmente diseñado para ser usado en disquetes y discos duros, también es posible encontrarlo en dispositivos de solo-lectura como los CD-ROMs.

El sistema de archivos jerárquico divide un volumen en bloques lógicos de 512 bytes. Estos bloques lógicos están agrupados juntos en bloques de asignación (allocation blocks) que pueden contener uno o más bloques lógicos dependiendo del tamaño total del volumen.

Hay cinco estructuras que conforman un volumen HFS:

* Bloques lógicos 0 y 1 del volumen son los bloques de arranque, que contienen la información de inicio del sistema, el nombre del archivo de sistema y de shell (por lo general el Finder) que se cargan al iniciar.
* Bloque lógico 2 contiene el directorio MDB (Master Directory Block). Este define una amplia variedad de datos sobre el volumen en sí, la fecha y timestamp de cuando se creó el volumen, la localización de las otras estructuras de volumen, como el volumen del mapa de bits o el tamaño de las estructuras lógicas como los bloques de asignación. También existe un duplicado del MDB llamado Alternate MDB ubicado en el extremo opuesto del volumen en el penúltimo bloque lógico.
* Bloque lógico 3 es el bloque de inicio del volumen del mapa de bits (Volume Bitmap), que mantiene un registro de los bloques de asignación que están en uso y de los que están libres. Cada bloque de asignación en el volumen es representado por un bit en el mapa: si el bit está activado el bloque está en uso; si está desactivado el bloque está libre para ser utilizado.
* El Extent Overflow File (Archivo de desbordamiento) es un árbol B* que contiene extensiones que registran que bloques de asignación están asignados a que archivos, una vez que las tres extensiones iniciales del Catalog File están usadas. Las versiones posteriores también añaden la capacidad de que el Extent Overflow File registre los bloques defectuosos, para evitar que el sistema de archivos intente asignar un bloque defectuoso a un archivo.
* El Catalog File es otro árbol B* que contiene registros para todos los archivos y directorios almacenados en el volumen. Almacena cuatro tipos de registros:
   * Un File Thread Record almacena sólo el nombre del archivo y el catalog node ID (CNID) de su directorio padre.
   * Un File Record almacena diversidad de metadatos sobre el archivo incluyendo su CNID, el tamaño del archivo, tres timestamps (cuando se creó el archivo, la última modificación y cuando se realizó la última copia de seguridad), el primer archivo extendido de los datos y los recursos y punteros al primer dato del archivo y registros de recursos extendidos en el Extent Overflow File.
   * Un Directory Thread Record almacena sólo el nombre del directorio y el CNID de su directorio padre.
   * Un Directory Record almacena datos como el número de archivos almacenados en el directorio, el CNID del directorio, tres marcas de tiempo.

-HFS+:

Los volúmenes de HFS+ están divididos en sectores (bloques lógicos en HFS), de 512 Bytes. Estos sectores están agrupados juntos en un bloque de asignación que contiene uno o más sectores; el número de bloques de asignación depende del tamaño total del volumen. HFS+ usa un valor de dirección para los bloques de asignación mayor que HFS, 32 bit frente a 16 bit de HFS; lo que significa que puede acceder a 232 bloques de asignación.

Hay nueve estructuras que conforman un volumen típico de HFS+:

* Sectores 0 y 1 del volumen son bloques de arranque. Son idénticos a los bloques de arranque de HFS.
* Sector 2 contiene la cabecera del volumen (Volume Header) equivalente al Master Directory Block del HFS. Esta cabecera almacena una amplia variedad de datos sobre el volumen, el tamaño de los bloques de asignación, una marca de tiempo que indica cuando se creó el volumen o la localización de otras estructuras de volumen, como el Catalog File o el Extent Overflow File. La Cabecera del Volumen está siempre colocada en el mismo lugar.
* El Archivo de Asignación (Allocation File) mantiene un registro de bloques de los asignación que están libres y de los que están en uso. Es similar al Volume Bitmap de HFS, cada bloque de asignación está representado por un bit. Un cero significa que el bloque está libre y un uno que está en uso. La diferencia principal con el Volume Bitmap, es que el Allocation File es almacenado como un archivo normal, no ocupa un lugar especial en el espacio reservado al comienzo del volumen. El Allocation File puede también cambiar de tamaño y no tiene que ser almacenado en un volumen contiguo.
* El Catalog File es un árbol B* que contiene registros para todos los archivos y directorios almacenados en el volumen. El Catalog File del HFS+ es similar al de HFS, las diferencias más importantes son que los registros son mayores al permitir más campos y que permite que estos campos sean más grandes (por ejemplo permite nombres de archivo de 255 caracteres Unicode). Los campos en HFS+ tienen un tamaño variable que depende del tamaño del dato que almacena, en HFS el tamaño era fijo.
* El Extents Overflow File es otro árbol B* que registra los bloques de asignación que son asignados a cada archivo. Cada registro de archivo en el Catalog File es capaz de registrar ocho extensiones para cada bifurcación del archivo; una vez que se utilizan, las extensiones son registradas en el Extents Overflow File. También se registran los bloques defectuosos como extensiones en el Extents Overflow File. El tamaño por defecto de un registro de extensión en macOS es 1 KB hasta 4 KB.
* El Archivo de Atributos (Attributes File) es un nuevo árbol B* en HFS+. El Attributes File puede almacenar tres tipos diferentes de registros de 4 KB: registros Inline Data Attribute, registros Fork Data Attribute y registros Extensión Attribute. El primero de ellos almacena pequeños atributos que pueden caber dentro del propio registro. El segundo contiene referencias a un máximo de ocho extensiones que pueden tener atributos. Y el último se utiliza para extender un registro Fork Data Attribute cuando las ocho extensiones están ya en uso.
* El archivo de inicio (Startup File) está diseñado para sistemas que no son macOS y que no tienen soporte HFS o HFS+. Es similar al Bloque de Inicio del volumen HFS.
* La Cabecera del Volumen Alternativa (Alternate Volume Header) equivalente al Alternate Master Directory Block de HFS.
* El último sector en el volumen está reservado por Apple para su uso. Se usa durante el proceso de fabricación de los ordenadores.
