OLD Sled | INDEX | INDEX(1) | NEW Sled

マルチタスクとは?  投稿者:YOU。  投稿日:1999年08月22日(日) 13時00分59秒 

Win系はたしか純なマルチタスクでは無いはずです。
95系はシングルタスクをマルチタスクに見せかけている、つまりDOS上のモノですよね。NTはどうだったか・・。
それに対してUNIX系はマルチタスクであると言います。
複数のユーザーが同時にと言うのは分かるのですが、これはCPUがジョブを同時に複数処理できるという事なのでしょうか?
それと、Win系、UNIX系で制御関係の良いサイト、お勧め書籍でもあればお教え下さい。

PS
それと複数CPUでの共有メモリの扱い?等を詳しく解説している本が有りましたら。

  1. re: 金ドン さん 投稿日:1999年08月22日(日) 14時01分23秒
    いくらマルチタスクといっても、CPUが一つしかなければ
    複数の処理を同時に動かすことはできません。
    一般的には、時間を割振りしてあたかも同時に動いているかのように
    見せかけているだけです。

  2.  
  3. re: 西家 さん 投稿日:1999年08月22日(日) 15時34分46秒
     マルチユーザー環境であることと、アプリケーションをマルチタスクで動作させることは全く別の話です。マルチユーザー環境はアプリケーションをマルチタスクで動作できることを利用して、ユーザ毎に個別にSHELLを起動して複数のユーザが同時に1台のコンピュータを利用できるようにしている環境です。マルチユーザー環境であればアプリケーションをマルチタスクで動作させることは必須条件ですが、シングルユーザー環境の場合には必ずしもマルチタスク動作させる必要はないということです。UNIX系でもシングルユーザモードであれば単一のユーザしか利用できませんがマルチタスクで実行できます。
     マルチタスクといっても、シングルプロセッサの環境では複数のジョブを優先度に応じてOSが切り替えて、擬似的に複数のプログラムを実行しているに過ぎません。現在では単にマルチタスクといった場合にはプリエンティブマルチタスクをさすことが多いです。プリエンティブマルチタスクというのは、OSがあらかじめ設定された優先度に従ってタスクの実行時間を割り当てて、強制的に切り替えて実行することによってマルチタスクを実現する方法です。マルチタスクといってもひとつではないのです。タスクの実行タイミングの規定を厳密に設定できるマルチタスクのOSをリアルタイムOSと称する場合もありますし(ITRONなど)、単純に一定時間ごとにタスクを切り替えるタイム・シェアリング・システムなんてのもあります。
     DOSはシングルユーザ、シングルタスクの環境です。例外的に割り込みを利用した常駐プログラムを擬似的にバックグラウンド実行できるだけです。基本的にひとつのアプリケーションしか実行できません。特別な処理を追加したアプリケーションのみがバックグラウンドで実行できます。それ以外では、特別なシェルを利用して複数のアプリケーションを手動で切り替えて実行できる程度です。
     Windowsは、Ver.3.0以降ならばNT4.0ServerTerminalServerEditionを除いてシングルユーザ、マルチタスクの環境です。ただし、タスク(またはプロセス、スレッド)の管理方法はバージョンによって違いがあります。Windows3.0系はAPIコール時とタイマー割り込みによるタスクの切り替えによってマルチタスクを実現しています。カレントタスクがCPUリソースを独占してしまう危険性がある原始的なものです。この危険性を指して純粋なマルチタスクではないと主張する人もいます。WindowsNT系はプリエンティブマルチタスクおよびマルチスレッドをサポートしています。Windows95/98は32bitのタスクについてはプリエンティブマルチタスクおよびマルチスレッドをサポートしていますが、16bitのタスクについてはWindows3.0系のタスク管理を擬似的なプリエンティブなものに修正したものを使用するという複雑な管理方法をとっています。(スレッドとはOSが管理する最小の実行単位です。ひとつのプロセス(タスク)は、ひとつまたは複数のスレッドから成り立っています。ひとつのプロセスを複数のスレッドに分割して実行することにより、単一のプロセスで同時に複数の処理を実行します。)

     最近はマルチプロセッサやマルチタスクなどといったコンピュータの低レベルのハードウェアやソフトウェアの技術に関する書籍は発刊されなくなりつつあります。アプリケーションレベルやユーザレベルの書籍なら数え切れないほどあるのに残念です。その上、たとえ存在していても、大学の電算系の学科の生徒が教科書として読むような難しい書籍ばかりで、一般向けでないものばかりです。また、OSなどのソフトウェアレベル、ハードウェアレベル、両者を合わせたシステムレベルと書籍によってかなり異なる傾向があります。YOU。さんがどんな目的で調べたいかによって本の傾向が異なりますし、私が知っている本も絶版なものが多いので、技術関係の書籍を比較的大量においてある図書館で自分の目的に合った本を探すことをお勧めします。ソフトウェアレベルのプログラマ向けの書籍であれば書店でも手に入るはずです。

     

  4.  
  5. re: A.T さん 投稿日:1999年08月22日(日) 15時41分52秒
     Win9x系でも32bitアプリに限ればマルチタスクといって差し支えないはずです。
     少なくとも、DOSにGUIを被せただけに近いWin3.1とは雲泥の差です。
     ただ、DOSやWin3.1との互換性のために、16bitアプリもしくは16bitAPIでは擬似マルチタスクとなる場合が有ったと記憶しています。
     あと、MAC OSはどちらかといえば擬似マルチタスクらしいです。

  6.  
  7. re: A.T さん 投稿日:1999年08月22日(日) 15時50分42秒
     あらら、ゆっくり書いてたら蛇足になっちゃいましたね。
     Webで調べるなら、サーチエンジンで「プリエンプティブ」や「32bit」をキーにして検索してみると良いかと思いますよ。>YOU。さん

  8.  
  9. re: にゃんきち さん 投稿日:1999年08月22日(日) 16時44分32秒
    >それと複数CPUでの共有メモリの扱い?
    窓9x系はマルチタスクはできなくて、イベントドリブンによる擬似的なものです(西家さんのレスをごらんください^^;)Win32ものではマルチスレッドといって1つのプログラム内で複数のCPUが動いているような感じのことはできます。で、それぞれのCPUで共有するメモリにアクセスするときには、アプリのレベルではクリティカルセクションというものを使います。一般的にはこのようなことをセマフォオペレーションといいます。
    86アセンブラをたしなんでいる方ならば、LOCKプリフィックスのことといえばわかります。

  10.  
  11. re: YOU。 さん 投稿日:1999年08月22日(日) 20時27分53秒
    金ドンさん、西家さん、A.Tさん、にゃんきちさん、ご教授ありがとうございますー。(^^;

    そうすると、マルチタスク処理を実現するにはNT4.0ServerTerminalServerEditionだと分散処理をPCを複数立てて実行する、UNIX系だとCPUを複数使って、メインCPUから現在の処理分だけCPUの数を割り振って余ったCPUに別のジョブを割り振ってマルチタスクを実現する、という事でしょうか。
    TRON系の話はそう言えばCPUの開発も平行して進めているのですよね。MTRONへの統合へ向けてOSと共に開発を進めているとか。
    セマフォ、ミューテックスについてはもう少し調べてみないと分かりません。
    ちょっと、がんばってみますー。
    そう言えば、インテルのPC用のCPUでは、1台に4つ以上繋げて処理できるのはPenProだけでしたよね。他は制限が有ったと・・。

    投稿した意図?は、仕事では現在上の部分のオペレータ的なアプリ構築しか出来ないようなので、憂さ晴らし?にOSと言うかハードに近いモノを何か調べてみたいなあ、と思いまして。
    可能ならカーネルを創ってみるのも面白いかもしれませんね。
    まあ、そうなると文系学部出身の私にはもう低レベルな部分のお勉強が必要ですかね。(^^;

  12.  
  13. re: YOU。 さん 投稿日:1999年08月22日(日) 20時29分36秒
    もう→もっと です。

  14.  
  15. re: A.T さん 投稿日:1999年08月22日(日) 23時04分17秒
     TRONに関してですが、現在のところTRONネイティブなCPUの開発はあまり(というか全然)行われていないようです。
     組み込み用途で実績のあるITRONやAT互換機で動くBTRON(B-right/V)、JAVAと統合したJTRONなど、それなりにホットな話題はありますが、巨額の開発資金を要するLSIの開発となるとメーカーも及び腰のようです。

  16.  
  17. re: YOU。 さん 投稿日:1999年08月24日(火) 00時27分19秒
    うーん、そうなのですか、A.Tさん。
    PCに於いてもLSI開発、OS開発は華?でありますが、やはり儲からないとしんどいのでしょうね。
    ですが、TRONはめぐる現状を考えると、検討していると言っても良いのでしょうかね。

  18.  
  19. re: Thisman さん 投稿日:1999年08月26日(木) 13時23分42秒
    >マルチタスク処理を実現するには
    >NT4.0ServerTerminalServerEditionだと分散処理をPCを複数立てて
    >実行する、UNIX系だとCPUを複数使って、メインCPUから現在の
    >処理分だけCPUの数を割り振って余ったCPUに別のジョブを割り
    >振ってマルチタスクを実現する、という事でしょうか。

     マルチタスクと並列処理を混同されているような?(^^;

     マルチタスクを行うのにCPUや機体の数は関係有りません。
     1つのCPUでも、何らかのトリガで実行するプロセスを切り替えて同時に実行しているようにみせる、と言うのが現行一般的なマルチタスクの実装です。

     端的な例としては。
     エクスプローラを2つ立ち上げます。
     片方で100Mとか1Gとか、有る程度時間が掛かるコピー作業を実行します。
     同時にもう片方のエクスプローラで何かファイルを参照したり実行したりします。
     これだけで、マルチタスク、です。
     思いっきり大雑把な表現をすれば、マルチタスクは「複数のプログラムを同時に実行すること/しているように見せかけられること」でしか無いです。

     通常、UNIX機は起動直後の常駐プロセスだけで20や40は常駐してますから、それに対応する数のCPUを実装するのは非現実的でもあります。
     私が管理してるSUNやHPの鯖はCPUが1つや2つしか付いてませんが、常時100前後、ラッシュテスト時などは500以上のプロセスがマルチタスクで動いてます。

  20.  

OLD Sled | INDEX | INDEX(1) | NEW Sled

NamaLog Viewer SuperLite Ver-0.0.2β1 by K.O.T.B.GRIFFON / GRIFFON Works Software