题43
题目
Q:【2012 统考真题】若一个用户进程通过 read 系统调用读取一个磁盘文件中的数据, 则下列关于此过程的叙述中, 正确的是 ( )。
I. 若该文件的数据不在内存, 则该进程进入睡眠等待状态
II. 请求 read 系统调用会导致 CPU 从用户态切换到核心态
III. read 系统调用的参数应包含文件的名称
A. 仅 I、 II
B. 仅 I、III
C. 仅 II、III
D. I、 II 和 III
分析
A:3应该有,感觉这个选项之前做到过
read系统调用应该可以认为涉及到了IO,而IO指令应该是需要用核心态才能来操作
3这个必须包含文件名的系统调用,我忘记了之前做的题是,open这个指令还是open以及read都有
解
对于 I, 当所读文件的数据不在内存时, 产生中断 (缺页中断), 原进程进入阻塞态, 直到所需数据从外存调入内存后, 才将该进程唤醒。
对于 II, read 系统调用通过陷入将 CPU 从用户态切换到核心态, 从而获取操作系统提供的服务。
对于 III, 要读一个文件, 首先要用 open 系统调用打开该文件。
open 中的参数包含文件的路径名与文件名, 而 read 只需使用 open 返回的文件描述符, 并不使用文件名作为参数。
read 要求用户提供三个输入参数:
①文件描述符 fd;
②buf 缓冲区首址;
③传送的字节数
read 的功能是试图从