Diferencia entre revisiones de «Introducción en la administración de archivos»
(todo pertenece a la organización de ficheros y directorios) |
(→Propietario, grupo y permisos) |
||
(No se muestran 34 ediciones intermedias de 7 usuarios) | |||
Línea 1: | Línea 1: | ||
− | + | Se trata de la parte del sistema operativo que se encarga de la organización de los ficheros en el sistema operativo. También se le conoce como 'sistema de ficheros'. | |
− | + | = Estructura lógica del sistema de ficheros = | |
− | + | == Fichero == | |
− | + | Un fichero es un contenedor de información que consta como mínimo de un nombre, además de una serie de atributos (llamados [https://es.wikipedia.org/wiki/Metadatos metadatos]) como la fecha de creación, última actualización, propietario, grupo entre otros; y un número de bloques asignados. | |
− | + | == Directorio (Carpeta) == | |
− | + | Un directorio o carpeta es un contenedor de ficheros. Por lo general, disponen a su vez de dos pseudodirectorios denominados "." y ".." que sirven como referencia al propio directorio y al directorio padre. De esta manera, los directorios se organizan en una estructura arbórea con una cierta raíz. | |
− | + | == Árbol directorios == | |
− | |||
− | = | ||
La organización de los directorios y ficheros en los sistemas operativos modernos emplea una estructura arbórea en la que existe un directorio raíz del que penden todos los demás directorios y ficheros. | La organización de los directorios y ficheros en los sistemas operativos modernos emplea una estructura arbórea en la que existe un directorio raíz del que penden todos los demás directorios y ficheros. | ||
Línea 27: | Línea 25: | ||
f3 f4 | f3 f4 | ||
− | En el caso de sistemas operativos tipo Unix, la raíz se identifica con el directorio /. Para sistemas operativos de tipo-Microsoft, existe un directorio raíz por unidad. Cada unidad se trata de un sistema de fichero independiente que se identifica mediante una letra seguida de dos puntos, por ejemplo ''' | + | En el caso de sistemas operativos tipo Unix, la raíz se identifica con el directorio /. Para sistemas operativos de tipo-Microsoft, existe un directorio raíz por unidad. Cada unidad se trata de un sistema de fichero independiente que se identifica mediante una letra seguida de dos puntos, por ejemplo '''C:\''' . |
== Propietario, grupo y permisos == | == Propietario, grupo y permisos == | ||
− | Todo fichero o directorio en un sistema operativo moderno dispone de al menos un propietario que define las acciones que se pueden realizar sobre | + | Todo fichero o directorio en un sistema operativo moderno dispone de al menos un propietario que define las acciones que se pueden realizar sobre los ficheros. Por lo general son las siguientes: |
− | * Lectura: | + | * Lectura: Da la posibilidad de leer el contenido del fichero. |
− | * Modificación: | + | * Modificación: Da la posibilidad de modificar el contenido del fichero. |
− | * Ejecución: | + | * Ejecución: Da la posibilidad de ejecutar el fichero. |
En general, este esquema se aplica al propietario, al grupo y al resto del mundo, de manera que el propietario de cualquier fichero o directorio establece los permisos. Por ejemplo, un fichero con un documento ofimático puede ser leído y modificado por el propietario y por el grupo, pero no por el resto del mundo. | En general, este esquema se aplica al propietario, al grupo y al resto del mundo, de manera que el propietario de cualquier fichero o directorio establece los permisos. Por ejemplo, un fichero con un documento ofimático puede ser leído y modificado por el propietario y por el grupo, pero no por el resto del mundo. | ||
+ | |||
+ | Ejemplo: | ||
+ | |||
+ | propietario grupo resto del mundo | ||
+ | rwx rwx rwx | ||
+ | |||
+ | fichero.odt: rw------- (fichero openoffice con sólo lectura y escritura para el propietario) | ||
+ | sudoku: rwxr-xr-x (fichero ejecutable con permisos de lectura, modificación y ejecución para el propietario) | ||
+ | |||
+ | El propietario, el grupo y los permisos asociados son metainformación que se almacena en el sistema de ficheros. | ||
+ | |||
+ | == Directorio de trabajo actual == | ||
+ | |||
+ | Todo sistema de fichero dispone de un cursor que indica cuál es el directorio de trabajo actual. Este directorio de trabajo actual puede alterarse a través de la llamada al sistema 'sys_chdir'. | ||
+ | |||
+ | == Ruta absoluta== | ||
+ | |||
+ | Las rutas absolutas, o completas, señalan la ubicación de un archivo o directorio desde el directorio raíz del sistema de archivos. | ||
+ | Por ejemplo, es una ruta absoluta /home/dir/ff.txt, que señala la ubicación del archivo ff.txt desde la raíz del sistema de archivos. | ||
+ | |||
+ | == Ruta relativa== | ||
+ | |||
+ | Las rutas relativas señalan la ubicación de un archivo o directorio a partir del directorio de trabajo actual. | ||
+ | |||
+ | Por ejemplo, es una ruta relativa dir/ff.txt que señala al ff.txt dentro del directorio dir en la ubicación actual. | ||
+ | En sistemas tipo UNIX, la ruta ~/ es una ruta relativa que lleva al directorio personal del usuario que ha insertado la ruta relativa; | ||
+ | por ejemplo, si el usuario Fulano tiene una imagen en su directorio personal, esta imagen podría tener dos rutas de acceso, una relativa y una absoluta: | ||
+ | -La absoluta: /home/fulano/imagen.jpg | ||
+ | -La relativa: ~/imagen.jpg | ||
+ | |||
+ | Las rutas relativas utilizan dos símbolos especiales, un punto (.) y dos puntos seguidos (..), lo que significa el directorio actual y el directorio padre. | ||
+ | Los dos puntos seguidos se utilizan para subir en la jerarquía. Un único punto representa el directorio actual. | ||
+ | |||
+ | = Gestión del sistema de ficheros = | ||
+ | |||
+ | Un sistema de fichero se trata de la estructura lógica (mediante un tipo abstracto de datos como una tabla, una lista o un árbol) y el conjunto de mecanismos que se emplean para gestionar los bloques asignados a ficheros y los bloques libres. | ||
+ | |||
+ | == Bloque == | ||
+ | |||
+ | La memoria disponible en un dispositivo de almacenamiento masivo se divide en porciones de igual tamaño denominados '''bloques'''. Dichos bloques se asignan completamente y en exclusividad a un fichero de manera que un fichero está compuesto por un conjunto de bloques. | ||
+ | |||
+ | El tamaño de bloque es un parámetro que se establece en el tiempo de formateo. Por lo general, se emplean bloques de 4 KB y 8 KB dependiendo del tamaño de palabra del procesador. No obstante, es un parámetro configurable. En el caso de un sistema que tenga que alojar gran cantidad de ficheros muy pequeños, podría reducirse el tamaño de bloque para hacer un mejor aprovechamiento del espacio de almacenamiento en disco. | ||
+ | |||
+ | *Aspectos relevantes en la elección del tamaño de los bloques: | ||
+ | |||
+ | Podemos destacar los siguientes 4 aspectos: | ||
+ | |||
+ | '''Desperdicio interno:''' | ||
+ | Cuanto mayor sean los bloques mayor desperdicio interno se producirá en el último bloque del fichero. | ||
+ | |||
+ | '''Tiempos de espera:''' | ||
+ | Cuanto mayor sea el bloque menos bloques formarán los ficheros con lo que se reduce el numero de accesos al soporte y, en consecuencia, los tiempos de espera. | ||
+ | |||
+ | '''Espacio intermedio:''' | ||
+ | Cuanto mayor sean los bloques mayor será el espacio necesario para mantenerlos cargados en memoria mientras se opera con ellos. | ||
+ | |||
+ | '''Aprovechamiento de las operaciones de lectura y escritura:''' | ||
+ | Si el proceso no realiza accesos a memoria secuenciales, sino que son aleatorios, es muy probable que solo necesite unos pocos octetos de cada bloque del fichero. Sin embargo en cada lectura y escritura los bloques se leen o escriben completamente, lo que significa un desaprovechamiento de las operaciones de lectura y escritura. | ||
== Tabla de entrada de ficheros == | == Tabla de entrada de ficheros == | ||
Línea 43: | Línea 99: | ||
Todo directorio dispone de una tabla de entrada de ficheros. Por cada entrada existe al menos una referencia al primer bloque que forma parte de dicho fichero, así como otros atributos como el propietario del fichero, la fecha de último acceso, modificación, etc. | Todo directorio dispone de una tabla de entrada de ficheros. Por cada entrada existe al menos una referencia al primer bloque que forma parte de dicho fichero, así como otros atributos como el propietario del fichero, la fecha de último acceso, modificación, etc. | ||
− | + | ||
− | + | [[Archivo:Directorios2.png]] | |
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Cada tabla de entrada de ficheros ocupa como mínimo un bloque. Por cada entrada se almacena la siguiente información: | Cada tabla de entrada de ficheros ocupa como mínimo un bloque. Por cada entrada se almacena la siguiente información: | ||
Línea 63: | Línea 113: | ||
De esta manera, cada entrada ocupa un número de bytes. Suponiendo que toda entrada requiera 64 bytes, si se emplea un tamaño de bloque de 4 KB, con un bloque se podrían mantener hasta 64 entradas. En caso de que un directorio tuviera más entradas, serían necesarios más bloques para la tabla de entrada de ficheros. | De esta manera, cada entrada ocupa un número de bytes. Suponiendo que toda entrada requiera 64 bytes, si se emplea un tamaño de bloque de 4 KB, con un bloque se podrían mantener hasta 64 entradas. En caso de que un directorio tuviera más entradas, serían necesarios más bloques para la tabla de entrada de ficheros. | ||
− | |||
− | + | ==Llamadas a sistema para manejo de archivos== | |
+ | |||
+ | El UNIX proporciona un conjunto de llamadas al sistema para la manipulación de archivos. | ||
+ | Todas las aplicaciones o utilidades que en UNIX trabajan con archivos están fundamentadas en estos servicios básicos. | ||
+ | La biblioteca estándar de C dispone de un conjunto de funciones para utilizar directamente estas llamadas al sistema, | ||
+ | proporcionando al programador la misma visión que sobre los recursos tiene el sistema operativo UNIX. | ||
+ | Dentro del kernel de Linux, este descriptor es manejado por un entero (del tipo C int) llamado el descriptor del archivo, abreviado fd. | ||
+ | Una gran parte de la programación del sistema Linux consiste en abrir, manipular, cerrar y usar descriptores de archivos. | ||
+ | |||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Llamada a sistema | ||
+ | ! Número | ||
+ | ! Descripción | ||
+ | |- | ||
+ | |-operaciones sobre ficheros- | ||
+ | |- | ||
+ | | sys_close | ||
+ | | 3 | ||
+ | | cerrar un descriptor de archivo | ||
+ | |- | ||
+ | | sys_creat | ||
+ | | 85 | ||
+ | | abrir archivo, y si no existe, crealo | ||
+ | |- | ||
+ | | sys_open | ||
+ | | 2 | ||
+ | | abrir un archivo | ||
+ | |- | ||
+ | | sys_rename | ||
+ | | 82 | ||
+ | | renombrar un archivo | ||
+ | |- | ||
+ | | sys_truncate | ||
+ | | 76 | ||
+ | | truncar un archivo a una longitud especificada | ||
+ | |- | ||
+ | | sys_link | ||
+ | | 86 | ||
+ | | crear un enlace simbolico o duro a un archivo | ||
+ | |- | ||
+ | |- | ||
+ | | sys_unlink | ||
+ | | 87 | ||
+ | | eliminar un archivo | ||
+ | |- | ||
+ | | sys_chdir | ||
+ | | 80 | ||
+ | | cambiar directorio de trabajo actual (Cambia el Current Working Directory) | ||
+ | |- | ||
+ | | sys_chroot | ||
+ | | 161 | ||
+ | | cambiar el directorio raíz (Sólo para el administrador) | ||
+ | |- | ||
+ | | sys_mkdir | ||
+ | | 83 | ||
+ | | crea un directorio | ||
+ | |- | ||
+ | | sys_rmdir | ||
+ | | 84 | ||
+ | | elimina un directorio (sólo si está vacío el directorio) | ||
+ | |- | ||
+ | | sys_stat | ||
+ | | 4 | ||
+ | | obtener metadatos de archivo | ||
+ | |- | ||
+ | | sys_chmod | ||
+ | | 90 | ||
+ | | cambiar los permisos de un archivo | ||
+ | |- | ||
+ | | sys_chown | ||
+ | | 92 | ||
+ | | cambiar el propietario y grupo de un archivo | ||
+ | |- | ||
+ | | sys_utime | ||
+ | | 132 | ||
+ | | Cambiar tiempos de último acceso y de modificación de un archivo | ||
+ | |- | ||
+ | | sys_getcwd | ||
+ | | | ||
+ | | Obtiene el directorio de trabajo actual (Current Working Directory) | ||
+ | |} | ||
+ | |||
+ | 12.2 [[FAT | FAT]] | ||
+ | |||
+ | == Material suplementario == | ||
+ | |||
+ | Sistemas de ficheros por Daniel García [[Archivo:Sistemas-de-ficheros-fat-ext2-ext3-y-ext4.pdf]]. |
Revisión actual del 04:30 30 may 2019
Se trata de la parte del sistema operativo que se encarga de la organización de los ficheros en el sistema operativo. También se le conoce como 'sistema de ficheros'.
Estructura lógica del sistema de ficheros
Fichero
Un fichero es un contenedor de información que consta como mínimo de un nombre, además de una serie de atributos (llamados metadatos) como la fecha de creación, última actualización, propietario, grupo entre otros; y un número de bloques asignados.
Directorio (Carpeta)
Un directorio o carpeta es un contenedor de ficheros. Por lo general, disponen a su vez de dos pseudodirectorios denominados "." y ".." que sirven como referencia al propio directorio y al directorio padre. De esta manera, los directorios se organizan en una estructura arbórea con una cierta raíz.
Árbol directorios
La organización de los directorios y ficheros en los sistemas operativos modernos emplea una estructura arbórea en la que existe un directorio raíz del que penden todos los demás directorios y ficheros.
raíz /\ / \ d1 d2 / \ \ f1 f2 d3 /\ / \ f3 f4
En el caso de sistemas operativos tipo Unix, la raíz se identifica con el directorio /. Para sistemas operativos de tipo-Microsoft, existe un directorio raíz por unidad. Cada unidad se trata de un sistema de fichero independiente que se identifica mediante una letra seguida de dos puntos, por ejemplo C:\ .
Propietario, grupo y permisos
Todo fichero o directorio en un sistema operativo moderno dispone de al menos un propietario que define las acciones que se pueden realizar sobre los ficheros. Por lo general son las siguientes:
- Lectura: Da la posibilidad de leer el contenido del fichero.
- Modificación: Da la posibilidad de modificar el contenido del fichero.
- Ejecución: Da la posibilidad de ejecutar el fichero.
En general, este esquema se aplica al propietario, al grupo y al resto del mundo, de manera que el propietario de cualquier fichero o directorio establece los permisos. Por ejemplo, un fichero con un documento ofimático puede ser leído y modificado por el propietario y por el grupo, pero no por el resto del mundo.
Ejemplo:
propietario grupo resto del mundo rwx rwx rwx
fichero.odt: rw------- (fichero openoffice con sólo lectura y escritura para el propietario) sudoku: rwxr-xr-x (fichero ejecutable con permisos de lectura, modificación y ejecución para el propietario)
El propietario, el grupo y los permisos asociados son metainformación que se almacena en el sistema de ficheros.
Directorio de trabajo actual
Todo sistema de fichero dispone de un cursor que indica cuál es el directorio de trabajo actual. Este directorio de trabajo actual puede alterarse a través de la llamada al sistema 'sys_chdir'.
Ruta absoluta
Las rutas absolutas, o completas, señalan la ubicación de un archivo o directorio desde el directorio raíz del sistema de archivos. Por ejemplo, es una ruta absoluta /home/dir/ff.txt, que señala la ubicación del archivo ff.txt desde la raíz del sistema de archivos.
Ruta relativa
Las rutas relativas señalan la ubicación de un archivo o directorio a partir del directorio de trabajo actual.
Por ejemplo, es una ruta relativa dir/ff.txt que señala al ff.txt dentro del directorio dir en la ubicación actual. En sistemas tipo UNIX, la ruta ~/ es una ruta relativa que lleva al directorio personal del usuario que ha insertado la ruta relativa; por ejemplo, si el usuario Fulano tiene una imagen en su directorio personal, esta imagen podría tener dos rutas de acceso, una relativa y una absoluta: -La absoluta: /home/fulano/imagen.jpg -La relativa: ~/imagen.jpg
Las rutas relativas utilizan dos símbolos especiales, un punto (.) y dos puntos seguidos (..), lo que significa el directorio actual y el directorio padre. Los dos puntos seguidos se utilizan para subir en la jerarquía. Un único punto representa el directorio actual.
Gestión del sistema de ficheros
Un sistema de fichero se trata de la estructura lógica (mediante un tipo abstracto de datos como una tabla, una lista o un árbol) y el conjunto de mecanismos que se emplean para gestionar los bloques asignados a ficheros y los bloques libres.
Bloque
La memoria disponible en un dispositivo de almacenamiento masivo se divide en porciones de igual tamaño denominados bloques. Dichos bloques se asignan completamente y en exclusividad a un fichero de manera que un fichero está compuesto por un conjunto de bloques.
El tamaño de bloque es un parámetro que se establece en el tiempo de formateo. Por lo general, se emplean bloques de 4 KB y 8 KB dependiendo del tamaño de palabra del procesador. No obstante, es un parámetro configurable. En el caso de un sistema que tenga que alojar gran cantidad de ficheros muy pequeños, podría reducirse el tamaño de bloque para hacer un mejor aprovechamiento del espacio de almacenamiento en disco.
- Aspectos relevantes en la elección del tamaño de los bloques:
Podemos destacar los siguientes 4 aspectos:
Desperdicio interno: Cuanto mayor sean los bloques mayor desperdicio interno se producirá en el último bloque del fichero.
Tiempos de espera: Cuanto mayor sea el bloque menos bloques formarán los ficheros con lo que se reduce el numero de accesos al soporte y, en consecuencia, los tiempos de espera.
Espacio intermedio: Cuanto mayor sean los bloques mayor será el espacio necesario para mantenerlos cargados en memoria mientras se opera con ellos.
Aprovechamiento de las operaciones de lectura y escritura: Si el proceso no realiza accesos a memoria secuenciales, sino que son aleatorios, es muy probable que solo necesite unos pocos octetos de cada bloque del fichero. Sin embargo en cada lectura y escritura los bloques se leen o escriben completamente, lo que significa un desaprovechamiento de las operaciones de lectura y escritura.
Tabla de entrada de ficheros
Todo directorio dispone de una tabla de entrada de ficheros. Por cada entrada existe al menos una referencia al primer bloque que forma parte de dicho fichero, así como otros atributos como el propietario del fichero, la fecha de último acceso, modificación, etc.
Cada tabla de entrada de ficheros ocupa como mínimo un bloque. Por cada entrada se almacena la siguiente información:
- Nombre del fichero o directorio (tamaño variable)
- Fecha de creación y último acceso (entero sin signo de 64-bits)
- Propietario (entero sin signo de 32-bits para el identificador de usuario)
- Grupo (entero sin signo de 32-bits para el identificador de grupo)
- Permisos (entero sin signo de 16 bits que codifican los permisos).
De esta manera, cada entrada ocupa un número de bytes. Suponiendo que toda entrada requiera 64 bytes, si se emplea un tamaño de bloque de 4 KB, con un bloque se podrían mantener hasta 64 entradas. En caso de que un directorio tuviera más entradas, serían necesarios más bloques para la tabla de entrada de ficheros.
Llamadas a sistema para manejo de archivos
El UNIX proporciona un conjunto de llamadas al sistema para la manipulación de archivos. Todas las aplicaciones o utilidades que en UNIX trabajan con archivos están fundamentadas en estos servicios básicos. La biblioteca estándar de C dispone de un conjunto de funciones para utilizar directamente estas llamadas al sistema, proporcionando al programador la misma visión que sobre los recursos tiene el sistema operativo UNIX. Dentro del kernel de Linux, este descriptor es manejado por un entero (del tipo C int) llamado el descriptor del archivo, abreviado fd. Una gran parte de la programación del sistema Linux consiste en abrir, manipular, cerrar y usar descriptores de archivos.
Llamada a sistema | Número | Descripción |
---|---|---|
sys_close | 3 | cerrar un descriptor de archivo |
sys_creat | 85 | abrir archivo, y si no existe, crealo |
sys_open | 2 | abrir un archivo |
sys_rename | 82 | renombrar un archivo |
sys_truncate | 76 | truncar un archivo a una longitud especificada |
sys_link | 86 | crear un enlace simbolico o duro a un archivo |
sys_unlink | 87 | eliminar un archivo |
sys_chdir | 80 | cambiar directorio de trabajo actual (Cambia el Current Working Directory) |
sys_chroot | 161 | cambiar el directorio raíz (Sólo para el administrador) |
sys_mkdir | 83 | crea un directorio |
sys_rmdir | 84 | elimina un directorio (sólo si está vacío el directorio) |
sys_stat | 4 | obtener metadatos de archivo |
sys_chmod | 90 | cambiar los permisos de un archivo |
sys_chown | 92 | cambiar el propietario y grupo de un archivo |
sys_utime | 132 | Cambiar tiempos de último acceso y de modificación de un archivo |
sys_getcwd | Obtiene el directorio de trabajo actual (Current Working Directory) |
12.2 FAT
Material suplementario
Sistemas de ficheros por Daniel García Archivo:Sistemas-de-ficheros-fat-ext2-ext3-y-ext4.pdf.