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.
0 comentarios