Jump to content

Все есть файл

«Все есть файл» — это идея, согласно которой Unix и ее производные обрабатывают ввод/вывод данных в такие ресурсы , как документы, жесткие диски, модемы, клавиатуры, принтеры и даже некоторые межпроцессные и сетевые коммуникации как простые потоки данных. байты, доступные через пространство имен файловой системы . [1] Исключения составляют семафоры , процессы и потоки .

Преимущество этого подхода заключается в том, что один и тот же набор инструментов, утилит и API можно использовать для широкого спектра ресурсов и различных типов файлов . Когда файл открывается, файловый дескриптор создается , использующий путь к файлу в качестве системы адресации. Дескриптор файла в таком случае представляет собой интерфейс ввода-вывода байтового потока, над которым выполняются файловые операции. Дескрипторы файлов также создаются для таких объектов, как анонимные каналы и сетевые сокеты — и поэтому более точное описание этой функции — « Все — это файловый дескриптор» . [2] [3]

Кроме того, существует ряд псевдо- и виртуальных файловых систем , которые предоставляют внутренние данные ядра, такие как информация о процессах, пользовательскому пространству в иерархической файловой структуре. [4] Они монтируются в единую файловую иерархию .

Примером такой чисто виртуальной файловой системы является каталог /proc , в котором многие системные свойства представлены в виде файлов. Все эти файлы, в более широком смысле этого слова, имеют стандартные атрибуты файлов Unix, такие как владелец и права доступа , и могут быть запрошены теми же Unix классическими инструментами и фильтрами . Однако не всегда это считается быстрым или портативным подходом. Некоторые операционные системы не монтируют /proc по умолчанию из соображений безопасности или скорости, вместо этого полагаясь на системные вызовы . [5] Однако он активно используется Linux . утилитами оболочки [6] [7] такие как реализация procps ps и BusyBox , который широко устанавливается во встраиваемых системах . [8] Программа Android Toolbox также зависит от этого. [9]

Другим примером является sysfs , который обычно монтируется в /sys ядра , что открывает доступ к структурам данных . [10] sysfs обеспечивает функциональность, аналогичную механизму sysctl, присутствующему в операционных системах BSD , с той разницей, что sysfs реализован как виртуальная файловая система, а не как специально созданный механизм ядра. [11] Философия sysfs заключается в том, чтобы представлять каждое значение в отдельном файле. Кроме того, максимальный размер каждого файла составляет PAGE_SIZE байты.

Для модуля ядра есть три возможности использовать файл ниже /sys:

  • параметр модуля
  • зарегистрировать новую подсистему
  • debugfs : debugfs, смонтированный в /sys/kernel/debug.

Стандартный API sysfs использует специальную терминологию: файл называется атрибутом, функция, выполняемая при чтении атрибута, называется show и тот, который предназначен для записи атрибута store. [12]

Sysfs была получена из procfs между версиями ядра Linux 2.5–2.6, первоначально как выделенная файловая система для отладки новой модели драйверов . И sysfs, и procfs основаны на памяти. Sysfs содержит каталоги для блочных устройств , типов физических шин , классов устройств (например, используемых для графики , сети , ввода или печати ), объектов и атрибутов, специфичных для встроенного ПО , модулей ядра и подсистемы питания. [13]

Например, написание mem в /sys/power/state запустит процедуру приостановки работы с оперативной памятью . [14]

Другим примером файлов с особым поведением являются /dev/null и /dev/zero файлы устройств . Записи в них будут отброшены. [15] Это можно, например, использовать для перенаправления ненужных стандартных потоков .

См. также

[ редактировать ]
  1. ^ В UNIX все представляет собой файл, заархивированный 10 января 2015 г. на Wayback Machine.
  2. ^ «Линус Торвальдс: «Все есть файловый дескриптор или процесс» » . Ярхив.нет . Проверено 28 августа 2015 г.
  3. ^ «Призраки прошлого Unix» . Lwn.net . Проверено 28 августа 2015 г.
  4. ^ Бенвенути, Кристиан (2006). «3. Интерфейс пользовательского пространства к ядру» . Понимание внутреннего устройства сети Linux (изд. Nachdr.). Пекин Кельн: О'Рейли. п. 58. ИСБН  9780596002558 .
  5. ^ «8. procfs: Ушло, но не забыто» . Freebsd.org . Проверено 28 августа 2015 г.
  6. ^ Сяо, Ян; Ли, Фрэнк Хайжон; Чен, Хуэй (2011). Справочник по безопасности и сетям . Хакенсак (Нью-Джерси): Мировая наука. п. 160. ИСБН  9789814273039 .
  7. ^ «27. Обновление и настройка ядра» . Сетевое и системное администрирование Red Hat Linux . Джон Уайли и сыновья. 2007. с. 662. ИСБН  9780471777311 .
  8. ^ «busybox — BusyBox: швейцарский армейский нож встраиваемого Linux» . Git.busybox.net . Проверено 28 августа 2015 г.
  9. ^ «platform_system_core/ps.c в master · android/platform_system_core · GitHub» . GitHub.com . 09.03.2015 . Проверено 28 августа 2015 г.
  10. ^ Мочел, Патрик; Мерфи, Майк (16 августа 2011 г.). «sysfs — файловая система для экспорта объектов ядра» . ядро.орг . Архивировано из оригинала 13 марта 2024 года . Проверено 15 июня 2024 г.
  11. ^ Вскиллс, Команда. «SysFS и процесс» . Учебник . Проверено 15 июня 2024 г.
  12. ^ «sysfs, procfs, sysctl, debugfs и другие подобные интерфейсы ядра» . Блог Джона . 20 ноября 2013 г. Проверено 15 июня 2024 г.
  13. ^ Патрик Мочел, Подсистема sysfs, Симпозиум Linux 2005 г., стр. 314-317
  14. ^ Высоцкий, Рафаэль Дж. «Состояния сна управления питанием системы» . ядро.орг . Проверено 15 июня 2024 г.
  15. ^ «null(4) — страница руководства Linux» . www.man7.org . Проверено 15 июня 2024 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 0bc59c5ad90b120c5b8ee73cd8f6f187__1722606900
URL1:https://arc.ask3.ru/arc/aa/0b/87/0bc59c5ad90b120c5b8ee73cd8f6f187.html
Заголовок, (Title) документа по адресу, URL1:
Everything is a file - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)