¿Cómo se implementa /proc/self en Linux?

¿Cómo se implementa /proc/self en Linux?

Estaba jugando con el /procsistema de archivos en Linux y encontré /proc/self, que es un enlace simbólico al directorio del proceso actual. Me gustaría saber cómo se implementa. Una solución sería cambiar ese enlace simbólico encada cambio de contexto, pero obviamente eso es muy costoso ya que implica acceso al disco.

Respuesta1

http://lxr.linux.no/linux+v3.2.9/fs/proc/base.c#L2482es la implementación actual.

El procsistema de archivos es completamente virtual y está implementado de modo que el VFS interno readlinkdelega en el lugar correcto para enlaces simbólicos especiales. Por lo tanto, calcula a qué selfpuntos se lee/recorre, no cada cambio de contexto.

Respuesta2

Los archivos /procno se almacenan en un disco, sino que el kernel los genera sobre la marcha. Ver¿Qué sucede cuando abro y leo desde /proc?

Si tiene inclinación por la programación, puede leer la implementación de /procen elcódigo fuente del núcleo. El contenido del/proc/selfEl enlace simbólico se genera mediante unfunciónque llena un buffer con el pid del proceso de llamada.

información relacionada