第2章 进程和线程的管理习题及解答
时,将要唤醒所有因等待使用该资源而进入阻塞状态的进程。 10. 阻塞状态的进程还不具备执行的条件,即使放到处理机上也不能执行;就绪状态的进程具备了执行的所有条件,放到处理机上就能执行。
11. 并不是所有程序的并行执行都会导致运行结果失去封闭性。例如,当程序中都使用内部变量,不可能被外部程序访问时,程序的运行不会受到外部环境的影响。
12. 一个进程创建子进程之后,创建进程与产生的进程之间的关系是父子关系,分别成为父进程和子进程。子进程一经产生就与父进程并发执行,子进程共享父进程的正文段和已经打开的文件。 2.4.5 解答题
1. 线程可定义为进程内的一个执行单位,或者定义为进程内的一个可调度实体。
在具有多线程机制的操作系统中,处理机调度的基本单位不是进程而是线程。一个进程可以有多个线程,而且至少有一个可执行线程。
进程和线程的关系是: (1) (2) (3) (4) (5) (1)
线程是进程的一个组成部分;
进程的多个线程都在进程的地址空间活动;
资源是分给进程的,而不是分给线程的,线程在执行中处理机调度的基本单位是线程,线程之间竞争处理机,线程在执行过程中,需要同步。
以线程作为系统调度的基本单位,减少了系统的时空开
需要资源时,系统从进程的资源配额中扣除并分配给它; 真正在处理机上运行的是线程; 2. 引进线程的好处为:
销。以进程为系统调度的基本单位的系统中,进程的切换是很频繁的。在切换中由于要保留当时的运行环境,还要设置新选中的进程的运行环境,这既花费了处理机的时间,又增加了主存的空间,从
第2章 进程和线程的管理习题及解答
而也限制了系统进程的数量和进程的切换速度。 (2)
引进线程提高了系统的并行能力。线程作为进程内的一
个可执行实体,减少了并行粒度。线程作为调度的基本单位而不是资源分配的基本单位,调度更为容易,而且采用线程提高系统的并行能力比采用进程更为有效。 (3)
同一进程的线程共享进程的用户地址空间,所以同一进
程的线程间的通信更容易实现。 3. 只有两种情况下系统可以复活。
一种情况是有因等待I/O操作完成而进入睡眠的进程,当相应的I/O操作完成后,I/O中断处理程序唤醒等待本次I/O的进程,而该进程在运行过程中又可能通过释放资源、发送消息等事件而唤醒其它进程,这样整个系统就又活跃起来了。
另一种情况是没有等待I/O操作完成的进程,但有定时睡眠的进程,当睡眠时间到期,会由时钟中断将该入睡进程唤醒,从而获得可运行进程,并有可能使系统重新活跃起来。
4. 在实际系统中,两种处理办法都是可行的,且各有优缺点。若撤消,则该进程的任务可能还没有完成,这显然是不利的,特别是当该进程的运行结果对其它进程的运行很重要(如该进程是其它进程的前趋进程,没有它的运行结果其它进程无法运行)时;若不撤消,则该进程又可能成为不可控的“孤儿”,从而产生不可预测的结果。
比较好的做法是,当一个进程的父进程被撤消时,可以将该进程“过继”给系统内一个级别较高的进程(如Unix中的1#进程),让它有一个“新的父亲”,这样既可以继续完成其任务又不会成为不可控的。
5. 最主要的不同是“入睡”是进程的主动行为,而“挂起”可以是系统的强制行为;此外,只有在CPU上运行的进程才能执行“入睡”操作,而不管进程处于什么状态,系统都可对其执行“挂起”操作。
第2章 进程和线程的管理习题及解答
它们的相同点是:这两个操作都导致一个正在CPU上运行的进程从 CPU上退下来。
6. 一个进程要进入阻塞(睡眠)状态,必须通过执行相应的程序才能实现,如sleep()或block()。就绪进程当前不在CPU上运行,不能执行任何程序,当然不能使自己直接进入阻塞状态。 7. (1)
引起各变迁的事件如下:
变迁1:正在执行的进程从处理机上退下,导致进程调度程序从就绪状态的进程中选取一个进程。
变迁2:正在执行的进程所分配的时间片用完,导致进程从处理机上退到就绪状态;或者在可抢占优先级的进程调度中,有更高有先级的进程进入就绪状态,导致正在执行的进程从执行状态退到就绪状态。
变迁3:进程需要等待事件的发生;
变迁4:进程所等待的某事件发生了(如I/O完成);
(2) 可能发生的因果变迁
3——1:由于处于运行状态的进程转入阻塞状态,进程调度程序根据调度算法,又从就绪队列中选择一个进程投入运行;
2——1:由于处于运行状态的进程时间片用完,重新转入就绪状态,从而使进程调度程序又从就绪队列中选择一个进程投入运行;
3——2:此种变化不存在;
4——1:4的发生与1的发生没有必然关系; 3——4:3的发生和4的发生没有必然关系。 (3)
无关变迁
第2章 进程和线程的管理习题及解答
变迁1、2、3与处理机有关,必然引起其它变迁,变迁4不涉及处理机,不直接引起其它变迁。