by shigemk2

当面は技術的なことしか書かない

2014/06/21 メモ1 #firstv6

バッファ操作

デバイスドライバ = デバイス処理

2つのデバイスがある

キャラクタデバイス 1文字1文字処理するのに適している

ブロックデバイス 大量データ転送に向いている

テーブルがあって、ブロックデバイス用とキャラクタデバイス用がある(どちらも配列)

○○devswという配列がそれ。

  • P366が構造体
  • P377が関数

今回やるのはキャラクタデバイスのほう。

LP11がキャラクタデバイスドライバの一例。

1文字ずつ処理するとか言いつつ、バッファからは使いたい分だけ取り出す。

getcで1文字ずつ取り出し、putcで最後尾に1文字追加する。

割り込み=カーネルは別の作業をやっているので、作業完了まで待っていられない。

印字をするときは、他の文字を組み合わせて印字するときがある。 ボールドも、文字を重ねがけしている。

struct lp11で、現在の印字位置、紙送りした回数などをカーネルで保持している。

lp11を使うためにlpopen関数を使う。

PDPシリーズは8進数が基準

  • PDP-1 18bit
  • PDP-5 12bit
  • PDP-6 36bit
  • PDP-11 16bit

  • 8進数=3bit

  • 16進数=4bit

(区切りがよくなるようなbit数を採用している)

キャラクタデバイスドライバ

キャラクタデバイスとブロックデバイスの違い(P208)

  • ブロックデバイス ランダムアクセス、ブロック、高速
  • キャラクタデバイス シーケンシャルアクセス、1バイト、低速

devswitchテーブル

構造体

cblockのinfoは6文字なの

まとめ

キャラクタデバイス→カーネルの中のバッファプール