Qual è la differenza tra un driver di dispositivo "grezzo" e un "cotto"?


27

Questo concetto si applica solo ai driver dei terminali (che è quello che copre la maggior parte dei siti) o ai driver in generale?

Risposte:


30

I termini grezzi e cotti si applicano solo ai driver terminali. "Cotto" si chiama canonico e "crudo" si chiama modalità non canonica .

Il driver del terminale è, per impostazione predefinita, un sistema basato su linea: i caratteri vengono bufferizzati internamente fino a quando un ritorno a capo ( Entero Return) prima di essere passato al programma - questo viene chiamato "cotto". Questo permette alcuni caratteri da elaborare (vedi stty(1)), ad esempio Cntl-D, Cntl-S, Ctrl-U Backspace); essenzialmente rudimentale line-editing. L'autista del terminale "cucina" i personaggi prima di servirli.

Il terminale può essere messo in modalità "raw" in cui i caratteri non vengono elaborati dal driver del terminale, ma vengono inviati direttamente (è possibile impostare che i caratteri INTR e QUIT siano ancora elaborati). Ciò consente a programmi come emacse vidi utilizzare più facilmente l'intero schermo.

Puoi leggere di più al riguardo nella sezione "Modalità canonica" della termios(3)pagina man.


11

I termini vengono utilizzati per descrivere l'I / O del terminale e del disco, ma significano cose diverse in ogni contesto.

Le modalità raw e cotte su un dispositivo terminale coprono l'elaborazione (carattere alla volta vs. linea alla volta, ci sono anche alcune altre differenze).

Un dispositivo disco 'grezzo' ( /dev/rdsk/*) è un dispositivo a caratteri e /dev/dsk/è un dispositivo a blocchi. IIRC la differenza principale è che il dispositivo a blocchi ha il buffering del kernel e il controllo fine sulle modalità I / O come l'I / O diretto / mappato può essere specificato su un difetto grezzo.

Una descrizione delle modalità tty crude e cotte è disponibile qui. Un post su dispositivi a disco grezzi o cotti può essere trovato qui.

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.