指令和程序有什么区别的串行执行和并行执行的区别

指令和程序有什么区别的串行执荇和并行执行的区别... 指令和程序有什么区别的串行执行和并行执行的区别

单CPU计算机在宏观上是并行微观上还是串行的。DOS是单任务的计算機如果有2个以上的程序,只能等一个先执行完再执行下一个WINDOWS是多任务的系统,它的并行也只是逻辑上的概念任何一个时刻只有一个程序在执行,但是2个或2个以上的程序可以交替间隔的得到CPU处理时间给人造成CPU在并行处理2个程序的错觉。之所以设计成并行是应为方面CPU速度“太快”。形象的说你听mp3的时候CPU在某一时刻已经为你准备好了可以播放5秒钟的数据并送到声卡下面的5秒你可以用WORD打字修改字体,你邊听音乐边打字的时候CPU就被交替处理这两个程序的数据这种间隔你是感觉不出来的。

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

介绍一下Linux系统中的代码执行shell等命囹的几种操作方式:

一、标准流管道popen

command:使我们要执行的命令即上述的运行命令,

type:有两种可能的取值“r”(代表读取)或者“w"(代表写入)

popen()会调用fork()产生子进程,然后从子进程中调用/bin/sh-c来执行参数command的指令和程序有什么区别参数type可使用“r”读取 或者“w”写入,根据type的值popen()会创建管道连接到子进程的标准输出设备或者标准输入设备,然后返回一个文件指针随后进程就可以利用此文件指针来读取子进程的标准输出设备或者写入子进程的标准输入设备。 

这个函数可以大大减少代码的编写量但使用不太灵活,不能自己创建管道那么灵活并且popen()必须使用标准的I/o函数进行操作,也不能使用read(),wirte()这种不带缓冲的I/O函数必须使用pclose()来关闭管道流,该函数关闭标准I/O流并等待命令执行结束

个人总结:记住,向这个流中写内容相当于写入该命令(或者是该程序)标准输入; 向这个流中读数据相当于读取该命令(或者是该程序)的标准输出

在Linux中并不存在exec()函数,exec指的是一组函数一共有6个,分别是:

其中只有execve是真正意义上的系统调用其它都是在此基础上经過包装的库函数。

exec函数族的作用是根据指定的文件名找到可执行文件并用它来取代调用进程的内容,换句话说就是在调用进程内部执荇一个可执行文件。这里的可执行文件既可以是二进制文件也可以是任何Linux下可执行的脚本文件。

  bash shell的命令分为两类:外部命令和内部命令外部命令是通过系统调用或独立的程序实现的,如sed、awk等等内部

命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等

  在说明exe和source的区別之前,先说明一下fork的概念

获得一定的资源分配以及继承父进程的环境。子进程与父进程唯一不同的地方在于pid(process id)

  环境变量(传给子进程的变量,遗传性是本地变量和环境变量的根本区别)只能单向从父进程传给子进程不管子进程的环境

变量如何变化,都不会影响父进程嘚环境变量

再启用其他shell。

  新产生一个shell然后再执行scripts的方法是在scripts文件开头加入以下语句

  一般的script文件(.sh)即是这种用法这种方法先启用噺的sub-shell(新的子进程),然后在其下执行命令。

  另外一种方法就是上面说过的source命令不再产生新的shell,而在当前shell下执行一切命令

current shell environment and …”。从中可鉯知道source命令是在当前进程中执行参数文件中的各个命令,而不是另起子

令不产生新的子进程那么exec与source的区别是什么呢?

  exec命令在执行时會把当前的shell process关闭,然后换到后面的命令继续执行

系统调用exec是以新的进程去代替原来的进程,但进程的PID保持不变因此,可以这样认为exec系统调用并没有创建新的

进程,只是替换了原来进程上下文的内容原进程的代码段,数据段堆栈段被新的进程所代替。

1.system和popen都是执行了類似的运行流程大致是fork->execl->return。但是我们看到system在执行期间调用进程会一直等待shell命令执行完成(waitpid等待子进程结束)才返回但是popen无须等待shell命令执行完荿就返回了。我们可以理解system为串行执行在执行期间调用进程放弃了”控制权”,popen为并行执行

2.popen中的子进程没人给它”收尸”了啊?是的如果你没有在调用popen后调用pclose那么这个子进程就可能变成”僵尸”。

3.对于管道已经很清楚而管道写可能用的地方比较少。而对于写可能更瑺用的是system函数:

4.如果不需要使用到程序的I/O数据流那么system是最方便的。

而且system函数是C89和C99中标准定义的可以跨平台使用。而popen是Posix 标准函数可能茬某些平台无法使用(windows应该是可以的吧,没做过测试)

5.可以看出,popen可以控制程序的输入或者输出而system的功能明显要弱一点,比如无法将讀取结果用于程序中

6.如果上述两个函数还无法满足你的交互需求,那么可以考虑exec函数组了

system 是在单独的进程中执行命令,完了还会回到伱的程序中而exec函数是直接在你的进程中执行新的程序,新的程序会把你的程序覆盖除非调用出错,否则你再也回不到exec后面的代码就昰说你的程序就变成了exec调用的那个程序了。

最后说一下exit函数:

对你的程序来说没有区别。对使用你的程序的人或者程序来说区别可就夶了。

一般来说exit 0 可以告知你的程序的使用者:你的程序是正常结束的。如果 exit 非 0 值那么你的程序的使用者通常会认为你的程序产生了一個错误。

本中通常会根据上一个命令的 $? 值来进行一些流程控制。

同样的情形出现在 C 语言的 exec 系列函数中

当你 exit 0 的时候,在调用环境 echo $? 就返回0,吔就是说调用环境就认为你的这个程序执行正确

当你 exit 1 的时候,一般是出错定义这个1也可以是其他数字,很多系统程序这个错误编号是有约萣的含义的

但不为0 就表示程序运行出错。 调用环境就可以根据这个返回值判断 你这个程序运行是否ok搜索如果你用 脚本 a 调用 脚本b ,要在aΦ判断b是否正常返回就是根据 exit 0 or 1 来识别。执行完b后 判断 $? 就是返回值

微程序设计是用规整的存储逻辑玳替不规则的硬接线逻辑来实现计算机控制器功能的技术每一条指令和程序有什么区别启动一串微指令和程序有什么区别,这串微指令囷程序有什么区别称为微程序微程序存放在控制存储器中,修改控制存储器内容可以改变计算机的指令和程序有什么区别

组成的序列。在计算机中一条

组成的序列来解释和执行,因此机器执行一条指令和程序有什么区别的过程也就是执行一个相应的微程序的过程。

茬计算机等数字系统中控制器的典型功能是按时间节拍发出一定数量的控制信号,使系统完成若干基本操作经过若干节拍后即完成一種相对完整的功能,如一条机器指令和程序有什么区别的功能在一般的控制器中这些控制都是由硬接线逻辑来实现的,在微程序控制器Φ这些基本操作是由存在于控制存储器中的微程序段控制完成的每个基本操作称为微操作。微程序段由若干条微指令和程序有什么区别組成

在实际进行微程序设计时,应考虑尽量缩短微指令和程序有什么区别字长减少微程序长度,提高微程序的执行速度这几项指标昰互相制约的,应当全面地进行分析和权衡

(1)水平型微指令和程序有什么区别及水平型微程序设计

水平型微指令和程序有什么区别是指一次能定义并能并行执行多个微命令的微指令和程序有什么区别。它的并行操作能力强效率高,灵活性强执行一条机器指令和程序囿什么区别所需微指令和程序有什么区别的数目少,执行时间短;但微指令和程序有什么区别字较长增加了控存的横向容量,同时微指囹和程序有什么区别和机器指令和程序有什么区别的差别很大设计者只有熟悉了数据通路,才有可能编制出理想的微程序一般用户不噫掌握。由于水平型微程序设计是面对微处理器内部逻辑控制的描述所以把这种微程序设计方法称为硬方法。

(2)垂直型微指令和程序囿什么区别及垂直型微程序设计

垂直型微指令和程序有什么区别是指一次只能执行一个微命令的微指令和程序有什么区别它的并行操作能力差,一般只能实现一个微操作控制一两个信息传送通路,效率低执行一条机器指令和程序有什么区别所需的微指令和程序有什么區别数目多,执行时间长;但是微指令和程序有什么区别与机器指令和程序有什么区别很相似所以容易掌握和利用,编程比较简单不必过多地了解数据通路的细节,且微指令和程序有什么区别字较短由于垂直型微程序设计是面向算法的描述,所以把这种微程序设计方法称为软方法

综合前述两者特点的微指令和程序有什么区别称为混合型微指令和程序有什么区别,它具有不太长的微指令和程序有什么區别字又具有一定的并行控制能力,可高效地去实现机器的指令和程序有什么区别系统

的过程与执行机器指令和程序有什么区别的过程很类似。第一步将微指令和程序有什么区别从控存中取出称为取微指令和程序有什么区别;对于垂直型微指令和程序有什么区别还应包括微操作码的译码时问。第二步执行微指令和程序有什么区别所规定的各个操作微指令和程序有什么区别的执行方式可分为串行和并荇两种方式。

在这种方式里取微指令和程序有什么区别和执行微指令和程序有什么区别是顺序进行的,在一条微指令和程序有什么区别取出并执行之后才能取下一条微指令和程序有什么区别。

一个微周期里在取微指令和程序有什么区别阶段,CM工作数据通路等待;而茬执行微指令和程序有什么区别阶段,CM空闲数据通路工作。

串行方式的微周期较长但控制简单,形成后继微地卅所用的硬件设备较少

为了提高微指令和程序有什么区别的执行速度,可以将取微指令和程序有什么区别和执行微指令和程序有什么区别的操作重叠起来从洏缩短微周期。因为这两个操作是在两个完全不同的部件中执行的所以这种重叠是完全可行的。 ‘

在执行本条微指令和程序有什么区别嘚同时预取下一条微指令和程序有什么区别。假设取微指令和程序有什么区别的时间比执行微指令和程序有什么区别的时间短就以较長的执行时间作为微周期。

由于执行本条微指令和程序有什么区别与预取下一条微指令和程序有什么区别是同时进行的若遇到某些需要根据本条微指令和程序有什么区别处理结果而进行条件转移的微指令和程序有什么区别,就不能并行地取出来最简单的办法就是延迟一個微周期再取微指令和程序有什么区别。

除以上两种控制方式外还有串、并行混合方式,即当待执行的微指令和程序有什么区别地址与現行微指令和程序有什么区别处理无关时采用并行方式;当其受现行微指令和程序有什么区别操作结果影响时,则采用串行方式

通常,对应于一台计算机的

当微程序设计好之后,一般不允许改变而且也不便于改变这样的设计叫做静态微程序设计。若一台计算机能根據不同应用目标的要求改变微程序则这台计算机就具有动态微程序设计功能。

动态微程序设计的出发点是为了使计算机能更灵活、更有效地适应于各种不同的应用目标例如,在不改变硬件结构的前提下如果计算机配备了两套可供切换的微程序,一套是用来实现科学计算的指令和程序有什么区别系统另一套是用来实现数据处理的指令和程序有什么区别系统,这样该计算机就能根据不同的应用需要随时妀变和切换相应的微程序以保证高效率地实现科学计算或数据处理。

动态微程序设计需要可写控制存储器(WCS)的支持否则难以改变微程序的内容。由于动态微程序设计要求对计算机的结构和组成非常熟悉所以这类改变微程序的方案也是由计算机的设计人员实现的。

  • 1. 蒋夲珊 编著,计算机组成原理 (第2版),清华大学出版社,-212

我要回帖

更多关于 指令和程序有什么区别 的文章

 

随机推荐