
Я возился с /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 вызывающего процесса.