Внутреннее устройство ядра Linux 2.4


         

Если для данного процесса имеются


  • Если для данного процесса имеются какие либо сигналы, ожидающие обработки, то вызовом процесс изымается из очереди ожидания для процессов-отправителей, блокировка снимается, вызывается для освобождения буфера сообщения и процессу возвращается код EINTR. Иначе осуществляется переход на выполнение необходимых проверок.


  • Для передачи сообщения напрямую процессу-получателю вызывается .


  • Если процессов-получателей, ожидающих данное сообщение, не было обнаружено, то сообщение msg помещается в очередь ожидающих сообщений (msq->q_messages). Обновляются поля q_cbytes и q_qnum в дескрипторе очереди сообщений, а так же глобальные переменные msg_bytes и msg_hdrs, содержащие в себе общий объем сообщений в байтах и общее количество сообщений.


  • Если сообщение было благополучно передано процессу-получателю либо поставлено в очередь, то обновляются поля q_lspid и q_stime в дескрипторе очереди и освобождается глобальная блокировка.



  • Содержание  Назад  Вперед