程序:一组指令的有效集合
进程:程序的执行就是进程。也可以把进程看成一个独立的程序,在内存中有其对应的代码空间和数据空间,一个进程所拥有的数据和代码只属于自己。进程是资源分配的基本单位,也是调度运行的基本单位。
线程:线程被人们认为是轻量级的进程,它是进程中单独运行的一路程序。换句话说,就是一个进程可以包含多个线程,并且至少有一个主线程,同时同一进程的线程共享该进程的代码和数据。于此同时,每一个线程又都有自己的堆栈,这些堆栈对于线程来说是私有的。线程是处理机调度的基本单位。
那为什么要引入线程呢?
1、便于调度
2、线程可以共享进程的数据和代码,从而比进程需要通过消息才能通信来得更加简单。启动和切换的速度也比进程快。
3、具有高并发性,可以启动多个线程执行同程序的不同部分。
4、充分利用处理器的功能。让每一个处理器上运行不同线程,从而实现应用程序的并发性。
程序和进程的区别
1、程序是静态的,它知识一组冰冷的指令的集合,不具有任何的运行意义。而进程是程序运行在数据集上的动态过程,进程是一个动态实体,它应创建而产生,应调度执行,应等待资源或者是事件而处于等待状态,应完成了任务而被撤销,它有自己的生命周期,它反应了程序在数据集上运行的全部动态过程。
2、进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程。
3、进程还具有并发性和交往性,而程序却是封闭的。
进程和线程的区别
1、一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有。
2、进程是资源分配的基本单位,线程是处理机调度的基本单位,所有的线程共享其所属进程的所有资源与代码。
3、线程执行过程之中很容易进行协作同步,而进程需要通过消息通信进行同步。
4、线程的划分尺度更小,并发性更高。
5、线程共享进程的数据的同时,有自己私有的的堆栈。
6、线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口。它必须组成进程才能被执行。