3. 系统调用

  • Post author:
  • Post category:其他




什么是系统调用

  • 系统调用也叫

    广义指令
  • 系统调用是操作系统提供给应用程序的一个接口
  • 应用程序通过这个接口向操作系统申请内核服务

:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}

应用程序

系统调用

操作系统内核程序



什么功能要用系统调用实现

  • 与共享资源有关的操作(如内存分配,I/O操作,文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成
  • 其实就是只要你想使用共享资源,就要进行系统调用



系统调用的好处

  • 系统调用可以保证系统的稳定性和安全性,防止用户的非法操作




系统调用的过程


1. 传参

  • 指明系统调用的类型


2. 陷入指令

  • 该指令只能在用户态下使用,引发陷入内中断,使CPU进入核心态
  • 该指令也叫

    trap指令



    访管指令


3. 执行系统调用

  • 在核心态下完成


4. 返回用户态,继续执行程序

  • 其实是通过中断服务程序在中断处理结束后返回到断点




系统调用和库函数的区别与联系

库函数 系统调用
由编程语言提供 由操作系统提供
由应用程序调用 由应用程序调用
运行在用户态 运行在核心态
有的库函数封装了系统调用,有的没有

库函数和系统调用的区别与联系:

库函数和系统调用的区别与联系



题目

1.下列关于操作系统的说法,正确的是

Ⅰ.在通用操作系统管理下的计算机上运行程序,需要向操作系统预定运行时间

Ⅱ.在通用操作系统管理下的计算机上运行程序,需要确定起始地址,并从这个地址开始执行

Ⅲ.操作系统需要提供高级程序设计语言的编译器

Ⅳ.管理计算机系统资源是操作系统关心的主要问题

【分析】:

Ⅰ.在通用操作系统管理下的计算机上运行程序,不需要向操作系统预定运行时间,因为通用操作系统采用时间片轮转调度算法,由操作系统进行时间管理,不需用户预定

Ⅱ.每一个程序运行都需要确定程序的起始地址,并从这个地址开始运行

Ⅲ.高级程序语言的编译器是应用程序,操作系统不需要提供

Ⅳ.操作系统的主要功能有:系统资源的管理者,提供人机接口,作为扩充机器,所以,进行系统资源管理是操作系统主要关心的问题

2.下列说法正确的是

Ⅰ.批处理的主要缺点是需要大量内存

Ⅱ.当计算机提供了核心态和用户态时,输入/输出指令必须在核心态下运行

Ⅲ.操作系统中采用多道程序设计技术的最主要原因是为了提高CPU和外部设备的可靠性

Ⅳ.操作系统中,通道技术是一种硬件技术

【分析】:

Ⅰ.


批处理的主要缺点是不可以人机交互



Ⅱ.输入/输出指令属于访问系统资源的指令,所以必须在核心态下运行

Ⅲ.


操作系统中采用多道程序设计技术的最主要原因是为了系统的利用率和吞吐量



Ⅳ.I/O通道实际上是一种特殊的处理器,它具有执行I/O指令的能力,并通过通道程序控制I/O操作

3.下列操作系统的各个功能组成部分中,()可不需要硬件的支持

A.进程调度

B.时钟管理

C.地址映射

D.中断系统

【分析】:

A.进程调度:使用进程调度算法即可完成,由操作系统实现这个功能,不需要硬件支持

B.时钟管理:

重置时钟

,时钟分频等操作需要通过晶振来实现

C.D:中断指令和地址映射的

重定位

离不开硬件支持

4.【2011统考真题】下列选项中,在用户态执行的是

A.命令解释程序

B.缺页处理程序

C.进程调度程序

D.时钟中断处理程序

【分析】:

A.命令解释程序:属于命令接口,可以面向用户

B,D都属于中断处理程序;C属于操作系统内核程序

5.【2012统考真题】下列选项中,不可能在用户态发生的事件是

A.系统调用

B.外部中断

C.进程切换

D.缺页

【分析】

系统调用发生在用户态,执行在内核态;

外部中断也可以发生在用户态,执行在内核态;

进程切换一定发生并且执行在内核态,这是操作系统的内核程序;

缺页也是发生在用户态,在内核态处理;

6.只能在核心态下运行的指令是

A.读时钟指令

B.置时钟指令

C.取数指令

D.寄存器清零

【分析】

A.读取时钟,这个操作只涉及到读命令,普通的应用程序也可以执行

B.置时钟,这个操作涉及到改变时钟的值,属于特权指令,如果应用程序可以执行此条指令,那么它可以无限次重置自己的时间片,那他就永远都不会结束掉,这显然是不允许的

C.取数指令,在进行普通的数据相加时,都会涉及到取数操作,这在用户态下也是可以运行的

D.寄存器清零,进程完成切换后,必然要进行寄存器清零,不然自己的数据就会出现问题;并且,对于通用寄存器而言,一个程序执行了寄存器清零指令,只是将自己执行过程中的寄存器的值清零了,并不会对其他进程的寄存器的值产生影响,因为其他进程的寄存器的值已经被保存了。

7.【2015统考真题】假定下列指令已装入指令寄存器,则执行时不可能导致CPU从用户态变为核心态的是

A.DIV R0,R1		;(R0)/(R1)->R0
B.INT n			;产生软中断
C.NOT R0		;寄存器R0的内容取反
D.MOV R0,addr	;把地址addr的内存数据放入寄存器R0

【分析】

A.进行除法运算,可能产生除0错误,会触发状态变换

B.软中断,会触发状态变换

C.取反操作,不会有状态变换

D.可能产生缺页,也会触发状态变换



参考文献

[1] 王道论坛,2021年操作系统考研复习指导[M]. 北京:电子工业出版社,2020.1



版权声明:本文为qq_43655213原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。