Prioridade da Fila de Mensagens
O planejador STREAMS opera estritamente em uma maneira de primeiro-in-out (FIFO) para que cada procedimento de serviço QUEUE receba controle na ordem em que foi agendado.
Quando um procedimento de serviço recebe o controle, ele pode encontrar várias mensagens em sua fila de mensagens. Esse acúmulo pode ocorrer se houver um longo intervalo entre o tempo em que uma mensagem é enfileirada por um procedimento de put e o tempo em que o planejador STREAMS chama o procedimento de serviço associado. Neste intervalo, pode haver várias chamadas para o procedimento colocado causando várias mensagens. O procedimento de serviço processa todas as mensagens em sua fila de mensagens, a menos que impedido por controle de fluxo Cada mensagem deve passar por todos os módulos que conectam sua origem e destino no fluxo.
Se os procedimentos de serviço fossem usados em todos os QUEUEs e não houvesse prioridade de mensagem, a mensagem agendada mais recentemente seria processada depois que todas as outras mensagens programadas em todos os fluxos haviam sido processadas. Em certos casos, os tipos de mensagens contendo informações urgentes (como uma condição de quebra ou alarme) devem passar pelo fluxo rapidamente. Para acomodar esses casos, a STREAMS designa prioridades para as mensagens. Essas prioridades ordenam as mensagens na fila. Cada mensagem tem uma banda de prioridade associada a ela. As mensagens ordinárias têm prioridade de 0. As prioridades da mensagem variam de 0 (ordinário) a 255 (mais alta). Isso fornece até 256 bandas de fluxo de mensagens dentro de um fluxo. (Ver Figura 1.)

As mensagens de alta prioridade não são afetadas pelo controle de fluxo. Sua banda de prioridade é ignorada. O utilitário putq coloca mensagens de alta prioridade na cabeça da fila de mensagens, seguida por mensagens de banda prioritárias e mensagens ordinárias. STREAMS evita que mensagens de alta prioridade sejam bloqueadas por controle de fluxo e faz com que um procedimento de serviço os processe antes de todas as outras mensagens na fila de procedimento. Este procedimento resulta na mensagem de alta prioridade movendo-se através de cada módulo com atraso mínimo.
As filas de mensagens geralmente não estão presentes em uma FILA, a menos que a FILA contenha um procedimento de serviço. Quando uma mensagem é passada para o utilitário putq para programar a mensagem para o processamento do procedimento de serviço, o utilitário putq coloca a mensagem na fila de mensagens em ordem de prioridade. As mensagens de alta prioridade são colocadas à frente de todas as mensagens ordinárias, mas por trás de quaisquer outras mensagens de alta prioridade na fila. Outras mensagens são colocadas após mensagens de uma mesma prioridade que já estão na fila. STREAMS utilitários entregam as mensagens para o procedimento de serviço de processamento em uma maneira FIFO dentro de cada banda prioritária. O procedimento de serviço desconhece a prioridade da mensagem e recebe a próxima mensagem.
Prioridade de mensagem é definida pelo tipo de mensagem; após a criação de uma mensagem, sua prioridade não pode ser alterada. Certos tipos de mensagens vêm em pares de prioridade máxima / ordinária equivalentes (por exemplo, M_PCPROTO e M_PROTO), de modo que um módulo ou driver de dispositivo pode escolher entre as duas prioridades ao enviar informações.