操作系统课程设计-人机交互的模拟操作系统

news2024/12/26 21:59:20

(一)课设板块

模块划分:
(1)、进程管理模块
(2)、内存管理模块
(3)、文件管理模块
(4)、设备管理模块
(5)、界面管理模块

1. 进程管理: 考虑进程的创建、状态转换(就绪、执行、阻塞)、调度、撤销等,设计PCB结构,设计进程调度算法。

选做:使用信号量机制模拟多任务系统中的进程同步。


2. 内存管理 :考虑内存的动态分配与回收,采取何种数据结构,采用何内存分配算法等。

选做:内存的离散分配(分页式、分段式或段页式管理),以及基于此种机制下的虚拟内存管理,页面置换算法。


3. 文件管理: 考虑文件及文件目录的创建、查询、删除等操作的实现,考虑磁盘空间分配采用的数据结构及算法(连续分配、显式链接、索引分配),考虑磁盘空闲区管理采用的数据结构及算法(空闲盘块表、空闲盘块链、位示图、成组链接法)和算法。

选做:磁盘调度算法。


4. 设备管理:考虑设备的分配和回收,采取何种数据结构,采用何种分配算法,使用银行家算法避免死锁。



(二)项目文件

主窗口

mainwindow.h

mainwindow.cpp

mainwindow.ui

OS.pro 项目配置文件

pics文件夹 存放图标

  1. 进程管理
  • process文件夹
  1. 内存管理
  • memory文件夹
  1. 文件管理
  • file文件夹
  1. 设备管理
  • equipment文件夹
  1. 磁盘管理
  • disk文件夹



(三)模块间数据共享

关于数据共享

不同的类之间共享数据,通常可以考虑;

  • 某变量设置为全局变量,然后extern声明

    如下,通过全局变量w, 共享readyQueue队列

//根据优先级排序,放入就绪队列
extern MainWindow *w;
    w->processTab->readyQueue.push_back(process);
    sort(w->processTab->readyQueue.begin(),w->processTab->readyQueue.end(), ProcessTab::compare);

  • 包含某个类的文件,然后使用其函数

  • 利用信号与槽

    如下,在对话框更改了另一个process的界面

    //更新表格
    connect(this,SIGNAL(sendToShowProcess()),w->processTab,SLOT(showProcess()));
    emit this->sendToShowProcess();
    



(四)流程图

进程管理在这里插入图片描述

内存管理

在这里插入图片描述

文件管理

在这里插入图片描述

设备管理

在这里插入图片描述

(五)UML

进程管理

img

img

img

内存管理

img

文件管理

img

设备管理

image-20230310214140115

(六)效果展示

1.进程模块

创建进程时,所有进程就绪

img

开始调度,由下图可见,进程“获取键值”在“键盘输入”未运行完,只执行了一部分时调入运行队列后阻塞。同时“键盘输入”在运行自己的第三个时间片(一个时间片2s,图上显示第6秒)时,请求调入第19号页面。 且运行完的进程所占用的内存块释放。

img

磁盘调度时显示磁盘调度信息

访问磁道号2,磁盘模块第三行正在被访问,变为红色

imgimg

2.内存模块

内存初始化状态

img

虚拟内存初始化状态:

img

运行时:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

img

3.文件模块

文件初始创建时

img

img

扩展各个文件后

img

操作删除文件

img

操作后

img

4. 设备管理模块

4.1 进程队列的生成

点击生成按钮,产生一个进程个数为24的进程队列。

img

点击每个进程可以查看该进程详情

img

4.2 进程资源矩阵展示

点击开始,展示资源的分配以及进程请求的详细情况

img

4.3 发送请求

点击发送请求按钮,开始发出请求。

img

若请求资源大于need向量,则拒绝请求。

img

img

请求合理则执行安全性算法检测

img

4.4 安全性算法

执行安全性算法,

img

4.5 资源分配

通过则分配资源,进程的need减少,allocati增加,available减少。

例如:

img

请求后(request = (1,1,1,1))

img)

img

4.资源回收

资源占有时间到后,则回收,该进程allocation和need置零,available=available+allocationi

img

img

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

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

相关文章

Elasticsearch中【文档查询】DSL语句以及对应的Java实现

目录 全文检索查询 精准查询 布尔查询 排序、分页查询 高亮 地理查询 复合查询 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测…

C语言:项目实践(贪吃蛇)

前言: 相信大家都玩过贪吃蛇这款游戏吧,贪吃蛇是久负盛名的游戏,它也和俄罗斯方块,扫雷等游戏位列经典游戏的行列,那贪吃蛇到底是怎么实现的呢? 今天,我就用C语言带着大家一起来实现一下这款游戏…

Springboot+Vue项目-基于Java+MySQL的校园疫情防控系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

达梦(DM) SQL聚集函数及日期运算操作

达梦DM SQL聚集函数及日期运算操作 聚集函数MAX、MIN、SUM、AVG、COUNT使用分析函数 sum (…) over (order by…) 可以生成累计和更改累计和的值计算出现次数最多的值 日期运算加减日、月、年加减时、分、秒日期间隔之时、分、秒日期间隔之日、月、年求两个日期间的工作天数确定…

《C语言深度解剖》(10):数组指针、指针数组和数组指针数组

🤡博客主页:醉竺 🥰本文专栏:《C语言深度解剖》《精通C指针》 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多C语言深度解剖点击专栏…

抄表自动化的实现与优势

1.界定与简述 抄表自动化是一种当代关键技术,致力于取代传统的手动式抄表方法,通过远程数据数据采集解决,完成电力工程、水、气等公用事业电力仪表的全自动载入。这一系统利用先进的感应器、物联网技术(IoT)设备及数据数据分析工具&#xff…

2024年第十五届蓝桥杯江苏省赛回顾

呜呜呜~~~ 我在考完了后感觉自己直接炸了:好多学到的算法都没有用上,几乎所有的题目都是暴力的。。。 最后十几分钟对于一道dp算法终于有思路了,但是。。匆匆忙忙之间就是没有调试出来。(还是交了一道暴力[旋风狗头]直接哭死~~&…

【七十三】【算法分析与设计】516. 最长回文子序列,二叉树,329. 矩阵中的最长递增路径,记忆化递归填表

516. 最长回文子序列 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。 示例 1: 输入:s &qu…

JAVA系列 小白入门参考资料 类和对象(3)

温馨提示: 此篇文章需要前两篇文章作为基础。 JAVA系列 小白入门参考资料 类和对象(1)​​​​​​​ JAVA系列 小白入门参考资料 类和对象(2) 目录 1. 封装 引入封装 访问修饰符 封装的具体实现 get方法和…

55.基于SpringBoot + Vue实现的前后端分离-旅游管理系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统,采用SpringBoot Vue框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得基于SpringBoot Vue技术的旅游管理系统设计与实现管理工作系统…

ElasticSearch面试题2

Mapping属性详细介绍/常见的字段数据类型: 映射(mapping)︰mapping是对索引库中文档的约束信息(例如字段名、数据类型),类似表的结构约束;每个索引库都应该有自己的映射 数据库一定要先创建表才能去添加数据…

【Java】图书管理系统 介绍与实现

欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持! 1.介绍 图书馆作为知识的殿堂和学术的中心,其管理系统不仅是图书馆管理的必备工具,更是为用户提供优质、高效服务的重要保障,促进了知识的传播和学术的发展。随着…

SpringSecurity + Oauth2 + jwt实现单点登录

文章目录 前言一、springsecurity oauth2 redis方式的缺点二、oauth2认证的4种模式的选择三、认证服务器的编写 第一步、创建WebSecurity配置类第二步、创建jwt仓库配置类第三步、创建UserDetailsService类第四步、创建认证服务器配置类 四、测试认证服务器的功能 1.创建Login…

【简单讲解下FastStone Capture】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

React的数据Mock实现

在前后端分类的开发模式下,前端可以在没有实际后端接口的支持下先进行接口数据的模拟,进行正常的业务功能开发 1. 常见的Mock方式 2. json-server实现Mock 实现步骤: 项目中安装json-server npm i -D json-server准备一个json文件 {"…

Jammy@Jetson Orin Nano - Tensorflow GPU版本安装

JammyJetson Orin Nano - Tensorflow GPU版本安装 1. 源由2. 问题3. 分析3.1 当前版本Tensorflow 2.16.13.2 GPU版本二进制安装3.3 GPU版本源代码安装3.3.1 问题1 ERROR: no such target //tensorflow/tools/pip_package:wheel3.3.2 问题2 fatal error: cstddef file not found…

数据结构(八)----树

目录 一.树的逻辑结构 1.双亲表示法(顺序存储) 2.孩子表示法(顺序链式存储) 3.孩子兄弟表示法(链式存储) 二.树的遍历 1.先根遍历 2.后根遍历 3.层次遍历 三.森林的遍历 1.森林的先序遍历 2.森林的中序遍历 四.哈夫曼…

Flutter创建自定义的软键盘

参考代码: Flutter - Create Custom Keyboard Examples 本文贴出的代码实现了一个输入十六进制数据的键盘: (1)支持长按退格键连续删除字符; (2)可通过退格键删除选中的文字; &…

《HelloGitHub》第 97 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、…

护航智慧交通安全 | 聚铭精彩亮相2024交通科技创新及信创产品推广交流会

4月26日,石家庄希尔顿酒店内,河北省智能交通协会盛大举办2024年度交通科技创新及信创产品推广交流会。聚铭网络受邀参与,携旗下安全产品及解决方案精彩亮相,为智慧交通安全保驾护航。 为深化高速公路创新驱动发展战略&#xff0…