[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:102084] Re: 組込Linuxドライバの作成方法


川辺と申します。

# Linuxから離れたオフトピですみません。

>>>>> "よしおかさん" == Hiro Yoshioka <hyoshiok@xxxxxxxxxxxxxxxx> writes:

よしおかさん> VMSにAST (Asynchronous System Trap)というのがあります。
よしおかさん> googleでAST VMS trapで検索すると下記のような記述が
よしおかさん> みつかります。ご参考まで。

えぇと、これって、VAXのアーキにあるAST(もしくは、Software Interrupt)の
ことを指してますか?

VAXは、VAX11-750(4.2BSD/Mach2.6)とμVAX(VMS)しかいじりませんでしたし、
VMSはプログラミングしてないのでちゃんとしたことは覚えてませんが、BSDの
初期のTCP/IPの実装ではこのASTを利用した各ハードウェア割り込み(UniBUSと
か)と異なるCPU状態でプロトコルの処理を行わせる様にしていたと思います。

VAXのASTの発行は、通常の割り込みと同様にマスク出来ます。ですから、ドラ
イバの中でマスクした状態で発行し、割り込み処理を終えてマスクが解除され
たときにハードウェア割り込みと同様に割り込まれると言う仕掛けになってい
たと思います。

おかげで、MC68Kシリーズとかへの移植の際に、割り込みの入口/出口でこの
ASTをエミュレーションするのが色々と手間になりました。本来のASTはマスク
してなければすぐに入るのでそれも考えなければならなくて面倒だったと言っ
てました。(私はその時の移植には参加して無かったので、コードを観ながら
質問した時に聴いた話ですが。)

よしおかさん> VMSというのは、今はなきDECという会社の主力製品であった、
よしおかさん> VAX用のOSでした。その主要開発者のDave Cutlerは後にMicrosoftへ
よしおかさん> 行って、WNTというOSの開発を指揮したと言われています。

なるほど、もうかなりの昔話と言うことなのですね。
# 遠い目をしないといけないのか。

と書いておいて、先のURLの中を読んでみました。

どうも、非同期I/Oのことですね。昔のUnixのI/O(あのメールでは、ソケット
になってますね)は、プロセスコンテキスト配下で無いとユーザ空間に転送で
きない点を問題視している様に見えます。(u構造体のせいかな)

非同期I/OはUnix系に導入されたのは、私が知っているところでは93年頃になっ
てですね。POSIXで規定されたのはいつだったかなぁ。昔のUnixだとu構造体が
プロセスの固有の空間にあるせいで、他のコンテキストの場合に面倒でした。
非同期I/Oは、今は多くのUnix系(LinuxやBSDにも)にありますよね。

80年代の終わり頃にメインフレームのプログラム(システム系、COBOLじゃなく、
PS/LやらSPLやらASMで組む世界)からUnixに来たときは、非同期I/Oが無いのに
驚くやら、楽だなぁと感じるやらでしたが、性能面を考えると欲しくなりまし
たね。いやそれよりも、VSAMなんて重たいのを使わずに、素のファイルにバイ
トオフセットを指定してseek出来ることに感動したかな。
# 爺モード前回だな、こりゃ。
--------
  Kawabe,Yoshihiro <ripula@xxxxxxxxxxxxxxx>
  Who is calling me from where?
  Knock on my shell and my mind? from Pearl song.

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: References: