进程和线程的区别

来源:互联网 发布:卫浴行业数据 编辑:程序博客网 时间:2024/06/10 02:52

我们先来说一说进程和线程的由来:

1>进程的引入:

为什么要引入进程:

我们都知道cpu的运行速度是超级超级快的,除了高速缓存和一些寄存器仅仅能跟在它的屁股后面,

但是像ram或者其他资源的速度相对于cpu简直就是天壤之别,所以,我们为了提高资源的利用率,

就有了多道程序的系统,即程序和程序的并发执行,这样的话可以提高资源的利用率。由于cpu的

运行速度超级棒,所以多个任务之间轮流使用cpu,给人的感觉也是连续的。


程序的执行,先要得到相关的资源,然后在占用cpu开始执行,程序的执行需要依赖各种的资源,

也就是这个程序的执行环境,就是所谓的程序上下文,要实现并发执行,就得不断的轮换,为了再次

调度它的时候从当前状态执行下去,计算机系统需要保存切换前的程序上下文,所以就有了进程的

引入:用于管理分配资源:

那实际上进程就是cpu的执行的一个时间段:cpu加载上下文+cpu执行+cpu保存上下文。


2>线程的引入:

多任务之间的切换需要不断保存。调入上下文,当切换频繁的时候造成的开销会很大,为了

提高cpu的利用率,引入了线程,拥有较小的切换开销,因为线程只是cpu轮询调度的的单位,其他上下文

信息用的是自己所在进程中的,这样上下文切换的耗时就将下来了。

****************************************************************************************************************************************


所以:

进程概念:操作系统进行资源分配和调度的基本单位,每个进程都有自己的虚拟空间,大小取决于计算机的位数。

线程概念:是cpu调度和分派的基本单位,是进程里的一条执行路径,一个进程至少有一个线程,每个线程都有自己

的线程栈,其他区域均共享资源。


进程切换:cpu加载上下文+cpu执行+cpu保存上下文

线程切换:仅需要切换线程栈(约4K大小,包括栈指针,pc寄存器,一组寄存器),因为同一个进程里的线程共享

该进程的资源,是颗粒度更小的cpu执行的时间段。

******************************************************************************************************************************************

进程和线程的关系:

(1)一个线程只能属于一个进程,而一个进程可以有很多个进程,但至少会有一个线程

(2)资源分配给进程,同一个进程的所有线程共享该进程的所有资源

(3)cpu分给线程,即真正在cpu上运行的是线程

(4)线程在执行的过程中,需要协作同步,不同的进程的线程要利用消息通讯实现同步,线程是进程的一个执行单元,是

进程内的可调度实体

*********************************************************************************************************************************************

进程和线程的区别:

(调度):线程是cpu调度和分配的基本单位,进程是资源分配的基本单位

(并发性):进程和进程之间,同一进程的多个线程也存在并发性

(拥有资源):进程是拥有资源的一个独立单位,线程不拥有资源,但是共享同一进程的资源

(系统开销):在创建或撤销进程时由于系统会为分配和收回资源,导致系统开销明显大于线程的创建和销毁

*********************************************************************************************************************************************












原创粉丝点击