首页 > 试题广场 >

以下说法正确的是()

[单选题]
以下说法正确的是()
  • 在计算机中,运算器访问寄存器的速度是最快的
  • 在等待中断的过程中,CPU不可以处理其他任务
  • 同一段代码每次运行的时间一定是一样的
  • 软中断是由软件触发的一种中断
软中断是由执行中断指令产生的,
计算机中运算器访问寄存器的速度快于***
发表于 2015-09-11 11:15:27 回复(0)
软中断的处理非常像硬中断。然而,它们仅仅是由当前正在运行的进程所产生的。
发表于 2016-03-02 16:44:39 回复(0)
这个题目A也是正确的吧~
发表于 2015-09-10 22:37:45 回复(3)

对于选项 A 的说法 ,猜测题目是想对指令执行过程中各步骤完成时间进行比较,指出所有步骤中读/写寄存器的速度最快。如果是这种理解的话,那么,选项A是正确的。

通常,把取出指令并执行所用的时间称为一个指令周期。不同指令的功能不同,因此所包含的执行步骤不一样。不考虑指令译码这个步骤,不管是简单指令还是复杂指令,其包含的执行步骤总是可以分解成以下4种基本操作,也即每条指令的功能总是由以下4种基本操作功能组合而成。

1)读取某存储单元内容装入给定寄存器。

2)把一个数据从某个寄存器存入给定的存储单元中。

3)把一个数据从某个寄存器送到另一个寄存器或者ALU输入端。

4)进行某种算术运算或逻辑运算,将结果送入某个寄存器。

因此,若比较每个步骤的执行时间,则只要比较上述4种操作的时间即可,显然第(3)种操作的执行时间最短,速度最快。

选项A中“运算器访问寄存器”这个说法有点问题。通常我们会说CPU访问存储器,是因为CPU在执行指令过程中,需要从存储器中取指令,或者,CPU根据对指令的译码得知操作数在存储器,需要访存来取数或存结果。这时,CPU通过控制器送出相应的控制信号来提出访存请求。但是,在运算器和寄存器之间就没有这种关系,运算器本身是一个执行算术和逻辑运算的组合逻辑部件,它不可能产生访问寄存器的请求,读写寄存器与读写存储器、ALU运算等操作一样,都是由CPU中的控制器进行控制的,因而说“运算器访问寄存器”有点不妥。

选项 B 的描述是错误的 。选项B的描述中,“中断”一词比较含糊,可以有两种不同的理解,一种是“中断请求”,一种是“中断处理结束”。

如果理解成前者,选项B的含义就是“CPU在等待中断请求的过程中,不可以处理其他任务”,这显然是错误的。CPU在执行程序的过程中,总是在执行完一条指令、取下条指令之前,去主动检测“中断请求信号”,若发现有中断请求,则执行一条“中断隐指令”,以响应中断请求。

如果理解成后者,选项B的含义就是“CPU在等待中断处理结束的过程中,不可以处理其他任务”,这也是错误的。

CPU响应中断请求后,就会跳转到一个中断服务程序去执行,以进行中断处理。不同的中断类型具有不同的中断服务程序,进行不同的中断处理。有些中断处理非常简单,例如“打印机缺纸”,其中断服务程序只要在屏幕上显示一个消息即可;有些中断处理则比较复杂,例如,对于采用中断方式进行打印输出的情况,中断服务程序中需要启动外设进行I/O,通常在发出启动外设的命令后进行中断返回,以回到原先被中止的另一个进程代码去执行。

例如,对于请求打印字符串的用户进程P1的例子,如果采用中断控制I/O方式,则操作系统处理I/O的过程如图所示。



从图 (a) 可以看出,在“字符打印”系统调用服务例程中启动打印机后,它就调用处理器调度程序 scheduler 来调出进程 P2 执行,而将用户进程 P1 阻塞。在 CPU 执行进程 P2 的同时,打印机在进行打印操作, CPU 和打印机并行工作。一旦打印机完成一个字符的打印后,就会给 CPU 发中断请求,然后 CPU 暂停正在执行的进程 P2 ,调出“字符打印”中断服务程序来执行。如图 (b) 所示,中断服务程序首先判断是否已完成字符串中所有字符的打印,若是,则将用户进程 P1 解除阻塞,使其进入就绪队列;否则,就向数据端口送出下一个欲打印字符,并启动打印,将未打印字符数减 1 和下一个打印字符指针加 1 后,执行中断返回,回到被打断的进程 P2 继续执行。

从上述例子可以看出,在某个进程使用中断方式进行I/O过程中(相当于等待中断处理结束的过程中),CPU可以执行其他进程的工作。因此,选项B在这种情况下也是错的。

对于选项 C 因为提到“一定”两个字,所以很快可以判断是错误的。不过,对于选项C中提到的知识点的理解,还有许多内容值得详细讨论。

首先是对“程序代码的运行时间”和“同一段代码”如何理解的问题。

操作系统在对处理器进行调度时,一段时间内往往会让多个程序(更准确地说是进程)轮流使用处理器,因此在某个用户程序执行过程中,可能同时还会有其他用户程序和操作系统程序在执行,所以,用户感觉到的某个程序的执行时间并不是其真正的执行时间。通常把用户感觉到的执行时间分成以下两部分:CPU时间和其他时间。CPU时间指CPU用于程序执行的时间,它又包括以下两部分:

1)用户CPU时间,指真正用于运行用户程序代码的时间;

2)系统CPU时间,指为了执行用户程序而需要CPU运行操作系统程序的时间。

其他时间指等待I/O操作完成的时间或CPU用于执行其他用户程序的时间。

计算机系统的性能评价主要考虑的是CPU性能。系统性能和CPU性能不等价,两者有一些区别。系统性能是指系统的响应时间,它与CPU外的其他部分也有关系;而CPU性能是指用户CPU时间,它只包含CPU运行用户程序代码的时间。

因此,对“程序代码的运行时间”可以理解为程序代码中每条指令执行时间总和,也可以理解为程序代码运行过程中用户感觉到的执行总时间(包括操作系统代码和穿插在其中的其他程序代码运行时间)。如果理解为后者,那么很可能因为每次运行环境的不同,使得用户感觉到的执行总时间可能不一样。因此,选项C是错误的。

如果理解为前者,那么,还要看选项中的同一段代码指的是什么含义,才能确定选项C是否正确。如果同一段代码中代码指的可执行文件中一段静态的指令序列(例如一段循环执行的指令序列),那么可能会因为每次执行这段代码时变量的值的不同(例如循环终止条件变量的值不同),导致程序在执行时所执行的指令条数不同(循环执行次数不同),因而使得每次运行该段代码过程中指令执行的总时间不同。所以,选项C是错误的

显然,只有将程序代码的运行时间理解为程序代码中每条指令执行时间总和,并且,将同一段代码理解成每次运行程序代码过程中在CPU上所执行的指令序列完全相同,那么,选项C才是正确的。显然,对选项C的描述作这种解读有点牵强。

选项 D 的“软中断”应该特指Intel架构中的“int n”指令,执行该指令后,CPU会根据中断类型号n,到中断向量表(实地址模式)或中断描述符表(保护模式)中,取出相应的中断服务程序执行,执行结束后再回到“int n”指令后面一条指令执行。因此,“int n”指令的执行相当于引起了一次对现行程序的“中断”事件,这里“int n”指令显然是事先安排在软件中的,属于软件触发的事件。因而选项D的描述是正确的。

不同的计算机体系结构和教科书对“异常”和“中断”定义的内涵不同。例如,PowerPC体系结构用异常表示各种意外事件,而用中断表示程序正常执行的控制流被改变;Intel 早期的8086/8088架构不区分异常和中断,把两者统称为中断,由CPU内部产生的异常称为内中断,通过中断请求线INTRNMICPU外部发出的中断请求为外中断,但Intel后来的处理器架构中又将内中断称为“异常”,而把外中断特指为“中断”。

如果将选项 D 的描述中所提的“中断”理解为特指的外中断的话,选项 D 就是错误的,因为“ int n ”指令的执行不会通过中断请求线向 CPU 发中断请求,这种软中断不属于外中断,而是一种内部的“异常”。不过,笔者猜测这里的“中断”应该不是特指外部中断。

发表于 2016-04-05 23:06:46 回复(1)
A中访问寄存器最快,依据:  寄存器>***>RAM>ROM  

发表于 2015-09-11 09:05:32 回复(0)
补充一下:
硬中断:

1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。

2. 处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU(也有一种特殊的情况,就是在大型主机上是有硬件通道的,它可以在没有主CPU的支持下,可以同时处理多个中断。)。

软中断:

软中断的处理非常像硬中断。然而,它们仅仅是由当前正在运行的进程所产生的。软中断并不会直接中断CPU。也只有当前正在运行的代码(或进程)才会产生软中断。这种中断是一种需要内核为正在运行的进程去做一些事情(通常为I/O)的请求。
摘自:http://www.linuxidc.com/Linux/2014-03/98013.htm

发表于 2016-03-14 12:55:50 回复(1)
选A,***访问速度最快。软中断是由内核机制的触发事件引起的(例如进程运行超时),而硬中断是由外设引发的 
发表于 2015-09-11 10:09:50 回复(1)
A中访问寄存器最快,依据:  寄存器>***>RAM>ROM  
补充一下:
硬中断:

1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。

2. 处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU(也有一种特殊的情况,就是在大型主机上是有硬件通道的,它可以在没有主CPU的支持下,可以同时处理多个中断。)。

软中断:

软中断的处理非常像硬中断。然而,它们仅仅是由当前正在运行的进程所产生的。软中断并不会直接中断CPU。也只有当前正在运行的代码(或进程)才会产生软中断。这种中断是一种需要内核为正在运行的进程去做一些事情(通常为I/O)的请求。
发表于 2017-03-26 18:52:22 回复(0)
百度百科对软中断产生原因的介绍:
        一般来说,软中断是由 内核 机制的触发事件引起的(例如进程运行超时),但是不可忽视有大量的软中断也是由于和硬件有关的中断引起的,例如当打印机端口产生一个 硬件中断 时,会通知和硬件相关的硬中断,硬中断就会产生一个软中断并送到 操作系统内核 里,这样内核就会根据这个软中断唤醒睡眠在打印机任务队列中的处理进程。
发表于 2016-04-22 15:08:20 回复(0)
寄存器>***>RAM>ROM  
发表于 2016-03-07 14:39:02 回复(0)
A访问内存最快
发表于 2015-09-11 08:14:48 回复(0)