【SCAU操作系统】期末复习应用题例题解析

1、

5 个作业 A~E 同时到达一个单 CPU 系统,且以 A~E 的顺序进入就绪队列。估计运行
时间分别为 10,6,2,4 和 8 分钟,优先级分别为 3,5,2,1 和 4(其中 5 为最高优先级)。
假设它们都是纯计算型作业,系统开销时间忽略不计。对下面的调度算法,计算平均周转
时间。
1)优先级调度。
2)短作业优先。
3)时间片为 1 分钟的轮转法。

答:评分标准:每个 3 分。
1) 优先级调度:调度顺序 BEACD,平均周转时间=20 分钟。
2) 短作业优先:调度顺序 CDBEA,平均周转时间=14 分钟。
3) 时间片为 1 分钟的轮转法:周转时间 C-8,D-17,B-23,E-28,A-30。平
均周转时间=21.2 分钟。

周转时间是指作业从提交到完成所经历的时间。
1)优先级调度:
优先级从高到低:B(5),E(4),A(3),C(2),D(1)
计算周转时间:
B 的周转时间 = B 的运行时间 = 6 分钟
E 的周转时间 = B 的运行时间 + E 的运行时间 = 6 + 8 = 14 分钟
以此类推
A    24
C    26
D    30
平均周转时间=100/5=20分钟

2)短作业优先:
即 C(2),D(4),B(6),E(8),A(10)。
计算周转时间:
C 的周转时间 = C 的运行时间 = 2 分钟
D 的周转时间 = C 的运行时间 + D 的运行时间 = 2 + 4 = 6 分钟
以此类推
平均周转时间=70/5=14分钟

3)时间片为 1 分钟的轮转法:
按照时间片轮转,每个作业先运行 1 分钟,直到完成或时间片用完。
计算周转时间:
C 第二轮完成,周转时间 = 8 分钟
D 剩下四个作业,17分钟
B 剩下三个作业,23分钟
E     28分钟
A     30分钟
平均周转时间=106/5=21.2分钟

2、

不死锁的哲学家进餐问题。五支叉子放在五位哲学家之间,进餐前哲学家必须先拿起左边叉子,再拿起右边叉子,吃完后放下两支叉子。为防止死锁,只允许四位哲学家同时拿起一支或两支叉子。用信号量方法实现此不死锁的哲学家进餐问题。

答:设信号量:评分标准:每个信号量 1.5 分,共 3 分

semaphore fork[5] = {1};//每把叉子就是一个临界资源。
semaphore room = {4};//至多允许四人同时拿起叉子
int i;
void philosopher (int i)
{while (true) {think();wait (room); 评分标准:每个 wait(), signal() 1 分,共 6 分wait (fork[i]);wait (fork [(i+1) mod 5]);eat();signal (fork [(i+1) mod 5]);signal (fork[i]);signal (room);}
}

semaphore fork[5] = {1};: 定义了一个数组,其中每个元素都是一个信号量,表示一把叉子。初始值都是1,表示每把叉子都是可用的。
semaphore room = {4};: 这是另一个信号量,用于控制同时拿起叉子的哲学家数量。初始值为4,意味着最多可以有4个哲学家同时拿起叉子(因为第五个哲学家需要两把叉子,所以同时只能有4个哲学家拿起叉子)。

void philosopher (int i): 这是一个函数,表示第i个哲学家的行为。
while (true): 哲学家不断地重复思考和吃饭的过程。
think();: 哲学家在思考。
wait (room);: 哲学家等待有足够的叉子可用。如果room的值大于0,则room减1,哲学家可以进入;否则,哲学家需要等待。
wait (fork[i]); 和 wait (fork [(i+1) mod 5]);: 哲学家等待他左边和右边的叉子。只有当两把叉子都可用时(即信号量的值大于0),哲学家才能拿起它们并开始吃饭。
eat();: 哲学家在吃饭。
signal (fork [(i+1) mod 5]); 和 signal (fork[i]);: 哲学家吃完饭后,释放他左边和右边的叉子。这通过增加相应信号量的值来实现。
signal (room);: 哲学家释放了一个“房间”的位置,允许其他哲学家进入。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/862104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【FFmpeg】avformat_alloc_output_context2函数

【FFmpeg】avformat_alloc_output_context2函数 1.avformat_alloc_output_context21.1 初始化AVFormatContext(avformat_alloc_context)1.2 格式猜测(av_guess_format)1.2.1 遍历可用的fmt(av_muxer_iterate&#xff0…

VTK----深入理解3D坐标系统和相机

对于有3D开发经验的工作者来说,3D坐标系统和相机是再熟悉不过的内容了,所以这篇文字并不是对它们基本概念的的介绍,而是结合自身对于3D坐标系统和相机中一些似懂非懂问题(如下面的列表)的解答以及详细说明VTK是如何实现3D坐标系统和相机的。 1. 下面这组用于绘制立方体的顶…

【C++PCL】点云处理点云密度计算优化

作者:迅卓科技 简介:本人从事过多项点云项目,并且负责的项目均已得到好评! 公众号:迅卓科技,一个可以让您可以学习点云的好地方 重点:每个模块都有参数如何调试的讲解,即调试某个参数对结果的影响是什么,大家有问题可以评论哈,如果文章有错误的地方,欢迎来指出错误的…

jenkins下后台运行链接Jenkins服务脚本方法

为了编写一个用于在后台运行 Jenkins agent 的批处理脚本,你可以使用 start 命令来启动 Java 进程并将其设置为在后台运行。以下是一个示例批处理脚本 run_agent.bat: bat echo off setlocalREM Set the path to the Jenkins agent JAR file set AGENT…

TEMU全/半托管订单如何避免错发/漏发?用妙手ERP扫描发货功能!

这两年,因为全托管/半托管模式的火爆,跨境卖家纷纷加入全托管和半托管,许多卖家在加入后,店铺频频爆单。 以为是泼天富贵,没想到却因为发货问题亏麻了:发货效率低,导致超过平台发货时效&#x…

C#面:可以在C#静态类中使用“this”吗 ?

在C#中,静态类是一种特殊类型的类,它只能包含静态成员(静态字段、静态方法、静态属性等),并且不能被实例化。由于静态类没有实例,因此在静态类中不能使用关键字“this”来引用当前对象。 关键字“this”用…

ActiViz实战:基于ActiViz 9.3读取分割后的心脏模型并实现面绘制

文章目录 一、效果预览二、实现代码三、源码地址 一、效果预览 20240627_150614 二、实现代码 public partial class Form1 : Form {private int _organCount;//组织数量private List<vtkPolyDataMapper> _multOrganMapper new List<vtkPolyDataMapper>();//多组…

第30课 绘制原理图——放置网络标签

什么是网络标签&#xff1f; 我们在很多电路图中都能看到&#xff0c;为了让图纸更加简洁&#xff0c;并不是每一根导线都要确确实实地画出来。可以在导线悬空的一端添加一个名称标签&#xff0c;接着在另一根导线的悬空一端添加上一个同名的名称标签&#xff0c;那么就可以让…

Qt 基于FFmpeg的视频播放器 - 播放、暂停以及拖动滑动条跳转

Qt 基于FFmpeg的视频转换器 - 播放、暂停以及拖动进度条跳转 引言一、设计思路二、核心源码以及相关参考链接 引言 本文基于FFmpeg&#xff0c;使用Qt制作了一个极简的视频播放器. 相比之前的版本&#xff0c;加入了播放、暂停、拖动滑动条跳转功能&#xff0c;如上所示 (左图)…

SpringSecutrity原理

一、基于RBAC实现的权限管理通常需要涉及以下几张表&#xff1a; 1. 用户表&#xff08;user&#xff09;&#xff1a;记录系统中的所有用户&#xff0c;包括用户ID、用户名、密码等信息。 2. 角色表&#xff08;role&#xff09;&#xff1a;记录系统中的所有角色&#xff0…

基于51单片机太阳能风能风光互补路灯控制器

一.硬件方案 本设计由STC89C52单片机电路太阳能电池板电路风机发电电路锂电池充电保护电路升压电路稳压电路光敏电阻电路4位高亮LED灯电路2档拨动开关电路电源电路设计而成。 二.设计功能 &#xff08;1&#xff09;采用风机和太阳能电池板给锂电池充电&#xff0c;具有充电…

系统架构设计师 - 数据库系统(2)

数据库系统 数据库系统规范化理论 ★ ★ ★ ★ ★函数依赖求候选键Armstrong公理范式判断第一范式 1NF第二范式 2NF第三范式 3NFBC 范式 BCNF 模式分解保持函数依赖分解无损分解 并发控制 ★事务的 ACID 特性并发存在的问题并发解决方案 - 封锁协议 数据库的安全性 ★安全性的分…

MySQL入门学习-索引.创建索引

索引是 MySQL 中用于加速查询的一种数据结构。它通过在表的列上创建索引来加快数据的检索速度。 一、索引的概念 索引类似于书的目录&#xff0c;可以快速定位到表中的数据。当在表中的列上创建索引后&#xff0c;MySQL 会根据索引列的值对数据进行排序&#xff0c;并建立一个…

【C++STL基础入门】wstring类基础使用

文章目录 前言C STL基础入门&#xff1a;wstring类的基础使用前言正文wstring是什么常用的构造函数常用的操作函数 总结 前言 在C的标准模板库(STL)中&#xff0c;wstring是一个重要的类&#xff0c;它是string的宽字符版本&#xff0c;用于存储和操作宽字符序列。本文将详细介…

十三、Maven(1)

&#x1f33b;&#x1f33b;目录 一、maven价绍二、maven的功能1、项目自动化构建2、管理jar、war包3、实现项目结构设计 三、maven安装1、maven的安装环境需要jdk2、Maven的安装路径中不能出现中文和空格3、压缩包解压即可4、配置环境变量 四、maven的仓库1. Maven仓库配置2. …

选型手册:Bosch Sensortec 博世 微机电系统(MEMS)传感器和方案

前言 博世传感器公司&#xff08;Bosch Sensortec&#xff09; 是全球领先的微机电系统&#xff08;MEMS&#xff09;传感器和解决方案供应商。公司成立于2005年&#xff0c;是德国罗伯特博世有限公司&#xff08;Robert Bosch GmbH&#xff09;旗下的全资子公司。博世传感器公…

SpringBoot【3】集成 Swagger

SpringBoot 集成 Swagger 前言pom.xml 配置文件application.yml 配置文件config 包Swagger2Config entity 包UserEntity service 包impl 包SwaggerServiceImpl SwaggerService controller 包SwaggerController SwaggerApplication验证 前言 创建项目步骤、及版本选择等&#x…

展开说说:Android列表之RecyclerView

RecyclerView 它是从Android5.0出现的全新列表组件&#xff0c;更加强大和灵活。用于显示列表形式 (list) 或者网格形式 (grid) 的数据&#xff0c;替代ListView和GridView成为Android主流的列表组件。可以说Android客户端只要有表格的地方就有RecyclerView。 RecyclerView 内…

【Android】Material TabLayout使用详解

基本用法 TabItem可以设置text&#xff0c;icon&#xff0c;layout三个属性 其它属性都通过TabLayout来统一设置 <com.google.android.material.tabs.TabLayout><com.google.android.material.tabs.TabItem/><com.google.android.material.tabs.TabItem/>…

VCS编译bug汇总

‘typedef’ is not expected to be used in this contex 注册前少了分号。 Scope resolution error resolution : 声明指针时 不能与类名同名&#xff0c;即 不能声明为adapter. cannot find member "type_id" 忘记注册了 拼接运算符使用 关键要加上1b&#xff0…