Was bedeutet Spool für das Drucken?

18

Mark hat einen Kommentar für mich geschrieben

Ich weiß nicht sofort, wie man Tassen nicht zum Spulen bringt, das heißt, wie man den Befehl lpr erst beendet, nachdem der Druckertreiber ausgeführt wurde.

Was bedeutet "Spule" zum Drucken?

Google sagt, es ist ein Verb mit der Bedeutung "Senden (Daten, die zum Drucken oder Verarbeiten auf einem Peripheriegerät bestimmt sind) an einen Zwischenspeicher". Was ist der Zwischenspeicher, den die Druckspule zum Beispiel beim Drucken auf lprBefehl darstellt ?

Mark scheint die Bedeutung von Spule mit Blockieren in Beziehung zu setzen. Aber ich kann das nicht herausfinden, wenn ich mir die Definition von Google anschaue.

Vielen Dank.

Tim
quelle

Antworten:

12

Ein Druck-Spool ist praktisch ein Puffer, der pro Auftrag verwaltet wird. Ein Programm (der Spooler) ist dafür verantwortlich, dass Aufträge vom Senden von Programmen empfangen und an einen oder mehrere Drucker weitergeleitet werden. Der Zweck eines Spool besteht darin, die Kommunikation zwischen zwei Systemen mit unterschiedlichen Geschwindigkeiten zu verwalten und den Zugriff auf gemeinsam genutzte Geräte zu steuern. Ersteres bedeutet, dass Programme Druckaufträge so schnell senden können, wie sie möchten, und dass diese Aufträge so schnell (oder langsam) verarbeitet werden, wie es Drucker können. Letztere (wie darauf hingewiesen durch RonJohn ) stellt sicher , dass Jobs kohärent verarbeitet werden: somit beim Drucken, werden Aufträge nicht vertauscht.

Netzwerkdrucker stellen ihre eigenen Spools bereit, und Druckserver (CUPS lpdusw.) implementieren auch Spools. Die meisten Drucksysteme verarbeiten auch Zugriffskontrollen, Kontingente, Banner, Druckoptionen usw. Spools werden in anderen Zusammenhängen verwendet. So spoolen bandbasierte Sicherungsserver jetzt Sicherungsdaten von vernetzten Hosts auf einem schnellen festplattenbasierten Speichersystem, sodass sie moderne Bandlaufwerke mit der enormen Geschwindigkeit einspeisen können, die sie benötigen, um den Glanz des Bandlaufwerks zu vermeiden.

Im Kontext des Kommentars besteht die Relevanz einer Spule darin, dass sie die Druckauftragsübermittlung von ihrer Erfüllung entkorreliert. Kein Spoolen würde bedeuten, dass die Übermittlung nur mit dem Druckauftrag abgeschlossen wird und Ihr lprBefehl daher erst dann abgeschlossen wird, wenn der Auftrag abgeschlossen ist. Das Entfernen der Spule auf Ihrem Computer führt jedoch möglicherweise nicht zum gewünschten Ergebnis, da der Drucker selbst auch spulen kann!

Stephen Kitt
quelle
1
Welcher Teil der Bedeutung von "Spool" macht es für den E / A-Puffer des Linux-Kernels nicht zutreffend?
Tim
3
Das Mail-System verwendet häufig einen Mail-Spool unter /var/spool/mailoder an einem ähnlichen Ort. Dies ist auch ein "Puffer", um das nahezu asynchrone Senden von E-Mail-Nachrichten zu ermöglichen. Die E-Mail-Nachricht wird gespoolt / in die Warteschlange gestellt und der E-Mail-Client muss nicht warten, bis die E-Mail das System tatsächlich verlässt. Sehr ähnlich wie ein Druckjob.
Kusalananda
1
@Tim es ist nicht wirklich eine Frage der Anwendbarkeit oder nicht, es ist nur keine Spule genannt. Puffer führen im Allgemeinen dazu, dass die Operationen, die in den Puffer eingespeist werden, nicht blockiert werden: Sie werden writeabgeschlossen, sobald die Daten in den verwendeten Puffer (unter Linux in den Seiten-Cache) geschrieben wurden und nicht erst, wenn sich die Daten tatsächlich am Ziel befinden. readist auch nicht unbedingt nicht blockierend und kann weniger Daten als angefordert zurückgeben.
Stephen Kitt
1
Beachten Sie außerdem, dass Spools nicht nur die "Kommunikation zwischen zwei Systemen mit unterschiedlicher Geschwindigkeit" verarbeiten, sondern auch den Zugriff auf diese langsameren Geräte serialisieren . (Sie können sich vorstellen, wie schlecht es für mehrere Jobs wäre, alle gleichzeitig auf den Drucker oder das Modem zu schreiben ...)
RonJohn
1
Druckspools werden in der Regel überall dort auf der Festplatte gespeichert, wo der Druckserver gehostet wird. Wenn ich sage, dass Drucker auch einen eigenen Spool haben können, ist dies normalerweise bei „vernetzten“ Druckern der Fall (die an ein Netzwerk und nicht an einen bestimmten Computer angeschlossen sind). Sie hosten ihre eigenen Druckserver und müssen mehrere eingehende Aufträge verwalten (was sie mit einem eigenen Spool erledigen). Wenn ein Drucker über eine eigene Spool verfügt, können Druckaufträge viel schneller angenommen werden, als sie gedruckt werden können. Selbst wenn darauf lprgewartet wird, dass der Drucker den Auftrag akzeptiert, kann es dennoch zu Verzögerungen kommen, bevor er vollständig verarbeitet wurde.
Stephen Kitt
36

Kurz gesagt besteht ein Spooler aus:

  • ein Hintergrundprogramm
  • ein Verzeichnis pro Drucker
  • eine Datei pro Druckauftrag

In Ihrem Fall lprsendet das Vordergrundprogramm ( ) seine Druckaufträge an cups, speichert sie und verwendet dann serielle, parallele, USB-, Netzwerk-, ... Kommunikation, um den Druckvorgang tatsächlich zu starten.

Selbst wenn der Drucker kein Papier mehr hat, können Sie den Computer heutzutage weiterhin verwenden. Als ich noch ein Kind bei CP / M war, war der gesamte Computer gesperrt, bis Sie mehr Papier hinzugefügt haben.

Warum heißt es "Spoolen"?

Zu dieser Zeit waren große Computer mit Bändern zum Speichern dieser Art von Dateien als Datenträger zu teuer. Wenn Sie also im Rechenzentrum arbeiteten, war das erste, was Sie hörten,, dass die Bänder sich zu drehen begannen¹ und erst nach einer Sekunde oder nach einer Sekunde 3-4 der Drucker würde mit dem Drucken beginnen (wenn Sie Glück hatten). ;-)

Anmerkung 1: Eine "Spule" ist ein Substantiv, das "eine zylindrische Vorrichtung, auf die ein Magnetband gewickelt werden kann" bedeutet, daher ist "Aufspulen" die zylindrische Vorrichtung, die das Band auf- und aufspult ...

Fabby
quelle
5
Noch direkter ist "Spule" ein Substantiv, das "eine zylindrische Vorrichtung, auf die ein Magnetband gewickelt werden kann" bedeutet
Stop Harming Monica
1
@OrangeDog: in Antwort aufgenommen, danke! :-)
Fabby
2
+1 Ich wusste nie, woher der Begriff "Spule" stammt.
Joe
@ Joe Aus demselben Grund wissen Kinder heutzutage nicht, was die Schaltfläche "Speichern" eigentlich bedeutet, da sie noch nie eine Diskette / Floppy / Stiffy / ... > gesehen haben :-)
Fabby
5

Beginnen wir zunächst mit der Bedeutung des Begriffs „Spoolen“: Manchmal ist die Größe eines Dokuments größer als der Druckerspeicher, sodass durch „Druckerspoolen“ mehrere Dokumente an einen Drucker gesendet und alle diese Dokumente in eine Warteschlange gestellt werden können.

Nun gibt es unter Unix zwei Drucksysteme:

  1. Das BSD-Spooling-System verwendet einen lpdDaemon, um die Druckaufträge zu planen.
  2. Das SVR4-Spooling-System verwendet lpschedals Scheduler.

Jeff Lessems USAIL: Unabhängiges Lernen in der Unix-Systemadministration enthält einen Abschnitt zum Drucken unter Unix, der einen guten Überblick über die BSD- und SVR4-Systeme bietet:

Das BSD-Spooling-System

Es erstreckt sich gut auf große, heterogene Netzwerke, sodass viele Computer Drucker gemeinsam nutzen können.

Unter dem BSD-Spooling-System wird der Zugriff auf Drucker vom lpd Daemon und dem lprProgramm gesteuert . lprist das einzige Programm auf einem BSD-System, das Dateien zum Drucken in die Warteschlange stellen kann.

lprAkzeptiert zu druckende Daten, legt sie in einem Spool-Verzeichnis ab und benachrichtigt den lpdDaemon. lprErstellt für jeden Druckauftrag zwei Dateien, eine Steuerdatei (cfxxx) und eine Datendatei (dfxxx) im Spool-Verzeichnis, wobei xxx eine eindeutige Auftrags-ID angibt. Die Steuerdatei enthält die Informationen zur Abwicklung des Druckauftrags, einschließlich der Identität des Eigentümers. Die Datendatei enthält die tatsächlich zu druckenden Daten.

Der lpdDämon überprüft die /etc/printcapDatei, um den Zieldrucker zu identifizieren. Wenn der Zieldrucker ein lokales Gerät ist, stellen Sie lpdsicher , dass in dieser Druckwarteschlange eine Kopie des lpdDämons ausgeführt wird. Andernfalls lpdwird eine Verbindung zum Remote-Host hergestellt, an den der Drucker angeschlossen ist, und die Steuerungs- und Datendatei werden an diesen übertragen.

Druckaufträge werden nach lpdFIFO (First-In, First-Out) geplant. Der Systemadministrator kann jedoch den Befehl lpc verwenden, um die Priorität der Jobs in der Druckwarteschlange zu ändern.

Das SVR4-Spooling-System wird von Solaris und HP-UX verwendet. Es bietet mehr Kontrolle und Flexibilität, wurde jedoch nicht für den Netzwerkdruck entwickelt und ist komplizierter einzurichten.

Unter dem SVR4-Spool-System lpakzeptiert der Befehl die zu druckenden Daten und kopiert sie in das dem Ziel zugeordnete Spool-Verzeichnis. Das Ziel besteht aus einem Druckernamen und einer optionalen Angabe einer Klasse, zu der der Drucker gehört. Wenn der angegebene Drucker ausgelastet ist, wird der Auftrag an einen anderen Drucker in derselben Klasse gesendet. Das Spool-Verzeichnis ist normalerweise /var/spool/lp/request/printer-nameund die Druckdatei erhält einen eindeutigen Namen, um sowohl den Auftrag als auch den Benutzer zu identifizieren.

Der Zugriff auf den Drucker wird vom lpschedDämon gesteuert . Die Aufträge werden aus dem Spool-Verzeichnis abgerufen und an das entsprechende Ziel gesendet, sobald sie verfügbar sind. lpsched führt auch ein Protokoll, normalerweise in /usr/spool/lp/log. Die Protokolldatei würde einen Fehler bei der Verarbeitung der Druckaufträge sowie den Benutzernamen anzeigen.

Siehe auch: Drucker und Druckerspooler - Befehle lp, lpstat und cancel | Tipps & Tricks für den IT-Blog

Anthony G - Gerechtigkeit für Monica
quelle
3
Es ist schön, Ihre Quellen zu erwähnen ...
Stephen Kitt
Ich bin noch nicht fertig geworden
3
Ich würde vorschlagen, Markdown-Formatierung zu verwenden, um zu verdeutlichen, welcher Text Ihr eigener ist und welcher zitiert wird. Sie sollten auch den ursprünglichen Autor, Jeff Lessem, gutschreiben, wie in unix.stackexchange.com/help/referencing
Anthony G - Justice für Monica
4

Nie vergessen , dass SPOOL ein Akronym für ist S imultaneous P eripheral O Arbeitsvorgänge O n L ine. Seit den frühen (aber nicht frühen) Tagen der Datenverarbeitung haben Prozessoren Ergebnisse schneller generiert, als die Drucker sie drucken konnten. Ohne Spooling konnte der Prozessor einen "Druckauftrag" erst beenden, wenn der Druckvorgang selbst abgeschlossen war. Dies führte häufig dazu, dass ein Prozessor im Leerlauf auf den Drucker wartete.

Während des amerikanischen Raumfahrtprogramms kam ein großer Sprung nach vorne beim Spulen. Die Computer lieferten die Ergebnisse zu langsam, sodass ein neues Spooling-System nur für die NASA geschrieben wurde (obwohl es und seine Nachfolger an Popularität gewannen, bis alle IBM-Systeme sie hatten). Es wurde die genannte H Ouston A utomatische S pooling P rogram, wodurch HASP die erste nested Akronym.

Eine gute Analogie zum Spulen ist eine Fadenfabrik - der Faden wird schnell gesponnen und - wo auch immer - auf einer Spule gespeichert. Dann wird die Garnrolle schließlich auf eine Nähmaschine oder eine andere Maschine gelegt, die mit einer viel langsameren Geschwindigkeit läuft, wo sie verwendet wird, um ein fertiges Produkt herzustellen.

Jennifer
quelle
17
Man beachte, dass die Herleitung von "Spule" allgemein als ein Backronym angesehen wird und "PDQ" definitiv ist.
chrylis -on strike-
6
Es ist offensichtlich ein Backronym, das im Nachhinein konstruiert wurde. Es wird zur Modeerscheinung, solche Gerüchte zu verbreiten. Viele von ihnen sind hier aufgelistet , vielleicht ist es an der Zeit, "Spool" hinzuzufügen!
Pipe
4
@Jennifer Obwohl IBM sicherlich ein Programm namens SPOOL hatte, wird weithin vermutet, dass sie diesen Namen entweder als eine Art Wortspiel gewählt oder von einem vorhandenen Begriff abgeleitet haben. In beiden Fällen handelt es sich wahrscheinlich um das Laden der Jobs auf eine Bandspule und die anschließende Wiedergabe. Im modernen Sprachgebrauch handelt es sich weder um ein veraltetes IBM-Produkt noch um eine Bandspule. Die gesamte Debatte ist daher eher akademisch und tangential zu der Frage, was dies heute bedeutet.
IMSoP
3
@ Jennifer Nun, ich irre mich nicht, dass es weithin vermutet wird, auch wenn die Leute falsch liegen, es zu vermuten. Und selbst wenn es stimmt, dass IBM den Begriff erfunden hat, warum haben sie diese Wörter gewählt? Haben sie den Namen lang geschrieben und dann gesagt "Oh, das ist ein Zufall, es bedeutet ein englisches Wort" - oder haben sie eher nach einem Begriff gesucht, der für die Funktionalität angemessen zu sein schien, und dachten, dass "die Jobs aufgespult werden" das band "war ein gutes bild?
IMSoP,
4
Dieser Beitrag würde stark von Zitierungen profitieren, insbesondere wegen seiner etymologischen Behauptungen.
TemporalWolf
3

Spooling ist ein ziemlich alter Begriff. Heutzutage wird "Druckwarteschlange" häufiger verwendet.

To Queue ist ein britisches Sprichwort für "Warte in der Schlange". So werden Druckaufträge "in die Warteschlange gestellt", dh sie warten in der Schlange, bis sie gedruckt werden.

Nachdem der Spoolvorgang eines Auftrags abgeschlossen ist (es kann zu langen Wartezeiten zwischen den Druckzeilen kommen), wird der Auftrag im Allgemeinen auf FIFO-Basis gedruckt, die Priorität des Druckauftrags kann diese jedoch außer Kraft setzen.

Druckspulen und Warteschlangen können angehalten werden, damit die Bediener das Papier wechseln können. Das kann auch neu gestartet werden, wenn einige Seiten beschädigt wurden.

WinEunuuchs2Unix
quelle