首页 > 试题广场 >

进程和程序的本质区别在于( )

[单选题]

进程和程序的本质区别在于( )

  • 前者分时使用CPU,或者独占CPU
  • 前者存储在内存,后者存储在外存
  • 前者具有异步性,后者具有可再现性
  • 前者可以并发执行,后者不能并发执行
发表于 2018-08-18 17:00:51 回复(1)
我感觉最本质的区别就是进程具有动态行,程序是静态的
发表于 2018-11-01 23:40:53 回复(0)
这题答案是错的吧?程序怎么不可以并发执行了?进程和程序都具有并发性
发表于 2020-01-06 14:41:05 回复(0)
感觉这题有争议,
A不用说,没有进程或者程序可以独占CPU,每个进程/程序都只被CPU运行一段时间,所以A错误。

B选项:进程是“运行的程序”,是程序被加载到内存中,由高速缓存取地址送给CPU执行,而程序是静态的,存储在外存上,从这个角度来说,前者存在内存,后者(程序)存在外存,我觉得没有问题(欢迎大佬指正)。但是题干问本质区别,不敢断言

C选项:异步性是指:进程以不可预知的速度向前推进。内存中的每个进程何时执行,何时暂停,以怎样的速度向前推进,每道程序总共需要多少时间才能完成等,都是不可预知的,所以进程具有异步性。而程序存在外存中,可以被重复加载,具有可再现性,没有问题。同理,进程也可以被多次运行,所以从这个角度理解,我认为进程同样可以拥有可再现性,C错误

D选项,每个进程作独占内存空间,且不同进程分别被CPU运行一段时间然后中断挂起,运行另外的进程,两段进程在一段时间被CPU交错运行,即是进程并发,不同进程被不同CPU并行运行,即是进程并行。所以进程可以并发执行完全没有问题。
而程序呢?程序是静态的,只有被加载到内存中,被高速缓存取走指令送给CPU 才具有动态,先看从外存到内存这一过程,程序现在已经是机器指令,全部被加载到内存中,这加载过程应该是线性,所以不存在并发(多个程序也是逐一加载到内存中,然后由CPU以及高速缓存决定运行 的顺序)
但是进程是并发的(CPU会选择不同进程的内存地址分别往下执行一段时间,没有被执行的进程暂时挂起)。而进程是程序的动态状态,从这一角度“程序”又是并发的了。所以如果程序只没有被加载的静态的程序,那么程序的确不具有并发性。如果指的是,加载到内存之后的程序,那么程序又能并发执行了(程序只是进程的一部分,进程不是程序的全部),所以不同角度解读既可对,也可说错。欢迎讨论
发表于 2021-02-07 23:09:55 回复(1)
<p>破题烂题</p>
发表于 2020-12-03 13:08:57 回复(0)
进程与程序的异同:
1、程序是一组指令的集合; 进程由程序段,数据段和进程控制块PCB组成
2、进程是程序的一次执行过程,是动态的。进程随创建而产生,随调用而执行,随撤销而消亡,也就是说进程是有生命周期的; 程序是一组代码集合,是静态的,永久存在的
3、多个进程实体可以并发执行,这是引入进程的目的; 程序并发执行会失去其封闭性和可再现性,因此程序不能并发执行
4、一个程序可以创建多个进程,进程也可以创建进程,但程序不能创建程序
     一个进程执行一个命令,进程与程序之间为一对一
     进程执行过程中加载了不同的程序,进程与程序之间为一对多
     不同参数执行同一程序,,进程与程序之间为多对一

注:
程序并发执行失去封闭性和再现性:
程序并发执行时, 系统中的共享资源状态由多个程序决定,即程序并发执行失去封闭性。由于失去了封闭性,程序多次执行后,其计算结果与程序的运行速度有关,即程序并发执行失去再现性。(因此程序不能并发执行)

程序顺序执行的封闭性和再现性:
程序顺序执行时,程序独占系统资源,只有本进程才可以改变共享资源的状态,即程序顺序执行的封闭性。由于封闭性,只有本进程才可以改变共享资源的状态,程序无论执行多少次,其结果都是一样的,即程序顺序执行的可再现性

编辑于 2021-11-02 15:49:16 回复(0)
感觉都不对啊,程序也可以并发执行啊,只不过没有可在现性而已
发表于 2018-09-16 14:51:02 回复(0)