1.2 典型题(含历年真题)详解
一、单项选择题
1下列指令中,不能在用户态执行的是( )。[2014年联考真题]
A.trap指令
B.跳转指令
C.后栈指令
D.关中断指令
【答案】D
【解析】关中断指令必须在核心态才能执行,trap指令可以在用户态下执行,执行完就转到核心态,跳转与退栈指令都是可以在用户态下执行的指令。
2下列选项中,会导致用户进程从用户态切换到内核态的操作是( )。[2013年联考真题]
Ⅰ.整数除以零
Ⅱ.sin()函数调用
Ⅲ.read系统调用
A.仅Ⅰ、Ⅱ
B.仅Ⅰ、Ⅲ
C.仅Ⅱ、Ⅲ
D.Ⅰ、Ⅱ和Ⅲ
【答案】B
【解析】系统发生异常,需要进入内核态由操作系统进行处理,而read系统调用函数也是在内核态执行,sin()就是普通的用户函数,在用户态执行,因此答案选B。
3下列选项中,不可能在用户态发生的事件是( )。[2012年联考真题]
A.系统调用
B.外部中断
C.进程切换
D.缺页
【答案】C
【解析】现代操作系统中为了共享和保护,设定了用户态和内核态(可以通过设置软、硬件标志位来实现),在用户态运行用户的程序,在内核运行系统的程序。所以,从选项来看,系统调用可以在任何态发生,用户可以发起系统调用,系统也可以;外部中断是不可控的,也会在任何时刻发生,缺页的发生也是不可控的,可以发生在用户代码之间;而进程切换却不会在用户态发生。我们可以考虑一下情形,进程切换是在什么时候发生的,进程切换前必定运行的是进程调度,只有进程调度选择了下一次被调度的进程,进程切换才可以进行。进程调度是scheduler,进程切换是dispatcher,这体现了现代操作系统策略与机制分离的设计思想。所以,进程切换必定不会在用户态发生(所谓发生指其起始的源头时刻),必定是在内核态发生的。
4下列关于操作系统的说法中,错误的是( )。
Ⅰ.在通用操作系统管理下的计算机上运行程序,需要向操作系统预定运行时间
Ⅱ.在通用操作系统管理下的计算机上运行程序,需要确定起始地址,并从这个地址开始执行
Ⅲ.操作系统需要提供高级程序设计语言的编译器
Ⅳ.管理计算机系统资源是操作系统关心的主要问题
A.Ⅰ、Ⅲ
B.Ⅱ、Ⅲ
C.Ⅰ、Ⅱ、Ⅲ、Ⅳ
D.以上答案都正确
【答案】A
【解析】Ⅰ项错误:通用操作系统使用时间片轮转调度算法,用户运行程序并不需要预先预定运行时间;Ⅱ项正确,操作系统执行程序时,必须要从起始地址开始执行;Ⅲ项错误,编译器是操作系统的上层软件,不是操作系统所需要提供的功能;Ⅳ项正确,操作系统是计算机资源的管理者,故管理计算机系统资源是操作系统关心的主要问题。
5下列关于系统调用的说法正确的是( )。
Ⅰ.用户程序设计时,使用系统调用命令,该命令经过编译后,形成若干参数和陷入(trap)指令
Ⅱ.用户程序设计时,使用系统调用命令,该命令经过编译后,形成若干参数和屏蔽中断指令
Ⅲ.系统调用功能是操作系统向用户程序提供的接口
Ⅳ.用户及其应用程序和应用系统是通过系统调用提供的支持和服务来使用系统资源完成其操作的
A.Ⅰ、Ⅲ
B.Ⅱ、Ⅳ
C.Ⅰ、Ⅲ、Ⅳ
D.Ⅱ、Ⅲ、Ⅳ
【答案】C
【解析】Ⅰ项正确,系统调用需要触发trap指令,如基于x86的Linux系统,该指令为intx80或sys enter。Ⅱ是干扰项,程序设计无法形成屏蔽中断指令。Ⅲ项正确,系统调用的概念。Ⅳ项正确,操作系统是一层接口,对上层提供服务,对下层进行抽象。它通过系统调用向其上层的用户、应用程序和应用系统提供对系统资源的使用。
6相对于传统操作系统结构,采用微内核结构设计和实现操作系统具有诸多好处,下列哪些是微内核结构的特点( )。
Ⅰ.使系统更高效;
Ⅱ.添加系统服务时,不必修改内核;
Ⅲ.微内核结构没有单一内核稳定;
Ⅳ.使系统更可靠。
A.Ⅰ、Ⅲ、Ⅳ
B.Ⅰ、Ⅱ、Ⅳ
C.Ⅱ、Ⅳ
D.Ⅰ、Ⅳ
【答案】C
【解析】微内核结构将操作系统的很多服务移动到内核以外(如文件系统),且服务之间使用进程间通信机制进行信息交换。Ⅰ项错误,这种通过进程间通信机制进行信息交换影响了系统的效率。Ⅲ项错误,由于内核的服务变少了,且一般来说内核的服务越少内核越稳定。而Ⅱ、Ⅳ正是微内核结构的优点。
二、综合应用题
什么是特权指令与非特权指令?
答:(1)特权指令,是指有特殊权限的指令,由于这类指令的权限最大,如果使用不当,将导致整个系统崩溃。比如:清内存、置时钟、分配系统资源、修改虚存的段表或页表、修改用户的访问权限等。为了保证系统安全,这类指令只能用于操作系统或其他系统软件,不直接提供给用户使用。因此,特权指令必须在核心态执行。实际上,CPU在核心态下可以执行指令系统的全集。
(2)非特权指令,是指在用户态下能使用的指令。为了防止用户程序使用特权指令,用户态下只能使用非特权指令,核心态下可以使用全部指令。当在用户态下使用特权指令时,将产生中断以阻止用户使用特权指令。所以用户程序在用户态下运行,而操作系统中使用特权指令的那部分程序需在核心态下运行,这样才能保证计算机系统的安全可靠。从用户态转换为核心态的唯一途径是中断或异常。