Was ist der Unterschied zwischen einem "rohen" und einem "gekochten" Gerätetreiber?

27

Gilt dieses Konzept nur für Terminaltreiber (was die meisten Websites abdecken) oder für Treiber im Allgemeinen?

soc
quelle

Antworten:

30

Die Begriffe roh und gekocht gelten nur für Terminal-Treiber. "Gekocht" heißt kanonisch und "roh" heißt nicht kanonisch .

Der Terminaltreiber ist standardmäßig ein zeilenbasiertes System: Zeichen werden intern bis zu einem Wagenrücklauf ( Enteroder Return) zwischengespeichert, bevor sie an das Programm übergeben werden - dies wird als "gekocht" bezeichnet. Dadurch können bestimmte Zeichen verarbeitet werden (siehe stty(1)), z. B Cntl-D. Cntl-S,, Ctrl-U Backspace). im wesentlichen rudimentäre Zeilenbearbeitung. Der Terminal-Treiber "kocht" die Zeichen vor dem Servieren.

Das Terminal kann in den "Raw" -Modus versetzt werden, in dem die Zeichen nicht vom Terminaltreiber verarbeitet, sondern direkt gesendet werden (es kann festgelegt werden, dass die Zeichen INTR und QUIT weiterhin verarbeitet werden). Dadurch können Programme wie emacsund viden gesamten Bildschirm einfacher nutzen.

Weitere Informationen hierzu finden Sie im Abschnitt "Kanonischer Modus" der termios(3)Manpage.

Arcege
quelle
11

Die Begriffe werden verwendet, um Terminal- und Festplatten-E / A zu beschreiben, haben jedoch in jedem Kontext unterschiedliche Bedeutungen.

Der Raw- und der Cooked-Modus eines Endgeräts decken die Verarbeitung ab (zeichenweise im Vergleich zu zeilenweise, es gibt auch einige andere Unterschiede).

Ein 'Raw'-Plattengerät ( /dev/rdsk/*) ist ein Zeichengerät und das /dev/dsk/ist ein Blockgerät. IIRC Der Hauptunterschied besteht darin, dass das Block-Gerät über eine Kernel-Pufferung verfügt und eine fein abgestimmte Steuerung der E / A-Modi wie Direct / Mapped-E / A für ein unformatiertes Defizit festgelegt werden kann.

Eine Beschreibung der Roh- und Gar-Tty-Modi finden Sie hier. Ein Posting über Raw vs Cooked Disk Devices finden Sie hier.

Betroffen vonTunbridgeWells
quelle