O que significa spool para impressão?

18

Mark escreveu um comentário para mim

Não sei de antemão como fazer xícaras não serem enroladas, ou seja, como fazer com que o comando lpr saia somente após a execução do driver da impressora.

O que significa "spool" para impressão?

O Google diz que é um verbo que significa "enviar (dados destinados à impressão ou processamento em um dispositivo periférico) para uma loja intermediária". Qual é o armazenamento intermediário que o spool de impressão representa, por exemplo, ao imprimir por lprcomando

Mark parece relacionar o significado de spool com bloqueio. Mas não consigo descobrir isso olhando para a definição dada pelo Google.

Obrigado.

Tim
fonte

Respostas:

12

Um spool de impressão é efetivamente um buffer, gerenciado por trabalho, com um programa (o spooler) responsável por receber trabalhos de envio de programas e alimentá-los com uma ou mais impressoras. O objetivo de um spool é lidar com a comunicação entre dois sistemas com velocidades diferentes e controlar o acesso a dispositivos compartilhados. O primeiro significa que os programas podem enviar trabalhos de impressão o mais rápido possível, e esses trabalhos são tratados tão rápido (ou lentamente) quanto as impressoras. O último (como apontado por RonJohn ) garante que os trabalhos sejam tratados de forma coerente: portanto, durante a impressão, os trabalhos não são misturados.

As impressoras em rede fornecem seus próprios spools e os servidores de impressão (CUPS lpdetc.) também implementam spools. A maioria dos sistemas de impressão também lida com controle de acesso, cotas, banners, opções de impressão etc. Os spools são usados ​​em outros contextos; por exemplo, os servidores de backup baseados em fita agora armazenam dados de backup de hosts em rede em um sistema de armazenamento rápido baseado em disco, para que possam alimentar unidades de fita modernas nas tremendas velocidades necessárias para evitar o desgaste de fita.

No contexto do comentário, a relevância de um spool é que ele correlacione o envio do trabalho de impressão a partir de seu preenchimento. Não colocar em spool significaria que o envio seria concluído apenas com o trabalho de impressão e, portanto, seu lprcomando seria concluído apenas quando o trabalho fosse concluído. A remoção do carretel no seu computador pode não ter o resultado desejado, já que a própria impressora também pode carretel!

Stephen Kitt
fonte
11
Qual parte do significado de "spool" o torna não aplicável ao buffer de E / S do kernel do Linux?
Tim
3
O sistema de correio geralmente usa um spool de correio em /var/spool/mailum local semelhante. Este também é um "buffer" para permitir o envio quase assíncrono de mensagens de email. A mensagem de correio está em spool / na fila e o cliente de email não precisa aguardar que o email realmente saia do sistema. Muito parecido com um trabalho de impressão.
Kusalananda
11
@ Tim não é realmente uma questão de ser aplicável ou não, apenas não é chamado de spool. Os buffers geralmente resultam no fato de as operações que alimentam o buffer não serem bloqueadas: são writeconcluídas assim que os dados são gravados em qualquer buffer usado (no Linux, o cache da página), não quando os dados estão realmente no seu destino. readtambém não é necessariamente não-bloqueante e pode retornar menos dados do que o solicitado.
Stephen Kitt
11
Observe também que - além de lidar com a "comunicação entre dois sistemas com velocidades diferentes" - os spools serializam o acesso a esses dispositivos mais lentos. (Você pode imaginar como isso seria ruim para vários postos de trabalho para todos os gravação para a impressora ou modem, ao mesmo tempo ...)
RonJohn
11
Os spools de impressão geralmente são armazenados em disco, onde quer que o servidor de impressão esteja hospedado. Quando digo que as impressoras também podem ter seu próprio spool, normalmente é o caso das impressoras "em rede" (conectadas a uma rede e não a um computador específico); eles hospedam seus próprios servidores de impressão e precisam gerenciar vários trabalhos recebidos (o que eles fazem com seu próprio spool). Quando uma impressora possui seu próprio spool, ela pode aceitar trabalhos de impressão muito mais rapidamente do que eles podem ser impressos, portanto, mesmo que lpresperasse a impressora terminar de aceitar o trabalho, ainda haveria um atraso antes de ser totalmente processado.
Stephen Kitt
36

Em poucas palavras, um spooler consiste em:

  • um programa em segundo plano
  • um diretório por impressora
  • um arquivo por trabalho de impressão

No seu caso, o programa em primeiro plano ( lpr) envia seus trabalhos de impressão para cups, que o armazena e usa a comunicação serial, paralela, USB, rede, ... para realmente iniciar o processo de impressão.

É por isso que hoje em dia, mesmo quando a impressora fica sem papel, você ainda pode continuar usando o computador, enquanto, quando eu era criança no CP / M, todo o computador travava até você adicionar mais papel ...

Por que é chamado de "spool"?

Como naqueles tempos, os computadores grandes usavam fita para armazenar esses tipos de arquivos, pois os discos eram muito caros; portanto, quando você trabalhava no data center, a primeira coisa que ouvia eram as fitas começando a girar¹ e somente depois de um segundo ou 3-4 a impressora iniciaria a impressão (se você tiver sorte). ;-)

Nota 1: "Carretel" é um substantivo que significa "um dispositivo cilíndrico no qual a fita magnética pode ser enrolada"; portanto, "spooling" é o dispositivo cilíndrico que gira e enrola a fita ...

Fabby
fonte
5
Mais diretamente, "carretel" é um substantivo que significa "um dispositivo cilíndrico em que a fita magnética pode ser ferida"
parar de prejudicar Monica
11
@ OrangeDog: incorporado na resposta, obrigado! :-)
Fabby
2
+1 Nunca soube de onde veio o termo "spool".
Joe
@Joe A mesma razão que as crianças hoje em dia não sabem o que realmente significa o botão salvar, pois nunca viram um Disquete / Disquete / Stiffy / ... > :-)
Fabby
5

Primeiro, vamos começar com o significado do termo "spool": às vezes o tamanho de um documento é maior que a memória da impressora, portanto, "spooling de impressora" permite o envio de vários documentos para uma impressora e a colocação de todos esses documentos em uma fila.

Agora, no Unix, existem dois sistemas de impressão:

  1. O sistema de spool do BSD usa lpddaemon para agendar os trabalhos de impressão.
  2. O sistema de spool SVR4 usa lpschedcomo agendador.

O USAIL de Jeff Lessem : o aprendizado independente da administração do sistema Unix possui uma seção sobre Impressão no Unix, que fornece uma boa visão geral dos sistemas BSD e SVR4:

O sistema de spool do BSD

estende-se bem a redes grandes e heterogêneas, permitindo que muitos computadores compartilhem impressoras.

Sob o sistema de spooling BSD, o acesso às impressoras é controlado pelo lpd daemon e pelo lprprograma. lpré o único programa em um sistema BSD que pode enfileirar arquivos para impressão.

lpraceita dados a serem impressos, coloca-os em um diretório de spool e notifica o lpddaemon. Para cada trabalho de impressão, lprcria dois arquivos, um arquivo de controle (cfxxx) e um arquivo de dados (dfxxx) no diretório de spool, xxx indicando um ID de trabalho exclusivo. O arquivo de controle contém as informações para lidar com o trabalho de impressão, incluindo a identidade do proprietário. O arquivo de dados contém os dados reais a serem impressos.

O lpddaemon verifica o /etc/printcaparquivo para identificar a impressora de destino. Se a impressora de destino for um dispositivo local, lpdverifique se uma cópia do lpddaemon está sendo executada nessa fila de impressão. Caso contrário, lpdabre uma conexão com o host remoto ao qual a impressora está conectada e transfere o arquivo de controle e dados para ele.

Os trabalhos de impressão são agendados com base lpdno primeiro a entrar, primeiro a sair (FIFO). No entanto, o administrador do sistema pode usar o comando lpc para alterar a prioridade dos trabalhos na fila de impressão.

O sistema de spool SVR4 é usado pelo Solaris e HP-UX. Oferece mais controle e flexibilidade, mas não foi projetado para impressão em rede e é mais complicado de configurar.

No sistema de spool SVR4, o lpcomando aceita os dados a serem impressos, faz uma cópia deles no diretório de spool associado ao destino. O destino consiste em um nome de impressora e uma especificação opcional de uma classe à qual a impressora pertence. Quando a impressora especificada está ocupada, o trabalho é enviado para outra impressora da mesma classe. O diretório de spool é normalmente /var/spool/lp/request/printer-namee o arquivo de impressão recebe um nome exclusivo para identificar o trabalho e o usuário.

O acesso à impressora é controlado pelo lpscheddaemon. Ele pega os trabalhos no diretório de spool e os envia para o destino apropriado quando eles ficam disponíveis. O lpsched também mantém um log, geralmente dentro /usr/spool/lp/log. O arquivo de log indicaria qualquer erro no processamento dos trabalhos de impressão, assim como o nome de usuário,

Consulte também: Impressoras e spooler de impressora - comandos lp, lpstat e cancel | Dicas e truques para o blog de TI

Anthony G - justiça para Monica
fonte
3
É bom mencionar suas fontes ...
Stephen Kitt
Eu não terminei ainda ;-)
3
Sugiro usar a formatação do Markdown para deixar claro qual texto é seu e qual é citado. Você também deve creditar o autor original, Jeff Lessem como explicado no unix.stackexchange.com/help/referencing
Anthony G - justiça para Monica
4

Nunca se esqueça que SPOOL é um acrónimo para S imultaneous P eripheral O PERAÇÕES O n L ine. Desde os primeiros dias (mas não os primeiros) da computação, os processadores geravam resultados mais rapidamente do que as impressoras podiam imprimi-los. Sem colocar em spool, o processador não pôde concluir um "trabalho de impressão" até que a própria impressão estivesse concluída. Isso geralmente resultava em um processador ocioso, aguardando a impressora.

Um grande avanço no spool ocorreu durante o programa espacial americano. Os computadores estavam produzindo resultados muito lentamente, então um novo sistema de spool foi escrito apenas para a NASA (embora ele e seus sucessores tenham ganhado popularidade até que todos os sistemas IBM os tenham). Ele foi chamado o H ouston Um utomatic S agrupamento de P rogram, tornando ferrolho do primeiro acrónimo aninhada.

Uma boa analogia ao spool é uma fábrica de threads - o thread é girado rapidamente e armazenado - onde mais - em um spool. Em seguida, o carretel de linha é colocado em uma máquina de costura ou outra máquina, que é executada a uma taxa muito mais lenta, onde é usada para criar um produto acabado.

Jennifer
fonte
17
Observe que essa derivação de "spool" é amplamente considerada um backronym e "PDQ" definitivamente é.
usar o seguinte comando
6
É obviamente um backronym construído após o fato. Está se tornando uma moda para espalhar esses rumores. Muitos deles estão listados aqui , talvez seja hora de adicionar "spool" a ele!
pipe
4
@ Jennifer Embora a IBM certamente tenha um programa chamado SPOOL, é amplamente conjeturado, como no link do Jargon File acima, que eles escolheram esse nome como uma espécie de trocadilho ou derivaram de um termo existente. De qualquer forma, provavelmente se refere ao carregamento dos trabalhos em um carretel de fita e, em seguida, à reprodução deles. No uso moderno, ele não se refere a um produto IBM obsoleto nem a um carretel de fita; portanto, todo o debate é bastante acadêmico e tangencial à questão do que significa hoje.
IMSoP 25/09
3
@ Jennifer Bem, eu não estou errado que seja amplamente conjeturado, mesmo que as pessoas estejam erradas ao conjeturá-lo. E mesmo que seja verdade que a IBM inventou o termo, por que eles escolheram essas palavras? Eles escreveram o nome à mão e depois disseram "oh, isso é uma coincidência, soletra uma palavra em inglês" - ou é mais provável que eles estivessem procurando um termo que parecesse apropriado para a funcionalidade e pensassem que "colocava os trabalhos em spool a fita "era uma boa imagem?
IMSoP 25/09
4
Este post se beneficiaria muito com citações, principalmente por suas afirmações etimológicas.
TemporalWolf
3

Spool é um termo bastante antigo da escola. Atualmente, você vê "Fila de impressão" usado com mais frequência.

To Queue é um ditado britânico para "esperar na fila". Portanto, os trabalhos de impressão são "enfileirados", ou seja, aguardando na fila para impressão.

Depois que um trabalho termina o spool (pode haver longos períodos de "reflexão" entre as linhas de impressão), ele é impresso, geralmente em uma base FIFO, mas a prioridade do trabalho de impressão pode substituí-lo.

Os carretéis e filas de impressão podem ser pausados ​​para que os Operadores troquem de papel. Também pode ser reiniciado se algumas páginas estiverem danificadas.

WinEunuuchs2Unix
fonte