これらの問題に直面したとき、2つのキーワードがあり、バイパス、それがあることはできないパラレルと同時。
まず第一に、我々は最初のいくつかの概念を理解する必要があります。
図1に示すように、プロセスは、プログラムを実行しています。
図2に示すように、プロセスは、基本単位(スケジューリング部)リソース割り当てです。
図3は、プロセスが複数のスレッドを含むことができます。
CPU:4は、単一CPUコンピュータに、平行複数のプログラムが使用するリソースがありません。
5、オペレーティングシステムのスケジューラ:すでにいくつかの時間のために実行されているスプリットCPUチップ、異なる手順に割り当てられたターン。
図6に示すように、オペレーティングシステムのメモリ管理モジュール:物理メモリの管理、仮想メモリに関連する事項。
CPUだけの時間で処理を実行することができるので、私たちが制御されていない場合、実行の最後まで、プロセスCPUを使用することが可能であるため、オペレーティングシステムのスケジューラがあり、そしてプロセスは、ディスパッチ・ユニットとなっています。
プロセスを実行するとCPU、メモリだけでなく、ああ、ああカード、GPS、ああ、ああディスク、などなど、他の資源、多くのだけではないが必要で、総称してアプリケーションコンテキストで実行環境プログラムと呼ばれます。
ここでは、同時に実行されている非常に高速なので、それがユーザープログラムに思えるCPUが実際に同じ時間だけつのプロセスで実行されている間、これは、複雑である異なるプロセスを使用するには、CPUの同時スケジューラスイッチング速度の概念を生じ。
プロセスは同じCPU時間を共有することはできませんが、我々は、CPUがそれを必要と共有して表示される必要がありますか?このとき、スレッドの概念が登場しました。スレッドは、プロセスの異なるスレッド間でプロセスに含まれ、CPUとプログラムコンテキストを共有します。(プロセスに割り当てられたリソースの共有)
スケジューリングプロセスは、単一のCPUのために、プログラムを実行するコンテキスト退避+ +コンテキスト、スイッチングすなわち、プロセスを読み取る必要があります。
これはCPUコアを使用するために、プロセス内のシングルコアCPU、その後、別のスレッドであれば、それはスレッドスイッチであってもよいが、原因共有プログラム実行環境、たくさん未満のオーバーヘッドを切り替えるスレッド切替処理になります。ここでは、まだ同じ時間だけつのスレッドを実行することができる唯一のコアによって複雑になります。
これはマルチコアCPUであれば、別のスレッドの処理が異なるコアを使用することができ、真の平行が登場しました。
スレッドは、CPUスケジューリングと基本単位の分布であり、必ずオペレーティング・システムは(等CPU、メモリ、ディスクIO、など)リソースを割り当てる方法の最小単位である明確な差。言っCPUは唯一私がCPUを想定、そう理解するために、スレッドを見ることができますがあり、私は、プロセスは、私が見たもの、彼の目を開けました後、オペレーティング・システムのスケジューラが私にプロセスを割り当てます、私の目を閉じて?私はその後、私は今のスケジューリングおよび割り当てが何であるか、その過程で多くのスレッドを参照してください?プロセス?私はABCDコア1234に割り当てられた4コア、スレッドだった場合いいえ、私は私が見ることができるそれらのスレッドをスケジュール、配布をスケジュールする方法は他のプロセスを、見ていないので、他のスレッドがまだ待機として、割り当てを待つ必要がどのくらい、どのように割り当てるために、彼らはこの記事の範囲ではないでしょう。そして、CPUのスレッドのスケジューリングと基本単位の割り当て。
最後に、行うためにここにオペレーティングシステムメモリ管理モジュールについて話:この前に、プログラマは、各プログラムを実行するためにスペースをアレンジする必要があり、ここでのスペースはメモリの物理アドレスを意味するが、このような問題は、各プログラムであり、どのように同じメモリ空間の使用を交渉することは異なりますが、プログラマは基本的なメモリ割り当ての問題を気にする必要があります。ソリューションは、プロセスの概念を提唱し、同じ仮想アドレス空間を使用して、各プロセス、CPUはMMUモジュールは、仮想アドレスと物理アドレスの変換を追加し、オペレーティングシステムとMMU後の仮想アドレスすることで、仮想アドレスが異なる物理的にマッピングされています住所、異なるプロセスは、独立して、物理メモリ空間の取得することができます。
また、一部のオペレーティング・システムでは、プロセスは、ユニットをスケジュールされていない、スレッドはスケジューリングの基本単位である、などのVxWorksなどのスケジューラのスケジュールスレッドだけではなく、スケジューリング方法。
要約:
図1は、1つのプロセスがCPUのみによって複雑にすることができ、マルチCPUコンピュータは、並列に処理することができます。
図2に示すように、シングルコア、シングルCPUスレッドが並列スレッド内の単一のマルチコアCPU、同時にすることができます。
同時または並列のいずれか3、、ユーザの観点は、マルチプロセス、マルチスレッドを参照します。
https://www.cnblogs.com/csfeng/p/8670704.html
これらの問題に直面したとき、2つのキーワードがあり、バイパス、それがあることはできないパラレルと同時。
まず第一に、我々は最初のいくつかの概念を理解する必要があります。
図1に示すように、プロセスは、プログラムを実行しています。
図2に示すように、プロセスは、基本単位(スケジューリング部)リソース割り当てです。
図3は、プロセスが複数のスレッドを含むことができます。
CPU:4は、単一CPUコンピュータに、平行複数のプログラムが使用するリソースがありません。
5、オペレーティングシステムのスケジューラ:すでにいくつかの時間のために実行されているスプリットCPUチップ、異なる手順に割り当てられたターン。
図6に示すように、オペレーティングシステムのメモリ管理モジュール:物理メモリの管理、仮想メモリに関連する事項。
CPUだけの時間で処理を実行することができるので、私たちが制御されていない場合、実行の最後まで、プロセスCPUを使用することが可能であるため、オペレーティングシステムのスケジューラがあり、そしてプロセスは、ディスパッチ・ユニットとなっています。
プロセスを実行するとCPU、メモリだけでなく、ああ、ああカード、GPS、ああ、ああディスク、などなど、他の資源、多くのだけではないが必要で、総称してアプリケーションコンテキストで実行環境プログラムと呼ばれます。
ここでは、同時に実行されている非常に高速なので、それがユーザープログラムに思えるCPUが実際に同じ時間だけつのプロセスで実行されている間、これは、複雑である異なるプロセスを使用するには、CPUの同時スケジューラスイッチング速度の概念を生じ。
プロセスは同じCPU時間を共有することはできませんが、我々は、CPUがそれを必要と共有して表示される必要がありますか?このとき、スレッドの概念が登場しました。スレッドは、プロセスの異なるスレッド間でプロセスに含まれ、CPUとプログラムコンテキストを共有します。(プロセスに割り当てられたリソースの共有)
スケジューリングプロセスは、単一のCPUのために、プログラムを実行するコンテキスト退避+ +コンテキスト、スイッチングすなわち、プロセスを読み取る必要があります。
これはCPUコアを使用するために、プロセス内のシングルコアCPU、その後、別のスレッドであれば、それはスレッドスイッチであってもよいが、原因共有プログラム実行環境、たくさん未満のオーバーヘッドを切り替えるスレッド切替処理になります。ここでは、まだ同じ時間だけつのスレッドを実行することができる唯一のコアによって複雑になります。
これはマルチコアCPUであれば、別のスレッドの処理が異なるコアを使用することができ、真の平行が登場しました。
线程是CPU调度和分配的基本单位,一定要和 进程是操作系统进行资源分配(包括cpu、内存、磁盘IO等)的最小单位 区别清楚。有句话说CPU只能看到线程,可以这么理解,假设我是CPU,我闭着眼,操作系统调度器将一个进程分配给我之后,我拿到进程睁开眼,我看到的是什么?我看到的是进程中的很多线程,那么我现在能调度和分配的是什么?进程?不行,因为我看不到其他进程,何来调度分配,只能调度我看到的那些线程,如果我是4核的话,把线程ABCD分配到核心1234,其他的线程依然要等待分配,至于等待多久,如何分配,暂不在本文讨论范围。于是线程是CPU调度和分配的基本单位。
最后说一下操作系统内存管理模块这里做的事:在这之前,程序员需要为每个程序安排运行的空间,这里的空间指的是内存的物理地址,但是这么的问题就是,每个程序都要协商如何使用同一内存的不同空间,而且程序员还要关心底层内存分配问题。解决办法就是,提出进程的概念,每个进程用一样的虚拟地址空间,CPU上增加了MMU模块负责转换虚拟地址和物理地址,虚拟地址经过操作系统和MMU之后,虚拟地址会映射到不同的物理地址,不同的进程就能获得各自独立的物理内存空间。
另外在有的操作系统里,进程不是调度单位,线程是最基本的调度单位,调度器只调度线程,不调度进程,如VxWorks。
总结:
1、单CPU中进程只能是并发,多CPU计算机中进程可以并行。
2、单CPU单核中线程只能并发,单CPU多核中线程可以并行。
3、无论是并发还是并行,使用者来看,看到的是多进程,多线程。
https://www.cnblogs.com/csfeng/p/8670704.html