proc (procfs) и sys (sysfs) — виртуальные файловые системы, предоставляющие пользовательскому пространству доступ к данным и механизмам управления ядра Linux через файловый интерфейс.
Обе файловые системы:
- не имеют постоянного хранения (in-memory)
- формируются ядром динамически
- монтируются обычно в
/procи/sys
/proc (procfs)
Назначение
Предоставление:
- информации о процессах
- агрегированного состояния системы
- интерфейса к параметрам ядра (через
/proc/sys)
Модель данных
- Иерархия частично отражает процессы (
/proc/<pid>) - Остальные файлы представляют собой логические представления состояния ядра
- Формат данных не стандартизирован (чаще текст, иногда сложные структуры)
Интерфейс
Тип операций:
read— получение состоянияwrite— изменение параметров (в ограниченных случаях)
Пример:
/proc/meminfo— агрегированные метрики памяти/proc/<pid>/status— состояние процесса/proc/sys/net/ipv4/ip_forward— параметр ядра
Свойства
- Отсутствие строгой схемы
- Возможны агрегированные и многозначные представления
- Исторически сложившийся интерфейс
- Частично заменяется sysfs для новых подсистем
/sys (sysfs)
Назначение
Экспорт внутренней объектной модели ядра (device model) в пользовательское пространство.
Модель данных
- Основана на
kobject - Иерархия напрямую соответствует структурам ядра
- Каждый файл представляет один атрибут объекта
Интерфейс
Тип операций:
read— получение значения атрибутаwrite— изменение конфигурации объекта (если разрешено)
Пример:
/sys/devices/...— дерево устройств/sys/class/net/eth0/— сетевой интерфейс/sys/block/sda/queue/read_ahead_kb— параметр блочного устройства
Свойства
- Строгая структура (один файл = одно значение)
- Типизированная модель (атрибуты объектов)
- Стабильный ABI (в рамках user-space контрактов)
- Предпочтительный интерфейс для драйверов и устройств
Сравнение
Семантика
/proc:- представление состояния (state-oriented)
- допускает агрегацию и форматирование
/sys:- представление объектов (object-oriented)
- атомарные атрибуты
Структура
/proc:- частично иерархическая
- не отражает внутренние структуры ядра напрямую
/sys:- строго иерархическая
- отражает device model
Контракт интерфейса
/proc:- менее формализован
- возможны изменения форматов
/sys:- формализованный ABI
- требования к стабильности пользовательского интерфейса
Использование
/proc:- диагностика
- мониторинг
- работа с процессами
- sysctl (
/proc/sys)
/sys:- управление устройствами
- настройка драйверов
- introspection device model
Практические ограничения
- Не гарантируется стабильность всех файлов
/proc - В
/sysзапрещены:- сложные форматы
- множественные значения в одном файле
- Запись в оба интерфейса требует учета прав доступа и side effects
Рекомендации
- Для новой функциональности:
- использовать sysfs
- Для работы с процессами:
- использовать procfs
- Для изменения параметров ядра:
- использовать sysctl (поверх
/proc/sys) или специализированные интерфейсы/sys
- использовать sysctl (поверх
Краткое определение
/proc— интерфейс состояния системы и процессов/sys— интерфейс объектной модели устройств ядра