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

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

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

решение1

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

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

решение2

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

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

Связанный контент