Como as impressoras recebem documentos dos computadores? Filas internas?

Como as impressoras recebem documentos dos computadores? Filas internas?

Tive dificuldade em encontrar informações reais sobre como as impressoras realmente lidam com os dados de impressão.

Até onde eu sei, todos os sistemas operacionais têm uma "fila de impressão" que aparentemente armazena os documentos impressos na impressora na ordem em que foram solicitados.

Antes das impressoras de rede, imagino que a impressora real recebia dados quase linha por linha da máquina conectada.

Agora, com as impressoras de rede, esse modelo imaginado desmorona. Presumo que as impressoras modernas apenas recebam um documento postscript (ou algum outro formato de impressão) do sistema operacional, mantenham-no na memória e imprimam a partir dele.

A questão é: o que significa uma fila de impressão do sistema operacional se a impressora pode receber vários documentos?

A fila de impressão do sistema operacional não nos mostra nada do que outras máquinas estão imprimindo porque é um buffer local. Então isso deve significar que a impressora tem uma fila integrada, certo? Então, por que temos filas de impressão se não conseguimos ver o que mais está sendo impresso?


Qualquer informação sobre como as impressoras realmente funcionam hoje em dia sem cabos seriais seria útil, mas para tornar esta pergunta válida:

Como as impressoras imprimem documentos de várias máquinas se cada máquina não sabe que outras também estão imprimindo?

Como o documento é transmitido para a impressora?

Que tipo de informação a maioria dos protocolos de impressão suporta?

Faço a última pergunta porque por conta própria o canhão parece solicitar o nível de tinta como se fosse um trabalho de impressão:

printing:   supply levels

Também ouvi falar de impressoras HP que usam trabalhos de impressão "falsos" para enviar uma atualização de firmware.

Responder1

Até onde eu sei, todos os sistemas operacionais têm uma "fila de impressão" que aparentemente armazena os documentos impressos na impressora na ordem em que foram solicitados.

A "fila de impressão" é a parte visível do serviço/daemon da impressora que era originalmente um programa chamado SPOOL (para operações periféricas simultâneas on-line), como para o sistema operacional HASP/OS360 executado em mainframes IBM 360. (IMO SPOOL é um dos melhores acrônimos cunhados porque também é uma palavra em inglês (substantivo e verbo) que pode ser usada como uma analogia para descrever como funciona o serviço de impressão.)

Antes das impressoras de rede, imagino que a impressora real recebia dados quase linha por linha da máquina conectada.

É verdade que não há necessidade do “quase”.

Agora, com as impressoras de rede, esse modelo imaginado desmorona. Presumo que as impressoras modernas apenas recebam um documento postscript (ou algum outro formato de impressão) do sistema operacional, mantenham-no na memória e imprimam a partir dele.

"Impressoras de linha", ou impressoras "burras" que aceitam apenas texto simples, estão essencialmente obsoletas, tendo sido substituídas por "impressoras de páginas" que aceitam entrada em algum tipo delinguagem de descrição da página(por exemplo, Postscript, PCL). Como mais dados do que apenas o texto da página, ou seja, a página completa em formato PDL, devem ser enviados para a impressora, interfaces mais antigas como a porta paralela "Centronics" e serial RS-232 foram substituídas por USB e Ethernet (com e sem fio).

Observe que ter uma interface Ethernet e chamá-la de "impressora de rede" não significa que ela possa funcionar como um "servidor de impressão" em rede. A "impressora de rede" configurada no modo "ponto a ponto" na verdade requer a instalação de um "driver de impressora" em cada PC que deseja usar essa impressora. Essa "impressora de rede" é então instalada como uma impressora local no PC, mas negocia e usa essa impressora por meio de uma conexão de rede. Os trabalhos de impressão para a "impressora de rede" devem ser mantidos na fila local, assim como os trabalhos para outras impressoras locais.

As impressoras de páginas não enviam o documento inteiro (como você imaginou), mas uma “página” por vez. É claro que a “página” estaria no formato PDL e poderia ser dividida em linhas e pacotes, dependendo do meio de transferência. Como são impressoras de páginas e não servidores de impressão, não há armazenamento em massa (ou seja, disco rígido) e é necessário manter cada "página" na memória local até que seja impressa. Um protocolo de "controle de fluxo" (também conhecido como handshaking) estaria em vigor para o PC transmitir o fragmento da página ou a página quando mais memória estiver disponível na impressora.

A questão é: o que significa uma fila de impressão do sistema operacional se a impressora pode receber vários documentos?

A menos que você realmente tenha um servidor de impressão com armazenamento em massa (por exemplo, uma unidade de disco rígido), a "impressora de rede" realmente não pode aceitar documentos completos ou múltiplos, a menos que sejam pequenos o suficiente para caber na RAM da impressora. A fila de impressão do PC deve ser usada para solicitar e armazenar os trabalhos de impressão pendentes originados do PC. Cada PC na rede que usa essa "impressora de rede" precisa competir por essa impressora compartilhada. A "impressora de rede" poderia manter sua própria fila de solicitações de trabalho de todos os PCs, ou pelo menos de quais PCs estão solicitando serviço. Observe que ele só saberia das solicitações e não manteria nenhum dado da página (que ainda está em cada PC) até que a impressora esteja pronta para iniciar o trabalho.

Se você realmente tiver um servidor de impressão, a fila local será apenas uma etapa intermediária antes que o trabalho de impressão chegue à fila do servidor de impressão.

A fila de impressão do sistema operacional não nos mostra nada do que outras máquinas estão imprimindo porque é um buffer local. Então isso deve significar que a impressora tem uma fila integrada, certo? Então, por que temos filas de impressão se não conseguimos ver o que mais está sendo impresso?

Esperamos que a impressora tenha uma fila de solicitações para manter uma lista de trabalhos impressos por ordem de chegada. Caso contrário, um PC poderá ser substituído por outros PCs. Você ainda precisa de uma fila local porque é assim que você envia trabalhos de impressão no PC local. A menos que você tenha um servidor de impressão em rede real com armazenamento em massa para armazenar seu trabalho de impressão, ele deverá residir no seu PC local até que possa ser movido. Verifique com o fabricante da impressora (ou servidor) um aplicativo baseado em rede ou ferramenta de navegação para consultar a fila/status da impressora (ou servidor).

Como as impressoras imprimem documentos de várias máquinas se cada máquina não sabe que outras também estão imprimindo?

Este é um problema comum de alocação de recursos na ciência da computação: vários usuários/consumidores disputando um recurso. Neste caso (que não traz complicações) a impressora ou servidor pode receber cada solicitação e priorizá-las em alguma ordem. O controle de fluxo garantirá que a impressora não fique sobrecarregada. Outra solução possível (que simplifica a carga de trabalho na impressora) seria um esquema de passagem de tokens. O PC que recebeu o “token” pode usar a impressora para um trabalho. Após a impressão desse trabalho, esse PC deve passar o token para outro PC que tenha trabalhos em sua fila.

informação relacionada