多核、多进程、多线程的理解

进程
1、一个CPU——可以(伪)并发——一个单独的CPU变成多个虚拟的CPU;
2、多道程序设计:通过操作系统的进程调度算法(时间片轮转调度、优先级调度、多级队列调度等),将一个CPU变成多个虚拟的CPU,使用户感觉多个进程同时执行;
3、每个进程在执行过程中有不同的形态,CPU需要根据进程执行过程中的特性制定CPU调度算法从而提高CPU的利用率;
4、CPU的并发需求产生了进程,进程执行过程中的特性产生了CPU调度算法,CPU调度时需要维护每个进程特有的数据和空间,因此产生了维护每个进程的进程表项。
线程
1、操作系统能够进行运算调度的——最小单位;

引入线程的原因:
2、对CPU密集型进程,多线程其性能不一定能得到大提升,但对于IO密集型进程,其性能可得到很大的提高;
3、线程比进程更轻量级,创建和撤销的代价小。一般,创建一个线程比一个进程要快10~100倍不等;
4、多核CPU——真正意义上的并行;
5、线程间的切换要比进程间的切换代价小;

引入多线程的原因:
6、多线程可以有效利用个别线程的等待时间;
7、多线程可以边交付、边计算;
8、多核或多CPU的能力体现;
9、相对于多进程应用,多线程在数据共享方面效率高很多;
10、程序逻辑本身要求的并发操作。

总结:
进程是系统分配资源的基本单位,线程是调度CPU的基本单位。(政府盖大楼:系统是政府,进程是各个环节的承包商,线程是具体执行的各个小队长)

多核CPU
多个完整的计算引擎(内存),共享Cache。

阅读更多

没有更多推荐了,返回首页