一、单选题
1、以下有关计算机程序和进程的描述中,错误的是(  )。
A.用高级语言编写的程序必须转换为机器代码才能在计算机中运行
B.机器代码通常以可执行目标文件或共享库文件形式保存在磁盘中
C.机器代码及其数据被映射到统一的虚拟地址空间即形成一个进程
D.同一个程序如果处理不同的数据集合就会对应很多不同的进程
正确答案:C
解析:  C、程序需要被启动执行后才能成为进程,机器代码和数据被映射到统一的虚拟地址空间这件事是链接程序完成的,链接后只能生成一个可执行文件或共享库文件,不能形成一个进程。
2、以下关于引入进程好处的叙述,其中错误的是(  )。
A.每个进程具有确定的逻辑控制流,不会因为进程被打断执行而改变
B.每个进程须独占使用处理器,以保证每次运行都有同样的运行结果
C.每个进程具有独立的虚拟地址空间,便于编译、链接、共享和加载
D.每个进程各自占用不同的主存区域,便于操作系统实现存储保护
正确答案:B
解析:  B、处理器可以被不同的进程轮流使用或并行使用,在一个进程的整个生命周期中,通常不会独占使用处理器,在某个进程执行遇到异常、中断和I/O操作时,操作系统会调度其他进程使用处理器。
3、以下是关于进程的逻辑控制流的叙述,其中错误的是(  )。
A.进程的逻辑控制流在其对应机器代码被链接生成时就已经确定
B.不同进程的逻辑控制流中有可能会存在相同的地址序列
C.不同进程的逻辑控制流在时间上交错或重叠的情况称为并发
D.进程的逻辑控制流指其运行过程中执行指令的虚拟地址序列
正确答案:A
解析:  A、因为进程的逻辑控制流指其运行过程中执行指令的虚拟地址序列,而每个进程的虚拟地址空间都是一样的,例如,IA-32/Linux系统中每个进程的虚拟地址空间都是0000 0000~FFFF FFFFH,因此,不同进程的逻辑控制流中可能存在相同的指令地址序列。链接时可以确定每条指令和每个数据在虚拟地址空间中的地址,但是,不能确定条件转移指令的条件是否满足,因而也就不能确定具体执行的是哪些指令,因而链接时不能确定将来执行时的逻辑控制流。
4、以下关于进程上下文切换的叙述中,错误的是(  )。
A.进程上下文切换过程中必须将换下进程的代码和数据从主存保存到磁盘上
B.进程上下文切换机制实现了不同进程在一个处理器中交替运行的功能
C.进程上下文切换过程中必须保存换下进程在切换处的程序计数器PC的值
D.进程上下文指进程的代码、数据以及支持进程执行的所有运行环境
正确答案:A
解析:  A、进程上下文切换仅是把正在处理器上执行的进程换下,让另一个进程占用处理器执行指令,因而没有必要把换下进程的代码和数据从主存保存到磁盘上,只要在栈中保存换下进程的上下文信息即可。
5、以下关于IA-32/Linux进程虚拟地址空间的叙述中,错误的是(  )。
A.用户空间从0x8048000开始,由高地址的动态区和低地址的静态区组成
B.用户空间的动态区由栈和堆组成,栈从高地址向低地址生长而堆则相反
C.用户空间的静态区由代码段和数据段组成,数据段由读写数据和只读数据组成
D.分为内核空间和用户空间两大块,各占高地址1GB和低地址3GB空间
正确答案:C
解析:  C、用户空间的静态区由只读代码段和可读可写数据段组成,只读代码段由代码区和只读数据区组成,可读可写数据段由已经初始化的数据区和没有进行初始化的数据区组成。
6、以下关于IA-32/Linux进程内核空间的叙述中,错误的是(  )。
A.包含进程现场信息,如寄存器(硬件)上下文等
B.包含内核程序的代码及其所用的数据信息
C.包含所有进程可以动态链接的共享库映射区
D.包含进程标识信息和控制信息,如进程标识符、页表等
正确答案:C
解析:  C、动态链接的共享库映射区不属于内核信息,因而存储在用户空间,通常位于栈和堆之间。
7、以下关于内核态和用户态的叙述中,错误的是(  )。
A.shell命令行解释程序实现程序的加载和运行,因而它运行在内核态
B.用户态也称目标程序状态,用户态下只能执行用户进程
C.只有在内核态才能执行内核程序代码,其中可包含特权指令
D.IA-32系统中,特权级别由代码段寄存器CS中的最后两位指定
正确答案:A
解析:  A、Shell命令行解释程序本身运行在用户态,它通过调用fork()、execve()等系统调用封装函数实现程序的加载和运行,在执行这些系统调用函数的过程中,会通过int 0x80指令陷入内核,从而在内核态由内核代码实现相应的子进程创建、程序加载等工作。
8、以下是关于Linux系统中shell命令行解释器如何进行程序加载和运行的叙述,其中错误的是(  )。
A. shell命令行解释器根据输入的命令行信息获得程序名及参数和环境变量
B.调用execve()函数前shell命令行解释器先调用fork()函数创建一个子进程
C.加载器会把可执行目标文件从磁盘读到内存中,然后从第一条指令开始执行
D.shell命令行解释器可以通过调用execve()函数来启动加载器进行程序加载
shell程序的编写流程正确答案:C
解析:  C、加载器只会根据可执行文件的程序头表等信息建立新加载进程的一些初始数据结构,如对页表信息进行初始化等,而不会从磁盘中把可执行文件中的代码和数据读到内存。只有在发生缺页(page fault)异常时才会把代码和数据从磁盘读到内存。
9、以下关于异常/中断机制与进程上下文切换机制比较的叙述中,错误的是(  )。
A.进程上下文切换和异常/中断响应两者都会产生异常控制流
B.进程上下文切换和异常/中断响应处理都通过执行内核程序实现
C.进程上下文切换后,CPU执行的是另一个进程的代码
D.响应异常/中断请求后,CPU执行的是内核程序的代码
正确答案:B
解析:  B、进程上下文切换由操作系统内核程序实现,而异常/中断响应的过程则由CPU这个硬件完成的,而不是由内核程序实现的。
10、以下选项中,不属于“故障”类的异常是(  )。
A.非法指令操作码
B.缺页
C.断点设置
D.整除时除数为0
正确答案:C
解析:  C、断点设置指令是一种事先设定好的“陷阱”指令,不属于“故障”类异常。
11、故障类异常分为可修复的和不可修复的两类,以下“故障”类异常中,可以修复的异常是(  )。
A.整数运算溢出
B.存储访问违例     
C.TLB缺失
D.存储访问越权
正确答案:C
12、以下关于“陷阱”类异常的叙述中,错误的是(  )。
A.通常通过陷阱指令或设置单步跟踪状态来触发异常
B.单步跟踪状态下,每一条执行的指令都是陷阱指令
C.INTO是一条陷阱指令,一旦执行该指令则陷入内核态执行
D.是一种事先安排好的或以某种条件触发的“事件”
正确答案:C
解析:  C、执行到INTO指令时,CPU将检测OF是否为1。若OF为1,则说明当前发生了溢出,需要陷入内核进行溢出处理。在IA-32架构中,若没有INTO指令,即使发生溢出也不会处理溢出异常。
13、以下关于异常/中断响应的叙述中,错误的是(  )。
A.异常事件检测由CPU在执行每一条指令的过程中进行
B.CPU检测到异常事件后所做的处理和检测到中断请求后所做的处理完全一样
C.CPU在中断响应过程中会保存断点和程序状态、关中断并转中断服务程序执行
D.中断请求检测由CPU在每条指令执行结束、取下条指令之前进行
正确答案:B
解析:  B、异常事件是CPU执行指令过程中发生的与当前执行指令有关的意外事件,而中断请求则是CPU外部的I/O部件或时钟等向CPU发出的与当前执行指令无关的意外事件。CPU对于异常和中断的响应处理在大的方面基本一致,都需要保存断点和程序状态并转到相应的处理程序去执行。但有些细节并不一样,例如,在检测到中断请求后,CPU必须通过“中断回答”信号启动中断控制器进行中断查询,以确定当前发出的优先级最高的中断请求类型,并通过数据线获取相应的中断类型号。而对于内部异常,CPU则无需进行中断回答。
14、断点是指异常处理或中断服务结束后返回到被中断原程序继续执行的指令处的地址。以下关于断点的叙述中,错误的是(  )。
A.“终止”类异常的断点可以是当前指令或下条指令的地址

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。