基于PyQt5实现的python模拟操作系统动态分配分区方式程序

基于PyQt5实现的python模拟操作系统动态分配分区方式程序 [TOC] 1, 使用说明 1,1 项目简介 为加深对于操作系统内存管理内容的理解

本文包含相关资料包-----> 点击直达获取<-------

基于PyQt5实现的python模拟操作系统动态分配分区方式程序

[TOC]

1. 使用说明

1.1 项目简介

为加深对于操作系统内存管理内容的理解,设计实现一个模拟动态分区分配方式的模拟程序。

1.2 项目目的

  • 实现动态分区分配方式的模拟程序

  • 设计数据结构、学习分配算法

  • 加深对动态分区存储管理方式及其实现过程的理解

1.3 项目功能要求

1.3.1 基本任务

动态分区分配方式的模拟

1.3.2 功能描述

假设初始态下,可用内存空间为640K,并有下列请求序列,请分别用首次适应算法和最佳适应算法进行内存块的分配和回收,并显示出每次分配和回收后的空闲分区链的情况来。

1.4 窗口内容

2. 程序设计与实现

2.1 设计

2.1.1开发环境及语言

  • 开发环境 :pycharm

  • 开发语言 :python

本项目采用PyQt5实现图形化用户界面,达到可视化的目的。

2.1.2 算法设计

首次适应算法(First Fit)

该算法从空闲分区链首开始查找,直至找到一个能满足其大小要求的空闲分区为止。然后再按照作业的大小,从该分区中划出一块内存分配给请求者,余下的空闲分区仍留在空闲分区链中。

  • 特点 : 该算法倾向于使用内存中低地址部分的空闲区,在高地址部分的空闲区很少被利用,从而保留了高地址部分的大空闲区。显然为以后到达的大作业分配大的内存空间创造了条件

  • 缺点 :低地址部分不断被划分,留下许多难以利用、很小的空闲区,而每次查找又都从低地址部分开始,会增加查找的开销

最佳适应算法(Best Fit)

该算法总是把既能满足要求,又是最小的空闲分区分配给作业。为了加速查找,该算法要求将所有的空闲区按其大小排序后,以递增顺序形成一个空白链。这样每次找到的第一个满足要求的空闲区,必然是最优的。孤立地看,该算法似乎是最优的,但事实上并不一定。因为每次分配后剩余的空间一定是最小的,在存储器中将留下许多难以利用的小空闲区。同时每次分配后必须重新排序,这也带来了一定的开销。

  • 特点 :每次分配给文件的都是最合适该文件大小的分区

  • 缺点 :内存中留下许多难以利用的小的空闲区。

  • 参考 :https://blog.csdn.net/weixin_39282491/article/details/81045441

2.1.3 数据结构设计

采用python的list结构来模拟分区链表

2.1.4 类结构设计

UI类

python class Ui_MainWindow(object):

类成员

python def setupUi(self, MainWindow): # 设置主窗口UI,加载所需的背景,button以及Label

主逻辑窗口类

python class myWindow(QtWidgets.QMainWindow):

类成员

属性

python self.ui = Ui_MainWindow() # UI类的实例化 self.isbestFit = False # 标志是否选择bestFit识别API self.workNumber = 0 # 作业个数 self.nodeList = [] # 结点链表

方法

python # firstFit从未选状态转变为已选状态时会触发firstFitbar_recognize函数 def firstFitbar_recognize(self): # bestFit从未选状态转变为已选状态时会触发bestFitbar_recognize函数 def bestFitbar_recognize(self): # 重置内存空间函数 def clear(self): # 寻找首次适应算法添加结点的位置 def findFirstNode(self, length): # 寻找最佳适应算法添加结点的位置 def findBestNode(self, length): # 添加结点 def addNode(self, length): # 删除作业结点 def deleteNode(self, workNumber): # 加入作业 def addButton(self, node=[]): #文本处理函数 def text_changed(self):

2.2 算法实现

首次适应算法

最佳适应算法

```python

寻找首次适应算法添加结点的位置

def findFirstNode(self, length):
    self.targetNumber = -1
    for i in range(0, len(self.nodeList)):
        # 如果结点i为空闲
        if self.nodeList[i]['isnull'] and self.nodeList[i]['length'] >= length:
            self.targetNumber = i
            return self.targetNumber
    return -1

# 寻找最佳适应算法添加结点的位置
def findBestNode(self, length):
    self.min = 650
    self.targetNumber = -1
    for i in range(0, len(self.nodeList)):
        # 如果结点i为空闲
        if self.nodeList[i]['isnull'] and (self.min > self.nodeList[i]['length'] >= length):
            self.min = self.nodeList[i]['length']
            self.targetNumber = i
    return self.targetNumber

```

参考文献

  • 基于.NET的预测决策算法研究及系统实现(暨南大学·张科)
  • 拆迁安置管理系统的设计与实现(电子科技大学·王李均)
  • 拆迁安置管理系统的设计与实现(电子科技大学·王李均)
  • 基于SSH架构的个人空间交友网站的设计与实现(北京邮电大学·隋昕航)
  • 基于SSH架构的个人空间交友网站的设计与实现(北京邮电大学·隋昕航)
  • 基于B/S架构的酷跑社区系统的设计与实现(内蒙古大学·张晓乐)
  • 基于Oracle 11g的仓库管理系统的设计与实现(曲阜师范大学·付海龙)
  • 拆迁安置管理系统的设计与实现(电子科技大学·王李均)
  • 昆明市五华区电子政务系统设计与实现(电子科技大学·庄研)
  • 基于JAVA EE物流管理系统的设计与实现(吉林大学·刘知学)
  • 分布式共享存储器系统的设计与实现(吉林大学·付晓东)
  • 东营市数据交换共享系统(北京交通大学·韩影)
  • 基于数据库的供应链管理系统的设计与实现(吉林大学·刘坤)
  • 基于Actor模型的广域分布式爬虫的设计与实现(北京邮电大学·陈凌鹏)
  • 基于J2EE的分布式技术的研究与设计(武汉理工大学·谢承旺)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码导航 ,原文地址:https://bishedaima.com/yuanma/35588.html

相关推荐

  • 基于python的中文聊天机器人

    基于python的中文聊天机器人 前言 发布这篇 Chat 的初衷是想和各位一起分享一下动手来做聊天机器人的乐趣,因此本篇文章适合用于深度机器学习的研究和兴趣发展
    2024年05月14日
    2 1 1
  • 基于JavaWeb的师资管理系统源码SSM框架实现

    这是一个🔥🔥基于JavaWeb的师资管理系统源码SSM框架实现🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 师资管理系统源码SSM框架实现开发技术栈为SSM项目
    2024年05月23日
    4 1 1
  • 新手python简单的飞机游戏

    game 一个新手做的python简单的飞机游戏 参考文献 基于Java EE的个人博客管理系统的设计和实现(内蒙古大学·闫伟光) 深度可定制的工具化爬虫系统的设计与实现(北京邮电大学·李笑语) 航空订票服务器爬虫检测技术研究(杭州电子科技大学·陈万烤) 主题爬虫关键技术研究(哈尔滨工程大学·黄正德) 机票票价预测系统设计与实现(大连理工大学·陈岩松) 深度可定制的工具化爬虫系统的设计与实现(北京邮电大学·李笑语) 基于SSH架构的个人空间交友网站的设计与实现(北京邮电大学·隋昕航) 基于B/S架构的酷跑社区系统的设计与实现(内蒙古大学·张晓乐) 基于SSH架构的个人空间交友网站的设计与实现(北京邮电大学·隋昕航) 机票票价预测系统设计与实现(大连理工大学·陈岩松) 山东航空货运业务管理系统的设计与实现(山东大学·高辉) 飞行情报资料管理信息系统设计与实现(中国地质大学(北京)·张晓琴) 山东航空货运业务管理系统的设计与实现(山东大学·高辉) 豆玩手机游戏平台的设计与实现(吉林大学·李天明) 面向高职信息技术教育的严肃游戏设计与实施(大连理工大学·王晓姝)
    2024年05月14日
    1 1 1
  • 基于JSP和MySQL的汽车销售管理系统

    基于JSP和MySQL的汽车销售管理系统 一,系统开发平台 1,1 数据库应用的基本框架 本汽车销售管理系统采用B/S架构, 服务器端是一个Web服务器和数据库服务器的组合体
    2024年05月14日
    19 1 4
  • 基于SSM框架的保险理赔管理系统源码

    基于SSM框架的保险理赔管理系统源码 随着互联网的快速发展,保险行业也在不断创新和发展,为了更好地适应市场需求和提升服务质量,保险理赔管理系统应运而生,本系统采用SSM(Spring+SpringMVC+MyBatis)框架
    2024年05月07日
    6 1 3
  • 基于SSH框架的在线宠物商城网站源码+论文

    这是一个🔥🔥基于SSH框架的在线宠物商城网站源码+论文🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 在线宠物商城开发技术栈为SSH项目,可以作为毕业设计课程设计作业基于SSH框架实现一个宠物网站或者一个宠物在线商城
    2024年05月23日
    10 1 4
  • python数据分析

    python数据分析(1)——数据质量分析 1, 前言 数据质量分析是数据挖掘中数据预处理的前提,主要任务是检查脏数据, 脏数据包括: 缺失值 异常值 不一致的值 重复数据或者含有特殊符号(#
    2024年05月14日
    1 1 1
  • 基于Python实现聚类算法

    一,理论知识 1,1 K-Means 给定一组数据集,聚类算法将它们分成不同的子组,我们希望类内实例高度相似,类间实例低相似, 在样本集中,随机选取K个点作为中心$\bold \mu_k$
    2024年05月14日
    3 1 1
  • 植物大战僵尸之Python

    植物大战僵尸 项目主要内容与目标 模仿设计并实现基于面向对象思想的一个简单版控制台植物大战僵尸, 植物设计包含向日葵, 普通豌豆射手, 双发豌豆射手, 寒冰豌豆射手
    2024年05月14日
    1 1 1
  • 基于Jsp和MySQL实现的爱看电影网网站

    基于Jsp和MySQL实现的爱看电影网网站 1,引言 1,1 编写目的 本说明书在概要设计的基础上,对影片管理系统的各模块,程序,子系统分别进行了实现层面上的要求和说明
    2024年05月14日
    18 1 3

发表回复

登录后才能评论