Descargar

Sistema de Archivos Virtual /proc de Linux (página 2)

Enviado por jaimemontoya


Partes: 1, 2

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.

 

Jaime Montoya

Santa Ana, 8 de septiembre de 2007

El Salvador

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente