2015-12-15 2 views
1

https://en.wikipedia.org/wiki/Unix_signal говоритЯвляются ли сигналы, генерируемые ядрами или процессами ОС?

Сигналы представляют собой ограниченную форму межпроцессного взаимодействия, используемого в Unix, Unix-подобных и других POSIX-совместимых операционных систем. Сигнал является асинхронным уведомлением, отправленным процессу или конкретному потоку в рамках одного и того же процесса, чтобы уведомить об этом событие, которое произошло .

...

Ядро может генерировать сигналы для уведомления процессов событий. Например, для SIGPIPE будет генерироваться, когда процесс записывает в трубу , который был закрыт считывателем; по умолчанию это приводит к завершению процесса , что удобно при построении контуров оболочки .

Есть сигналы, генерируемые ядрами или процессами ОС?

Если сигналы генерируются ядрами ОС, как используются сигналы в межпроцессной связи? Это делается путем наличия ядер ОС в середине между двумя процессами в процессе обмена данными, то есть процесс взаимодействует с ядром ОС каким-то образом (также сигналы?), А ядро ​​ОС взаимодействует с другим процессом через сигналы?

ответ

1

Сигналы могут быть получены либо ядром, либо другими процессами. В вашем примере ядро ​​генерирует сам сигнал, чтобы передать что-то в этот процесс.

Другие процессы также могут посылать сигналы с использованием kill(2), который запрашивает ядро ​​доставлять сигнал процессу или группе процессов (процесс может даже посылать сигнал сам по себе). Если отправитель имеет разрешения на отправку сигнала, ядро ​​его доставляет.

Это то, что происходит, когда один работает что-то вроде:

$ kill -TERM <some_pid> 

Следует отметить, что ядро ​​является единственной организацией, способной доставки сигнала, независимо от источника.