基本概念
- 串行(sequential):cpu一次只执行一个程序,按照顺序执行所有程序
- 并行(concurrent):多个任务交替使用cpu资源,在时间上共享单一cpu资源
- 并发(parallel):多个任务在多个cpu上同时执行
- 分布式(distributed program):并发任务在不同的,互联的机器上执行(不仅仅是cpu)
- 多任务(multitasking):用户可以同时运行多个任务(进程)
- 线程(thread):某个程序(任务,进程)中的一部分指令。一个进程包含多个线程,线程之间共享地址空间。
- 进程(process):某个程序,例如QQ的主进程。每个进程有自己的地址空间,互不共享。
- 工作(job): 一个job包含多个进程,一个进程包含多个线程
- Application: 例如QQ这个应用程序,一个应用包含多个job
为何要并行和分布式编程?
- 加快运算速度, 科学计算
- 提高吞吐量 Google的PageRank
- 降低成本,尤其是在cloud上面