Процесс Linux – сообщения из ядра

Я узнал о различных механизмах IPC, присутствующих в Linux, для связи между процессами пользовательского пространства.

Я хочу спросить, какие различные способы в Linux для ядра взаимодействовать с процессом пользовательского пространства (вид напротив системного вызова, где пользовательское пространство инициирует запрос)? Может ли сигнал быть одним из них? Что другие?

  • Сколько времени занимает пользователь => переход в режим ядра?
  • SIOCSIFADDR: Файл существует после обновления ядра
  • Ошибка при установке wireless-bcm43142-dkms-6.20.55.19: зависимые linux-заголовки не выполняются
  • Включение поддержки Ethernet через USB в ядре Linux
  • Минимальные репозитории конфигурации ядра
  • что такое глобальная политика планирования Linux?
  • Linux Kernel Firewire Feature: используйте Unclear
  • Как вставить модифицированный загрузчик ELF, если присутствует текущий загрузчик ELF?
  • One Solution collect form web for “Процесс Linux – сообщения из ядра”

    В некоторых случаях сигнал является классической связью между процессорами. Конечно, любой процесс с соответствующим UID может использовать kill() для отправки сигнала, но сигналы, подобные SIGCHLD или SIGWINCH почти всегда поступают из ядра.

    Специфично для Linux, вы можете посмотреть системный вызов signalfd() . Обычная обработка сигналов осуществляется с помощью «upcall», но signalfd() дает процессу другой способ приема сигналов.

    Возвращаемое значение системных вызовов можно рассматривать как связь процесса взаимодействия между ядром. Это очень много, но fork() – пример. Родительский процесс возвращает ненулевой идентификатор процесса (или -1 при ошибке), а дочерний процесс возвращается к нулю.

    Системные вызовы poll() и select() имеют аргументы, в которых ядро ​​устанавливает значения в аргументах, чтобы указать, какие файловые дескрипторы имеют доступные для них события / состояния. Это больше похоже на формальный аргумент «inout», но ядро ​​устанавливает значения.

    API-интерфейс inotify позволяет взаимодействовать между ядрами через read() в специальном дескрипторе файла.

    Асинхронная система ввода-вывода POSIX, похоже, имеет несколько способов взаимодействия с пользовательским процессом, включая запуск потока при возникновении ввода-вывода, если я правильно прочитал справочную страницу. Я никогда не делал POSIX async I / O, и это выглядит сложно.

    Linux и Unix - лучшая ОС в мире.