
Estaba jugando con el /proc
sistema 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 proc
sistema de archivos es completamente virtual y está implementado de modo que el VFS interno readlink
delega en el lugar correcto para enlaces simbólicos especiales. Por lo tanto, calcula a qué self
puntos se lee/recorre, no cada cambio de contexto.
Respuesta2
Los archivos /proc
no 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 /proc
en elcódigo fuente del núcleo. El contenido del/proc/self
El enlace simbólico se genera mediante unfunciónque llena un buffer con el pid del proceso de llamada.