Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung


'Wie werde ich Unix-Guru' als Buch bestellen
A. Willemer
Wie werde ich UNIX-Guru
I  ANWENDUNG
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.

II  ADMINISTRATION
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel

III  NETZWERK
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls

IV  DAS X-WINDOW SYSTEM
Die grafische Oberfläche von UNIX einrichten und nutzen

V  PROGRAMMIERUNG VON SHELLSKRIPTEN
Automatisieren von Tasks durch Shell-Skripte.

VI  PERL
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk

VII  PROGRAMMIERWERKZEUGE
C-Compiler, Analyse-Tools, CVS, yacc, diff

VIII  UNIX-SYSTEMAUFRUFE
UNIX-Befehle in eigenen Programmen nutzen

IX  LITERATUR
Weiterführende Literatur zu UNIX und LINUX

 
Galileo Computing / <openbook> / "Wie werde ich UNIX-Guru ?"
« BSD-Unix: lpd, lpr, lpq Druckeradministration System V: lpsched, lp, »

Unterabschnitte
  • Filter und PostScript
  • Druckerdevices unter Linux
  • Druckerinterrupt auf Linux-Systemen

Linux-PC als Druckserver

Ein PostScript-Drucker mit Netzschnittstelle ist nicht billig. Da ist es ein nahe liegender Gedanke, einen ausgedienten PC mit den preiswerten PC-Druckern auszustatten und an das Netz anzuschließen. Gegenüber einem netzwerkfähigen TCP/IP-Drucker hat diese Lösung den Vorteil, dass der Linux-PC das lpd-Protokoll korrekt einhält. Die PostScript-Fähigkeit wird durch GhostScript realisiert, und als Zugabe kann man die Drucker sogar in Samba (siehe S. samba) einbinden und dadurch von den Arbeitsplätzen unter MS Windows aus mitverwenden.

Filter und PostScript

Unter UNIX ist PostScript der Standard für Drucker. Das ist sehr praktisch, da die meisten Anwendungsprogramme kein Problem damit haben, eine PostScriptausgabe zu erzeugen. Das Programm GhostScript ist ein Übersetzer von PostScript auf die verschiedensten Ausgabemedien. Dazu zählen neben dem Bildschirm auch alle gängigen Drucker.

Die Umwandlung von PostScript in die druckereigene Sprache erfolgt durch einen Filter, der mit dem Eintrag if in die Datei /etc/printcap eingetragen wird. Bei der Linux-Distribution von S.u.S.E. erscheint dort nach einer Druckerinstallation ein apsfilter. Dahinter verbirgt sich ein Programm, das den Programmnamen durch einen Aufruf von gs ersetzt. GhostScript setzt nun den Input in PostScript auf diverse propitiäre Formate um.

Ein Interface-Skript wie apsfilter kann man unter anderen Linuxsystemen leicht selbst schreiben, indem man eine Datei mit folgender Zeile erzeugt:vgl. Barakati, Naba: Linux Red Hat 6.0, 2000, Franzis', S. 466

/usr/bin/gs -q -dNOPAUSE -dSAFER -sDEVICE=clj5 -sOutputFile=-

Der Name des Skripts (beispielsweise /usr/local/cljf) wird dann unter :if=/usr/local/cljf: in die /etc/printcap eingetragen. Der unter if eingetragene Filter erhält die Eingabedaten über stdin und muss die Ausgabedaten nach stdout wieder abliefern. Das ist der Grund für den Bindestrich hinter -sOutputFile=.

Druckerdevices unter Linux

Der Zugriff auf die Schnittstellen erfolgt über die Gerätedateien im Verzeichnis /dev, wie dies unter UNIX üblich ist. Bei PCs sind die Druckeranschlüsse parallele Schnittstellen. Davon kann jeder PC drei Stück haben, wobei der dritte keinen Interrupt besitzt und per Polling abgefragt werden muss. Dazu kommen die USB-Anschlüsse und die maximal vier Mit einer speziellen Karte sind auch mehr als vier serielle Schnittstellen möglich. Diese teilen sich dann den Interrupt. Man sollte aber vor der Verwendung prüfen, ob sie auch von Linux unterstützt werden. seriellen Schnittstellen, von denen wiederum zwei mit eigenen Interrupts belegbar sind. Insgesamt kann man einen solchen Rechner also recht ordentlich bestücken.

[Druckeranschlüsse am PC]L|L|C Device & Anschluss & Interrupt
/dev/lp0 & parallele Schnittstelle (LPT1) & 7
/dev/lp1 & parallele Schnittstelle (LPT2) & 5
/dev/ttyS0 & serielle Schnittstelle (COM1) & 3
/dev/ttyS1 & serielle Schnittstelle (COM2) & 4
/dev/usblp0 & per USB angeschlossener Drucker &

Druckerinterrupt auf Linux-Systemen

Auf einem Einzelplatzsystem wie MS-DOS wartet das Programm normalerweise in einer Endlosschleife auf den Druckauftrag. Dies nennt man Polling. Die Alternative dazu ist die Interruptsteuerung. Dazu wird der Prozess, der den Druck steuert, direkt nach Ablieferung eines Druckzeichens in eine Warteschlange gesetzt. Die CPU wendet sich neuen Aufgaben zu. Sobald der Drucker fertig ist, unterbricht er (Interrupt) die derzeitige Beschäftigung der CPU. Diese holt den wartenden Prozess wieder aus der Warteschlange und setzt ihn fort.

Während das Polling zu einer Beobachtungsschleife führt, die die CPU stark belastet, findet bei der Interruptsteuerung nur dann eine Aktion statt, wenn der Ablauf das erfordert. Bei Einzelplatzsystemen ist der Unterschied nicht signifikant. Unter Multitasking-Systemen, insbesondere bei mehreren Druckern, sollte eine interruptgetriebene Ansteuerung verwendet werden.

Beim Design des PCs waren von vornherein Interrupts für den Drucker vorgesehen. Für die erste parallele Schnittstelle ist der Interrupt 7 reserviert. Ein zweiter Parallelanschluss (LPT2) ist mit dem Interrupt 5 vorgesehen. Aufgrund der Interrupt-Knappheit in einem PC wird dieser Interrupt allerdings häufig für andere Peripherie verwendet, da nur wenige PCs wirklich zwei Druckerschnittstellen besitzen. Ein dritter Anschluss (LPT3) ist zwar ansteuerbar, hat aber keinen Interrupt zugeordnet.

Unter Linux kann durch den Befehl tunelp der Druckerinterrupt eingeschaltet und zugeordnet werden. Standardmäßig arbeitet LINUX mit Polling. Interessanterweise erreicht Linux auch so eine ganz anständige Leistung aus dem Drucker. Wenn aber Leistungseinbrüche beim Druck oder hohe Belastungen des Systems durch den Druck feststellbar sind, sollte man die Interrupts aktivieren.

tunelp /dev/lp1 -i7
tunelp /dev/lp2 -i5

Hier wird die Schnittstelle LPT1 auf den Interrupt 7 und die Schnittstelle LPT2 auf den Interrupt 5 gesetzt. Seit der Kernelversion 2.1.131Die Kernelversion meldet der Befehl uname -r. wird die Steuerung der parallelen Schnittstellen durch das parport-System übernommen. In der Konfigurationsdatei /etc/modules.conf erreicht der folgende Eintrag, dass die Druckerschnittstellen 1 und 2 per Interrupt betrieben werden.

alias parport_lowlevel parport_pc
options parport_pc io=0x378,0x278 irq=7,5 



« BSD-Unix: lpd, lpr, lpq | Druckeradministration | System V: lpsched, lp, »
 
 Zum Katalog
Zum Katalog
Wie werde ich UNIX-Guru?
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 UNIX/Linux

PHP 4-Workshop

Einstieg in Python

Perl fürs Web

MySQL 4

GNOME 2.0
 Empfehlung

Einstieg in XML
 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info

 MyGalileo
Der Service für registrierte Leser:
Zu MyGalileo
Info



Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de