程序,进程和线程的区别

如题所述

程序并不能单独执行,只有将程序加载到内存中,系统为他分配资源后才能够执行,这种执行的程序称之为进程,也就是说进程是系统进行资源分配和调度的一个独立单位,每个进程都有自己单独的地址空间。所以说程序与进程的区别在于,程序是指令的集合,是进程运行的静态描述文本,而进程则是程序在系统上顺序执行时的动态活动。

但是进程存在着很多缺陷,主要集中在两点:
(1).进程只能在同一时间干一件事情,如果想同时干两件事或多件事情,进程就无能为力了。
(2).进程在执行的过程中如果由于某种原因阻塞了,例如等待输入,整个进程就会挂起,其他与输入无关的工作也必须等待输入结束后才能顺序执行。

为了解决上述两点缺陷,引入了线程这个概念。

线程是进程的一个实体,也是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,有时又被称为轻权进程或轻量级进程,相对进程而言,线程是一个更加接近于执行体的概念,进程在执行过程中拥有独立的内存单元,而线程自己基本上不拥有系统资源,也没有自己的地址空间,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),线程的改变只代表了 CPU 执行过程的改变,而没有发生进程所拥有的资源变化。除了CPU 之外,计算机内的软硬件资源的分配与线程无关,但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

进程和线程的主要差别在于操作系统并没有将多个线程看作多个独立的应用,来实现进程的调度和管理以及资源分配。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些,对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程,每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口,但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-04-03

进程与程序的区别

①进程是程序的一次执行过程,它是动态的,具备生命周期,在内存上存放。

②程序是静态的,没有生命周期。在磁盘上存放,程序就是可以可执行文件。

③进程更能真实地描述并发,而程序不能。

④进程具有创建其他进程的功能,而程序没有。

⑤同一程序可以对应多个进程。

进程与线程的区别

通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小很多,能更高效的提高系统内多个程序间并发执行的程度。

第2个回答  2017-11-03
线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;(2)进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源(3)线程是处理器调度的基本单位,但进程不是.(4)二者均可并发执行.本回答被提问者采纳
相似回答