计算机操作系统第三章处理机调度与死锁习题及答案

简介: 计算机操作系统第三章处理机调度与死锁习题及答案

进程调度的因素


引起进程调度的原因有:进程结束;时间片用完;被抢占;调用原语被阻塞;I/O请求


某进程被唤醒后立即进入运行,我们就说这个系统采用的是抢占调度方法,对吗?为什么?


不对,抢占调度方法定义:允许调度程序根据某种原则,将已分配给该进程的处理机,重新分配给另一进程,由题不能判断CPU是否处于空闲状态

高级调度和低级调度的主要任务是什么?为什么引入中级调度?


(1)高级调度又称为作业调度。它是批处理系统中使用的一种调度。主要任务是按照某种算法从外存的后备队列上选择一个或多个作业调入内存,并为其创建进程、分配必要的资源,然后再将所创建的进程控制块插入就绪队列中


(2)低级调度又称进程调度。它是距离硬件最近的一级调度。其主要任务是按照某种算法从就绪队列上选择一个(或多个)进程,使其获得CPU


(3)引入中级调度的目的是为了提高内存利用率和系统吞吐量。其功能是,让那些暂时不能运行的进程不再占用宝贵的内存资源,而是调其到外存上等候。此时的进程状态为挂起状态。当这些进程重新具备运行条件且内存空闲时,由中级调度选择一部分挂起状态的进程调入内存并将其状态变为就绪状态


何谓死锁?产生死锁的原因和必要条件是什么?


何谓死锁:


死锁是指多个进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,当进程处于这种状态时,若无外力作用,它们都将无法再向前推进。


产生死锁的原因:


(1)竞争资源


(2) 进程间推进顺序不当


产生死锁的必要条件:


(1) 互斥条件:一个资源每次只能被一个进程使用。

(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。


在银行家算法中,若出现下面的资源分配情况:



试问: (1)该状态是否安全? (2)当进程P2提出请求Request(1,2,2,2)后,系统能否将资源分配给它?


【答案】


解:(1)利用银行家算法对此时刻的资源分配情况进行分析,可得此时刻的安全性分析情况:

        Work Need   Allocation Work+Allocation Finish

P0    1622  0012   0032         1654                   true

P3    1654  0652   0332         1986                   true

P4    1986  0656   0014         19910                 true

P1   19910 1750   1000         29910                 true

P2   29910 2356 1 3 5 4 3 12 14 14 true

从上述分析中可以看出,此时存在一个安全序列{P0,P3,P4,P1,P2},故该状态是安全的。

(2)P2提出请求Request2(1,2,2,2),按银行家算法进行检查:

·Request2(1,2,2,2) ≤Need(2,3,5,6)

·Request2(1,2,2,2) ≤Available(1,6,2,2)

·试分配并修改相应数据结构,资源分配情况如下:

     Allocation Need   Available

P0 0032         0012   0400

P1 1000         1750

P2 2576         1134

P3 0332         0652

P4 0014         0656

再利用安全性算法检查系统是否安全,可知系统资源Available(0,4,0,0)已不能满足任何进程的需要,故系统进入不安全状态,此时系统不能将资源分配给P2


系统中有五个进程P1,P2,P3,P4,P5,如表。规定进程的优先数越小优先级越高。试描述在采用下述内种调度算法时,各个进程运行过程,并计算采用每种算法的进程平均周转时间。假设忽略进程的调度时间。


(1)先来先服务调度算法


(2)短进程优先调度算法


(3)剥夺式优先级调度算法


(4)非剥夺式优先级调度算法



【答案】






相关文章
|
11月前
|
存储 Linux API
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
|
6月前
|
Android开发 Windows
这是我设想的免重启操作系统的状态下更新通用计算机、嵌入式操作系统的软件设计思路
本方案提出了一种名为slfm的软件系统,旨在实现通用计算机及嵌入式系统在不重启状态下完成操作系统更新。其核心机制是通过构建独立于原系统的运行环境(slfm Recovery与The Tube),在高权限模式下进行系统文件更新与切换,确保更新过程中设备持续运行,适用于普通设备与不可中断服务的关键系统(如医疗、服务器等)。同时具备失败回滚、数据同步、权限隔离等功能,提升系统更新的安全性与可用性。
|
10月前
|
弹性计算 运维 资源调度
使用阿里云操作系统控制台巧解调度抖动
阿里云操作系统控制台是一站式云服务器管理平台,提供性能监控、故障诊断、日志分析、安全管理和资源调度等功能。用户可实时查看CPU、内存等使用情况,快速定位并解决调度抖动等问题。智能诊断工具自动生成优化建议,简化运维流程,降低技术门槛。尽管部分功能仍在优化中,但整体上显著提升了云服务器管理的效率和稳定性。
269 15
使用阿里云操作系统控制台巧解调度抖动
|
存储 算法 调度
深入理解操作系统:进程调度的奥秘
在数字世界的心脏跳动着的是操作系统,它如同一个无形的指挥官,协调着每一个程序和进程。本文将揭开操作系统中进程调度的神秘面纱,带你领略时间片轮转、优先级调度等策略背后的智慧。从理论到实践,我们将一起探索如何通过代码示例来模拟简单的进程调度,从而更深刻地理解这一核心机制。准备好跟随我的步伐,一起走进操作系统的世界吧!
|
存储 安全 固态存储
计算机启动:从插上电源到操作系统启动的全过程
当我们插上电源,计算机从休眠状态苏醒,直至操作系统完全启动,这一系列复杂的过程涉及到硬件和软件的多个层面。本文将详细解析计算机插上电源后操作系统所做的工作,揭示这一过程的技术细节。
854 6
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
操作系统作为计算机系统的核心,其进程管理和调度策略对于系统性能和用户体验至关重要。本文将通过直观的代码示例和浅显易懂的语言,带领读者了解操作系统如何有效管理进程以及常见的进程调度算法。我们将从进程的基本概念出发,逐步深入到进程状态、进程控制块(PCB)的作用,最后探讨不同的调度算法及其对系统性能的影响。无论您是初学者还是有一定基础的开发者,都能从中获得有价值的信息。
|
负载均衡 算法 调度
深入理解操作系统:进程管理与调度
在数字世界的心脏,操作系统扮演着至关重要的角色。它如同一位精明的指挥家,协调着硬件资源和软件需求之间的和谐乐章。本文将带你走进操作系统的核心,探索进程管理的艺术和调度策略的智慧。你将了解到进程是如何创建、执行和消亡的,以及操作系统如何巧妙地决定哪个进程应该在何时获得CPU的青睐。让我们一起揭开操作系统神秘的面纱,发现那些隐藏在日常计算背后的精妙机制。
|
5月前
|
Ubuntu Unix Linux
操作系统的最强入门科普(Unix/Linux篇)
下期文章,小枣君会重点聊聊Windows和macOS那条线。敬请关注! 如果大家觉得文章不错,还请帮忙多多转发!谢谢!
|
5月前
|
Web App开发 缓存 Rust
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
810 0
Vanilla OS:下一代安全 Linux 发行版

热门文章

最新文章

推荐镜像

更多