[Memo2008]BIOSはシングルタスク?(森川)

以下は, 2008/06/06 のレクチャー 「最低限BIOS」 において, BIOS の機能の一つである「基本入出力プログラム」について 紹介している 10ページ の「シングルタスク」とはどういう意味かについて, 森川と北大の山下氏, 北大 EPnetFaN OB の豊田氏の間で交わしたメールの文面を抜粋したものである. 2009 年度の発表資料作成 の際に参考にしていただきたい. (まとまっていないのはご容赦いただきたく).

森川と山下氏とのやりとり

森川です

> 質問ならびにコメントありがとうございます, 勉強になりました. 
> 資料のデバッグに大いに参考にさせていただきます.

こちらも, そちらの資料をまた来年参考にさせていただきます. ^^;

> ># MS-DOS 以外のシングルタスクOSを調べてみたのですが, 見つからない...
> 
> 確かに渡邉(1998)にも前川(1999)にもシングルタスク OS の例として MS-DOS 
> しか載ってませんでした. 
> # 一極支配の間接的な証拠ということですかね. 

見つけました. 漢字Talk 2.0 ですって. Macintosh用OS「System」シリーズの
日本語対応版のことだそうです.

  * http://ja.wikipedia.org/wiki/Mac_OS
  * http://yougo.ascii24.com/gh/62/006250.html
  * http://e-words.jp/w/E6BCA2E5AD97Talk.html

# 何探してるんだか ^^;

From: yamashita tatsuya <yamasita@xxxxxxxx>
Subject: [itpass 830] Re:[質問] BIOS はシングルタスク??
Date: Sat, 07 Jun 2008 01:01:37 +0900 (JST)

> 森川さま
> 
> 山下です. 
> 
> >なるほど. いまどきは基本入出力の提供は BIOS には期待されてない
> >機能なのね ^^;  恥ずかしながら知らなかったです. 
> >
> >発表資料の表現も, 「シングルタスク」だけではなくて「シングルタスク OS 
> >(MS-DOS 等) 専用に開発」などにすべきなのですね. あと, マルチタスク OS 
> >の動作中はこの機能は使用されてないことも書いておいた方が良さそうですね. 
> 
> 質問ならびにコメントありがとうございます, 勉強になりました. 
> 資料のデバッグに大いに参考にさせていただきます. 
> 
> 
> ># MS-DOS 以外のシングルタスクOSを調べてみたのですが, 見つからない...
> 
> 確かに渡邉(1998)にも前川(1999)にもシングルタスク OS の例として MS-DOS 
> しか載ってませんでした. 
> # 一極支配の間接的な証拠ということですかね. 
> 
> From: Yasuhiro MORIKAWA <morikawa@xxxxxxxx>
> Subject: [itpass 827] Re: [epnetfan-ml 5578] Re:[5577] [質問] BIOS はシングルタスク??
> Date: Fri, 06 Jun 2008 23:25:28 +0900 (JST)
> 
> > 山下さま
> > 
> > 森川です
> > 
> > 迅速なお返事ありがとう. 
> > 
> > > 「渡邊郁朗, 1998: AT互換機のBIOS, エーアイ出版」
> > > の記述を大雑把にまとめると以下のような感じでした.
> > > 
> > > * BIOS はシングルタスク OS (1 度に 1 つの処理しか行えない OS)である DOS
> > >   専用に開発された.
> > > * したがって DOS 以外のマルチタスク OS では BIOS は動作しない.
> > > * マルチタスク OS の例としては Windows, Linux などがある.
> > > * こうしたマルチタスク OS では自前で BIOS プログラムのようなルーチンプロ
> > >   グラムを用意している.
> > 
> > なるほど. いまどきは基本入出力の提供は BIOS には期待されてない
> > 機能なのね ^^;  恥ずかしながら知らなかったです. 
> > 
> > 発表資料の表現も, 「シングルタスク」だけではなくて「シングルタスク OS 
> > (MS-DOS 等) 専用に開発」などにすべきなのですね. あと, マルチタスク OS 
> > の動作中はこの機能は使用されてないことも書いておいた方が良さそうですね. 
> > 
> > # MS-DOS 以外のシングルタスクOSを調べてみたのですが, 見つからない...
> > 
> > 
> > > この質問の意味が
> > > 「Linux においてマウス・キーボードは同時に制御されているではないか」
> > > という意味ならば,
> > > 「真の意味での BIOS ではなく, BIOS ライクなプログラムが制御していて, そ
> > > ういう意味では正しくシングルタスクではない」
> > > ということになると思います.
> > > あるいは
> > > 「DOS においてマウス・キーボードは同時に制御されているではないか」
> > > という意味ならば,
> > > 「自分は DOS 使いじゃないので良く分かりませんが, マウス・キーボードの制
> > > 御は BIOS 的にはワンセット(=シングルタスク)扱いなんですかねえ」
> > > といったところでしょうか.
> > 
> > なるほど. 先のメールは前者の質問だったので, 山下君の回答で納得です. 
> > しかし, 後者はどう解釈すればいいのでしょうね. 私も分かりません. ^^; 
> > 
> > 
> > > 適当な回答で申し訳ございません.
> > 
> > いえいえ. 非常に丁寧に回答いただき感謝です. 
> > 遅くにありがとうございました. 
> > 
> > 
> > 
> > From: Tatsuya Yamashita <yamasita@xxxxxxxx>
> > Subject: [epnetfan-ml 5578] Re:[5577] [質問] BIOS はシングルタスク??
> > Date: Fri, 06 Jun 2008 21:20:31 +0900
> > 
> > > 森川さま
> > > 
> > > 山下です.
> > > 
> > > 多分答えになっていないと思いますが, 調べてみたのでご報告いたします.
> > > 
> > > 
> > > 「渡邊郁朗, 1998: AT互換機のBIOS, エーアイ出版」
> > > の記述を大雑把にまとめると以下のような感じでした.
> > > 
> > > * BIOS はシングルタスク OS (1 度に 1 つの処理しか行えない OS)である DOS
> > > 専用に開発された.
> > > * したがって DOS 以外のマルチタスク OS では BIOS は動作しない.
> > > * マルチタスク OS の例としては Windows, Linux などがある.
> > > * こうしたマルチタスク OS では自前で BIOS プログラムのようなルーチンプロ
> > > グラムを用意している.
> > > 
> > > 
> > > また
> > > 「前川武弘, 1999: BIOS の設定とアップデート, DART」
> > > では Windows マシンを起動する場合を例にとって以下のように説明しています.
> > > 
> > > * 電源を入れると DOS が起動し, その後 Windows が起動する.
> > > * DOS の段階でもマウスやキーボードを使える. これは BIOS が DOS 上で周辺
> > > 機器の DOS 用ドライバの役割を果たしているためである.
> > > * Windows が起動するともはや BIOS は機能せず, Windows 上で開発されたデバ
> > > イスドライバが周辺機器を制御する.
> > > 
> > > 
> > > >   マウスとキーボード(など)を同時に制御するくせにシングルタスクってどういうこと?? 
> > > 
> > > 
> > > この質問の意味が
> > > 「Linux においてマウス・キーボードは同時に制御されているではないか」
> > > という意味ならば,
> > > 「真の意味での BIOS ではなく, BIOS ライクなプログラムが制御していて, そ
> > > ういう意味では正しくシングルタスクではない」
> > > ということになると思います.
> > > あるいは
> > > 「DOS においてマウス・キーボードは同時に制御されているではないか」
> > > という意味ならば,
> > > 「自分は DOS 使いじゃないので良く分かりませんが, マウス・キーボードの制
> > > 御は BIOS 的にはワンセット(=シングルタスク)扱いなんですかねえ」
> > > といったところでしょうか.
> > > 
> > > 
> > > 適当な回答で申し訳ございません.
> > > 
> > > 
> > > 
> > > Yasuhiro MORIKAWA さんは書きました:
> > > > 山下さま
> > > > Cc: 有識者のみなさま
> > > > 
> > > > 森川です
> > > > 
> > > > お忙しいところすいません. たいした事ではないのですが, ちょっと質問です. 
> > > > 
> > > > 本日, 神戸で BIOS のレクチャーをして (もらって) いたのですが, 以下のページの
> > > > 「BIOS の基本入出力機能はシングルタスク」が理解できず, 
> > > > この出典もしくは何のことを言っているのかを教えてもらえると幸いです. 
> > > > 
> > > >   http://www.ep.sci.hokudai.ac.jp/~inex/y2008/0613/lecture/pub/html/010.html
> > > > 
> > > > 出典はおそらく, 
> > > > 
> > > >   渡邊郁朗, 1998: AT互換機のBIOS, エーアイ出版
> > > > 
> > > > なのだろうと想像されるのですが, 北大にある書籍なので, 可能であれば, 
> > > > そもそもそのような記述があるのか, or どのような文脈で載っているのか, 
> > > > 調べていただけますとうれしいです. 
> > > > 
> > > > 何が理解できなかったかというと, 
> > > > 
> > > >   マウスとキーボード(など)を同時に制御するくせにシングルタスクってどういうこと?? 
> > > > 
> > > > ということです. 実際には, あるタイミングではマウス, あるタイミングでは
> > > > キーボードを制御するのでしょうが, それって結局マルチタスクなんじゃぁ??? 
> > > > となって議論が収束しませんでした. 
> > > > 
> > > > ググってみてもそれらしいものが出てこず, 「あれ?  もしかして間違い?  出展は何?」
> > > > と思ってメールした次第です. 
> > > > 
> > > > 別に急ぐことではないので, もしもお時間があれば調べてもらえますと幸いです. 
> > > > 

豊田氏よりのコメント

とよだです。

どうしてこれでみんなわかるのかわからないぞ.

2008/6/6 Tatsuya Yamashita <yamasita@xxxxxxxxxxxxxx>:
> 「渡邊郁朗, 1998: AT 互換機の BIOS, エーアイ出版」
> の記述を大雑把にまとめると以下のような感じでした.
>
> * BIOS はシングルタスク OS (1 度に 1 つの処理しか行えない OS) である DOS
>   専用に開発された.
> * したがって DOS 以外のマルチタスク OS では BIOS は動作しない.

動作しないというのは乱暴ね. 動作させることはできるが困ったことになる.

* BIOS はシングルタスク OS (1 度に 1 つの処理しか行えない OS)
  を使うことを想定して開発された.
  (当初は CP/M, 後に MS-DOS)

* そこで, マルチタスク OS から呼び出すには無理がある API になっている
  * リアルモードでないと使えない (いまどきマルチタスク OS は
    普通仮想 86 モード)
  * リエントラントでない (呼び出し中に他の BIOS 機能を呼ぶことができない).
    つまり, BIOS で時間がかかる処理をしている間は他のタスクに
    移ることができない (たとえばディスク I/O で関係ない計算が止まるとか)
  * 複数回の呼び出しの間で「状態」が共有される API の場合,
    途中で別タスクに切り替わると困ったことになる (これを回避するには
    2 タスクからデバイスが開けないようにするなど不便を強いる必要がある)

* したがって DOS 以外のマルチタスク OS で BIOS を使った入出力を
  行うことは実用的でない.

>> 何が理解できなかったかというと,
>>
>>   マウスとキーボード (など) を同時に制御するくせにシングルタスクってどういうこと??
>>
>> ということです. 実際には, あるタイミングではマウス, あるタイミングでは
>> キーボードを制御するのでしょうが, それって結局マルチタスクなんじゃぁ???
>> となって議論が収束しませんでした.

そういうのはマルチタスクとはいいません.

たとえば notepad の 1 プロセスはマウスとキーボードを支配しますね.
これが 1 タスク.
横でもう 1 つ notepad を動かしたら, これが別タスク.
両方終了させないでできるのがマルチタスク.
OS の話をするときは, アプリケーションとして意味をなさない
処理まで分解してタスクとはいいません.

マウスとキーボードによる入出力が平行できるようなのは,
OS の問題というより, アプリケーションがイベントドリブンになっているか
という問題が大きいですね.
たとえば GrADS は一定のマクロを呼び出しているときしかマウス入出力が
できないわけですが,
こういうのは違うわけです.

-- 
TOYODA Eizi (aka Eiji): toyoda@xxxxxxxxxxxxx
Last modified:2008/06/09 18:36:06
Keyword(s):
References:[[Exp2008]裏方資料目次] [[Semi2008]実習資料] [消えたページ一覧]