#进程和线程
首先什么是进程? 进程是操作系统动态执行的基本单元,进程就可以说是一段程序的执行过程,当我们有很多程序同时执行时,就有了一种类似于排队的模式,就如说我们去银行柜台取钱,为了同时进行,我们可以规定让每个人一次只能取500,取完之后就下一个人取,如此循环,先取完就等同于程序执行完了,然后慢的就继续刚刚的排队。
线程又是什么呢。线程是操作系统动态执行的最小单元,为什么要引入线程。因为比如你取完钱还有比较重要的事要去做,你就希望快点把钱取完,然后你就可以喊你基友,女票,你的爸妈等过来和你一起排队,这样取钱的速度就会变快,你叫的那些人就可以理解为多个线程。我们通常把进程作为分配资源的基本单位,而线程基本不占用资源,所以系统对它的调度开销就会小一些,能够更高效的提高多个程序同时执行的效率。
多线程是通过提高系统资源的利用率来提高我们的运行效率,多线程之间是资源共享的。
#按照专业的回答:
进程的概念主要有两点:第一,进程是一个实体,每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region) 数据区域(data region)和堆栈(stack region),文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量,第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行时),他才能成为一个活动的实体,我们称之为进程。
线程,有时被称为轻量进程,是程序执行流的最小单元,一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分配的基本单位,线程自己不用拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属于一个进程的其他线程共享进程所拥有的全部资源,一个线程可与创建和撤销另一个线程,同一进程中的多个线程之间可与并发执行。由于线程之间的互相制约,致使线程在运行中呈现出间断性。线程也有就绪,阻塞和运行三种基本状态。就绪状态是指线程具备运行的缩影条件,逻辑可以运行,在等待处理器;运行状态是指线程占有处理器正在运行;阻塞状态是指线程在等待一个事件(如某个信号量),逻辑上不可执行。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。