系统调用
标签: 操作系统
学习人数: 21372

在 OS 中提供系统调用的目的,是使应用程序可以通过它间接调用 OS 中的相关过程, 取得相应的服务。系统调用在本质上是应用程序请求OS内核完成某功能时的一种过程调用,但它是一种特殊的过程调用,它与一般的过程调用有下述几方面的明显差别:

(1) 运行在不同的系统状态。

(2) 状态的转换。

(3) 返回问题。

(4) 嵌套调用。

系统调用执行过程

系统调用是通过中断机制实现的,并且一个操作系统的所有系统调用,都通过同一个中断入口来实现。

 系统调用的实现与一般过程调用的实现相比,两者间有很大差异。 对于系统调用,控制是由原来的用户态转换为系统态,这是借助于陷入机制来完成的, 在该机制中包括陷入硬件机构及陷入处理程序两部分。 每一条系统调用都含有若干个参数,在执行系统调用时,如何设置系统调用所需的参数,即如何将这些参数传递给陷入处理机构和系统内部的子程序(过程),常用的实现方 式有以下几种:

(1) 陷入指令自带方式。

(2) 直接将参数送入相应的寄存器中。

(3) 参数表方式。

 



课后作业

课后作业

 

1. 下列说法正确的是( )。
Ⅰ.批处理的主要缺点是需要大量内存
Ⅱ.当计算机提供了核心态和用户态时,输入/输出指令必须在核心态下执行
Ⅲ.操作系统中釆用多道程序设计技术的最主要原因是为了提髙cpu和外部设备的可靠性    '
Ⅳ.操作系统中,通道技术是一种硬件技术
A. Ⅰ、Ⅱ    B. Ⅰ、Ⅲ    C. Ⅱ、Ⅳ    D. Ⅱ、Ⅲ、Ⅳ

【答案】C

【解析】I 错误:批处理的主要缺点是缺少交互性。批处理系统的主要缺点是常考点,读者对此要非常敏感。II正确:输入/输出指令需要中断操作,中断必须在核心态下执行。III错误:多道性是为了提高系统利用率和吞吐量而提出的。IV正确:I/O通道实际上是一种特殊的处理器,它具有执行 I/O指令的能力,并通过执行通道程序来控制I/O操作。综上分析,II、IV正确。

 

2. 下列关于系统调用的说法正确的是( )。
Ⅰ.用户程序设计时,使用系统调用命令,该命令经过编译后,形成若干参数和陷入(trap)指令
Ⅱ.用户程序设计时,使用系统调用命令,该命令经过编译后,形成若干参数和屏蔽中断指令
Ⅲ.系统调用功能是操作系统向用户程序提供的接口
Ⅳ.用户及其应用程序和应用系统是通过系统调用提供的支持和服务来使用系统资源完成其操作的
A. Ⅰ、Ⅲ    B. Ⅱ、Ⅳ    C. Ⅰ、Ⅲ、Ⅳ    D. Ⅱ、Ⅲ、Ⅳ

【答案】C

【解析】I 正确:系统调用需要触发trap指令,如基于x86的Linux系统,该指令为int 0x80或 sysenter。Ⅱ是干扰项,程序设计无法形成屏蔽中断指令。Ⅲ正确:系统调用的概念。Ⅳ正确:操作系统是一层接口,对上层提供服务,对下层进行抽象。它通过系统调用向其上层的用户、应用程序和应用系统提供对系统资源的使用。

 

3. 下列操作系统的各个功能组成部分中,( )可不需要硬件的支持。
A.进程调度    B.时钟管理    C.地址映射    D.中断系统

【答案】A

【解析】中断系统和地址映射显然都需要硬件支持,因为中断指令和地址映射中的重定位都是离不开硬件支持的。而时钟管理中,重置时钟等是由硬件直接完成的。进程调度由调度算法决定 CPU 使用权,由操作系统实现,无须硬件的支持。

 

4. 【2011统考真题】下列选项中,在用户态执行的是( )。
A.命令解释程序       B.缺页处理程序
C.进程调度程序       D.时钟中断处理程序

【答案】A

【解析】缺页处理和时钟中断都属于中断,在核心态执行;进程调度是操作系统内核进程,无须用户干预,在核心态执行;命令解释程序属于命令接口,是4个选项中唯一能面对用户的,它在用户态执行。

 

5. 【2012统考真题】下列选项中,不可能在用户态发生的事件是( )。
A.系统调用    B.外部中断    C.进程切换    D.缺页

【答案】C

【解析】本题的关键是对“在用户态发生"(与上题的“执行”区分)的理解。对于A,系统调用是操作系统提供给用户程序的接口,系统调用发生在用户态,被调用程序在核心态下执行。对于B,外部中断是用户态到核心态的“门”,也发生在用户态,在核心态完成中断过程。对于C ,进程切换属于系统调用执行过程中的事件,只能发生在核心态;对于D ,缺页产生后,在用户态发生缺页中断,然后进入核心态执行缺页中断服务程序。

 

6.【2013统考真题】下列选项中,会导致用户进程从用户态切换到内核态的操作是(  )。

Ⅰ.整数除以零  Ⅱ.sin()函数调用 Ⅲ.read系统调用

A.仅Ⅰ、Ⅱ    B.仅Ⅰ、Ⅲ   C.仅Ⅱ、Ⅲ    D.Ⅰ、Ⅱ、Ⅲ

【答案】B

【解析】需要在系统内核态执行的操作是整数除零操作(需要中断处理)和read系统调用函数,sin()函数调用是在用户态下进行的。

 

7. 【2012统考真题】中断处理和子程序调用都需要压栈以保护现场,中断处理一定会保存而子程序调用不需要保存其内容的是( )。
A.程序计数器           B.程序状态字寄存器
C.通用数据寄存器       D.通用地址寄存器

【答案】B

【解析】子程序调用只需保存程序断点,即该指令的下一条指令的地址;中断调用子程序不仅要保存断点(PC的内容),还要保存程序状态字寄存器(PSW)的内容。在中断处理中,最重要的两个寄存器是PC和 PSWR。

 

8. 【2014统考真题】下列指令中,不能在用户态执行的是( )。
A.trap指令                B.跳转指令
C.压栈指令               D.关中断指令

【答案】D

【解析】trap指令、跳转指令和压栈指令均可以在用户态执行, 其中trap指令负责由用户态转换为内 核态。关中断指令为特权指令,必须在核心态才能执行,选 D。注意,在操作系统中,关中断指令是权限非常大的指令,因为中断是现代操作系统正常运行的核心保障之一,能把它关掉,说明执行这条指令的一定是权限非常大的机构(管态)。

 

9. 【2015统考真题】内部异常(内中断)可分为故障(fault)、陷阱(trap)和终止(abort)三类。下列有关内部异常的叙述中,错误的是( )。
A.内部异常的产生与当前执行指令相关

B. 内部异常的检测由CPU内部逻辑实现
C. 内部异常的响应发生在指令执行过程中

D. 内部异常处理后返回到发生异常的指令继续执行

【答案】D

【解析】内中断是指来自CPU和内存内部产生的中断,包括程序运算引起的各种错误,如地址非法、校验错、页面失效、非法指令、用户程序执行特权指令自行中断(INT) 和除数为零等,以上都是在指令的执行过程中产生的,因此A 正确。这种检测异常的工作肯定是由CPU (包括控制器和运算器)实现的,因此B 正确。内中断不能被屏蔽,一旦出现应立即处理,C 正确。对于D,考虑到特殊情况,如除数为零和自行中断(INT) 都会自动跳过中断指令,所以不会返回到发生异常的指令继续执行,因此错误。

 

10. 【2015统考真题】处理外部中断时,应该由操作系统保存的是( )。
A.程序计数器(PC)的内容

B.通用寄存器的内容
C.块表(TLB)中的内容

D.Cache中的内容

【答案】B

【解析】外部中断处理过程,PC值由中断隐指令自动保存,而通用寄存器内容由操作系统保存。

 

11. 【2015统考真题】假定下列指令已装入指令寄存器,则执行时不可能导致CPU从用户态变为内核态(系统态)的是( )。
A.DIV R0,R1  ;(R0)/(R1)→R0

B.INT  n      ;产生软中断
C.NOT  R0    ;寄存器R0的内容取非

D.MOV  R0,addr;把地址addr的内存数据放入寄存器R0中

【答案】C

【解析】A 选项中若R 1中的内容为0 , 则会出现内中断,从用户态变为内核态;B 选项软中断在内核态执行;C 选项寄存器取非不会产生中断,且不属于其他操作系统内核,故不会变为内核态;D 选项addr是主存地址,访存需要进入内核态。

 

12. 【2016统考真题】异常是指令执行过程中在处理器内部发生的特殊事件中,中断是来自处理器外部的请求事件,下列关于中断或异常情况的叙述中,错误的是( )。
A.“访存时缺页”属于中断

B. “整数除以0”属于异常
C. “DMA传送结束”属于中断

D. “存储保护错”属于异常

【答案】A

【解析】中断是指来自CPU执行指令以外事件的发生,如设备发出的I/O结束中断,表示设备输入/输出处理已经完成,希望处理机能够向设备发出下一个输入/输出请求,同时让完成输入/输出后的程序继续运行。时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。这一类中断通常是与当前程序运行无关的事件,即它们与当前处理机运行的程序无关。异常也称内中断、例外或陷入(trap), 指源自CPU执行指令内部的事件,如程序的非法操作码、 地址越界、算术溢出、虚存系统的缺页及专门的陷入指令等引起的事件。A 错误。

 

13. 【2017统考真题】执行系统调用的过程包括如下主要操作:

①返回用户态         ②执行陷入(trap)指令

③传递系统调用参数   ④执行相应的服务程序

正确的执行顺序是( )。
A. ②→③→①→④                    B. ②→④→③→①
C. ③→②→④→①                    D. ③→④→②→①

【答案】C

【解析】执行系统调用的过程如下:正在运行的进程先传递系统调用参数,然后由陷入(trap)指令负责将用户态转换为内核态,并将返回地址压入堆栈以备后用,接下来CPU执行相应的内核态服务程序,最后返回用户态。所以选项C 正确。

 

14. 【2018统考真题】定时器产生时钟中断后,由时钟中断服务程序更新的部分内容是(  )。

Ⅰ.内核中时钟变量的值

Ⅱ.当前进程占用CPU的时间

Ⅲ.当前进程在时间片内的剩余执行时间

A.仅Ⅰ、Ⅱ    B.仅Ⅱ、Ⅲ   C.仅Ⅰ、Ⅲ    D.Ⅰ、Ⅱ、Ⅲ

【答案】D

【解析】时钟中断的主要工作是处理和时间有关的信息及决定是否执行调度程序。和时间有关的所有信息包括系统时间、进程的时间片、延时、使 用 CPU的时间、各种定时器,因此I、II、III均正确。

 

15. 【2019统考真题】下列关于系统调用的叙述中,正确的是(  )。

Ⅰ.在执行系统调用服务程序的过程中,CPU处于内核态

Ⅱ.操作系统通过提供系统调用避免用户程序直接访问外设

Ⅲ.不同的操作系统为应用程序提供了统一的系统调用接口

Ⅳ.系统调用是操作系统内核为应用程序提供服务的接口

A.仅Ⅰ、Ⅳ    B.仅Ⅱ、Ⅲ   C.仅Ⅰ、Ⅱ、Ⅳ    D.Ⅰ、Ⅲ、Ⅳ

【答案】C

【解析】用户可以在用户态调用操作系统的服务,但执行具体的系统调用服务程序是处于内核态的,Ⅰ正确;设备管理属于操作系统的职能之一,包括对输入/输出设备的分配、初始化、维护等,用户程序需要通过系统调用使用操作系统的设备管理服务,II正确;操作系统不同,底层逻辑、实现方式均不相同,为应用程序提供的系统调用接口也不同,III错误;系统调用是用户在程序中调用操作系统提供的子功能,IV正确。

 

16. 处理器为什么要区分核心态和用户态两种操作方式?在什么情况下进行两种方式的切换?

【解析】区分执行态的主要目的是保护系统程序。用户态到核心态的转换发生在中断产生时,而核心态到用户态的转换则发生在中断返回用户程序时。

 


登录后发布评论

暂无评论,来抢沙发