C.进程数目太多 D.进程出现故障
10. 多道程序系统进程从执行状态转换到就绪状态的原因是( )。 A.时间片完 B.等待其它进程的执行结果 C.等待I/O D.有更高优先级的进程到来 2.3.3 判断正误,错误的简要说明理由
1. 有了线程之后,程序只能以线程的身份运行。 2. 线程的切换会引起进程的切换。 3. 多个线程可以对应同一段程序。 4. 系统内可以有无父进程的进程。
5. 线程所对应的程序肯定比进程所对应的程序短。 6. 进程从CPU退下时,将“现场”保存在系统栈内。
7. 在多道程序系统,进程需要等待某种事件的发生时,进程一定进入阻塞状态。 8. 进程上下文是进程执行活动全过程的静态描述。 9. 并发是并行的不同表述,其原理相同。
10. 进程是基于多道程序技术而提出的,其基本的特征是动态性;进程的执行是在多个状态间多次转换的过程,但只有处于就绪和执行状态的进程位于内存。 11. 操作系统对进程的管理和控制主要是通过控制原语实现的。 12. 原语的执行是屏蔽中断的。
13. 一般情况下,分时系统中处于就绪状态的进程最多。 14. 系统中进程的数目越多,CPU的利用率越高.
15. 多道程序的执行失去了封闭性和再现性,因此多道程序系统不需要封闭性和再现性。 16. 一个多道程序可能具备封闭性和再现性。 17. 单道程序不具备封闭性和再现性。 2.3.4 简答题
1. Windows这样的多任务系统与Unix这样的多进程系统在调度上有何不同? 2. 进程和线程的主要区别是什么? 3. 程序的并发执行为什么会有间断性?
4. 进程能自己将自己唤醒吗?进程能自己将自己撤消吗? 5. 什么是原语?原语的主要特点是什么?
6. 程序并发执行与顺序执行时相比产生哪些新特征? 7. 程序并发执行的主要特性是什么?
8. 一个因等待I/O操作结束而入阻塞状态的进程,何时被唤醒? 9. 在什么情况下,可以一次唤醒一个进程和一次唤醒多个进程? 10. 进程的就绪状态和阻塞状态的有何不同?
11. 程序的并行执行将导致运行结果失去封闭性,这对所有的程序都成立吗? 12. 父进程创建子进程之后,父子进程之间的关系是什么? 2.3.5 解答题
1. 什么是线程?进程和线程是什么关系? 2. 简述引进线程的好处。
3. 当系统内所有的进程都进入睡眠之后,系统还有可能复活吗? 4. 当一个进程的父进程被撤消时,该进程是撤消好还是不撤消好? 5. 进程的挂起操作和入睡操作有何异同?
6. 简述进程为什么不能从就绪状态直接变成阻塞(睡眠)状态?
7. 进程的三个基本的转换如下图所示,图中1、2、3、4分别代表某种类型状态变迁,请分
别回答:
什么事件引起各状态之间的变迁?
统中常常由于某一进程的状态变迁引起另一进程也产生状态变迁,试判断变迁3——1、2——1、3——2、4——1、3——4,如果有的话,将发生什么因果变迁 在什么情况下,如果有的话,上述变迁将不引起其它变迁? 2.4 习题解答要点
2.4.1 选择最合适的答案
1.A 2.B 3.D 4.B 5.A 6.C 7.D 8.D 9.A 10.B 11.A 12.C 13.B 14.C 15.A 16.B 17.C 18.D 19.B 20.D 21.A 22.A 23.C 24.A 25.C 2.4.2 选择所有正确的答案
1. AB 2. ACD 3. ABC 4.ABC 5.BCD 6.ABD 7. ACD 8. BC 9. ACD 10.AD
2.4.3 判断正误,简要说明理由 1. 正确 错误
属于同一进程的多个线程之间的切换不会引起进程的切换,只有属于不同进程的线程之间的切换才会引起进程的切换。 3. 正确 4. 正确 5. 错误
不一定,若进程只有一个线程的话。 6. 错误
应该保存在PCB中,但有的系统也有例外。 7. 错误
进程也可以循环等待。 8. 错误
进程是进程实体的执行过程,具有动态性。 9. 错误
若干个事件在同一时刻发生成为并行;若干个事件在同一时间间隔内发生成为并发。并行是并发的特例,并发是并行的拓展。 10. 错误
基本特征还有并发性、异步性、独立性等; 进程在新、终止两状态中只经过一次; 进程都在内存。 11. 正确 12. 正确 13. 正确 14. 错误
进程容易产生资源竞争而处于阻塞或死锁状态 15. 错误
需要,否则程序没有稳定性和可靠性而言,用户也无法使用。 16. 正确
通过程序员的设计可以达到。 17. 错误
这是单道程序的固有属性。 2.4.4 简答题
1. 从调度上讲,在Windows这样的多任务系统中,当前执行哪个任务是由用户决定的,是用户可控的;而在Unix这样的多进程系统中,当前运行哪个进程是由内部的调度算法决定的,是对用户透明的,用户是不可直接控制的。
2. 在有进程和线程的系统中,进程是系统资源分配的独立单位,而线程是可调度运行的独立单位。
3. 并发执行是指系统内有多道程序在宏观上“同时”执行,但系统内往往只有一台处理机(CPU),因此只能分时地为多个程序服务。就一道程序而言,往往不是一次能够运行完成,而是以“走走停停”的方式完成其运行,这就是并发系统内程序执行的间断性。
4. 唤醒进程和撤消进程都是要通过在CPU上运行程序来实现的。一个进程入睡了,它就不可能被调度到CPU上运行;一个进程在撤消前必须先进入终止状态,而处于终止状态的进程不可能被调度到CPU上运行。因此,进程被唤醒、被撤消都不能由自己来完成,只能由别的进程实现。
5. 原语是指由若干条机器指令构成的,并用以完成特定功能的一段程序。这段程序在执行期间是不可分割的。其主要特点是不可分割性。 6. 可分割性、失去封闭性、失去可再现性。
7. 并发程序间具有相互制约的关系,程序并发执行失去了程序的封闭性和再现性,程序和机器执行程序的活动不再一一对应。
8. 是在别的进程执行相应的I/O中断处理程序时唤醒的。
9. 在I/O中断处理程序中,当唤醒进程时,只唤醒等待该I/O结束的那一个进程;当一个进程释放一个系统资源(如I/O缓存)时,将要唤醒所有因等待使用该资源而进入阻塞状态的进程。
10. 阻塞状态的进程还不具备执行的条件,即使放到处理机上也不能执行;就绪状态的进程具备了执行的所有条件,放到处理机上就能执行。
11. 并不是所有程序的并行执行都会导致运行结果失去封闭性。例如,当程序中都使用内部变量,不可能被外部程序访问时,程序的运行不会受到外部环境的影响。
12. 一个进程创建子进程之后,创建进程与产生的进程之间的关系是父子关系,分别成为父进程和子进程。子进程一经产生就与父进程并发执行,子进程共享父进程的正文段和已经打开的文件。 2.4.5 解答题
1. 线程可定义为进程内的一个执行单位,或者定义为进程内的一个可调度实体。 在具有多线程机制的操作系统中,处理机调度的基本单位不是进程而是线程。一个进程可以有多个线程,而且至少有一个可执行线程。 进程和线程的关系是:
线程是进程的一个组成部分;
进程的多个线程都在进程的地址空间活动;
资源是分给进程的,而不是分给线程的,线程在执行中需要资源时,系统从进程的资源配额中扣除并分配给它;
处理机调度的基本单位是线程,线程之间竞争处理机,真正在处理机上运行的是线程; 线程在执行过程中,需要同步。 2. 引进线程的好处为:
以线程作为系统调度的基本单位,减少了系统的时空开销。以进程为系统调度的基本单位的系统中,进程的切换是很频繁的。在切换中由于要保留当时的运行环境,还要设置新选中的进程的运行环境,这既花费了处理机的时间,又增加了主存的空间,从而也限制了系统进程的数量和进程的切换速度。
引进线程提高了系统的并行能力。线程作为进程内的一个可执行实体,减少了并行粒度。线程作为调度的基本单位而不是资源分配的基本单位,调度更为容易,而且采用线程提高系统的并行能力比采用进程更为有效。
同一进程的线程共享进程的用户地址空间,所以同一进程的线程间的通信更容易实现。 3. 只有两种情况下系统可以复活。
一种情况是有因等待I/O操作完成而进入睡眠的进程,当相应的I/O操作完成后,I/O中断处理程序唤醒等待本次I/O的进程,而该进程在运行过程中又可能通过释放资源、发送消息等事件而唤醒其它进程,这样整个系统就又活跃起来了。
另一种情况是没有等待I/O操作完成的进程,但有定时睡眠的进程,当睡眠时间到期,会由时钟中断将该入睡进程唤醒,从而获得可运行进程,并有可能使系统重新活跃起来。
4. 在实际系统中,两种处理办法都是可行的,且各有优缺点。若撤消,则该进程的任务可能还没有完成,这显然是不利的,特别是当该进程的运行结果对其它进程的运行很重要(如该进程是其它进程的前趋进程,没有它的运行结果其它进程无法运行)时;若不撤消,则该进程又可能成为不可控的“孤儿”,从而产生不可预测的结果。
比较好的做法是,当一个进程的父进程被撤消时,可以将该进程“过继”给系统内一个级别较高的进程(如Unix中的1#进程),让它有一个“新的父亲”,这样既可以继续完成其任务又不会成为不可控的。
5. 最主要的不同是“入睡”是进程的主动行为,而“挂起”可以是系统的强制行为;此外,只有在CPU上运行的进程才能执行“入睡”操作,而不管进程处于什么状态,系统都可对其执行“挂起”操作。
它们的相同点是:这两个操作都导致一个正在CPU上运行的进程从 CPU上退下来。 6. 一个进程要进入阻塞(睡眠)状态,必须通过执行相应的程序才能实现,如sleep()或block()。就绪进程当前不在CPU上运行,不能执行任何程序,当然不能使自己直接进入阻塞状态。 7.
引起各变迁的事件如下:
变迁1:正在执行的进程从处理机上退下,导致进程调度程序从就绪状态的进程中选取一个进程。
变迁2:正在执行的进程所分配的时间片用完,导致进程从处理机上退到就绪状态;或者在可抢占优先级的进程调度中,有更高有先级的进程进入就绪状态,导致正在执行的进程从执行状态退到就绪状态。
变迁3:进程需要等待事件的发生;
变迁4:进程所等待的某事件发生了(如I/O完成); (2) 可能发生的因果变迁
3——1:由于处于运行状态的进程转入阻塞状态,进程调度程序根据调度算法,又从就绪队列中选择一个进程投入运行;
2——1:由于处于运行状态的进程时间片用完,重新转入就绪状态,从而使进程调度程序又从就绪队列中选择一个进程投入运行; 3——2:此种变化不存在;
4——1:4的发生与1的发生没有必然关系; 3——4:3的发生和4的发生没有必然关系。
无关变迁
变迁1、2、3与处理机有关,必然引起其它变迁,变迁4不涉及处理机,不直接引起其它变迁。