操作系统 · 单选题 · 第 23 题
计算机基础面试八股 · 第 23 题
下列操作中,一定会让进程从用户态陷入内核态的是?
- A调用 read() 从文件描述符读取数据
- B调用 strlen() 计算一个字符串的长度
- C对栈上的两个局部整型变量做一次加法
- D调用同一个程序里定义的普通函数
答案
A A. 调用 read() 从文件描述符读取数据
解析
read() 是系统调用的封装,要通过陷入指令进入内核,由内核访问文件或设备。strlen、普通函数调用和算术运算都在用户态完成,不需要内核参与。用户态进入内核态的途径有三类:系统调用、异常(如缺页)和外部中断。