一、操作系统原理——单选题8. UNIX操作系统中,fork()系统调用用于创建进程。仔细阅读、分析下列程序,假设程序正确运行并创建子进程成功,那么输出到屏幕的正确结果是______。
int main()
{
pid_t pid
pid=fork();
if(pid==0) printf("hh\n");
else if(pid>0)printf("hh\n");
else printf("hh\n");
}
- A.1行hh
- B.2行hh
- C.3行hh
- D.什么都没有
A B C D
B
[解析] fork()函数执行的特点是,只被调用一次,却会返回两次,一次是在调用进程(父进程)中,一次是在新创建的子进程中。在父进程中,fork()返回子进程的pid。在子进程中,fork()返回0。否则出错返回-1。假设程序正确运行并创建子进程成功,那么,子进程中pid得到返回值为0,父进程中pid得到返回值为子进程号,父进程执行一次输出,子进程执行一次输出,故输出2行hh。因此,本题答案选择B选项。
30. 设系统中有3种类型的资源(A,B,C)和5个进程(P
1,P
2,P
3,P
4,P
5),A资源的数量是17,B资源的数量是6,C资源的数量为19。在T
0时刻系统的状态如下表:
系统采用银行家算法实施死锁避免策略,若当前系统剩余资源(A,B,C)为(2,3,3),下列哪一个序列是安全序列?______
- A.P2,P3,P1,P4,P5
- B.P3,P1,P4,P2,P5
- C.P4,P2,P3,P5,P1
- D.P2,P3,P1,P5,P4
A B C D
B
[解析] P
1,P
2,P
3,P
4,P
5该序列下资源的数目如下表:
采用银行家算法,仍然可以找到一个进程安全序列P
3,P
1,P
4,P
2,P
5,表明该系统状态是安全的,可以真正实施资源分配。因此,本题答案选择B选项。
二、操作系统原理——多选题4. 根据下面的描述,判断以下哪些叙述是错误的?______
reader()
{while(TRUE){
P(mutex);
rc=rc+1;
if(rc==1)P(w);
V(mutex);①
读操作;
P(mutex);②
rc=rc-1;
if(rc==0)V(w);
V(mutex);
其他操作;}}
writer()
{while(TRUE){
...
P(w);
写操作;
V(w);}}
- A.信号量w的初值是0
- B.计数器rc的初值是0
- C.信号量mutex的初值是1
- D.语句P(mutex)的位置可以放到语句rc=rc+1之后
- E.语句①②可以省略
A B C D E
ADE
[解析] 信号量w是为了互斥访问写操作,初始值为1;P(mutex)是为了互斥访问rc这一临界资源,不能修改其执行顺序;语句①②的存在使得多个reader可以同时访问,不能取消。因此,本题答案选择A、D、E选项。