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

プロセスとスレッドは、どう違うんでしょうか?また、ジョブ、プロセス、タスクはどう違うのでしょうか?
また、こういうことを知りたいと思ったらどういう本を調べればよいでしょうか?


よろしくお願いします。

A 回答 (5件)

プログラムを起動すると、32ビットアプリなら、メモリのアドレスとして、000 ... 000 ~ 1111 ... 111 (ともに32桁)、すなわち4GBの「仮想」メモリ空間を持ちます。


プログラムは、この32桁のアドレスを使って、メモリに展開したデータにアクセスします。
(変数aには「0000..0001」変数bには「000 ... 0100」など。)
この4GBの自由に使ってもいい仮想的なメモリ空間を割り当てられる単位が、「1プロセス」です。

スレッドは、このプロセス内で更に分けられる単位です。
たとえば、インターネットブラウザのソースコードにネットワークからページを読み込む部分があると、取得開始から取得終了までの数秒間はそこでプログラムがブロックされてしまいますが、「スレッド」なる支流を作ってあげてそこで読み込みをさせると本流はブロックされません(だからその間にキャンセルボタンで命令だってできる)。
同一プロセス内の各スレッドは、アドレス空間が共有できるため、ネットワークからの読み込みデータを本流(メインスレッドという)で参照することもできます。
(↑重要!プロセス間では参照できませんよね?上のアドレス空間を見れば、000...000 ~ 111...111までどれを見ても自分の管理する世界しか指さないので)


まとめると、
プロセスはOSが管理するメモリ割り当て単位。
スレッドはアプリケーションが管理する、
同一アプリケーション内の並列処理の単位です。


複雑なことは本格的に勉強するといいでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。分かりやすいです。スレッドは、アプリケーション内部のものなんですね。勉強してみたいと思います。


ありがとうございました。

お礼日時:2005/02/06 14:59

皆さん詳しくお答えのようですので、具体例を。



私はあるCADデータの表示ソフトを作っています。
このソフト自体は、Windowsでは一つのプロセスと
して起動されます。

このプロセスは、ユーザーのマウス操作などに反応
して表示エリアを変えたり、倍率を変えたりとい
う仕事をするスレッド一つで成り立っていました。
この時点ではまだプロセスとスレッドを区別するほ
どの意味はなかったです。

ところが、膨大な量の描画をすると、その処理時間
が何十秒にもなってしまうことがあり、ユーザーが
描画を中止したくても、順にしか処理されないので、
仮にツールバーに描画中止ボタンを配置しても、
描画中には押したりできません。

そこで、描画用のスレッドを作成して、別に実行
することにしました。これで、画面に絵を出力して
いる間でも、ツールバーに設けた描画停止ボタン
を押して中断できるようになりました。

なお、Windowsとしてはジョブは印刷、タスクは
指定時刻などに実行されるスケジュールされた何か
の実行という意味で使っているようですが、他の
システム(UNIXなど)ではまた別の意味で使っている
こともあります。
    • good
    • 0
この回答へのお礼

なるほど、操作を受け付けなくなるアプリってありますね。そういうときに別スレッドにすると良いわけですね。

>システム(UNIXなど)ではまた別の意味で使っている
>こともあります。

OSによっても用語の意味が違う場合があると言うことですね。それで分かりにくい面が出てくるのかも知りませんね。

大変参考になります。ありがとうございました。

お礼日時:2005/02/06 15:06

「Windowsはなぜ動くのか」という本、


分かりやすくていいと思います。

ただ、どうしても x86(Pentium)ベースなので
セグメント云々のメモリ管理の話がややこしいですが、
興味のあることだけでも本屋で立ち読みするとか、
図書館で借りてきて読むと、
単に単語(プロセス、スレッド、…)の意味を「覚える」のでなく、きちんと理解できると思いますよ。
    • good
    • 0
この回答へのお礼

図書館で借りてみようと思います。メモリ関係は、複雑そうですね。アドレスとか出てくると頭が痛くなっちゃいます。

ありがとうございました。

お礼日時:2005/02/06 14:55
    • good
    • 0

プロセスは、OSがプログラムを管理するときの単位。


スレッドは、プロセスの中で動くプログラムの単位。

例えば、なにかソフトを起動します。
すると起動したソフトのプロセスができます。
同時にそのプロセスの中でスレッドができます。
スレッドは複数できる場合もあります(マルチスレッド)。

>ジョブ、プロセス、タスクはどう違うのでしょうか?

については、下記URLに行って検索してみてください。

参考URL:http://yougo.ascii24.com/
    • good
    • 0
この回答へのお礼

ありがとうございます。用語集のURL参考にさせていただきました。

お礼日時:2005/02/06 14:52

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