Как / proc / self реализован в Linux?


19

Я возился с /procфайловой системой в Linux, и я столкнулся с ней /proc/self, которая является символической ссылкой на каталог процесса текущего процесса. Хотелось бы узнать, как это реализовано. Одним из решений было бы изменить эту символическую ссылку при каждом переключении контекста , но это, очевидно, очень дорого, поскольку требует доступа к диску.

Ответы:


20

http://lxr.linux.no/linux+v3.2.9/fs/proc/base.c#L2482 является текущей реализацией.

procФайловая система является полностью виртуальной, и реализована таким образом внутренними VFS readlinkделегаты на правильное место для специальных симлинок. Таким образом, он вычисляет, на что selfуказывает, когда он прочитан / пройден, а не на каждый переключатель контекста.


12

Файлы в /procне хранятся на диске, они генерируются на лету ядром. См. Что происходит, когда я открываю и читаю из / proc?

Если вы склонны к программированию, вы можете прочитать реализацию /procв исходном коде ядра . Содержимое /proc/selfсимволической ссылки генерируется функцией, которая заполняет буфер pid вызывающего процесса.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.