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

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

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

  • Как ядро ​​назначает идентификаторы cpu для физических ядер?
  • Почему мои файлы application.desktop не отображаются в меню приложений Linux?
  • «Нет такого файла или каталога», как ошибка для неправильной архитектуры
  • Как захватить временный файл?
  • Ошибка компиляции драйверов для Ralink RT2870
  • Почему nm не отображает символы для /lib/i386-linux-gnu/libc.so.6?
  • Есть ли способ воспроизвести эти ролики в Linux?
  • Получение числа неудачных попыток входа в систему заставляет последний успешный вход в систему / CentOS 7
  • Название дистрибутива
  • CSV-файл + установить параметры и значения CSV в сценарии bash
  • Что такое fedmsg?
  • Как я могу узнать, что определенный дистрибутив Linux основан на Debian, глядя на структуру файлов?
  • 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 - лучшая ОС в мире.