¿Con qué frecuencia se actualiza el sistema de archivos proc en Linux?

33

¿Con qué frecuencia se procactualiza el sistema de archivos en Linux? ¿Son 20 milisegundos (tiempo cuántico)?

samarasa
fuente
1
+1. Esta es una gran pregunta de tarea para los estudiantes. Gracias.
Jonathan Ben-Avraham
55
@ JonathanBen-Avraham Siéntase libre de preguntar en meta si la comunidad le permite crear una etiqueta de "gran tarea" ... 8-)
Hauke ​​Laging
Consulte también ¿Qué sucede cuando ejecuto el comando cat / proc / cpuinfo?
Gilles 'SO- deja de ser malvado'

Respuestas:

46

La información que lee del sistema de archivos proc no se almacena en ningún medio (ni siquiera en la RAM), por lo que no hay nada que actualizar.

El propósito del sistema de ficheros proc es permitir que los programas de espacio de usuario para obtener los datos o conjunto de núcleo utilizando el sencillo sistema de archivos y familiarizado semántica ( open, close, read, write, lseek), a pesar de que los datos que se lee o escribe no reside en cualquier medio. Esta decisión de diseño se consideró mejor (p. Ej., Legible por humanos y fácilmente programable) para obtener y establecer datos cuyo formato no se podía especificar de antemano que implementar algo como los OID codificados por ASN1, que también habrían funcionado bien.

Los datos que ve cuando lee del sistema de archivos proc se generan sobre la marcha cuando realiza una lectura desde el comienzo de un archivo. Es decir, hacer la lectura hace que los datos sean generados por una función de devolución de llamada del núcleo que es específica del archivo que está leyendo. Hacer un lseekal principio del archivo y leer de nuevo provoca otra llamada a la devolución de llamada que genera los datos nuevamente. De manera similar, cuando escribe en un archivo grabable en el sistema de archivos proc, se llama a una función de devolución de llamada que analiza la entrada y establece las variables del núcleo. Los datos de entrada en su forma sin procesar no se almacenan.

Lo anterior es solo una forma un poco más detallada de decir lo que Hauke ​​Laging dice de manera tan sucinta. Te sugiero que aceptes su respuesta.

Jonathan Ben-Avraham
fuente
Si necesita pruebas de que esta respuesta es verdadera, intente ejecutar inotify en un "archivo" o directorio en / proc (o / sys para el caso) ... es una lástima, haría que udev sea completamente innecesario si solo pudiera decirle un simple proceso de inotify para ejecutar x cuando algo aparece en y
technosaurus
24

Se actualiza en cada acceso. Ves el estado del núcleo en ese momento. Es por eso que el tamaño que se muestra para los "archivos" no es el tamaño real. El tamaño real puede cambiar y se determina en el momento en que accede al archivo.

Se podría decir que puede que no se actualice durante días. Si no lo miras. :-)

Hauke ​​Laging
fuente
10
+1. Es un poco como el dicho: "Si un árbol cae en un bosque y no hay nadie cerca para escucharlo, ¿emite un sonido?", Es decir, "Si hay un sistema de archivos de proceso y nadie lo lee, ¿existe? ? ".
Jonathan Ben-Avraham
@ JonathanBen-Avraham Se podría decir eso de cada FS, ¿no? :-) Pero tenga en cuenta que hay muchos más accesos al proceso de lo que uno podría suponer. Comenta en fstab, reinicia, y se desata el infierno ...
Hauke ​​Laging
Lo que quise decir es que los datos en un sistema de archivos respaldado por medios existen incluso cuando nadie los lee en ningún momento en particular. No surge en el momento de leer como proc y sys. Tienes razón, proc tiene muchos lectores. Sin embargo, sys es un sistema de archivos similar que puede comentar fuera de fstab, al menos en sistemas más pequeños y aún ejecutar Ok. Aclamaciones.
Jonathan Ben-Avraham
44
Entonces, ¿el gato está muerto o no? Echa un vistazo y mira. Está muerto, Jim. Pobre gato.
0x7c0
@HaukeLaging No tengo el /proc/en mi archivo fstab ☹
Hola-Angel