第二章作业 第一次作业: 1. 进程有哪三种基本状态?进程在三种基本状态之间转换的典型原因是什么? 答: 三种基本状态:就绪状态、执行状态、阻塞状态。 (1)就绪状态→执行状态:进程分配到 CPU资源(进程调度); (2)执行状态→就绪状态:时间片用完 (3)执行状态→阻塞状态:I/O请求 (4)阻塞状态→就绪状态:I/O完成 2. 在Linux 系统中运行下面程序,最多可产生多少个进程?画出进程家族树。 main() { fork(); fork(); fork(); } 答:最多可以产生 7个进程。 其家族树为: 3. 试从动态性、并发性和独立性上比较进程和程序。 答: 1) 动态性是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由撤销而消亡,因而进程由一定的生命期;而程序只是一组有序指令的集合,并存放于某种介质上,其本身并不具有运动的含义,因而是静态的; 2) 并发性是进程的重要特征,同时也是OS 的重要特征。引入进程的目的正是为了使其程序能和其它建立了进程的程序并发执行,而程序本身(没有建立PCB)是不能并发执行的; 3) 独立性是指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。凡未建立PCB 的程序,都不能作为一个独立的单位来运行。 4. 分析下列代码的功能: 答: sleep_on实现进程的睡眠过程; wake_up实现进程的唤醒过程。 第二次作业: 1. 同步机制应该遵循哪些基本准则?你认为整型信号量机制遵循了同步机制的哪些基本准则? 答: 同步机制应遵循四个基本准则: a. 空闲让进:当无进程处于临界区时,应允许一个请求进入临界区的进程立即进入自己的临界区,以有效地利用临界资源。 b. 忙则等待:当已有进程进入临界区时,其它试图进入临界区的进程必须等待,以保证对临界资源的互斥访问。 c. 有限等待:对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入“死等”状态。 d. 让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态。 整型信号量机制使进程处于“忙等”状态,并未遵循“让权等待”的准则;而记录型信号量机制则完全遵循了同步机构的四条准则。 2. 使用信号量实现下面的前趋图。 答: Var a,b,c,d,e,f,g,h:semaphore:=0,0,0,0,0,0,0,0; begin parbegin begin S1;signal(a);signal(b);end; begin wait(a);s2; signal(c); signal(d); end; begin ...