Cosa significa spool per la stampa?


18

Mark ha scritto un commento per me

Non so con disinvoltura come non eseguire lo spooling delle tazze, ovvero come far uscire il comando lpr solo dopo l'esecuzione del driver della stampante.

Che cosa significa "spool" per la stampa?

Google afferma che è un verbo che significa "invia (dati destinati alla stampa o all'elaborazione su un dispositivo periferico) a un negozio intermedio". Qual è l'archivio intermedio che rappresenta lo spool di stampa, ad esempio, quando si stampa tramite lprcomando

Mark sembra mettere in relazione il significato della bobina con il blocco. Ma non riesco a capirlo guardando la definizione fornita da Google.

Grazie.

Risposte:


12

Uno spool di stampa è effettivamente un buffer, gestito per lavoro, con un programma (lo spooler) responsabile della ricezione dei lavori dall'invio dei programmi e del loro invio a una o più stampanti. Lo scopo di una bobina è gestire la comunicazione tra due sistemi con velocità diverse e controllare l'accesso ai dispositivi condivisi. Il primo significa che i programmi possono inoltrare i lavori di stampa il più rapidamente possibile e che tali lavori vengono gestiti il ​​più rapidamente (o lentamente) come le stampanti possono gestire. Quest'ultimo (come sottolineato da RonJohn ) assicura che i lavori vengano gestiti in modo coerente: quindi durante la stampa, i lavori non vengono confusi.

Le stampanti in rete forniscono i propri spool e anche i server di stampa (CUPS, lpdecc.) Implementano spool. La maggior parte dei sistemi di stampa gestisce anche il controllo degli accessi, quote, banner, opzioni di stampa, ecc. Gli spool vengono utilizzati in altri contesti; ad esempio, i server di backup su nastro ora eseguono lo spooling dei dati di backup dagli host di rete su un sistema di archiviazione basato su disco veloce, in modo che possano quindi alimentare le moderne unità a nastro alle incredibili velocità di cui hanno bisogno per evitare il lustro delle scarpe.

Nel contesto del commento, la pertinenza di una bobina è che decorrelare l'invio del lavoro di stampa dal suo adempimento. Non eseguire lo spooling significherebbe che l'invio si completerebbe solo con il lavoro di stampa, e quindi il lprcomando si completerebbe solo una volta completato il lavoro. Rimuovere la spool sul tuo computer potrebbe non avere il risultato desiderato, dato che anche la stessa stampante potrebbe spool!


1
Quale parte del significato di "spool" non lo rende applicabile al buffer IO del kernel Linux?
Tim

3
Il sistema di posta utilizza spesso uno spool di posta in /var/spool/mailuna posizione simile. Questo è anche un "buffer" per consentire l'invio quasi asincrono di messaggi di posta. Il messaggio di posta elettronica viene inviato in spool / in coda e il client di posta non deve attendere che la posta lasci effettivamente il sistema. Assomiglia molto a un lavoro di stampa.
Kusalananda

1
@Tim non è davvero una questione di essere applicabile o meno, semplicemente non si chiama spool. I buffer generano generalmente che le operazioni di alimentazione nel buffer non vengano bloccate: si writecompleta non appena i dati vengono scritti in qualsiasi buffer utilizzato (in Linux, la cache della pagina), non una volta che i dati sono realmente a destinazione. readnon è necessariamente non bloccante e può restituire meno dati di quanto richiesto.
Stephen Kitt,

1
Si noti inoltre che, oltre a gestire la "comunicazione tra due sistemi con velocità diverse", gli spool serializzano l' accesso a quei dispositivi più lenti. (Potete immaginare quanto sarebbe male per più lavori scrivere tutti sulla stampante o sul modem contemporaneamente ...)
RonJohn

1
Gli spool di stampa sono generalmente memorizzati su disco, ovunque sia ospitato il server di stampa. Quando dico che le stampanti possono anche avere il proprio spool, questo è normalmente il caso delle stampanti "in rete" (che sono connesse a una rete, piuttosto che a un computer specifico); ospitano i propri server di stampa e devono gestire più lavori in entrata (cosa che fanno avendo il proprio spool). Quando una stampante ha un proprio rocchetto, può accettare lavori di stampa molto più velocemente di quanto possano essere stampati, quindi anche se si lpraspettava che la stampante finisse di accettare il lavoro, ci sarebbe comunque un ritardo prima che fosse completamente elaborato.
Stephen Kitt,

36

In poche parole, uno spooler è composto da:

  • un programma in background
  • una directory per stampante
  • un file per processo di stampa

Nel tuo caso, il programma in primo piano ( lpr) invia i suoi lavori di stampa a cups, che lo memorizza e quindi utilizza la comunicazione seriale, parallela, USB, di rete, ... per avviare effettivamente il processo di stampa.

Ecco perché al giorno d'oggi anche quando la stampante esaurisce la carta, è ancora possibile continuare a utilizzare il computer, mentre quando ero un bambino su CP / M, l'intero computer si bloccava fino a quando non si aggiungeva più carta ...

Perché si chiama "spooling"?

Perché a quei tempi, i computer di grandi dimensioni utilizzavano il nastro per archiviare questo tipo di file poiché i dischi erano troppo costosi, quindi quando lavoravi all'interno del data center, la prima cosa che sentivi erano i nastri che iniziavano a girare¹ e solo dopo un secondo o 3-4 la stampante inizierà a stampare (se si fosse fortunati). ;-)

Nota 1: Una "bobina" è un sostantivo che significa "un dispositivo cilindrico sul quale può essere avvolto il nastro magnetico", quindi "bobina" è il dispositivo cilindrico che gira e avvolge il nastro ...


5
Più direttamente, "bobina" è un sostantivo che significa "un dispositivo cilindrico su cui è possibile avvolgere il nastro magnetico"
OrangeDog

1
@OrangeDog: incorporato nella risposta, grazie! :-)
Fabby,

2
+1 Non ho mai saputo da dove venisse il termine "bobina".
Joe,

@Joe Stesso motivo per cui i bambini al giorno d'oggi non sanno cosa significhi effettivamente il pulsante di salvataggio in quanto non hanno mai visto un dischetto / floppy / rigido / ... > :-)
Fabby

5

Innanzitutto, cominciamo con il significato del termine "spooling": a volte la dimensione di un documento è maggiore della memoria della stampante, quindi lo "spooling della stampante" consente l'invio di più documenti a una stampante e l'inserimento di tutti questi documenti in coda.

Ora, sotto Unix ci sono due sistemi di stampa:

  1. Il sistema di spooling BSD utilizza un lpddemone per pianificare i lavori di stampa.
  2. Il sistema di spooling SVR4 utilizza lpschedcome scheduler.

USAIL di Jeff Lessem : l'apprendimento indipendente dall'amministrazione di sistemi Unix ha una sezione sulla stampa sotto Unix che offre una buona panoramica dei sistemi BSD e SVR4:

Il sistema di spooling BSD

si estende bene a reti grandi ed eterogenee consentendo a molti computer di condividere stampanti.

Nel sistema di spooling BSD, l'accesso alle stampanti è controllato dal lpd demone e dal lprprogramma. lprè l'unico programma su un sistema BSD in grado di mettere in coda i file per la stampa.

lpraccetta i dati da stampare, li inserisce in una directory di spooling e avvisa il lpddemone. Per ogni lavoro di stampa, lprcrea due file, un file di controllo (cfxxx) e un file di dati (dfxxx) nella directory di spool, xxx che indica un ID lavoro univoco. Il file di controllo contiene le informazioni per la gestione del lavoro di stampa, inclusa l'identità del proprietario. Il file di dati contiene i dati effettivi da stampare.

Il lpddaemon controlla il /etc/printcapfile per identificare la stampante di destinazione. Se la stampante di destinazione è un dispositivo locale, lpdassicurarsi che una copia del lpddaemon sia in esecuzione su quella coda di stampa. Altrimenti lpdapre una connessione all'host remoto a cui è connessa la stampante e trasferisce sia il file di controllo che i file di dati.

I lavori di stampa sono programmati in base lpdal principio First-In, First-Out (FIFO). Tuttavia, l'amministratore di sistema può utilizzare il comando lpc per modificare la priorità dei lavori nella coda di stampa.

Il sistema di spooling SVR4 è utilizzato da Solaris e HP-UX. Offre maggiore controllo e flessibilità, ma non è stato progettato per la stampa in rete ed è più complicato da configurare.

Nel sistema di spooling SVR4, il lpcomando accetta i dati da stampare, ne crea una copia nella directory di spool associata alla destinazione. La destinazione è costituita da un nome stampante e da una specifica facoltativa di una classe a cui appartiene la stampante. Quando la stampante specificata è occupata, il lavoro viene inviato a un'altra stampante della stessa classe. La directory di spooling è normalmente /var/spool/lp/request/printer-namee al file di stampa viene assegnato un nome univoco per identificare sia il lavoro che l'utente.

L'accesso alla stampante è controllato dal lpscheddemone. Preleva i lavori dalla directory di spool e li invia alla destinazione appropriata quando diventa disponibile. lpsched mantiene anche un registro, di solito in /usr/spool/lp/log. Il file di registro indicherebbe qualsiasi errore nell'elaborazione dei lavori di stampa, nonché il nome utente,

Vedi anche: Stampanti e spooler di stampa - comandi lp, lpstat e cancel | Suggerimenti e trucchi per il blog IT


3
È bello menzionare le tue fonti ...
Stephen Kitt,

Non ho ancora finito ;-)

3
Suggerirei di utilizzare la formattazione Markdown per chiarire quale testo è il tuo e quale è citato. Dovresti anche dare credito all'autore originale, Jeff Lessem, come spiegato in unix.stackexchange.com/help/referencing
Anthony G - giustizia per Monica,

4

Non dimenticate mai che SPOOL è l'acronimo di S imultaneous P eripheral O perazioni O n L ine. Fin dai primi (ma non primi) giorni dell'informatica, i processori hanno generato risultati più velocemente di quanto le stampanti potessero stamparli. Senza lo spooling, il processore non è riuscito a terminare un "lavoro di stampa" fino al termine della stampa stessa. Ciò portava spesso a un processore inattivo, in attesa della stampante.

Un grande passo avanti nello spooling è arrivato durante il programma spaziale americano. I computer stavano producendo risultati troppo lentamente, quindi un nuovo sistema di spooling è stato scritto solo per la NASA (anche se esso e i suoi successori hanno guadagnato popolarità fino a quando tutti i sistemi IBM non li hanno avuti). È stato chiamato H Ouston A Automatica S pool P rogram, rendendo HASP primo acronimo annidato.

Una buona analogia con lo spooling è una fabbrica di thread: il thread viene filato a una velocità elevata e memorizzato - dove altro - su un rocchetto. Quindi il rocchetto di filo viene infine messo su una macchina da cucire o altra macchina, che scorre a una velocità molto più lenta, dove viene utilizzato per creare un prodotto finito.


17
Si noti che quella derivazione di "spool" è ampiamente considerata un backronym e "PDQ" lo è sicuramente .
Chrylis

6
È ovviamente un backronym costruito dopo il fatto. Sta diventando una moda per diffondere tali voci. Molti di questi sono elencati qui , forse è il momento di aggiungere "spool" ad esso!
pipe

4
@Jennifer Sebbene IBM avesse certamente un programma chiamato SPOOL, è ampiamente congetturato, come nel link Jargon File sopra, che hanno scelto quel nome come una sorta di gioco di parole o lo hanno derivato da un termine esistente. Ad ogni modo, probabilmente si riferisce al caricamento dei lavori su una bobina di nastro e quindi alla loro riproduzione. Nell'uso moderno, non si riferisce né a un prodotto IBM obsoleto né a una bobina di nastro, quindi l'intero dibattito è piuttosto accademico e tangenziale alla questione di cosa significhi oggi.
IMSoP,

3
@Jennifer Beh, non sbaglio che sia ampiamente congetturato, anche se le persone sbagliano a congetturarlo. E anche se è vero che IBM ha inventato il termine, perché hanno scelto quelle parole? Hanno scritto a lungo il nome e poi hanno detto "oh, è una coincidenza, scrive una parola inglese" - o è più probabile che stessero cercando un termine che sembrava appropriato per la funzionalità, e hanno pensato che "spooling i lavori su il nastro "era una buona immagine?
IMSoP

4
Questo post trarrebbe grandi benefici dalle citazioni, in particolare per le sue affermazioni etimologiche.
TemporalWolf,

3

Lo spooling è un termine piuttosto antico. Oggi vedrai "Coda di stampa" utilizzata più spesso.

To Queue è un detto britannico di "aspettare in fila". Quindi i lavori di stampa vengono "messi in coda", ovvero in attesa di essere stampati in linea.

Una volta terminato lo spooling di un lavoro (possono esserci lunghi tempi di "riflessione" tra le righe di stampa), quindi viene stampato, generalmente su base FIFO ma la priorità del lavoro di stampa può sovrascriverlo.

Gli spool e le code di stampa possono essere messi in pausa per consentire agli operatori di cambiare carta. È inoltre possibile riavviare se alcune pagine sono state danneggiate.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.