File system en UNIX

File system en UNIX: Organización y Estructura del sistema de archivos (File System).

Puede considerarse al sistema operativo UNIX en un modelo de capas donde cada capa interactua con la capa superior.
El nucleo residente del sistema operativo se denomina KERNEL. Este está permanentemente residente en memoria mientras el sistema está activo y provee toda la interface entre el hardware y el usuario o sus programas de aplicación. En otras palabras, provee las rutinas y funciones que el usuario dispone a traves de un lenguaje de programación o a traves de los interpretes de comandos. El kernel cumple las funciones de la administración y supervisión general de todo el sistema, es decir que administra los procesos de los usuarios, calculando sus propiedades, proporcionandoles la memoria requerida, asignandoles los tiempos de ejecución y conmutando los recursos de la CPU de tarea en tarea.
Utilizando los recursos del Kernel que son los servicios generales del sistema operativo en bajo nivel, tenemos otras partes que son no residentes, es decir que no necesariamente están en memoria mientras el UNIX está activo. Entre estas partes podemos citar distintos comandos o programas del usuario como  los comandos who, date, wc, grep, ed, vi, ld, comp, cpp, etc., y cabe destacar el interprete de comandos denominado shell (sh). Este último intérprete de comandos es la interface interactiva con el usuario, que le permite ejecutar sus programas o ejecutar comandos del sistema que en definitiva no son más que programas ya provistos con el UNIX que le permiten manejar archivos, copiarlos, crearlos, borrarlos, procesarlos, editarlos, etc. El shell también le permite al usuario controlar la ejecución de sus programas e inclusive conectar programas entre si.
Existen varios tipos de Shell dentro del UNIX y el más conocido de ellos es el denominado Bourne Shell, que toma el nombre de su diseñador, el cual será explicado en este mismo manual más adelante.
El Shell es el programa con el cual nos relacionamos cuando estamos trabajando en forma interactiva dentro del UNIX. En las capas periféricas de la estructura podemos ubicar otros programas ya sean provistos con el UNIX (como el compilador C denominado cc) o escritos por el usuario mismo, como pueden ser programas de cálculo o un sistema de contabilidad realizados en cualquier otro lenguaje.
Es decir que el modelo de capas, la capa más interna (Kernel) provee los servicios y recursos para ser utilizados por las capas más externas. Las capas más externas son los altos niveles de trabajo mientras que las capas más internas son los niveles de trabajo de bajo nivel o más cercanos al hardware.
Puesto que toda la interface con el hardware se hace a traves del Kernel, los programas del sistema y los programas de aplicación resultan independientes del hardware y son portables entre distintas instalaciones de UNIX.
El UNIX mantiene los archivos en el disco organizados bajo una forma jerárquica denominada file?system  o sistema de archivos. Podemos representar a esta estructura mediante un árbol cuya raiz es un directorio principal denominado root. El directorio raiz se simboliza con el símbolo "/" y es el punto de arranque de todo el sistema de archivos. Dentro del mismo encontraremos rachivos y otros directorios. Por ejemplo, tendremos los directorios bin, etc, usr, tmp, mnt y otros. Cada directorio puede contener a su vez otros directorios y archivos, y así podemos continuar la estructura abriendo directorios dentro de otros directorios tantos niveles como querramos.
Obviamente, en la profundidad del árbol existe un límite dado por la practicidad. Las hojas del árbol son archivos y las ramas o nudos son directorios.
Los siguientes directorios principales dependen del directorio raiz:
root     –+– /bin         Comandos más comunes del UNIX.
|
|– /dev         Dispositivos especiales.
|
|– /etc           Programas adicionales y archivos de datos default.
|
|– /usr           Rutinas de servicio del usuario.
|
|– /lib           Librerías de programas en C y otros programas.
|
|– /mnt         Reservado para montar otros filesystems.
|
|– /tcb          Archivos del sistem pertenecientes al TCB (seguridad del sistema).
|
|– /tmp         Archivos temporarios del sistema.
|
|– /lost+found  Archivos recuperados luego del FSCK (FileSystem  Check).
|
|– /usr1         Filesystem montado (no /mnt). El nombre es libremente elegible por el
Administrador, en este cado es usr1 (puede ser también /u).

Contenido del directorio /dev.

dev     –+– /console   Consola del sistema.
|
|– /fd*           Diskettes (dispositivos tipo bloque).
|
|– /hd*          Discos rígidos (dispositivos tipo bloque).
|
|– /lp*           Impresoras en paralelo.
|
|– /rfd*         Diskettes (dispositivos tipo caracter).
|
|– /rhd*         Discos rígidos (dispositivos tipo caracter).
|
|– /root          Filesystem raiz.
|
|– /tty*          Líneas serie (terminales e impresoras serie).
|
|– /u              Filesystem ‘u’.
|
|– /clock        Reloj del sistema.
|
|– /null          Dispositivo nulo.

 

Contenido del directorio /etc

/etc     –+– /rc*          Scripts para llevar al sistema a modo multiusuario.

|– /default     –+– /boot       Default para booteo.
|                        |
|                        |– /auths       Default p/creación de usuarios.
|                        |
|                        |– /format     Default formateo diskette UNIX.
|                        |
|                        |– /tar           Default para comando tar.
|                        |
|                        |– /cleantmp Directorios temporarios a borrar.
|                        |
|                        |– /login       Default para login.
|                        |
|                        |– /lpd          Default para impresión.
|                        |
|                        |– /msdos     Dispositivos para comandos DOS.
|                        |
|                        |– /passwd   Default para configuración de passwords.
|                        |
|                        |– /filesys     Tabla de filesystems a montar.
/etc     –|
|
|– /init           Script final inicialización del Kernel.
|
|– /inittab      Tabla utilizada por init.
|
|– /profile      Script ambiental  (.profile) default p/ creación de usuarios con Bourne Shell.
|
|– /cshrc        Idem /profile para C-Shell (.cshrc).
|
|– /groups      Información sobre los grupos.
|
|– /passwd    Información sobre los usuarios.
|
|– /gettydefs Usado por comando getty para fijar la línea serie (terminal).
|
|– /termcap    Características de las terminales.
|
|– /systemid  Identificación del sistema.
|
|– /mnttab     Tabla de dispositivos montados por comando mount.
|
|– /conf/cf.d  –+– /configure   Cambio de parametros del Kernel.
|                        |
|                        |– /link_unix              Re-linkea el Kernel.
|                        |
|                        |– /init.base     Mantiene cambios efectuados en inittab.
|                        |
|                        |– /mtune        Información sobre parametros del sistema.
|                        |
|                        |– /stune          Seteo parametros del sistema.
|                        |
|                        |– /mdevice     Descripción de los drivers.

 

/etc/conf/cf.d: Directorio de configuración del Kernel.
/etc/default:    Información por defecto paa algunos comandos.

Contenido de directorio /usr.

/usr    –+– /bin           Comandos del UNIX.
|
|– /include     Archivos *.c del compilador C.
|
|– /lib  ———-+– /goodpw Archivos de texto y programas para la elección de passwords.
|                        |
|                        |– /grafinfo  Información sobre terminales gráficas.
|                        |
|                        |– /keyboard            Información sobre teclados.
|                        |
|                        |– /terminfo/terminfo.src     Características de terminales.
|                        |
|                        |– /mkuser/homepaths         Directorios casa de los usuarios.
|                        |
|                        |– /sysadmin/schedule         Tabla de backups programados.
|                        |
|– /spool       –+– /mail                    Mensajes recibidos por mail.
|                        |
|                        |– /uucppublic          Archivos recibidos por uucp.
|                        |
|                        |– /lp/model             Interfaces para impresoras.
|                        |
|                        |– /lp/log/requests    Información pedidos de impresión.
|                        |
|– /adm          –+– /hwconfig          Información del hardware instalado.
|                        |
|                        |– /messages            Mensajes de error enviados a consola.
|                        |
|– /pub          –+– /ascii                   Tabla ASCII.
|                        |
|                        |– /greek                  Letras Griegas.

Hay que señalar que siempre estamos posicionados en algún directorio de la estructura, al cual denominaresmos el directorio corriente.

 

Pathnames y nombres de archivos.

Se denomina pathname a la cadena de nombres de directorios que deben ser recorridos a lo largo de la estructura para llegar hasta un archivo determinado. Cada nombre de directorio se separa con una barra. Ejemplo: /usr/carlos/arc1.
Dicho pathname puede ser absoluto o relativo.
El pathname absoluto es aquel que comienza con una barra indicando que se inicia la exploración desde el directorio raiz, y es el que corresponde al ejemplo dado.
El pathname relativo en cambio, parte de la idea de que uno siempre esta trabajando en un directorio determinado, el directorio corriente, y la descripción de la cadena de directorios comienza por el.
Así por ejemplo, en el ejemplo anterior, si nuestro directorio corriente es el   /usr/carlos  podemos acceder al archivo arc1 simplemente indicando su nombre sin nada que lo preceda. El directorio corriente también se simboliza con el punto (.). Así en el último ejemplo podemos especificar el mismo archivo con ./carlos/arc1.
El "." es un símbolo especial que indica el directorio corriente pero también hay otro símbolo especial que es el "..", el cual indica el directorio padre o inmediato anterior de aquel en el cual estamos posicionados.  Así si nos encontramos en el directorio /usr/ruben, y queremos acceder al archivo que se encuentra en /usr/carlos/arc1, podemos indicarlo como ../carlos/arc1. Al indicar  ..   estamos dando un pathname que arranca desde el directorio padre o inmediato anterior del corriente, es decir desde el directorio /usr.
Hay que hacer notar que en el directorio /usr/ruben puede existir otro archivo cno el nombre arc1 sin que origine ningún conflicto o ambigüedad, puesto que los pathnames son diferentes. Esto establece la regla que impide la duplicación de los nombres de archivo y es que no pueden existir en el sistema dos archivos con el mismo pathname.
Los nombres de los archivos en UNIX pueden tener hasta 14 caracteres de longitud. Pueden incluirse letras y números, mayúsculas y minúsculas y signos como .  –  +  _  quedando exceptuados expresamente algunos signos como "/", "\", "?","*", y otros. Cabe destacar que UNIX diferencia las letras minúsculas de las mayúsculas, de tal manera que no será los mismo el archivo arc1 que el archivo ARC1.



También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *