操作系统案例分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统常见问题分析
【问题1】在CPU按抢占式优先级调度的系统中,回答下列问题:
问题1:没有运行进程是否一定没有就绪进程?
当前正在运行的进程如果由于某种原因放弃CPU,系统就会产生新的调度,若此时就绪队列中没有进程可调度,CPU中也就无进程运行。所以,没有运行进程就一定没有就绪进程。问题2:没有运行进程是否说明系统中无任何进程?
不一定。在某一时间段内,可能系统的所有进程都暂时处于阻塞状态,在等待I/O处理,造成CPU中暂时无运行进程。一旦等待事件出现后,进程由阻塞状态变为就绪状态时,系统就会调度就绪进程进入CPU运行。
问题3:运行进程是否一定是进程中优先级高的?
在抢占式优先级调度的系统中,运行状态的进程一定比就绪状态队列中的其它进程的优先级高。但阻塞队列中的进程优先级可能高于运行进程的优先级。
【问题2】分析wondows 2000系统中进程的挂起状态。
wondows 2000操作系统引入了虚拟存储管理技术后,其优先级调度的机制将一些优先级低的进程对换到外存的虚拟空间中,这些进程处于挂起状态。将进程挂起的原因可能是,内存资源紧张、终端用户请求、父进程的请求、负荷调节的需要等等。在系统中引入挂起模型带来的好处是:
⏹挂起进程释放出的内存空间可用于提交新进程,提高了处理器的效率;
⏹当内存资源紧张时,将一部分进程对换至外存,可为运行进程提供足够的内存;
⏹有利于调试,一个调试中的进程被挂起后可以方便的对其地址空间进行读写。
在wondows 2000中,就绪状态的进程被挂起后进入就绪挂起状态。阻塞队列的进程挂起后进入阻塞挂起状态。挂起进程有这样一些性质:
⏹被挂起的进程,无论是就绪挂起还是阻塞挂起,挂起状态进程都不可能被调度执
行。
⏹进程可以自己挂起,也可以由用户和操作系统挂起,被挂起的进程通过“激活”操
作从挂起状态中解脱出来,从外存转到内存。
⏹就绪挂起状态的进程只要重新调入内存就可以运行,阻塞挂起的进程在外存中等
待某事件的出现,当等待的事件出现后,进程虽然不再被阻塞,但仍然不能运行,
只有在进程转入了就绪状态后才能运行。
需要指出的是进程的睡眠和挂起是不相同的概念。虽然两个操作都导致进程放弃CPU,但睡眠是进程的主动行为,只有在CPU上运行的的进程才能睡眠。挂起在大多数情况下是系统的强制行为,不管进程处于何种状态,系统都可以挂起该进程。
【问题3】进程的剖析
进程的概念在60年代初期提出,首先在MIT的Multics系统和IBM的TSS/360系统中引用。进程是操作系统中最基本、最重要的一个概念,人们曾对进程下过多种定义:
⏹进程是程序的一次执行;
⏹进程是可以和别的计算并发执行的计算;
⏹进程是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的一个独
立单位;
⏹进程是一个具有一定功能的程序关于某个数据集合的一次运行活动。
虽然对进程定义的文字描述各有不同,但是在本质上强调了以下几点:
⑴进程强调的是程序的一次“执行”过程,因此,“进程”是一个动态的概念,进程在执行过程中是动态变化的。例如,进程的状态在进程执行过程中就不断发生变化。“动态”包含的另一层意思是每个进程都有生命周期。当系统要完成某项工作时,就“创建”一个进程,以便能去执行事先编写好的、完成该工作的程序。程序执行完毕,完成了预定的任务后,系统就“撤消”这个进程,收回它占用的资源。一个进程创建后,系统能感知它的存在;一个进程撤消后,系统无法再感知到它。从创建到撤消,这个时间段就是一个进程的“生命期周期”。
⑵从进程的定义可知,进程由所执行的程序和数据集合构成。即使多个进程执行同一个程序,只要它们运行在不同的数据集合上,它们就是不同的进程。例如,一个编译程序同时被多个用户调用,各用户程序的源程序是编译程序的处理对象(即数据集合)。于是系统中形成了一个个不同的进程,它们都运行编译程序,只是每个加工的对象不同。因此,进程与程序之间不一定存在一一对应的关系。
⑶进程是资源分配的单位。一个系统中同时存在多个进程,与它们对应的多个程序同时在系统中运行,轮流占用CPU和各种资源。在对资源共享和竞争中,必然会相互制约,影响各自向前推进的速度。
系统中同时存在的多个进程分为两大类。系统进程是执行操作系统核心代码的进程,起着资源管理和控制的作用。用户进程是执行用户程序的进程。系统进程与用户进程在系统中是有区别的:系统进程被分配一个初始的资源集合,这些资源可以被它独占,也能以最高优先权使用。用户进程则需要通过请求系统服务的手段竞争使用系统资源;系统进程可以做显式的、直接的I/O操作,而用户进程不能直接做I/O操作;系统进程运行时CPU处于系统态(核态或管态)而用户进程运行时CPU处于用户态(目态)。
【问题4】若系统中仅有一类独占资源,进程一次只能申请一个资源。系统中有多个进程竞争该类资源。试判断下述那些情况会发生死锁,为什么?
⑴资源数为4,进程数为3,每个进程最多需要2个资源
⑵资源数为6,进程数为2,每个进程最多需要4个资源
⑶资源数为8,进程数为3,每个进程最多需要3个资源
⑷资源数为20,进程数为8,每个进程最多需要2个资源
分析与解答:
⑴不会发死锁。因为系统中只有3个进程,每个进程最大资源需求量为2,且资源总数为4,无论资源怎样分配,总有一个进程能满足需求顺利运行完毕并将资源归还系统。
不会发生死锁的分配情况如表2-5。
表2-5 不会发生死锁的分配情况之一
⑵分配不当时有可能发生死锁。表2-6是不会发生死锁的一种分配情况,表2-7是可能会发生死锁的一种分配情况。
表2-6 不会发生死锁的分配情况之一
表2-7 可能会发生死锁的分配情况之一
⑶不会发生死锁。由于系统中只有3个进程,每个进程最大资源需求量为3,且资源总数为8,无论资源怎样分配,总有一个进程能满足需求顺利运行完毕并将资源归还系统。表2-8是其中一种不会发生死锁的分配情况。
表2-8 不会发生死锁的分配情况之一
⑷不会发生死锁。由于系统中有8个进程,每个进程最大资源需求量为2,8个进程需求的最大资源数为16,而系统资源总数为20,足以满足每个进程的最大需求,故不会产生死锁。
【问题5】从实现方式和资源利用率上分析比较解决死锁的几种方法。
解决死锁的方法主要有:死锁的预防、死锁的避免、死锁的检测和解除。
死锁的预防:主要是破坏产生死锁的必要条件。该方法容易实现,但因为设置了种种限制,保守的算法使得操作系统的功能减弱,资源的利用率较低。
死锁的避免:常用的是银行家算法。该算法要设置一些数据结构及进行必要的计算,来考查每个进程对各类资源的申请,是否会导致系统进入不安全状态。死锁的避免必须知道各进程对资源的需求量,要花费较多的时间去预测死锁是否会发生。因此,实现起来不太容易,但资源的利用率最高。
死锁的检测和解除:是基于死锁定理而设计的一种宽松的策略。并不区严格地限制死锁的发生,通过定期或不定期对系统的状态进行检测,发现死锁便予以解除。解除死锁通常是采取剥夺某些进程已占有的资源。剥夺时需要比较一下各种死锁解除方案的代价,找到代价最小的方案。在选择剥夺进程时应考虑:
(1)优先级低的进程