操作系统练习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四十一、在UNIX系统中运行下面程序,最多可产生多少个进程?画出进程家族树。P249
main()
{
fork();
fork();
fork();
}
[分析及相关知识]系统调用fork的功能是创建一个新进程,新进程运行与其创建者一样的程序,新创建的进程称为子进程,调用fork的进程称为父进程,父子进程都从fork调用后的那条语句开始执行。
当程序执行时,若所有进程都能成功地执行系统调用fork,则会产生最多数目的进程。为了描述方便起见,将开始执行时的进程称为A进程,此时程序计数器PC,指向第一个fork调用。
main()
{
fork(); /* ←PC,进程A*/
fork():
fork();
}
当进程A成功地执行完第一个fork调用时,它创建了一个子进程,将此子进程称
为进程B。此时,进程A、B的程序计数器PC指向第二个fork调用,进程A派生
了1个子孙进程.
main()
{
fork():
fork(); /* ←PC,进程A*/
fork();
}
main()
{
fork();
fork(); /* ←PC,进程B*/
fork();
}
当进程A、B成功地执行完第二个fork调用时,它们分别创建了一个子进程,将
这些子进程分别称为进程C、D.此时,进程A、B、C、D的程序计数器PC指向第
三个fork调用,进程A派生了3个子孙进程。
main()
{
fork();
fork();
fork(); /* ←PC,进程A*/
}
main()
{
fork();
fork();
fork(); /* ←PC,进程B*/
}
main()
{
fork();
fork();
fork(); /* ←PC,进程C*/
)
main()
{
fork();
fork();
fork(); /* ←PC,进程D*/
)
当进程A、B、C、D成功地执行完第三个fork调用时,它们分别创建了一个子进
程,将这些子进程分别称为进程E、F、C、H.此时,进程A、B、C、D、E、F、G、
H的程序计数器PC指向程序结束处,进程A派生了7个子孙进程。
main()
{
fork();
fork();
fork();
} /* ←PC,进程A*/
main()
{
fork();
fork();
fork();
) /* ←PC,进程B*/
main()
{
fork();
fork():
fork();
} /* ←PC,进程C*/
main()
{
fork();
fork();
fork();
} /* ←PC,进程D*/
main()
{
fork();
fork();
fork():
} /* ←PC,进程E*/
main()
{
fork();
fork();
fork();
} /* ←PC,进程F*/
main()
{
fork();
fork();
fork();
) /* ←PC,进程G*/
main()
{
fork();
fork();
fork();
} /* ←PC,进程H*/
进程家族树是一棵有向树,有向树的节点代表进程,由进程P指向进程Q的边表示由进程P创建了进程Q.我们称进程P是进程Q的父进程,进程Q是进程P的子进程,这样便形成了进程树。
解:从上面的分析过程可以看出,执行第一个fork调用时,进程A 创建了进程B;执行第二个fork调用时,进程A创建了进程C,进程B创建了进程D:执行第三个fork调用时,进程A创建了进程E,进程B创建了进程F,进程C创建了进程G,进程D创建了进程H。因此,在UNIX系统中运行题目中的程序,最多可产生7个进程,其进程家族树如图所示。
1、进程调度又称为低级调度,其主要功能是()
A 选择一个作业调入内存
B 选择一个主存中的进程调出到外存
C 选择一个外存中的进程调入到主存
D 将一个就绪的进程投入运行
2、下列进程调度算法中,进程可能会长期得不到调度的情况是
()
A 先来先服务调度算法
B 抢占式静态优先权法
C 时间片轮转调度算法
D 非抢占式动态优先权法
❖下列属于预防死锁的方法是()
A 剥夺资源法
B 资源分配图简化法
C 资源互斥使用
D 银行家算法
❖下列属于检测死锁的方法是()
A 银行家算法
B 撤销进程法
C 资源静态分配法
D 资源分配图简化法
❖为了照顾紧迫性作业,应采用()
A 先来先服务调度算法
B 短作业优先调度算法
C 时间片轮转调度算法
D 优先权调度算法
设某多道系统,有磁带机2台,打印机1台,采用资源的静态分配法(假设作业获得资源后才允许进入内存)以及短作业优先调度算法和先来先服务进程调度算法。忽略I/O时间,现有作业序列如下,求5个作业完成的时间