web-dev-qa-db-ja.com

「生の」デバイスドライバーと「調理された」デバイスドライバーの違いは何ですか?

この概念は、ターミナルドライバー(ほとんどのサイトでカバーされているもの)または一般的なドライバーにのみ適用されますか?

29
soc

rawおよびcookedという用語は、ターミナルドライバにのみ適用されます。 「調理済み」はcanonicalと呼ばれ、「生」はnon-canonicalモードと呼ばれます。

端末ドライバは、デフォルトでは行ベースのシステムです。文字は、キャリッジリターン(Enter または Return)プログラムに渡される前-これは「調理済み」と呼ばれます。これにより、次のような特定の文字を処理できます(stty(1)を参照)。 Cntl-D、 Cntl-S、 Ctrl-UBackspace);本質的に初歩的な行編集。端末ドライバは、それらを提供する前に文字を「調理」します。

端末を「raw」モードにして、文字を端末ドライバで処理せずにそのまま送信することができます(INTRであり、QUIT文字が引き続き処理されるように設定できます)。これにより、emacsviなどのプログラムが画面全体をより簡単に使用できるようになります。

詳細については、termios(3)マンページの「正規モード」セクションをご覧ください。

33
Arcege

端末およびディスクI/Oを説明するためにこれらの用語が使用されますが、それぞれのコンテキストで異なる意味になります。

端末デバイスのRawモードとCookedモードは、処理をカバーします(一度に1文字ずつと行ごとに、他にもいくつかの違いがあります)。

「生の」ディスクデバイス(/dev/rdsk/*)はキャラクターデバイスであり、/dev/dsk/はブロックデバイスです。 IIRCの主な違いは、ブロックデバイスにカーネルバッファリングがあり、直接/マップされたI/OなどのI/Oモードの細かい制御をraw deficeで指定できることです。

Rawとクックされたttyモードの説明が見つかります here。 rawとクックされたディスクデバイスに関する投稿が見つかります here。