1.为什么要引入多进程和多线程?
计算机的作用在于辅助人们解决问题或者说完成某些特定的工作,假设计算机一次只能处里一个工作。如打开qq的时候不能处理其他的任何事情,不能听音乐,不能看视频,不能编辑文档,这显然是不能满足人们的日常需求的。故而,引入多进程以解决同时运行多个程序的需求。
同样的原因,如果一个进程只能按顺序处理一系列的任务,我们在使用qq给其中一个好友发送信息的时候,将无法同时接收到来自于其他好友的信息,因此引入多线程技术。
可以这样理解:单线程如同只雇佣一个服务员的餐厅,他必须完成一件事情之后才可以做下一件事;多线程的程序如同雇佣多个服务员的餐厅,他们可以同时做很多事情而且几乎互不干扰
2.进程和线程的概念:
进程简单来说就是运行中的程序,如chrome浏览器程序,当它未加载进内存进行运行的时候就是一个静态的程序;当它加载进内存运行时就是动态的一个进程。进程是一个动态的概念,它有自己的生命周期和各种不同的状态;进程是系统进行资源分配的和调度的一个基本单位。
多线程则拓展了多进程的概念,使得同一个进程可以同时并发(或并行)处理多个任务。线程因此也被称为轻量级的进程。每一个程序开始运行的时候至少都会创建一个主线程,线程之间也是互不干扰的,但与进程和进程之间的关系不同,同一个进程的线程之间共用父进程的资源,即线程不单独占有这些资源。
3.图示并发(Concurrency)和并行(Parallel):
其实从英语字面上来理解并发和并行是比较容易的;
其中较粗的箭头表示的是两个独立的线程,细的箭头表示cpu执行跳转(实际上可能没有这么规律),故并发并非真正的同时执行,只是因为cpu跳转时间间隔非常短使得看上去两个线程(或进程)像在同时运行着。
图中假设有一个四核的cpu,每个cpu上都单独运行着一个线程,它们是真正的同时运行着。
4.图示进程和线程:
图中展示了一个运行着6个进程的操作系统的理想模型,我们将绿色作为系统资源的分块,可以看到每个进程都有自己独立的资源分块;而线程(途中带箭头的直线)之间只能公用父进程所提供的资源,它们都是按依次按序往下执行的且互不干扰;
以上为本人学习总结,本人学识尚浅,如有错误望指正。