計算機系統基礎三:異常、中斷和輸入輸出期末

计算机系统基础三期末考試

错题序号:6、12

1下列选项中,不会引起异常控制流的事件是( B )。

A.访存缺页

B.浮点运算结果为非规格化数

C.鼠标信息输入

D.整数除0

解析: B、除数为0和访存时缺页都是在执行某条指令时CPU发现的异常事件,鼠标信息输入能引起外部中断,因为它们都会导致异常/中断响应,调出相应的异常处理程序或中断服务程序执行,形成异常控制流。而浮点运算结果为非规格化数则是正常的程序执行结果,不会形成异常控制流。

2以下有关CPU响应外部中断请求的叙述中,错误的是( B )。

A.在“中断响应”周期,CPU将中断允许触发器清0,以使CPU关中断

B.每条指令结束后,CPU都会转到“中断响应”周期进行中断响应处理

C.在“中断响应”周期,CPU把取得的中断服务程序的入口地址送PC

D.在“中断响应”周期,CPU把后继指令地址作为返回地址保存在固定地方

解析: B、CPU在每条指令执行结束时检测中断请求信号,若检测到中断请求信号有效,则进入中断响应周期;若检测到中断请求信号无效,则不会进入中断响应周期。

3中断向量地址是指( D )。

A.子程序入口地址

B.中断查询程序的入口地址

C.中断服务程序入口地址

D.中断服务程序入口地址的地址

正确答案:D

4以下是关于I/O空间独立编址方式下设备驱动程序的描述,其中错误的是( C )。

A.一定包含I/O指令,通过执行I/O指令来控制外设

B.设备驱动程序的实现一定与I/O控制方式有关

C.驱动程序执行过程中一定会调度CPU转去其他进程执行

D.一定属于操作系统内核程序,在核心态执行以进行I/O控制

解析: B、通过执行设备驱动程序,CPU可以向控制端口发送控制命令来启动外设,可以从状态端口读取状态来了解外设或设备控制器的状态,也可以从数据端口中读取数据或向数据端口发送数据等。显然,设备驱动程序中包含了许多I/O指令,通过执行I/O指令,CPU可以访问设备控制器中的I/O端口,从而控制外设的I/O操作。 C、设备驱动程序的实现取决于I/O控制方式,在中断方式或DMA方式下,驱动程序执行过程中会执行处理器调度程序使CPU转去其他进程执行。但是,如果是程序直接控制方式,则驱动程序的执行与外设的I/O操作完全串行,驱动程序一直等到全部完成用户程序的I/O请求后结束,期间不会执行处理器调度程序。

5“开中断”和“关中断”两种操作都用于对( B )进行设置。

A.中断向量寄存器

B.中断允许触发器

C.中断屏蔽寄存器

D.中断请求寄存器

正确答案:B你选对了

6以下有关中断I/O方式的叙述中,错误的是( A )。

A.只要有中断请求发生,那么一条指令执行结束后CPU就进入中断响应周期

B.CPU对外部中断的响应不可能发生在一条指令的执行过程中

C.中断I/O方式下,外设接口中的数据和CPU中的寄存器内容直接交换

D.中断请求的是CPU时间,要求CPU执行程序来处理发生的相关事件

解析: A、在以下两种情况下不正确: (1)关中断(禁止中断)时,虽然有中断请求发生,但CPU因为不允许响应中断而不会进入中断响应周期;(2)当有中断请求的请求源被屏蔽(由中断控制器的中断屏蔽字寄存器的相应屏蔽位进行屏蔽)时,因为对应的中断请求源被屏蔽掉了,因此中断控制器无法向CPU发出中断请求信号,因而不会进入中断响应周期。 B、如果可以在一条指令执行的中途响应中断请求,那么,中断返回后该从一条指令执行的中途开始继续执行,这显然是无法做到的。 C、CPU响应中断后会调出中断服务程序,在中断服务程序执行过程中,CPU会执行相应的输入输出指令,实现CPU中的通用寄存器和外设接口(设备控制器)中的I/O端口之间的直接数据交换。 D、中断请求就是要求CPU执行程序来处理发生的相关事件。

7以下关于DMA控制器和CPU关系的叙述中,错误的是( A )。

A.DMA控制器和CPU都要使用总线时,CPU优先级更高

B.CPU可通过执行I/O指令来访问DMA控制器中的I/O端口

C.CPU可通过执行I/O指令来使DMA控制器启动外设工作

D.DMA控制器和CPU都可以作为总线的主控设备

解析: A、DMA控制器比CPU的优先级更高,如果CPU不释放总线给DMA控制器使用,则外设(如磁盘)读出的数据会因为没有及时传送而发生丢失。

8以下I/O控制方式中,主要由硬件而不是软件实现数据传送的方式是( D )。

A.中断I/O方式

B.无条件程序控制方式

C.程序查询方式

D.DMA方式

解析: D、DMA方式下主要是由DMA控制器使用总线进行数据传送的,而其他方式下都是由CPU执行相应的程序(如查询方式下的驱动程序或中断方式下的中断服务程序)来完成数据传送的。

9填空(2分)

进程的系统级上下文由进程标识、进程现场信息、进程控制信息和系统内核栈等组成。处理器中各个寄存器的内容称为寄存器上下文(也称为硬件上下文)。上下文切换时,将会把当前进程的( )上下文保存到当前进程空间的进程现场信息中。

正确答案:寄存器 或 硬件 或 寄存器上下文 或 硬件上下文

10填空(2分)

Intel处理器把内部异常分成( )、陷阱(trap)和终止(abort)三类。用于系统调用的指令是一种陷阱指令。

正确答案:故障 或 fault 或 故障(fault) 或 故障 fault

11填空(2分)

Intel把中断分成不可屏蔽中断和可屏蔽中断两类。在可编程中断控制器(PIC)中,通过对外设向PIC送来的中断请求信号IRQi与( )字中的对应位进行“与”操作来实现中断屏蔽。

正确答案:中断屏蔽 或 中断屏蔽字

12填空(2分)

异常和中断的识别分为软件识别和硬件识别两种方式,硬件识别方式也称为( )方式。

正确答案:向量中断 或 矢量中断 或 向量中断方式 或 矢量中断方式

13填空(2分)

Intel架构采用硬件识别异常和中断的方式。实地址模式下,它采用( )表记录异常处理程序或中断服务程序的首地址。

正确答案:中断向量 或 中断矢量

14填空(2分)

IA-32保护模式下,CPU在进行异常/中断响应过程中,会根据异常/中断类型号,去访问( )表,以得到异常处理程序或中断服务程序的首地址。

正确答案:中断描述符 或 IDT 或 中断描述符表 或 中断描述表 或 IDT表 或 中断描述

15填空(2分)

已知存储器总线64位宽,速度为1333MT/s,则三通道存储器总线的总带宽大约为( 32 )GB/s。(答案要求舍入到整数,不保留小数部分)

16填空(2分)

Intel架构的I/O端口采用独立编址方式,因此,对于设备控制器中各端口的访问由( I/O )指令实现。

17填空(2分)

一旦检测到中断请求,则在开中断的情况下,先后进入中断响应和中断处理两个阶段。中断响应由CPU完成,而中断处理则由CPU执行( )程序完成。

正确答案:中断服务 或 中断处理 或 中断服务程序 或 中断处理程序

18填空(2分)

DMA控制I/O过程包含三个阶段:DMA控制器初始化、DMA传送和DMA传送结束处理。其中,第一和第三阶段由驱动程序或中断服务程序完成,第二阶段则由( )控制器完成。

正确答案:DMA 或 直接存储器存取 或 DMA控制器

第7章和第8章平时小测验

错题序号:7、9、14、15、16、17、19、22、24、26、27、28

1单选(1.25分)

​以下关于进程存储器映射的叙述中,错误的是( B  )。

‌A.进程的虚拟地址空间被划分成若干区域,如只读代码区域

B.存储器映射是指进程的虚拟地址空间与主存物理空间之间的映射

C.每个进程都有一个独立的虚拟地址空间

D.可通过mmap()函数进行存储器映射

正确答案:B你选对了

解析:  B、存储器映射是指进程的虚拟地址空间中的各个区域与某个文件中的不同区域之间的对应关系。可用mmap()函数进行映射。void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);  将指定文件fd中偏移量offset开始的长度为length个字节的一块信息,映射到虚拟地址空间中起始地址为start、长度为length个字节的一块区域。

2单选(1.25分)

‏以下选项给出的异常事件中,属于陷阱类的异常事件是(  A )。

A.程序调试时被设置了断点

B.整数除法指令中除数为0

C.地址转换时发生缺页

D.指令译码时发生非法操作码

正确答案:A你选对了

3单选(1.25分)

‍以下选项给出的操作中,不属于CPU在中断响应过程中完成的是(  A  )。

‌A.将所有中断请求信号进行排队,选择优先级最高的中断源进行响应

B.保存断点和程序状态字

C.将“中断允许位”设置为0,即关中断

D.识别中断源,并将对应中断服务程序的首地址送PC

正确答案:A你选对了

解析:  A、这是在中断控制器发出中断请求信号时在中断控制器中进行的操作。

4单选(1.25分)

‌以下关于进程和程序的叙述中,错误的是( B  )。

‌A.程序是代码和数据的集合,属于静态层面的概念

B.同一个可执行文件对应的不同进程,其逻辑控制流完全一致

C.进程是程序的一次运行过程,每个进程有自己的生命周期

D.同一个程序在不同的时间被启动执行,得到的是不同的进程

正确答案:B你选对了

解析:  B、同一个可执行文件可能处理不同的数据(如用户在键盘上输入的数据或读入的文件数据可能不同),因而在程序运行过程中,执行分支指令时,可能因满足的条件不同而执行不同的程序分支,从而可能得到不同的逻辑控制流。

5单选(1.25分)

​以下关于进程和进程上下文切换的叙述中,错误的是( D  )。

‏A. 进程的上下文切换过程中必须将当前换下进程的现场信息保存在内核栈中

B.进程的上下文切换机制保证了不会因进程被打断执行而改变其逻辑控制流

C.每个进程具有独立的虚拟地址空间,这便于编译、链接、共享和加载

D.进程的上下文切换完全由处理器硬件完成,不需要执行任何操作系统内核程序

正确答案:D你选对了

解析:  D、操作系统内核程序进行上下文切换,以保存换下进程的上下文并创建换上进程的上下文

6单选(1.25分)

‎以下关于内核态和用户态的叙述中,错误的是( B )。

‎ A.只有在内核态才能执行内核程序代码,其中可包含特权指令

B.shell命令行解释程序实现程序的加载和运行,因而它运行在内核态

C.IA-32系统中,特权级别由代码段寄存器CS中的最后两位指定

D.用户态也称目标程序状态,用户态下只能执行用户进程

正确答案:B你选对了

解析:  B、Shell命令行解释程序本身运行在用户态,它通过调用fork()、execve()等系统调用封装函数实现程序的加载和运行,在执行这些系统调用函数的过程中,会通过int 0x80指令陷入内核,从而在内核态由内核代码实现相应的子进程创建、程序加载等工作。

7单选(1.25分)

​以下关于异常/中断机制与进程上下文切换机制比较的叙述中,错误的是(  C )。

A.进程上下文切换和异常/中断响应都会产生进程的异常控制流

B.进程上下文切换和异常/中断响应的结果都是切换到内核程序执行

C.进程上下文切换通过执行内核程序实现,而异常/中断响应处理则由硬件实现

D.单步跟踪是一种异常事件,而不是通过进程上下文切换机制实现

正确答案:B你错选为C

解析:  B、进程上下文切换后,CPU执行的是另一个进程的代码

8单选(1.25分)

​以下关于异常/中断的检测与响应的叙述中,错误的是( C )。

A.在执行指令过程中进行异常事件检测,而在指令执行结束时进行中断请求检测

B.CPU在异常响应过程中会保存断点和程序状态并转相应异常处理程序执行

C. CPU检测到异常事件后所做的处理和检测到中断请求后所做的处理完全一样

D.异常/中断的检测与响应都由硬件完成,无需CPU执行内核程序实现

正确答案:C你选对了

解析:  C、异常事件是CPU执行指令过程中发生的与当前执行指令有关的意外事件,而中断请求则是CPU外部的I/O部件或时钟等向CPU发出的与当前执行指令无关的意外事件。CPU对于异常和中断的响应处理在大的方面基本一致,都需要保存断点和程序状态并转到相应的处理程序去执行。但有些细节并不一样,例如,在检测到中断请求后,CPU必须通过“中断回答”信号启动中断控制器进行中断查询,以确定当前发出的优先级最高的中断请求类型,并通过数据线获取相应的中断类型号。而对于内部异常,CPU则无需进行中断回答。

9单选(1.25分)

​以下关于向量中断方式的叙述中,错误的是( B )。

A.对每类异常和中断都设置一个对应的类型号,作为中断向量表的索引

B.CPU能根据异常和中断的类型号自动跳转到对应的处理程序去执行

C.向量中断方式下的硬件开销比软件查询方式下的硬件开销更小

D.采用中断向量表存放所有异常处理程序和中断服务程序的首地址

正确答案:C你错选为B

解析:  C、软件查询方式不需要中断向量表和硬件判优和查询线路,而只要把异常或中断的原因记录在特定寄存器中,由专门的查询程序读取寄存器内容来识别异常和中断类型。因此,向量中断方式下的硬件开销比软件查询方式下的硬件开销更大,但响应速度更快。

10单选(1.25分)

‌与计算机系统一样,I/O子系统也采用层次结构,从最上层提出I/O请求的应用程序到最下层的I/O硬件之间的顺序是( C )。

‌A.应用程序→中断服务程序→与设备无关的I/O软件→设备驱动程序→I/O硬件

B.应用程序→设备驱动程序→中断服务程序→与设备无关的I/O软件→I/O硬件

C.应用程序→与设备无关的I/O软件→设备驱动程序→中断服务程序→I/O硬件

D.应用程序→与设备无关的I/O软件→中断服务程序→设备驱动程序→I/O硬件

正确答案:C你选对了

11单选(1.25分)

‍以下选项给出的程序中,不在内核态运行的是(B  )。

‍ A.设备驱动程序

B. 命令行解释程序

C.中断服务程序

D. 系统调用服务例程

正确答案:B你选对了

12单选(1.25分)

‏以下选项给出了几个在Linux系统的程序中使用的函数,其中在内核态运行的是( D )。

‍A.write()

B. fwrite()

C. _flushbuf()

D.sys_write()

正确答案:D你选对了

解析:  D、在给出的几个函数中,fwrite()是C语言标准库函数,在用户编写的C语言程序中使用,因而不是在内核态运行的函数。write()函数是对write系统调用进行封装的函数,其中包含若干条用于传递系统调用参数的mov指令和int $0x80指令等,该函数在用户态执行,当执行到int $0x80指令时从用户态陷入内核态。sys_write()函数是write系统调用服务例程,是内核中专门用于进行write系统调用处理的函数,因而是在内核态执行的函数。_flushbuf是实现C语言标准库函数或宏定义时所调用的基本函数,用于将缓冲中的数据写到文件中,因而也是在用户态执行的函数。

13单选(1.25分)

‏以下选项中,与I/O接口的含义不同的是( D  )。

A.I/O模块

B.设备控制器

C.I/O控制器

D. I/O端口

正确答案:D你选对了

解析:  D、I/O端口是I/O接口中的数据缓冲寄存器(数据端口)、控制寄存器(控制端口)或状态寄存器(状态端口)的总称。

14单选(1.25分)

‏下列选项中, 不属于外部中断请求事件的是(  C  )。

‏A.按下“ctrl-C”键

B.启动外设工作

C.网络数据包到达

D.DMA传送结束

正确答案:B你错选为C

解析:  B、CPU通常通过执行一条I/O指令(如OUT指令)发送一个控制命令字到外设控制器的命令(控制)端口来启动外设工作。这显然不是一种外部中断请求。

15单选(1.25分)

‍以下是关于IA-32中可编程中断控制器(PIC)的叙述,其中错误的是( D   )。

A.PIC中有中断请求寄存器和中断屏蔽寄存器

B.PIC通过总线中的地址线向CPU发送中断类型号

C.PIC中有中断优先级排队线路和编码器

D.所有外设的中断请求信号IRQ都会送到PIC

正确答案:B你错选为D

解析:  B、总线中的地址线是单向的,只能从CPU送出地址信号,而不能向CPU发送地址信息,因此,不可能通过地址线向CPU发送中断类型号。实际上,中断类型号可看成是PIC向CPU发送的数据,通过总线中的数据线传送

16单选(1.25分)

‌以下是关于DMA控制I/O方式的叙述,其中错误的是( C  )。

A.数据传送前的初始化工作由CPU执行内核程序完成

B.数据传送过程由DMA控制器控制完成

C.外设数据直接和主存进行交换

D.数据传送结束后的工作由CPU直接完成,无需执行任何程序

正确答案:D你错选为C

解析:  D、DAM方式下,数据传送结束时,DMA控制器会通过中断控制器(PIC)向CPU发送“DMA结束”中断请求信号,从而使CPU调出相应的“DMA结束”中断服务程序来执行。由此可见,数据传送结束后的工作是由CPU执行专门的“DMA结束”中断服务程序来完成的。

17多选(3分)

​以下选项中,可以引起异常控制流的有( ABCD  )。

‍A.发生Cache缺失

B.执行陷阱指令,如int $0x80

C.发生缺页异常

D.进程的上下文切换

正确答案:B、C、D你错选为A、B、C、D

18判断(2分)

‎异常事件是由CPU在执行指令过程中检测到的,而中断请求事件则是由外部设备通过中断控制器向CPU发出中断请求信号后,由CPU在每条指令执行结束时采样中断请求线而检测到的。✔

19判断(2分)

‍陷阱(也称自陷或陷入)是一种通过专门的“陷阱指令”插入在特定的指令序列中来事先安排的一种异常事件。单步跟踪和断点设置等程序调试功能可以用陷阱方式实现,过程调用也是通过陷阱方式实现的。❌

解析: 过程调用直接使用调用指令call实现,而系统调用则通过陷阱方式实现,例如,IA-32+Linux系统中的系统调用陷阱指令为int $0x80。

20判断(2分)

‌在IA-32中,不可屏蔽中断请求通过专门的不可屏蔽中断请求信号线NMI向CPU申请,一旦CPU采样该信号有效,则立即响应并处理。 ✔

21判断(2分)

‍在IA-32中,关中断操作就是将EFLAGS中的IF这一位清0。关中断操作可以由硬件直接实现,也可以在中断服务程序中执行cli指令通过软件来实现。✔

22判断(2分)

​在IA-32+Linux系统中,执行int $0x80指令后,处理器将从用户态陷入内核态,在内核态完成相应的系统调用服务后,通过ret指令从内核态回到用户态执行。❌

解析: 完成相应的系统调用服务后,应该通过 iret 指令从内核态返回用户态。ret指令是过程调用call指令对应的返回指令。

23判断(2分)

‌在类UNIX系统中,除了stdin、stdout和stderr三个标准文件外,所有文件在读写之前都必须通过creat系统调用或open系统调用进行创建或打开。✔

24判断(2分)

​在类UNIX系统中,C标准I/O库函数fprintf()、fwrite()和fread()最终都需要调用系统调用封装函数write()来实现。write()函数中一定有一条系统调用陷阱指令。❌

解析: fprintf()和fwrite()最终都需要调用系统调用封装函数write()来实现,而fread()则调用read()系统调用封装函数实现。

25判断(2分)

‏在系统级I/O函数中,采用int类型的文件描述符fd或用字符串描述的文件名来标识文件,而在C标准I/O库函数中,则用指向FILE结构类型的指针fp来标识文件。 ✔

26判断(2分)

‍在计算机中,I/O地址空间大小远远大于主存地址空间大小,前者在物理上位于各个I/O接口中,主要用于存放外设或I/O接口与主机之间交换的数据、命令和状态信息。 ❌

解析: I/O地址空间主要用于存放外设或I/O接口与主机之间交换的数据、命令和状态信息。因而其大小远远小于主存地址空间大小。

27判断(2分)

‎在中断控制I/O方式下,由CPU执行软件来实现对I/O过程的控制;而在DMA控制I/O方式下,则完全由硬件(DMA控制器)控制I/O过程。✔

28填空(2分)

‏若存储器总线宽度为64位,工作频率为1333MT/s,即每秒传输1333M次,则该存储器总线的带宽为(  10.41  )GB/s(结果至少取两位小数)。

‏正确答案:10.66 或 10.664

解析: 1333M/sx64/8=10.664GB/s。

29填空(2分)

‍已知PCI-Express总线带宽计算公式是2.5Gb/s x 2 x 通路数 / (10b/B),则PCI-Express x16的总带宽为( 8  )GB/s。 ‏ 正确答案:8