プロが教える店舗&オフィスのセキュリティ対策術

90年代の前半頃、ウインテルではNECのPC9801に386のCPUが
乗っているとスゴイと言われた頃でした。
MS-DOSはv3.3ぐらいでした。
DOSネットワークはNetWareのLite版を同軸ケーブルで使っていた記憶です。

マッキントッシュは漢字トーク7だと非常に尊敬された頃だった記憶です。

職場にちいさなパソコンLANファイルサーバーとモデムにつながったBBSホストが一台の98パソコンにセットしてありました。

BBSで他からアクセスがあるバックグランドで、LANから資源を引っ張る、ということをしていました。
裏でLAN接続中なのを知らずに、BBSのエディタが止まって、リセットをかけたりしてよく怒られました。

マックでも、当時出版された本を今読み返してみると、同じように他人のアクセス中に自分は好きな仕事ができる、と書いてあります。

これは、平たく言えばどうみてもマルチタスクと言えそうなのですが、どのようなカラクリで実現できていたことになりますでしょうか?

NetWareLiteはプリエンプティブを提供していたことになるでしょうか?
またマックでは、イベントを激しく切り替えて体感的にプリエンプティブのような動作をなめらかに実現していた、ということになりますでしょうか?

A 回答 (2件)

ノンプリエンプティブなマルチタスクは非常に古くから存在し、そして現在でもマルチタスクの主流です。



・・・と書くと「最近そんなの見ないよ!」と言われるでしょうけど、マイコンまで含めたコンピュータ全般ではノンプリエンプティブなほうがずっと多いので(笑)

MacOSもSystem 8だったかSystem 9だったかになるまでノンプリエンプティブなマルチタスクでしたし、WindowsもWindws 95になるまではノンプリエンプティブなマルチタスクでした。MS-DOSはWindows 3.1エンハンスドモードでようやくプリエンプティブなマルチタスクが可能になりました。(注:それ以前にもサードパーティ製ソフトでは、Quarterdeck社のDESQview等、プリエンプティブなマルチタスクを可能とするMS-DOSアドオン製品が存在した。)

NetwareLiteは、おそらくその当時の他のLANソフトと同様、ノンプリエンプティブなマルチタスクだったものと思います。というのも、MS-DOSをプリエンプティブなマルチタスク環境下で使用するにはi386を使うことが最低限必要な条件で、i286ではMS-DOSのプリエンプティブ化は不可能だからです。

MS-DOS 3.xにはネットワークリダイレクタという仕組みが最初から備わっており、これを使って割り込みベースでネットワーク環境を提供することが可能になっていました。ノンプリエンプティブで、なおかつ切り替えのタイミングも非常に荒い仕組みだったので、おそらく外部からLANのリクエストがあると「表のタスク」は止まっているのが分かるくらいの時間(数分の1秒)は優に停止していただろうと思います。

しかし、BBSホストであればI/Oはすべてモデム内のバッファ経由ですし、モデム間の速度もせいぜい9600bps(おそらく当時なら2400bpsでも御の字)ですから、よっぽど長い時間ホストが止まらない限り、リモート側からそれとは分からなかったでしょう。


ノンプリエンプティブなものをどんどん遡っていくと、たとえばジャストシステムのJustWindow(一太郎4/花子1?(バージョン番号うろ覚え))がMS-DOS上でノンプリエンプティブなマルチタスクを行っていましたし、さらに10年くらい遡ってTRS-80(ご存知でしょうか?Z80ベースの8ビットコンピュータです)のワープロもCP/M上で「印刷ジョブをキューに入れた状態で文書の編集を行う」というアプリケーションレベルのノンプリエンプティブ・マルチタスクを行っていました。(編集中に、勝手に8インチFDがガッチャンガッチャンと音を立てるのが、当時は非常に奇妙に思えたものです。)
    • good
    • 0
この回答へのお礼

いつも大変お世話になります。
またどうぞよろしくおねがいします。

>全般ではノンプリエンプティブなほうがずっと多いので(笑)

なるほどそうなんですかあ。
うちではまだまだDOSも漢字Talk7も現役なので、肩身が狭かったのですが、
これで元気がいただけました^^!

>プリエンプティブなマルチタスクを可能とするMS-DOSアドオン製品が存在した

@。@ほおっ!カーネルがシングルタスクだとどうにもならないのかと思っていましたが、上乗せアドオンでそんな魔法が出来てたんですね!!
たしか日本ではエプソン版しか販売されなかったDOS4もマルチタスクだったそうですね。

>MS-DOS 3.xにはネットワークリダイレクタという仕組みが最初から備わっており
>リモート側からそれとは分からなかったでしょう。

なるほど、そういう当時のHW性能ならではの絶妙なタイムスライスにうまく乗れたからこそ実用になっていた、という種明かしだったのですね!!!

>一太郎4/花子1?

そうでしたねえ^^、妙なタイミングでないとウインドウを掴むことができないジャストウインドウ!
すっかり忘れてましたがおかげさまで思い出しました!


>アプリケーションレベルのノンプリエンプティブ・マルチタスクを行っていました。

当時としてはすごい革命だったんでしょうねえ^^
(こういう状態はマルチスレッドとはまた別物になるんでしょうか)

いつも本当にありがとうございます!
また色々おしえてくださいませ!

お礼日時:2005/09/15 08:01

Mac(当時はMacintosh)のは、協調的マルチタスクと呼ばれていた仕組みだと思います。

漢字トーク7というOS(現在のMac OS的にいうとOS ver7)のころではないでしょうか。

Mac系の雑誌には、cooperative multitasking とよく書かれていました。
現在ネット上では、ノンプリエンプティブなマルチタスク (nonpreemptive multitasking)と紹介されているようです。


http://e-words.jp/w/E58D94E8AABFE79A84E3839EE383 …
http://yougo.ascii24.com/gh/13/001315.html


なにかカクカクしたマルチタスキングだった記憶があります。
しかし、協調的マルチタスクと呼ばれていたにもかかわらず、印刷をかけると印刷以外の操作ができなくなり、印刷が終了するまでなにもできなかったのが印象的です。
複数のファイルの同時コピーは、まだこの当時はできなかったと思います(OS7.5か8から?)

WindowsはWin95からこのあたりの不便さを解消しており、格段に使いやすくなっていったと思います。

Netwareはすでにプリエンティティブだったんじゃないでしょうか。
ただ、メモリがいっぱいになったりフラグメントが起こると、再起動が必要になるケースが多かった記憶があります。
BBSのエディタが止まってとは、タスクの問題よりもそんなのが原因で起こったような気がするのですが、どうでしょうか。
    • good
    • 0
この回答へのお礼

早々にどうも有り難うございます

>複数のファイルの同時コピーは、まだこの当時はできなかったと思います(OS7.5か8から?)
8.0からファインダーだけがマルチスレッドになりました。
8.6から、画面描画を行なわない(クイックドロー不使用の)タスクならば裏で完全プリエンプティブが実現されました。
せっかくなのでネットワークデーモンなどは完全プリエンプティブが出来た筈のに、設定画面などがあったので実際享受出来たものは皆無に近かったようです。

>Netwareはすでにプリエンティティブだったんじゃないでしょうか。
NetWareのLiteだったのですが、NetWareというのはOS/2のようにDOSをマルチタスクにするためのスイッチャーの役目も大きかったんでしょうか。

お礼日時:2005/09/15 07:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!