Jak / proc / self jest implementowany w systemie Linux?

19

Majstrowałem przy /procsystemie plików w Linuksie i natrafiłem na /proc/selfsymboliczne łącze do katalogu procesu bieżącego procesu. Chciałbym wiedzieć, jak to jest realizowane. Jednym rozwiązaniem byłoby zmiana tego dowiązania symbolicznego na każdym przełączniku kontekstu , ale jest to oczywiście bardzo kosztowne, ponieważ wymaga dostępu do dysku.

Vicky Chijwani
źródło

Odpowiedzi:

20

Obecna implementacja to http://lxr.linux.no/linux+v3.2.9/fs/proc/base.c#L2482

System procplików jest całkowicie wirtualny i jest zaimplementowany, więc wewnętrzny VFS readlinkdeleguje się we właściwe miejsce dla specjalnych dowiązań symbolicznych. Tak więc oblicza, na co selfwskazuje, kiedy jest czytany / przemierzany, a nie każdy przełącznik kontekstowy.

Daniel Pittman
źródło