Ilustrados comunidad mundial educativa
Inicio | Escribenos
User: Pass: Recordar ó (Registrate!)

| !Publicar Articulo¡

Sistema de archivos virtual /proc de linux

Resumen: La palabra "procfs" proviene de "process file system". Antes de comenzar a estudiar el directorio /proc de Linux, es necesario comprender el término "archivo virtual". La mayoría de usuarios de computadoras comprenderán con mucha facilidad el término archivo relacionándolo directamente con ejemplos tales como los archivos de texto que se pueden generar con cualquier procesador de texto.
2,844 visitas
Rating: 0
Tell a Friend
Autor: Jaime Montoya

DESARROLLO
La palabra "procfs" proviene de "process file system". Antes de comenzar a estudiar el directorio /proc de Linux, es necesario comprender el término "archivo virtual". La mayoría de usuarios de computadoras comprenderán con mucha facilidad el término archivo relacionándolo directamente con ejemplos tales como los archivos de texto que se pueden generar con cualquier procesador de texto. Una característica de este tipo de archivos es que a mayor texto que almacena el archivo, mayor es el espacio en disco que consume dicho archivo. Por ejemplo, una línea corta de texto ocupa menos espacio en disco que esa misma línea copiada cien veces. Sin embargo al hablar de "archivos virtuales" las cosas son diferentes, pues este tipo de archivos no consumen espacio en el disco duro, sino que se almacenan en la memoria volátil, es decir la aquel tipo de memoria cuya información se pierde al interrumpirse el flujo de corriente eléctrica, esto es, la memoria RAM.

Para comprobar la diferencia entre un archivo que se almacena en el disco duro y un archivo virtual, se puede hacer el experimento de usar el comando "du" para ver el tamaño de un archivo virtual y luego el comando "cat" para ver su contenido, de esta forma:

root1@root:~$ du /proc/acpi/processor/CPU0/info
0 /proc/acpi/processor/CPU0/info

root1@root:~$ cat /proc/acpi/processor/CPU0/info
processor id: 0
acpi id: 0
bus mastering control: no
power management: no
throttling control: no
limit interface: no


Como se pudo ver en el ejemplo anterior, al usar "du /proc/acpi/processor/CPU0/info" aparece que el archivo /proc/acpi/processor/CPU0/info usa un espacio en el disco duro de 0, es decir que no está consumiendo absolutamente nada de espacio en el disco duro. Sin embargo, al usar "cat /proc/acpi/processor/CPU0/info" se muestra que /proc/acpi/processor/CPU0/info contiene la siguiente información:

processor id: 0
acpi id: 0
bus mastering control: no
power management: no
throttling control: no
limit interface: no


Parece imposible que un archivo que contiene 6 líneas de información tenga un tama ño de 0. Sin embargo con esto se concluye que /proc/acpi/processor/CPU0/info es un archivo virtual, es decir que aunque tenga un tamaño de 0 bytes, puede contener una gran cantidad de información.

Otra prueba interesante que se le puede hacer al archivo /proc/acpi/processor/CPU0/info es la siguiente:

root1@root:~$ ls -la /proc/acpi/processor/CPU0/info
-r--r--r-- 1 root root 0 2007-09-06 21:53 /proc/acpi/processor/CPU0/info


Al listar el archivo con "ls -la", aparece la hora "21:53". Suponiendo que 8 minutos más tarde se vuelve a realizar el mismo procedimiento, el resultado será:

root1@root:~$ ls -la /proc/acpi/processor/CPU0/info
-r--r--r-- 1 root root 0 2007-09-06 22:01 /proc/acpi/processor/CPU0/info


Lo que se muestra con eso es que el archivo /proc/acpi/processor/CPU0/info está siendo modificado constantemente aún cuando el usuario no lo esté abriendo ni guardando cambios en dicho archivo. Eso también revela el comportamiento de un archivo virtual.

Debido a que el contenido de /proc no se encuentra guardado en ningún dispositivo físico (disco duro, CD, DVD, etc.), sino que es construido y presentado dinámicamente, al listar el contenido de uno de los directorios que se encuentra dentro de /proc en dos momentos diferentes, es probable que el contenido no coincida debido a que se reflejará lo que hay en dos momentos distintos, en cada uno de los cuales se mostrará el estado actual del núcleo o kernel de Linux en un tiempo determinado. Por esa razón el contenido de /proc varía con el tiempo y de un sistema a otro (por ejemplo, al disponer de hardware distinto). Lo mismo ocurre al visualizar gráficamente el contenido de /proc, que todo se mantiene en actualización constante y pueden aparecer nuevos directorios o desaparecer algunos sin que el usuario haya hecho ningún cambio añadiendo o eliminando archivos o directorios.

Se puede afirmar entonces que el sistema de archivos virtual /proc permite conocer el estado interno del núcleo o kernel de Linux desde nivel de usuario.

El sistema de archivos /proc permite tanto revisar el estado como también modificar el comportamiento del kernel o núcleo de Linux en cualquier momento.

Como una excelente definición de /proc, se puede decir que es una interfaz entre el kernel o núcleo de Linux y el nivel de usuario con la forma de un sistema de archivos virtual. La utilidad que esto tiene es que se puede obtener y modificar la información del núcleo de Linux interactuando con el sistema de archivos /proc.


Cambiar Archivos Virtuales
En general, todos los archivos que se encuentran en el directorio /proc solamente se pueden leer. Sin embargo, algunos se pueden usar para ajustar la configuración del kernel. Esto ocurre con los archivos del subdirectorio /proc/sys.

Para cambiar el valor de un archivo virtual se debe usar el comando "echo" y el símbolo ">", para redirigir el nuevo valor al archivo. Por ejemplo, para cambiar el nombre del host simplemente se debe escribir lo siguiente:

echo www.jaimemontoya.com > /proc/sys/kernel/hostname

Otros archivos actúan como conmutadores binarios o booleanos. Por ejemplo al escribir "cat /proc/sys/net/ipv4/ip_forward" se verá el valor 0 o el valor 1. El valor 0 indica que el kernel no está realizando el reenvío de paquetes. Si se usa el comando "echo" para cambiar el valor del archivo ip_forward a 1, el kernel activará inmediatamente el reenvío de paquetes:

echo 1 > /proc/sys/net/ipv4/ip_forward

Como se puede ver, /proc es capaz de cambiar el comportamiento del kernel en varios aspectos. Aunque después de reiniciar el sistema, los cambios hechos en /proc se van, debido a que el kernel no guarda dichos cambios para uso posterior, se pueden hacer cambios permanentes recompilando el kernel, de modo que los scripts de init (la madre o padre de todos los procesos) escriban a /proc y que no se tengan que estar editando los archivos virtuales de /proc cada vez que se reinicie la computadora.

Obtención de Información Útil del Sistema/Kernel desde /proc
El sistema de archivos virtual /proc puede ser usado para obtener útil información acerca del sistema y del kernel en ejecución. Algunos de los archivos virtuales de frecuente uso son:

· /proc/cpuinfo - información sobre el CPU (modelo, familia, tamaño de la memoria caché, etc)
· /proc/meminfo - información sobre la memoria RAM física, espacio de intercambio swap, etc.
· /proc/mounts - lista de los sistemas de archivos montados.
· /proc/devices - lista de todos los dispositivos disponibles
· /proc/filesystems - lista de los sistemas de archivos soportados.
· /proc/modules - lista de módulos cargados.
· /proc/version - versión del kernel.
· /proc/cmdline - parámetros pasados al kernel al momento de iniciar.

Directorios en /proc
Primeramente aparecen los directorios de proceso, los cuales pueden hacer referencia al ID de un proceso y contener información específica de ese proceso. Por ejemplo pueden tenerse los siguientes directorios de proceso:

· /proc/1
· /proc/1177
· /proc/2335
· /proc/4536
· /proc/586
· /proc/9


El directorio /proc/acpi es justamente para el sistema ACPI (Advanced Configuration and Power Interface), que fue diseñado para permitir al sistema operativo configurar y controlar los componentes individuales de hardware. Por ejemplo, ACPI puede mostrar información sobre la batería en una laptop, el adaptador de corriente AC, la temperatura, ventilador del procesador, etc. Por ejemplo la temperatura se puede conocer de esta forma:

root1@root:~$ cat /proc/acpi/thermal_zone/THRM/temperature
temperature: 40 C


El directorio /proc/asound muestra información acerca de los controladores de audio. Debe tenerse presente que /proc/asound solamente existirá después que se haya insertado el primer módulo ALSA (en el caso de Linux Debian Etch al haber ejecutado "# apt-get install alsa-*" por ejemplo, para la instalación de los controladores para la tarjeta de sonido). Si no existiera /proc/asound, simplemente significa que el módulo de sonido no fue cargado correctamente.

El directorio /proc/bus contiene información específica sobre los diversos buses disponibles en el sistema. Por ejemplo /proc/bus/pci contiene los datos actuales de los buses PCI disponibles, mientras que /proc/bus/usb contiene la información de los buses USB disponibles.

/proc/driver es un directorio que contiene información para drivers específicos que el kernel está utilizando.

/proc/fs muestra qué sistemas de archivos están siendo exportados. Esto consiste en montar sistemas de archivos sobre la red e interactuar con esos sistemas de archivos como si estuvieran montados localmente.

El directorio /proc/ide contiene información sobre los dispositivos IDE del sistema. Cada canal IDE está representado como un directorio separado, por ejemplo /proc/ide/ide0 y /proc/ide/ide1.

/proc/irq es un directorio que se usa para configurar la afinidad de una IRQ con una CPU. La palabra IRQ proviene de Interrupt ReQuest, donde una interrupción es simplemente una señal que el hardware puede enviar cuando quiere la atención del procesador.

El directorio /proc/net proporciona una visión exhaustiva de diversos parámetros y estadísticas de red. Cada directorio y archivo virtual dentro de este directorio describe aspectos sobre la configuración de la red del sistema.

El directorio /proc/scsi es para dispositivos SCSI conectados.

/proc/self crea un enlace al proceso en ejecución. Esto le permite verse a sí mismo sin tener que conocer su ID de proceso. Dentro de un entorno de la Shell, una lista del directorio /proc/self produce el mismo contenido que una lista del directorio del proceso para ese proceso. Esto significa que con /proc/self se puede mostrar el proceso actual o el proceso en ejecución en un momento dado. Por ejemplo:

root1@root:~$ ls -lah /proc/self
lrwxrwxrwx 1 root root 64 2007-09-07 01:59 /proc/self -> 6394


Se muestra que el proceso en ejecución es el 6394.

El directorio /proc/sys es diferente de otros en /proc porque no sólo proporciona información sobre el sistema sino también permite al administrador activar y desactivar características del kernel. Una buena forma de determinar si un archivo particular se puede configurar o si solamente está diseñado para proporcionar información es viendo los permisos que tiene dicho archivo. Si el root o superusuario tiene permisos de escritura, entonces es un archivo que se puede modificar, pero si solamente existen permisos de lectura, el archivo es únicamente para mostrar información y no para que sea modificado.

El directorio /proc/tty proporciona información acerca de los dispositivos tty disponibles y que se están usando en el sistema.

Obviamente el /proc es una herramienta poderosa con muchísimas aplicaciones útiles. Por ejemplo se puede conocer en detalle la información del CPU de esta manera:

root1@root:~$ cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model : 10
model name : AMD Athlon(tm) XP 2800+
stepping : 0
cpu MHz : 2083.242
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow ts
bogomips : 4170.79

A continuación se explica cada una de las salidas que resultaron de ejecutar "$ cat /proc/cpuinfo".

"processor: 0"= significa que el número "0" es el que el sistema le ha dado al procesador para identificarlo. Suponiendo que hubiera existido otro procesador, podría haber aparecido "processor: 3". Nunca puede repetirse el número, pues cada procesador es identificado por un número único.

"vendor_id: AuthenticAMD"= identifica el fabricante del CPU.

"cpu family: 6" = muestra la familia de procesadores a la que pertenece el procesador detectado por el sistema, en este caso a la familia 6, a la que también pertenecen procesadores tales como Pentium II, Pentium III, Intel Core™ Duo processor, Intel Core™2 Duo processor, etc.

"model: 10"
= es el modelo específico del procesador en relación a los de su mismo tipo, donde un modelo con un número mayor que "10" correspondería en este caso a una versión más reciente mientras que un modelo con un número menor que "10" sería una versión o modelo más atrasado cronológicamente hablando

"model name: AMD Athlon(tm) XP 2800+" = releva el nombre completo del modelo del procesador.

"stepping: 0" = entre menor es el número, más atrasada es la revisión que se le ha hecho al procesador. Ningún procesador es perfecto, de modo que luego de sacarlos al mercado, al hacer nuevas revisiones y mejoras significativas, el número irá aumentando.

"cpu MHz: 2083.242" = muestra la velocidad del procesador en MHz.

"cache size: 512 KB"= la memoria caché es un conjunto de datos duplicados de otros datos originales, con la propiedad de que los datos originales son costosos de acceder, normalmente en tiempo, respecto a la copia en el caché. Cuando se accede por primera vez a un dato, se hace una copia en el caché; los accesos siguientes se realizan a dicha copia, haciendo que el tiempo de acceso medio al datos sea menor. En este caso el procesador cuenta con 512 KB de memoria caché.

"fdiv_bug: no" = el 30 de octubre de 1994 el profesor Thomas Nicely descubrió un error en la unidad de coma flotante del Intel Pentium. Nicely observó que algunas operaciones de división devolvían siempre un valor erróneo por exceso. Otras personas confirmaron rápidamente estos errores en las divisiones. Este fallo de diseño se hizo notorio muy rápidamente y se le dio el nombre de "error FDIV del Pentium" (FDIV es la instrucción de división en coma flotante de los microprocesadores x86. En este caso el procesador AMD Athlon(tm) XP 2800+ no tiene ese error.

"hlt_bug: no" = HLT es una instrucción de lenguaje ensamblador que detiene el procesador cuando no hay trabajo por hacer, reduciendo significativamente el calentamiento del procesador. El procesador en estudio no tiene errores con la ejecución de esta instrucción.

"f00f_bug: no" = el procesador no tiene el error "f00f", que consiste en que cuando el procesador recibe una instrucción específica inválida, la computadora podría dejar de responder hasta que se apague o reinicie. Este procesador en estudio no tiene ese error.

"coma_bug: no" = en este caso el CPU se queda en un ciclo infinito ejecutando instrucciones pero no respondiendo a ningún estímulo externo. Es contrario al "f00f_bug", donde el procesador se detiene. En el caso de "coma_bug", el procesador en vez de detenerse se mantiene operando pero igualmente sin responder correctamente.

"fpu: yes" = el procesador es capaz de trabajar con FPU (Floating Point Unit), es decir punto flotante en los cálculos.

"fpu_exception: yes"= el procesador automáticamente detecta y maneja excepciones o condiciones que pueden afectar potencialmente un cálculo, por ejemplo dividir entre cero ("x / 0") o la raíz de un número negativo ("square(x)"), etc.

"cpuid level: 1" = se deriva de "CPU IDentification" y es una instrucción para la arquitectura x86. Esto permite al software determinar la presencia y características del procesador.

"flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow ts" = son usadas para controlar o indicar el estado intermedio o final o de salida de diferentes operaciones.

"bogomips: 4170.79" = es el valor BogoMIPS, que es una unidad de medida de la velocidad del CPU o computador inventada por Linus Torvals para el kernel de Linux.

AUTOR
Jaime Montoya
jaimemontoya@jaimemontoya.com
www.jaimemontoya.com
Santa Ana, 8 de septiembre de 2007
El Salvador

Articulos relacionados:
Planificando la instalación de un servidor NT
Resumen:
Antes de afrontar la instalación de un sistema NT es recomendable hacer algunas consideraciones y preparar algún material, esto nos puede ahorrar mucho tiempo y quebrader...
Sistemas operativos - VM-370 y Windows NT
Resumen:
Windows NT. VM/370. Arquitecturas soportadas. Tipo de sistema. Tipo de archivos en disco. Gestión de memoria. Comunicaciones. Diferencias entre los sistemas.
Manual de MS- DOS
Resumen:
Dos es un acrónimo de Disk Operating System, sistema operativo creado por Microsoft, y que tienen instalado la mayoría de los ordenadores PC. El DOS es a parte de un sist...
Análisis y diseño e implementación de un sistema académico para el centro educativo de desarrollo infantil bilingüe Angelitos de Luz, utilizando el lenguaje de programación visual FOX PRO 8.0 (pdf)
Resumen:
El objetivo del trabajo es el de implementar un sistema de informatico en el centro educativo de desarrollo infantil bilingüe Angelitos de Luz y contribuir al surgimient...
Introducción al Windows XP
Resumen:
Mayor seguridad para el PC. Cuentas de usuario protegidas. Protección contra intrusos. Restauración del sistema. NTFS, un sistema de archivos más sólido. Sólo para comput...
Copyright © 2011 ilustrados.com, Monografias, tesis, bibliografias, educacion. Tofos los temas y publicaciones son propiedad de sus respectivos autores ©