明天期末考试,就把往年试卷上的叙述题总结一下:
1. 如果一个设置用户ID程序未执行任何改变进程的实际用户ID和有效用户ID的系统调用,那么运行该程序的进程,它的实际用户ID和有效用户ID各是什么?
答: 实际用户ID在登录时取自口令文件中的登录项,如果没有执行任何改变实际用户ID和有效用户ID的调用,那么有效用户ID也就是实际用户ID。
2. 如果使用命令
man -SX kill
查阅系统调用kill的联机文档,则命令中“X”代表的实际值是什么?
答:对应于Section的部分编号,一共有8个部分:
1 表示用户命令和守护进程。
2 表示系统调用和内核服务。
3 表示子例程。
4 表示特殊文件、设备驱动程序和硬件。
5 表示配置文件。
6 表示游戏。
7 表示杂项命令。
8 表示管理命令和守护进程
3. 在读写磁盘文件时,每次使用系统调用read和write是否都意味着读写磁盘驱动器? 为什么?
答:不是,因为系统有缓冲,读写操作均与缓冲有关。
4. 在UNIX系统中,文件空洞是什么意思?
答:文件空洞指当文件偏移量大于文件的长度时,对该文件的写将加长文件,这样便形成空洞。(P52)
5. 在什么情形下,产生的信号是未决的(signal pending)?
答:在信号产生和递送之间的时间间隔内,称信号是未决的。如果在产生信号时,调用进程正阻塞该信号而不能递送,则产生的信号便是未决的。(P250,259)
6. 早期的不可靠信号机制主要有哪些特点?
答:信号可能丢失,而且在执行临界区代码时,进程很难关闭所选择的信号。(P243)
7. 如何打开文件时使用了O_APPEND标志,那么能否在该文件的任意位置上读写?
答:不能,使用O_APPEND标志每次写时,都追加到文件尾端(P48)。
8. 如果进程P创建进程Q,进程Q创建进程R,那么当进程Q在进程P和进程R之前结束,那么进程R的父进程是谁? 进程R是否可能变成僵尸进程?
答:进程R的父进程是init进程,不会变成僵尸进程。(P179)
9. 程序员能否根据进程的实际用户ID来判断它们是否有访问文件的相应权限(请简要说明理由)?
答:不能,判断是否有访问文件的相应权限是根据用户的有效用户ID及其附加组ID,而与实际用户ID无关。(P75)
10. 为什么POSIX.1要求system函数阻塞SIGINT和SIGQUIT信号?
答:因为由system执行的命令可能是交互式命令,以及因为system的调用者在程序执行时放弃了控制,等待该执行程序的结束,所以system的调用者就不应接受这两个终端产生的信号。
11. 设置-用户-ID(suid)和保存的设置-用户-ID(ssuid)是如何产生的?各自的意义是什么?
答:suid是为了让执行程序的用户拥有文件所有者的权限而产生的,而ssuid是为了解决运行该程序的权限与拥有改程序用户的权限之间的切换。suid是为了让运行程序用户与程序文件所有者一样的权限运行程序,ssuid是为了在设置用户ID之前,保存程序的有效用户,以备将来把有效用户ID恢复。