🏷️ 知识点:系统调用
在操作系统中,以下只能在核心态下处理执行的指令是( )。
A. 读时钟 B. 寄存器清零 C. 系统调用 D. 取数
[tag_link]
正确答案:C
在操作系统中,核心态(也称为内核态或特权态)与用户态是处理器的两种运行模式。 核心态下可以执行所有指令,包括特权指令,而用户态下只能执行非特权指令,以防止用户程序直接访问系统资源或影响系统安全。
选项分析如下:
A. 读时钟:读取时钟值通常不是特权指令,用户程序可以通过非特权指令或系统调用来获取时间信息,因此可以在用户态下执行。 >
B. 寄存器清零:清零通用寄存器(如数据寄存器)是常见的非特权指令,用户程序可以自由操作自己的寄存器,无需切换到核心态。 >
C. 系统调用:系统调用是用户程序主动请求操作系统服务的机制。 > 当执行系统调用指令(如陷阱指令)时,会触发处理器从用户态切换到核心态,由操作系统内核在核心态下处理该请求。 > 因此,系统调用的处理过程只能在核心态下执行。 >
D. 取数:取数指令(如从内存加载数据)通常是非特权指令,用户程序在用户态下可以访问自己的内存空间。 > 只有访问受保护的系统内存或执行特权操作时才需核心态。 >
综上,只有系统调用的处理必须在核心态下完成,故正确答案为C。 >
用户在编写程序时计划读取某个数据文件中的 20 个数据记录,他使用操作系统提供的接口是( )。
A. 系统调用 B. 图形用户接口 C. 原语 D. 命令行输入控制
[tag_link]
正确答案:A
在编写程序时,用户需要通过代码与操作系统交互来读取文件中的数据记录。 操作系统提供的系统调用(System Call)是专门为应用程序设计的编程接口,它允许程序请求操作系统的服务,如文件操作、进程管理等。 例如,在 C 语言中使用 read() 函数读取文件时,底层会调用操作系统的 read 系统调用,从而实现对文件的访问。
其他选项中,图形用户接口(GUI)是面向最终用户的视觉交互界面,通过点击、拖拽等方式操作,不适用于编程时的文件读取; 原语(Primitive)通常指操作系统内核中不可中断的基本操作,是系统调用的底层实现,但不直接暴露给应用程序员; 命令行输入控制是通过命令行界面输入指令来操作系统的交互方式,属于用户级交互,而非编程接口。 因此,用户在编写程序时读取数据文件应使用系统调用接口。
执行系统调用的过程包括如下主要操作:
①返回用户态 ②执行陷入(trap)指令
③传递系统调用参数 ④执行相应的服务程序
正确的执行顺序是( )。
A. ②→③→①→④ B. ②→④→③→① C. ③→②→④→① D. ③→④→②→①
[tag_link]
正确答案:C
执行 系统调用 的过程是这样的:正在运行的进程先传递系统调用参数,然后由 陷入指令 负责将用户态转化为内核态,并将返回地址压入堆栈以备后用,接下来 CPU 执行相应的内核态服务程序,最后返回用户态。所以 C 正确。
下列关于系统调用的叙述中,正确的是( )。
Ⅰ.在执行系统调用服务程序的过程中,CPU 处于内核态
Ⅱ.操作系统通过提供系统调用避免用户程序直接访问外设
Ⅲ.不同的操作系统为应用程序提供了统一的系统调用接口
Ⅳ.系统调用是操作系统内核为应用程序提供服务的接口
A. 仅Ⅰ、Ⅳ B. 仅Ⅱ、Ⅲ C. 仅Ⅰ、Ⅱ、Ⅳ D. Ⅰ、Ⅲ、Ⅳ
[tag_link]
正确答案:C
用户可以在用户态调用操作系统的服务,但执行具体的系统调用服务程序是处于内核态的,Ⅰ正确:设备管理属于操作系统的职能之一,包括对输入/输出设备的分配、初始化、维护等,用户程序需要通过系统调用使用操作系统的设备管理服务,Ⅱ正确:操作系统不同,底层逻辑、实现方式均不相同,为应用程序提供的系统调用接口也不同,Ⅲ错误:系统调用是用户在程序中调用操作系统提供的子功能,Ⅳ正确。
某计算机系统中有8台打印机,由K 个进程竞争使用,每个进程最多需要3台打印机。该系统可能会 发生死锁的 K的最小值是()。
A. 2
B. 3
C. 4
D. 5
[tag_link]
正确答案:C
这种题用到组合数学中鸽巢原理的思想。考虑最极端情况,因为每个进程最多需要 3 台打印机,如果每个进程已经占有了 2 台打印机,那么只要还有多的打印机,总能满足一个进程达到 3 台的条件,然后顺利执行,所以将 8 台打印机分给 K 个进程,每个进程有 2 台打印机,这 个情况就是极端情况,K 为 4。
下列操作完成时,导致 CPU 从内核态转为用户态的是( )。
A. 阻塞过程 B. 执行 CPU 调度 C. 唤醒进程 D. 执行系统调用
[tag_link]
正确答案:D
来看每个选项的含义和状态切换:对于 A 选项,阻塞过程属于进程状态切换,不直接涉及CPU模式转换。对于 B 选项,执行 CPU 调度属于内核调度器行为,通常保持在内核态。对于 C 选项,唤醒进程属于进程管理操作,不直接触发模式切换对于 D 选项,当用户程序需要访问特权指令或执行需要操作系统提供的服务时,它会通过 系统调用 请求进人内核态。在系统调用期间,CPU 会切换到内核态执行相应的内核代码来满足用户程序的需求。一旦系统调用执行完毕,CPU 会从内核态返回到用户态继续执行用户程序。所以,执行系统调用是导致 CPU 从内核态转为用户态的关键操作。所以该题的正确选项为 D 选项。
一个分段存储管理系统中,地址长度为32位,其中段号占8位,则最大段长是()。
A. 2⁸ 字节
B. 2¹⁶ 字节
C. 2 ²⁴ 字节
D. 2³² 字节
[tag_link]
正确答案:C
段式管理 的逻辑地址分为段号和位移量两部分,段内位移的最大值就是最大段长。地址长度为 32 位,段号占 8 位,则位移量占 32-8=24 位,故最大段长为 2 24 B。
若一个用户进程通过 read 系统调用读取一个磁盘文件中的数据,则下列关于此过程的叙述中,正确的是( )。
Ⅰ. 若该文件的数据不在内存中,则该进程进入睡眠等待状态
Ⅱ. 请求 read 系统调用会导致 CPU 从用户态切换到核心态
Ⅲ. read 系统调用的参数应包含文件的名称
A. 仅Ⅰ、Ⅱ
B. 仅Ⅰ、Ⅲ
C. 仅Ⅱ、Ⅲ
D. Ⅰ、Ⅱ和Ⅲ
[tag_link]
正确答案:A
对于 I,当所读文件的数据不在内存时,产生中断( 缺页中断 ),原进程进入阻塞状态,直到所需数据从外存调入内存后,才将该进程唤醒。对于 II,read 系统调用通过陷入将 CPU 从用户态切换到核心态,从而获取操作系统提供的服务。对于Ⅲ,要读一个文件首先要用 open 系统调用打开该文件。open 中的参数包含文件的路径名与文件名,而 read 只需要使用 open 返回的文件描述符,并不使用文件名作为参数。read 要求用户提供三个输入参数:①文件描述符 fd;②buf 缓冲区首址;③传送的字节数 n。read 的功能是试图从 fd 所指示的文件中读入 n 个字节的数据,并将它们送至由指针 buf 所指示的缓冲区中。
下列选项中,会导致用户进程从用户态切换到内核态的操作是( )。
I. 整数除以零
II. sin() 函数调用
III. read 系统调用
A.仅 I、II
B.仅 I、III
C.仅 II、III
D.I、II 和 III
[tag_link] 正确答案:B需要在系统 内核态 执行的操作是整数除零操作(需要中断处理)和 read 系统调用函数,sin() 函数调用是在用户态下进行的。
以下系统调用中,包含文件按名查找功能的系统调用是()。
A. open()
B. read()
C. write()
D. close()
[tag_link]
正确答案:A
A. open() 系统调用用于打开一个文件。它需要一个文件名作为参数,因此它包含了按名查找文件的功能。如果文件存在并且进程有足够的权限,open() 会成功打开文件并返回一个文件描述符,否则,它会返回一个错误。 B. read() 系统调用用于从已打开的文件中读取数据。 C. write() 系统调用用于向已打开的文件中写入数据。 D. close() 系统调用用于关闭已打开的文件。
文件系统中,文件访问控制信息存储的合理位置是()。
A. 文件控制块
B. 文件分配表
C. 用户口令表
D. 系统注册表
[tag_link]
正确答案:A
为了实现“按名存取”,在文件系统中为每个文件设置用于描述和控制文件的数据结构,称之为文件控制块 (FCB )。在文件控制块中,通常包含以下三类信息,即基本信息、存取控制信息及使用信息。
下列关于驱动程序的描述中,错误的是()
A. 驱动程序是硬件与操作系统之间的接口程序 B. 驱动程序需根据硬件特性定制开发 C. 驱动程序需要设置统一的接口 D. 字符设备、块设备都是同一种 IO 方式
[tag_link]
正确答案:D
**【解析】**驱动程序是硬件与操作系统之间的接口程序,使操作系统能够控制和管理硬件,因此 A 正确;由于不同硬件具有不同的特性和操作方式,驱动程序需要针对具体硬件进行定制开发,因此 B 正确;为了便于操作系统统一管理和调用,驱动程序需要遵循操作系统提供的统一接口规范,因此 C 正确;字符设备和块设备是两种不同的 I/O 方式:字符设备以字符流为单位进行数据传输(例如键盘),而块设备以固定大小的数据块为单位(例如硬盘),因此 D 错误。
执行系统调用的过程涉及下列操作,其中由操作系统完成的是()。
I. 保存断点和程序状态字
Ⅱ.保存通用寄存器的内容
Ⅲ.执行系统调用服务程序
IV. 将CPU 模式改为内核态
A. 仅I 、Ⅲ B. 仅Ⅱ、Ⅲ C. 仅Ⅱ、 IV D. 仅Ⅱ、Ⅲ、 IV
[tag_link]
正确答案:B
对四个选项进行逐一分析: Ⅰ. 保存断点和程序状态字 ❌ 参考 中断处理过程 ,保存断点由中断隐指令完成,即由硬件完成。Ⅱ. 保存通用寄存器的内容 ✅ 为了防止系统调用覆盖用户程序中的数据,操作系统在进入系统调用处理程序时会保存用户程序的寄存器内容(这属于上下文切换的一部分)。Ⅲ. 执行系统调用服务程序 ✅ 系统调用就是要求操作系统执行某项服务,服务程序是操作系统的一部分,由操作系统调度执行。Ⅳ. 将 CPU 模式改为内核态 ❌ 这一点不是由操作系统主动完成,而是由硬件自动完成的: 当执行陷阱指令(如 int 0x80 )或发生中断时,CPU 自动将模式从用户态切换为内核态,然后跳转到操作系统提供的中断向量地址。所以,这属于硬件响应的一部分,不是由操作系统“显式”控制的。所以正确答案选择 B。
下列选项中,通过系统调用完成的操作是( )。
A. 页置换 B. 进程调度 C. 创建新进程 D. 生成随机整数
[tag_link]
正确答案:C
系统调用是由用户进程发起的,请求操作系统的服务。对于 A,当内存中的空闲页框不够时,操作系统会将某些页面调出,并将要访问的页面调入,这个过程完全由操作系统完成不涉及系统调用。对于 B,进程调度完全由操作系统完成,无法通过系统调用完成。对于 C,创建新进程可以通过系统调用来完成,如 Linux 中通过 fork 系统调用来创建子进程。对于 D,生成随机数只需要普通的函数调用,不涉及请求操作系统的服务,如 C 语言中 random() 函数。
程序员利用系统调用打开I/O 设备时,通常使用的设备标识是()
A、逻辑设备名
B、物理设备名
C、主设备号
D、从设备号
[tag_link]
正确答案:A
设备管理具有设备独立性的特点,操作系统以系统调用方式来请求某类设备时,使用的是 逻辑设备名 。
而在程序实际执行时,将逻辑设备名 转换为对应的 物理设备名 。
(本题满分 7 分)系统采用优先级(优先级越大表示优先级越高)与时间片轮转调度算法,仅当发生时钟中断时才触发抢占 CPU 操作,时钟中断间隔为 10 ms。进程首次进入就绪队列时,其时间片为 50 ms。若进程因时间片用完而返回就绪队列,其优先级值减 1;若进程被更高优先级进程抢占而返回就绪队列,其优先级值保持不变。当多个进程优先级相同时,先进入就绪队列的进程优先被调度。四个进程的到达时刻、初始优先级与 CPU 运行时间如下表所示:
| 进程 | 到达就绪队列时间(ms) | 优先级 | CPU 运行时间(ms) |
|---|---|---|---|
| P1 | 10 | 3 | 95 |
| P2 | 10 | 4 | 20 |
| P3 | 12 | 2 | 40 |
| P4 | 14 | 5 | 60 |
(1)从 10 ms 开始进程调度,直至所有进程调度结束,此时中断次数与 CPU 调度次数分别为多少?P1、P2、P3、P4 各自的首次调度发生在哪个时刻?(5 分)
(2)若时间片由 50 ms 改为 100 ms,CPU 调度次数将增大、不变还是减少?若时钟中断间隔由 10 ms 改为 1 ms,系统开销将增大、不变还是减少?(2 分)
[tag_link]
【答案】
(1)中断次数、CPU 调度次数与各进程首次调度时刻模拟调度过程,考虑时钟中断每 10 ms 发生一次,进程到达、完成及调度事件如下:
- 10 ms:P1、P2 到达,CPU 空闲,调度 P2 运行(首次调度)。
- 20 ms:时钟中断,P2 运行 10 ms 后被更高优先级的 P4 抢占,调度 P4 运行(首次调度)。
- 70 ms:时钟中断,P4 时间片用完,优先级减 1,调度 P2 运行。
- 80 ms:时钟中断,P2 完成,调度 P4 运行。
- 90 ms:时钟中断,P4 完成,调度 P1 运行(首次调度)。
- 140 ms:时钟中断,P1 时间片用完,优先级减 1,调度 P3 运行(首次调度)。
- 180 ms:时钟中断,P3 完成,调度 P1 运行。
- 225 ms:P1 完成,所有进程结束。中断次数:从 10 ms 开始,时钟中断时刻为 10, 20, …, 220 ms,共 22 次。CPU 调度次数:共 7 次(10 ms、20 ms、70 ms、80 ms、90 ms、140 ms、180 ms)。首次调度时刻:
- P1:90 ms
- P2:10 ms
- P3:140 ms
- P4:20 ms
(2)参数变化的影响
- 时间片由 50 ms 改为 100 ms:时间片增大,进程因时间片用完而让出 CPU 的次数减少,更多进程可能一次运行完成,从而降低进程切换频率,CPU 调度次数减少。
- 时钟中断间隔由 10 ms 改为 1 ms:中断更频繁,每次中断均需进行调度检查,可能增加上下文切换次数与中断处理时间,系统开销增大。