「コンピュータシステムの深い理解することは、」ノートを読んで - プロセスとスレッドの違いを?

スレッドとプロセスの概要:


1.プロセスとスレッド

1.1概要:

プロセスは、最初のランの活動に関するデータのセットに特定の個々の機能を有するプログラムである、システムプロセスは、リソースの割り当てとスケジューリングの独立したユニットです。

スレッドは、物理的なプロセスであり、基本的な単位のプロセスよりも小さいCPUスケジューリングとディスパッチの基本単位であり、独立して動作することができます。基本的に、スレッドは、独自のシステムリソースを所有していない、必要不可欠なリソースの操作中に少しだけを持っています(例えばプログラムカウンタ、レジスタ、スタックのセットとして)、それはすべてのリソースによって所有されているプロセスに属する他のスレッド処理と共用することができます。

スレッドが作成され、別のスレッドを破壊することができ、同じプロセス内で複数のスレッド間で同時に実行することができます。

比較的プロセスでは、スレッドは、同じプロセス内の他のスレッドとデータを共有しますが、独自のスタック空間、独立した実行順序を持つことができ、実行するために近い体の概念にあります。

プログラムに基づいてシリアルプログラムスレッドおよびプロセスの導入は、それによってプロセス効率及び応答時間を改善する、並行性を改善することです。

1.2の違い:

プロセスおよびスレッドの主な違いは、異なるオペレーティング・システム・リソースの管理であるということです。プロセスは、別個のアドレス空間を有している、プロセスがクラッシュした後に、プロテクトモードで他のプロセスに影響を与えず、スレッドは、異なる実行パスのちょうどプロセスです。スレッドは独自のスタックとローカル変数を持っていますが、そこに、スレッド間で別々のアドレス空間は、ダイへのスレッドはプロセス全体のダイスに等しいではありませんので、マルチプロセス、マルチスレッドプログラムよりプログラム堅牢ですが、切り替えの過程で、消費します大きなリソース効率が悪化します。しかし同時に要件の一部のみスレッドに、特定の変数の同時動作を共有する必要がために、プロセスが使用することはできません。

1)簡単に言えば、少なくとも一つのプログラム工程がある、プロセスは、少なくとも一つのスレッドを有しています。

目盛2)スレッドがので、マルチスレッド・プログラムの並行性の高い、工程未満です。

3)また、このプロセスは大幅プログラムの効率を高める、実装プロセスで別々のメモリユニット、及び共有メモリの複数のスレッドを有しています。

4) 実施プロセス内のスレッドおよびプロセスが異なっています。各エントリは、順出口で行わ配列および手順を実行する別のスレッドを有しています。しかし、スレッドは、独立して実行することができない、それはアプリケーションによって制御される複数の実行スレッドを提供し、用途に応じて存在しなければなりません。

5) 論理的観点から、マルチスレッドアプリケーションプログラム実行部が同時に複数を実行することができることを意味します。しかし、オペレーティングシステムは、スケジューリングと管理と資源配分のプロセスを達成するために、複数のスレッド、複数の独立したアプリケーションとして表示されません。これは、プロセスとスレッド間の重要な違いです。

1.3長所と短所:

;およびプロセスの逆小さなスレッド実行のオーバーヘッドが、資源の管理と保護を助長されていません:スレッドやプロセスは長所と短所、使用中を持っています。同時に、適したスレッドSMPマシン上で実行している、とプロセスがマシン間で移行することができます。

2.マルチプロセス、マルチスレッド

2.1概要:

プロセスが実行されている場合されたプログラムは、プロセスですが、時間を処理するCPUのプロセスは非常に、ラウンドロビン方式を使用することであるので、スレッドは、プロセス実行内から分割された後、抽象的抽象CPUが不足しています大きなプロセスを置くために複数のスレッドに分割して、例えば:FlashGetを10ファイルがスレッドをダウンロードすると同時に、10個の部分に分割されたスレッド1-10 11-20ようにスレッドを占有し、占有へのファイル部分100、より多くのスレッドは、ファイルがより多くの分割が、もちろん速いダウンロードのさ

プロセスは、コンピュータ上のプログラムの実装活動です。あなたがプログラムを実行すると、プロセスを開始します。もちろん、プログラムは、それがどんなランニング、単に静的な実体を持たないという意味の命令だけ順序集合、です。プロセスは、それがデータセットに対して実行され、異なる動的エンティティです。タスクが取り消されたため、待ち状態にあるリソースまたはイベントを待って、作成することに起因して生産、スケジューリングによるものと実行されているすべてのは、与えられたデータセット上で動作するプログラムの動的なプロセスを反映しています。プロセスは、リソースを割り当てるためのユニット・オペレーティング・システムです。Windows、プロセスはあるスレッドとして洗練された、小さな単位の数は、次のプロセスから独立して動作することができるあります。スレッド(スレッド)は、物理的プロセスであるCPUスケジューリングとディスパッチの基本単位です。スレッドは、アプリケーション、アプリケーションプログラム実行制御により、複数のスレッドに応じて存在しても、独立して実行することができません。

スレッドとプロセス間の関係は、次のとおりです。スレッドはプロセスの一部であり、プロセス空間内のスレッドの実行は、プロセスがスレッドによって生成されたプロセスを終了し、共有同じメモリ空間を生成し、同じプロセスのスレッドが終了することを余儀なくさとクリアされます。すべてのスレッドが他のスレッドが持っている同じプロセスに属するとプロセスのリソースを共有しますが、基本的には自分のシステムリソースを持っていない、わずかな情報のみが動作して不可欠である持っている(例えば、プログラムカウンタ、レジスタとスタックのセットとして)。

在同一个时间里,同一个计算机系统中如果允许两个或两个以上的进程处于运行状态,这便是多任务。现代的操作系统几乎都是多任务操作系统,能够同时管理多个进程的运行。 多任务带来的好处是明显的,比如你可以边听mp3边上网,与此同时甚至可以将下载的文档打印出来,而这些任务之间丝毫不会相互干扰。那么这里就涉及到并行的问题,俗话说,一心不能二用,这对计算机也一样,原则上一个CPU只能分配给一个进程,以便运行这个进程。我们通常使用的计算机中只有一个CPU,也就是说只有一颗心,要让它一心多用,同时运行多个进程,就必须使用并发技术。实现并发技术相当复杂,最容易理解的是“时间片轮转进程调度算法”,它的思想简单介绍如下:在操作系统的管理下,所有正在运行的进程轮流使用CPU,每个进程允许占用CPU的时间非常短(比如10毫秒),这样用户根本感觉不出来CPU是在轮流为多个进程服务,就好象所有的进程都在不间断地运行一样。但实际上在任何一个时间内有且仅有一个进程占有CPU。

如果一台计算机有多个CPU,情况就不同了,如果进程数小于CPU数,则不同的进程可以分配给不同的CPU来运行,这样,多个进程就是真正同时运行的,这便是并行。但如果进程数大于CPU数,则仍然需要使用并发技术。

Windows中,进行CPU分配是以线程为单位的,一个进程可能由多个线程组成,这时情况更加复杂,但简单地说,有如下关系:

总线程数<= CPU数量:并行运行

总线程数> CPU数量:并发运行

并行运行的效率显然高于并发运行,所以在多CPU的计算机中,多任务的效率比较高。但是,如果在多CPU计算机中只运行一个进程(线程),就不能发挥多CPU的优势。

 多任务操作系统(如Windows)的基本原理是:操作系统将CPU的时间片分配给多个线程,每个线程在操作系统指定的时间片内完成(注意,这里的多个线程是分属于不同进程的).操作系统不断的从一个线程的执行切换到另一个线程的执行,如此往复,宏观上看来,就好像是多个线程在一起执行.由于这多个线程分属于不同的进程,因此在我们看来,就好像是多个进程在同时执行,这样就实现了多任务.

 2.2 分类

根据进程与线程的设置,操作系统大致分为如下类型:

(1) 单进程、单线程,MS-DOS大致是这种操作系统;

(2) 多进程、单线程,多数UNIX(及类UNIX的Linux)是这种操作系统;

(3) 多进程、多线程,Win32(Windows NT/2000/XP等)、Solaris 2.x和OS/2都是这种操作系统;

(4) 单进程、多线程,VxWorks是这种操作系统。

2.3 引入线程带来的主要好处:

(1) 在进程内创建、终止线程比创建、终止进程要快;

(2) 同一进程内的线程间切换比进程间的切换要快,尤其是用户级线程间的切换。


详情又可见:http://www.cnblogs.com/lmule/archive/2010/08/18/1802774.html

发布了18 篇原创文章 · 获赞 86 · 访问量 16万+

おすすめ

転載: blog.csdn.net/u013178472/article/details/64440404