Jump to content

прокфс

(Перенаправлено с Cpuinfo )

Файловая система proc ( procfs ) — это специальная файловая система в Unix-подобных операционных системах, которая представляет информацию о процессах и другую системную информацию в иерархической файловой структуре, обеспечивая более удобный и стандартизированный метод динамического доступа к данным процесса, хранящимся в ядре, чем традиционные методы трассировки или прямой доступ к памяти ядра . он сопоставляется с точкой монтирования с именем /proc Обычно во время загрузки . Файловая система proc действует как интерфейс к внутренним структурам данных о запущенных процессах в ядре. В Linux его также можно использовать для получения информации о ядре и изменения определенных параметров ядра во время выполнения ( sysctl ).

Многие Unix-подобные операционные системы поддерживают файловую систему proc, включая System V , Solaris , IRIX , Tru64 UNIX , BSD , Linux , IBM AIX , [ 1 ] QNX и Plan 9 от Bell Labs . Поддержка OpenBSD прекращена в версии 5.7, выпущенной в мае 2015 года. Она отсутствует в HP-UX. [ 1 ] и macOS . [ 2 ]

Ядро Linux расширяет его до данных, не связанных с процессом.

Файловая система proc обеспечивает метод связи между пространством ядра и пространством пользователя . Например, версия GNU утилиты отчетов о процессах ps использует файловую систему proc для получения своих данных без использования каких-либо специализированных системных вызовов .

UNIX 8-е издание

[ редактировать ]

Том Дж. Киллиан реализовал для UNIX 8-го издания версию /proc доклад под названием «Процессы как файлы» (V8): он представил на USENIX в июне 1984 года. Целью разработки procfs была замена системного вызова ptrace, используемого для трассировки процессов. Подробную документацию можно найти на странице руководства proc(4) .

Исходная операционная система AT&T System V Release 3 (SVR3) (доступная внутри AT&T в 1986 году и обычно в 1987 году) не имела файловой системы /proc , но ее последующая инкрементная версия имела. Он содержал только файлы, представляющие процессы, а не теперь общие подкаталоги.

Роджер Фолкнер и Рон Гомес портировали V8 /proc на SVR4 и опубликовали статью под названием «Файловая система процесса и модель процесса в UNIX System V» на сайте USENIX в январе 1991 года. Этот тип procfs поддерживал создание ps , но файлы могли Доступ к ним возможен только с помощью функций read() , write() и ioctl () . Между 1995 и 1996 годами Роджер Фолкнер создал интерфейс procfs-2 для Solaris-2.6, который предлагает структурированную файловую систему /proc с подкаталогами.

Plan 9 реализовал файловую систему процессов, но пошел дальше, чем V8. Файловая система процессов V8 реализовала один файл для каждого процесса. Plan 9 создал иерархию отдельных файлов для обеспечения этих функций и сделал /proc реальной частью файловой системы.

4.4BSD и производные

[ редактировать ]

4.4BSD клонировала свою реализацию /proc из Плана 9. [ нужна ссылка ] По состоянию на февраль 2011 г. , procfs постепенно прекращается во FreeBSD, [ 3 ] и вместо этого стало использоваться интерфейс sysctl для информации, связанной с процессом. Для обеспечения двоичной совместимости с программами пользовательского пространства Linux ядро ​​FreeBSD также предоставляет linprocfs , аналогичный procfs Linux. [ 4 ] Он был удален из OpenBSD в версии 5.7, выпущенной в мае 2015 года, поскольку «всегда страдал от гонок и теперь не используется». [ 5 ] В macOS не реализована procfs, и программы пользовательского пространства должны использовать интерфейс sysctl для получения данных процесса. [ 2 ]

/proc в Solaris был доступен с самого начала (июнь 1992 г.). В Solaris 2.6 в 1996 году появился procfs2 от Роджера Фолкнера.

Linux впервые добавил файловую систему /proc в версии 0.97.3 , сентябрь 1992 года, и впервые начал расширять ее для данных, не связанных с процессом, в версии 0.98.6, декабрь 1992 года.

По состоянию на 2020 год реализация Linux включает каталог для каждого запущенного процесса, включая ядра , в каталогах с именем процессы /proc/PID , где PID — это номер процесса. Каждый каталог содержит информацию об одном процессе, в том числе:

  • /proc/PID/cmdline — команда, которая изначально запустила процесс.
  • /proc/PID/cwd символическая ссылка на текущий рабочий каталог процесса.
  • /proc/PID/environ содержит имена и значения переменных среды, влияющих на процесс.
  • /proc/PID/exe — символическая ссылка на исходный исполняемый файл, если он все еще существует (процесс может продолжать работу после того, как его исходный исполняемый файл был удален или заменен).
  • /proc/PID/fd — каталог, содержащий символическую ссылку для каждого дескриптора открытого файла .
  • /proc/PID/fdinfo — каталог, содержащий записи, описывающие позицию и флаги для каждого дескриптора открытого файла.
  • /proc/PID/maps — текстовый файл, содержащий информацию о сопоставленных файлах и блоках (например, куче и стеке).
  • /proc/PID/mem процесса , двоичный образ, представляющий виртуальную память , доступен только процессу ptrace .
  • /proc/PID/root — символическая ссылка на корневой путь, видимый процессом. Для большинства процессов это будет ссылка на /, если только процесс не запущен в chroot -тюрьме.
  • /proc/PID/status содержит основную информацию о процессе, включая состояние его выполнения и использование памяти.
  • /proc/PID/task — каталог, содержащий жесткие ссылки на любые задачи, запущенные этим (т. е. родительским) процессом.

(Пользователи могут получить PID с помощью такой утилиты, как pgrep , pidof или ps :

$ ls -l /proc/$(pgrep -n python3)/fd        # List all file descriptors of the most recently started `python3' process
total 0
lrwx------ 1 baldur baldur 64 2020-03-18 12:31 0 -> /dev/pts/3
lrwx------ 1 baldur baldur 64 2020-03-18 12:31 1 -> /dev/pts/3
lrwx------ 1 baldur baldur 64 2020-03-18 12:31 2 -> /dev/pts/3
$ readlink /proc/$(pgrep -n python3)/exe    # List executable used to launch the most recently started `python3' process  
/usr/bin/python3.8

)

/proc также включает в себя системную информацию, не связанную с процессом, хотя в ядре 2.6 большая часть этой информации перенесена в отдельную псевдофайловую систему sysfs , смонтированную под /система :

  • в зависимости от режима управления питанием (если он вообще есть) либо каталог, /proc/acpi или /proc/apm , которые предшествуют sysfs и содержат различную информацию о состоянии управления питанием.
  • /proc/buddyinfo — информация об алгоритме приятеля , который обрабатывает фрагментацию памяти. [ 6 ]
  • /proc/bus , содержащий каталоги, представляющие различные шины на компьютере, например PCI / USB . Его в значительной степени заменила sysfs в /sys/bus, которая гораздо более информативна.
  • /proc/fb — список доступных фреймбуферов.
  • /proc/cmdline , предоставляющий параметры загрузки, передаваемые ядру.
  • /proc/cpuinfo , содержащий информацию о процессоре , такую ​​как его поставщик (и семейство процессоров, модель и названия моделей, которые должны позволять пользователям идентифицировать процессор) и его скорость ( тактовая частота процессора ), размер кэша, количество одноуровневых элементов, ядер, и флаги ЦП . Формат и доступная информация во многом зависят от архитектуры. В некоторых архитектурах /proc/cpuinfo включает значение для « bogomips », которое часто ошибочно воспринимается как мера скорости процессора, например, эталон, но на самом деле оно вообще не измеряет никакого разумного (для конечных пользователей) значения. Это происходит как побочный эффект калибровки таймера ядра и дает сильно различающиеся значения в зависимости от типа процессора даже при одинаковых тактовых частотах.
$ cat /proc/cpuinfo
processor   : 0
 vendor_id  : AuthenticAMD
 cpu family : 16
 model      : 6
 model name : AMD Athlon(tm) II X2 270 Processor
 stepping   : 3
 microcode  : 0x10000c8
 cpu MHz    : 2000.000
 cache size : 1024 KB
 ...
 processor  : 1
 vendor_id  : AuthenticAMD
 cpu family : 16
 model      : 6
 model name : AMD Athlon(tm) II X2 270 Processor
 stepping   : 3
 microcode  : 0x10000c8
 cpu MHz    : 800.000
 cache size : 1024 KB
 ...

В многоядерных процессорах /proc/cpuinfo содержит поля для «братьев» и «ядер процессора», которые представляют собой следующие вычисления: [ 7 ]

"siblings" = (HT per CPU package) * (# of cores per CPU package)
"cpu cores" = (# of cores per CPU package)

Пакет ЦП означает физический ЦП, который может иметь несколько ядер ( одноядерное для одного, двухъядерное для двух, четырехъядерное для четырех). Это позволяет различать гиперпоточность и двухъядерность, т. е. количество гиперпотоков на пакет ЦП можно рассчитать по братьям и сестрам / ядрам ЦП . Если оба значения для пакета ЦП одинаковы, гиперпоточность не поддерживается. [ 8 ] Например, пакет ЦП с братьями и сестрами = 2 и «ядрами процессора» = 2 является двухъядерным ЦП, но не поддерживает гиперпоточность.

  • /proc/crypto — список доступных криптографических модулей.
  • /proc/devices — список символьных и блочных устройств, отсортированный по идентификатору устройства, но дающий большую часть / имя устройства тоже
  • /proc/diskstats , предоставляющий некоторую информацию (включая номера устройств) для каждого из устройств логического диска.
  • /proc/filesystems — список файловых систем, поддерживаемых ядром на момент листинга.
  • /прок/прерывания , /прок/иомем , /proc/ioports и каталог /proc/irq , предоставляющий некоторую информацию об устройствах (физических или логических), использующих различные системные ресурсы.
  • /proc/kmsg , содержащий сообщения, выводимые ядром [ 9 ]
  • /proc/loadavg , содержащий статистику о текущей средней загрузке за последние минуты.
  • /proc/meminfo , содержащий сводную информацию о том, как ядро ​​управляет своей памятью.
  • /proc/modules — один из самых важных файлов в /proc , содержащий список модулей ядра, загруженных в данный момент. Это дает некоторое представление (не всегда правильное) о зависимостях.
  • /proc/mounts — символическая ссылка на self/mounts, содержащая список смонтированных в данный момент устройств и их точек монтирования (а также какая файловая система используется и какие параметры монтирования используются).
  • /proc/net/ — каталог, содержащий полезную информацию о сетевом стеке, в частности /proc/net/nf_conntrack , в котором перечислены существующие сетевые подключения (особенно полезно для отслеживания маршрутизации, когда iptables FORWARD используется для перенаправления сетевых подключений)
  • /proc/partitions — список номеров устройств, их размер и /dev имена, которые ядро ​​определило как существующие разделы
  • /proc/scsi , предоставляющий информацию о любых устройствах, подключенных через SCSI или RAID -контроллер.
  • символическая ссылка на текущий (проходящий) процесс в /proc/self (т.е. /proc/PID/ , где PID — это идентификатор текущего процесса).
  • /proc/slabinfo , список статистики кэшей для часто используемых объектов в ядре Linux.
  • /proc/swaps — список активных разделов подкачки, их различные размеры и приоритеты.
  • Доступ к динамически настраиваемым параметрам ядра в разделе /прок/система . Под В /proc/sys появляются каталоги, представляющие области ядра, содержащие виртуальные файлы, доступные для чтения и записи .
    Например, часто упоминаемый виртуальный файл: /proc/sys/net/ipv4/ip_forward , поскольку он необходим для маршрутизации межсетевых экранов или туннелей. Файл содержит либо «1», либо «0»: если он равен 1, стек IPv4 пересылает пакеты, не предназначенные для локального хоста, если он равен 0, то нет.
  • /proc/sysvipc о совместном использовании памяти и межпроцессном взаимодействии (IPC). , содержащий информацию
  • /proc/tty , содержащий информацию о терминалах ; /proc/tty/driver содержит список драйверов TTY и их использование. [ 10 ]
  • /proc/uptime — время, в течение которого ядро ​​работало с момента загрузки и находилось в режиме ожидания (оба в секундах)
  • /proc/version , содержащий версию ядра Linux, номер дистрибутива, номер версии gcc (используемый для сборки ядра) и любую другую соответствующую информацию, относящуюся к версии ядра, работающей в данный момент.
  • другие файлы в зависимости от различного оборудования, конфигураций модулей и изменений в ядре.

Основные утилиты, использующие /proc в Linux, входят в состав procps ( /procprocesses ) и функционируют только в сочетании с смонтированным /проц .

Cygwin реализовал procfs, который по сути такой же, как procfs в Linux.

  1. ^ Перейти обратно: а б Немет, Эви; Снайдер, Гарт; Хейн, Трент Р.; Уэйли, Бен (14 июля 2010 г.). Руководство по системному администрированию UNIX и Linux . Пирсон Образование. п. 136. ИСБН  978-0-13-211736-4 .
  2. ^ Перейти обратно: а б Амит Сингх (2003). «/proc в Mac OS X» . Внутреннее устройство Mac OS X: Книга . Архивировано из оригинала 4 мая 2012 года . Проверено 10 июля 2021 г.
  3. ^ «Почему procfs устарел в пользу procstat?» . freebsd.org . 22 февраля 2011 г.
  4. ^ "linprocfs(5)" . Страницы руководства FreeBSD . Проект FreeBSD. 13 ноября 2019 года . Проверено 12 июня 2021 г.
  5. ^ «Подробные изменения между OpenBSD 5.6 и 5.7» . openbsd.org .
  6. ^ «3.2.2. /proc/buddyinfo» . centos.org . Архивировано из оригинала 2 сентября 2013 года . Проверено 23 мая 2011 г.
  7. ^ Барон, Джейсон. «HT против двухъядерности» . Архивировано из оригинала 13 мая 2016 года . Проверено 28 июня 2011 г.
  8. ^ «Понимание Linux /proc/cpuinfo» . richweb.com . Архивировано из оригинала 3 апреля 2012 года . Проверено 21 апреля 2015 г.
  9. ^ Нгуен, Бинь (30 июля 2004 г.). «Иерархия файловой системы Linux» . Бинь Нгуен. п. 63 . Проверено 18 июля 2016 г. /proc/kmsg[:] Сообщения, выводимые ядром. Они также направляются в системный журнал.
  10. ^ «Файловая система /proc» . Документация ядра Linux . Проверено 9 августа 2024 г.

Источники

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 5184d67850c3be47dcb15b1827679d85__1723203840
URL1:https://arc.ask3.ru/arc/aa/51/85/5184d67850c3be47dcb15b1827679d85.html
Заголовок, (Title) документа по адресу, URL1:
procfs - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)