1、( 多选题 | 1 分)
C语言通过( )函数提供非本地跳转。
A .
try ...catch
B .
longjmp
C .
setjmp
D .
signal
正确答案: B C
书p547:非本地跳转是通过setjmp和longjmp函数来提供的
2、( 多选题 | 1 分)
Linux信号处理说法正确的是()
A .
可以用signal()处理信号
B .
一个信号最多只能被接收一次
C .
kill(1)用来杀死进程
D .
kill(1)用来发送信号
E .
可以通过键盘发送信号
F .
可以用sigaction()处理信号
正确答案: A B D E F
8·5
A:p531 通过把处理程序的地址传递到signal函数从而改变默认行为,这叫设置信号处理程序。执行信号处理程序被称为处理信号。
B:p536 每种类型最u多只能有一个未处理的信号,如果两种类型k的信号发给同一个目的进程,第二个信号就简单的被遗弃了。
C、D:p530 kill函数发送信号号码sig给进程pid
E:p529 从键盘发送信号
F:p534图8-33
3、( 多选题 | 1 分)
有关exec系列函数,下面说法正确的是()
A .
可以用char[][] 来传递argv
B .
进程调用了exec系列函数后,pid会变
C .
进程调用了exec系列函数后,代码会改变。
D .
system()和exec系列等价。
E .
exec系列函数中带e的要传入环境变量参数
F .
exec系列函数中带v的要传入环境变量参数
正确答案: C E
不能用char[][] 来传递argv,结尾的0(null)无法处理;system=fork+exec+wait;
4、( 多选题 | 1 分)
有关wait类系统调用,说法正确的是()
A .
wait(&status) 等价于waitpid(-1, &status, 0)
B .
父进程中执行waitpid, 等待集合中的所有子进程结束了才返回
C .
父进程中执行waitpid, 等待集合中的任一子进程结束了才返回
D .
子进程中的退出状态在wait的status参数返回
正确答案: A C D p516 517 518
A:p518 条用wait(&status)等价于调用waitpid(-1,%status,0)
B:p516如果一个父进程终止了,内核会安排init进程成为他的孤儿进程的养父。故错误。
C:waitpid挂起调用进程的执行,直到他的等待集合中的一个子进程终止。
D:p517 如果statusp参数是非空的,那么waitpid就会在status中放上关于导致返回的子状态信息。
5、( 多选题 | 1 分)
关于图中代码,说法正确的是()
A .
程序执行2个printf
B .
程序执行3个printf
C .
程序执行5个printf
D .
程序执行4个printf
正确答案: B
子2 父1
6、( 多选题 | 1 分)
有关fork(),下面说法正确的是()
A .
一次调用,两次返回
B .
子进程中,fork()返回子进程PID
C .
子进程可以读写父进程中打开的文件
D .
子进程和父进程的用户级虚拟地址空间相同但独立
正确答案: A C D p514
A:p514 调用一次,返回两次
B:p514 在子进程中,fork返回值为0.
C:p515 我们注意到父进程和子进程都把它们的输出显示在屏幕上。原因是子进程继承了父进程所有的打开文件。
D:p515 相同但是独立的地址空间
7、( 多选题 | 1 分)
关于代码 int main(){} 说法正确的是()
A .
返回值是0
B .
返回值不确定
C .
会调用exit(0)
D .
返回值大于0
E .
上面代码运行完,在命令行中运行echo $? 的值是0
正确答案: A C E
main中不调用exit,会补上exit(0)
8、( 多选题 | 1 分)
从程序员角度看进程状态有( )
A .
运行
B .
就绪
C .
停止
D .
终止
正确答案: A C D p513
从程序员的角度,进程总是处于下面三种状态之一:
- 运行
- 停止
- 终止
9、( 单选题 | 1 分)
Unix/Linux中通过调用( )可以获取子进程PID。
A .
getpid()
B .
getppid()
C .
getcpid()
D .
fork()
正确答案: D
p514 在父进程中,fork返回子进程的PID
10、( 单选题 | 1 分)
Unix/Linux中通过调用( )获取父进程ID。
A .
getppid()
B .
getppid()
C .
getbpid()
D .
getmpid()
正确答案: B
p513 getpid函数返回调用进程的PID,getppid函数返回她的父进程的PID。
11、( 单选题 | 1 分)
进程调度由内核中的( )处理完成
A .
上下文切换
B .
中断服务程序
C .
调度器
D .
异常处理程序
正确答案: C
p511 调度是由内核中的调度器代码处理的。
12、( 多选题 | 1 分)
进程调度中的上下文切换包括()
A .
保存当前进程的上正文
B .
恢复某个先前被抢占的进程被保存的上下文
C .
让当前进程休眠
D .
将控制传递给这个新恢复的进程
正确答案: A B D
p511 上下文就是内核重新启动一个被抢占的进程所需的状态。他由一些对象的值组成,这些对象包括通用目的寄存器、浮点寄存器、程序计数器、用户栈、状态寄存器、内核栈和各种内核数据结构。
13、( 单选题 | 1 分)
用户进程可以通过()访问内核代码和数据
A .
特权指令
B .
系统调用
C .
模式位
D .
程序计数器
正确答案: B
p510 用户程序必须通过系统调用接口见解地访问内核代码和数据。
14、( 单选题 | 1 分)
x86-64 Linux中,用户模式进程无法访问内核数据结构的内容。
A .
正确
B .
错误
C .
不确定
正确答案: B
p510 /proc /sys
15、( 单选题 | 1 分)
x86-64 Linux进程中,代码段是从( )开始的。
A .
0
B .
2^48-1
C .
0x400000
D .
2^64-1
正确答案: C
p510 地址空间底部是保留给用户程序的,包括通常的代码、数据、堆和栈段。代码段总是0x400000开始。
16、( 多选题 | 1 分)
三个进程的起始和结束时间如下图,互为并发的是()
A .
AB
B .
AC
C .
BC
D .
以上都是
正确答案: A C
p509 8.1 如果两个流并发的运行在不同的处理器和或者计算机上,那我们称他们并发的运行。
17、( 单选题 | 1 分)
进程提供给应用程序的关键抽象让我们的程序感觉独占了处理器和内存。()提供了独占处理器的假象。
A .
地址空间
B .
虚拟内存
C .
逻辑控制流
D .
指令控制流
正确答案: C
p508 即使在系统中通常有许多程序在运行,进程也可以像每个程序提供一种假象,好像他在独占的使用处理器。这个PC的序列叫做逻辑控制流。
18、( 多选题 | 1 分)
有关异常,下面说法正确的是()
A .
系统中的异常由异常名唯一确定
B .
异常表中存放的是异常处理程序
C .
异常表的起始地址存放在异常表基址寄存器中
D .
异常处理程序运行在内核模式下
正确答案: C D
p503
A:系统中可能的每种类型的异常都分配了一个唯一的非负整数的异常号。
B:异常表是一张跳转表,其中表目k包含异常k的处理程序代码的地址。
C:异常表的起始地址存放在异常表基址寄存器中。
D:异常处理程序运行在内核模式下。
19、( 多选题 | 1 分)
进程上下文包括程序的( )
A .
代码和数据
B .
栈
C .
通用寄存器中的内容
D .
程序计数器
E .
环境变量
F .
打开的文件描述符的集合
正确答案: A B C D E F
p508 上下文是由程序正确运行所需的状态组成的。这个状态包括存放在内存中的程序的代码和数据,它的栈、通用目的寄存器的内容、程序计数器、环境变量以及打开文件描述符的集合。
20、( 单选题 | 1 分)
X86-64结构,Linux中系统调用(函数调用)的返回值放在()
A .
%rcx
B .
%r11
C .
%rax
D .
%rbx
正确答案: C
p506 从系统调用返回时,寄存器%rax包含返回值。
21、( 单选题 | 1 分)
图中第()行给出write(2)要写的字节数
A .
9
B .
10
C .
11
D.
12
正确答案: D
p507 第10~12行设置参数列表
22、( 单选题 | 1 分)
图中代码用到的系统调用是()
A .
open(2)
B .
read(2)
C .
write(2)
D .
close(2)
正确答案: C
p507 第9~13行调用write函数
23、( 单选题 | 1 分)
x86-64中,Linux系统调用的系统调用号是通过()传递的。
A .
栈
B .
%rax
C .
%rdi
D .
%rbp
E .
%rsp
正确答案: B
p506 寄存器%rax包含系统调用号
24、( 单选题 | 1 分)
调用fork(2)的系统调用号是()
A .
0
B .
2
C .
3
D .
57
正确答案: D
p507 编号:57
函数名称:fork
描述:创建进程
25、( 单选题 | 1 分)
C语言中有()函数可以直接调用任何系统调用
A .
syscall
B .
syscalls
C .
system
D .
main
正确答案: A
p506 C程序用syscall函数可以直接调用任何系统调用。
26、( 多选题 | 1 分)
异步异常是同处理器外部的I/O设备中的事件产生的(硬件产生),同步异常是执行一条指令的直接产物(软件产生)。下面是同步异常的是()
A .
中断
B .
陷阱
C .
故障
D .
终止
正确答案: B C D
p504 陷阱是有意的异常,是执行一条指令的结果;故障由错误情况引起,他可能能够被故障处理程序修正;中之事不可恢复的致命错误造成的结果,通常是一些硬件错误。
27、( 单选题 | 1 分)
系统调用属于异常中的()
A .
中断
B .
陷阱
C .
故障
D .
终止
正确答案: B p504 p501
系统调用的处理:陷阱处理程序将控制返回值给应用程序控制流中的下一条指令。
28、( 单选题 | 1 分)
Linux中,信号(Signal)是一种()异常控制流。
A .
硬件层
B .
操作系统层
C .
用户层
D .
网络层
正确答案: C
p501 在应用层,一个进程可以发送信号到另一个进程
29、( 单选题 | 1 分)
中断是()的异常控制流。
A .
硬件层
B .
操作系统层
C .
应用层
D .
网络层
正确答案: A p501 p504
在硬件层,硬件检测到的事件会触发控制突然转移到她的另一个信号处理程序,即中断。