操作系统模拟实验

2023-11-10 00:10
文章标签 操作系统 模拟实验

本文主要是介绍操作系统模拟实验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开门见山,此篇文章向大家分享一个我个人开发的代码,主要实现在线模拟操作系统的几个小实验,可以说是一个在线的模拟平台(项目文件传至资源,可自行下载,私戳我也可以获取)

项目文件https://download.csdn.net/download/siper12138/19785232?spm=1001.2014.3001.5503

平台具有一定的局限性,只能模拟以下四个实验

2处理器调度(20分)

1.1 实验目的
熟悉使用各种单处理器调度的各种算法,加深对于处理机调度机制的理解。练习模拟算法的编程技巧,锻炼分析试验数据的能力。
1.2 实验说明
随机给出一个进程调度实例,如:
进程 到达时间 服务时间
A 0 3
B 2 6
C 4 4
D 6 5
E 8 2
模拟进程调度,给出按照算法先来先服务FCFS、轮转RR(q=1)、最短进程优先SJF(非抢占方式)、最高响应比优先HRN(非抢占方式)进行调度各进程的完成时间、周转时间、带权周转时间。

3 存储管理上机作业(20分)

3.1 实验目的
对内存管理的相关内容做进一步的理解。了解内存管理的主要任务。 了解内存管理任务的主要实现方法。通过编程加深理解内存的分配、回收等主要算法的原理。
3.2 实验说明
1、在该实验中,采用可变分区方式完成对存储空间的管理(即存储空间的分配与回收工作)。
2、设计用来记录主存使用情况的数据结构:已分区表和空闲分区表。
3、在设计好的数据结构上设计一个主存分配算法,要求实现的基本功能操作有:寻找空闲分区、空闲分区表的修改、已分区表的修改。
4、在设计好的数据结构上设计一个主存回收算法。其中,若回收的分区有上邻空闲分区和(或)下邻空闲分区,要求合并为一个空闲分区登记在空闲分区表的一个表项里。
5、系统每进行一次分配或回收,都要给出内存映像图或已分配表及未分配表以观察内存的变化。

4 磁盘移臂调度算法实验(20分)

4.1 实验目的
加深对于操作系统设备管理技术的了解,体验磁盘移臂调度算法的重要性;掌握几种重要的磁盘移臂调度算法,练习模拟算法的编程技巧,锻炼研究分析试验数据的能力。
4.2 实验说明

  1. 示例实验程序中模拟两种磁盘移臂调度算法:SSTF算法和SCAN算法
  2. 能对两种算法给定任意序列不同的磁盘请求序列,显示响应磁盘请求的过程。
  3. 能统计和报告不同算法情况下响应请求的顺序、移臂的总量。

5文件管理作业(20分)

5.1 实验目的
通过模拟文件的创建、删除操作,加深对于操作系统文件管理功能的了解,练习模拟算法的编程技巧,锻炼研究分析试验数据的能力。
5.2 实验说明
给出一个磁盘块序列:1、2、3、……、500,初始状态所有块为空的,每块的大小为2k。选择使用空闲表、空闲盘区链、位示图三种算法之一来管理空闲块。对于基于块的索引分配执行以下步骤:
(1)随机生成2k-10k的文件50个,文件名为1.txt、2.txt、……、50.txt,按照上述算法存储到模拟磁盘中。
(2)删除奇数.txt(1.txt、3.txt、……、49.txt)文件
(3)新创建5个文件(A.txt、B.txt、C.txt、D.txt、E.txt),大小为:7k、5k、2k、9k、3.5k,按照与(1)相同的算法存储到模拟磁盘中。
(4)给出文件A.txt、B.txt、C.txt、D.txt、E.txt的盘块存储状态和所有空闲区块的状态。

准备工作

1.安装外部库文件
在这里插入图片描述
需要安装以下库文件:

Click==7.0
Flask==1.0.2
itsdangerous==1.1.0
Jinja2==2.10
MarkupSafe==1.1.0
passlib==1.7.1
PyMySQL==0.9.3
Werkzeug==0.14.1
WTForms==2.2.1

2.建立数据库
数据库名称:osmode
数据库建立:

/*Navicat Premium Data TransferSource Server         : homework1Source Server Type    : MySQLSource Server Version : 80017Source Host           : localhost:3306Source Schema         : osmodeTarget Server Type    : MySQLTarget Server Version : 80017File Encoding         : 65001Date: 15/06/2021 09:10:17
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for ccgl_list
-- ----------------------------
DROP TABLE IF EXISTS `ccgl_list`;
CREATE TABLE `ccgl_list`  (`id` int(11) NOT NULL AUTO_INCREMENT,`usename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`tp` int(10) NULL DEFAULT NULL,`state` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for ccgl_wfplist
-- ----------------------------
DROP TABLE IF EXISTS `ccgl_wfplist`;
CREATE TABLE `ccgl_wfplist`  (`id` int(10) NOT NULL AUTO_INCREMENT,`usename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`s` int(10) NULL DEFAULT NULL,`r` int(10) NULL DEFAULT NULL,`e` int(10) NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 270 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for ccgl_yfplist
-- ----------------------------
DROP TABLE IF EXISTS `ccgl_yfplist`;
CREATE TABLE `ccgl_yfplist`  (`id` int(11) NOT NULL AUTO_INCREMENT,`usename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`jname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`j_r` int(10) NULL DEFAULT NULL,`s` int(10) NULL DEFAULT NULL,`r` int(10) NULL DEFAULT NULL,`e` int(10) NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 56 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for cljdd_fcfs_result
-- ----------------------------
DROP TABLE IF EXISTS `cljdd_fcfs_result`;
CREATE TABLE `cljdd_fcfs_result`  (`jname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`st` int(10) NOT NULL,`et` int(10) NOT NULL,`zt` int(10) NOT NULL,`dqzt` float NOT NULL,`usename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`ctime` datetime NOT NULL,`dt` int(10) NOT NULL,`ft` int(10) NOT NULL,PRIMARY KEY (`jname`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for cljdd_hrn_result
-- ----------------------------
DROP TABLE IF EXISTS `cljdd_hrn_result`;
CREATE TABLE `cljdd_hrn_result`  (`jname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`st` int(10) NOT NULL,`et` int(10) NOT NULL,`zt` int(10) NOT NULL,`dqzt` float NOT NULL,`usename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`ctime` datetime NOT NULL,`dt` int(10) NOT NULL,`ft` int(10) NOT NULL,PRIMARY KEY (`jname`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for cljdd_j
-- ----------------------------
DROP TABLE IF EXISTS `cljdd_j`;
CREATE TABLE `cljdd_j`  (`id` int(8) NOT NULL AUTO_INCREMENT,`Jname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`dt` int(8) NOT NULL,`ft` int(8) NOT NULL,`usename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`c_time` datetime NOT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 54 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for cljdd_rr_result
-- ----------------------------
DROP TABLE IF EXISTS `cljdd_rr_result`;
CREATE TABLE `cljdd_rr_result`  (`jname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`st` int(10) NOT NULL,`et` int(10) NOT NULL,`zt` int(10) NOT NULL,`dqzt` float NOT NULL,`usename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`ctime` datetime NOT NULL,`dt` int(10) NOT NULL,`ft` int(10) NOT NULL,PRIMARY KEY (`jname`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for cljdd_rr_state
-- ----------------------------
DROP TABLE IF EXISTS `cljdd_rr_state`;
CREATE TABLE `cljdd_rr_state`  (`t` int(10) NOT NULL,`jname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`state` int(10) NOT NULL,`usename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`ctime` datetime NOT NULL,`id` int(11) NOT NULL AUTO_INCREMENT,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2449 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for cljdd_sjf_result
-- ----------------------------
DROP TABLE IF EXISTS `cljdd_sjf_result`;
CREATE TABLE `cljdd_sjf_result`  (`jname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`st` int(10) NOT NULL,`et` int(10) NOT NULL,`zt` int(10) NOT NULL,`dqzt` float NOT NULL,`usename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`ctime` datetime NOT NULL,`dt` int(10) NOT NULL,`ft` int(10) NOT NULL,PRIMARY KEY (`jname`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for cpyb_c
-- ----------------------------
DROP TABLE IF EXISTS `cpyb_c`;
CREATE TABLE `cpyb_c`  (`id` int(10) NOT NULL AUTO_INCREMENT,`cidao` int(10) NOT NULL,`ctime` datetime NOT NULL,`usename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 30 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for cpyb_scan_result
-- ----------------------------
DROP TABLE IF EXISTS `cpyb_scan_result`;
CREATE TABLE `cpyb_scan_result`  (`cidao` int(10) NOT NULL,`usename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`ctime` datetime NOT NULL,`stemp` int(10) NOT NULL,`t` int(10) NOT NULL,PRIMARY KEY (`t`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for cpyb_sstf_result
-- ----------------------------
DROP TABLE IF EXISTS `cpyb_sstf_result`;
CREATE TABLE `cpyb_sstf_result`  (`cidao` int(10) NOT NULL,`usename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`ctime` datetime NOT NULL,`stemp` int(10) NOT NULL,`t` int(10) NOT NULL,PRIMARY KEY (`t`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users`  (`id` int(8) NOT NULL AUTO_INCREMENT,`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for wjgl_list
-- ----------------------------
DROP TABLE IF EXISTS `wjgl_list`;
CREATE TABLE `wjgl_list`  (`id` int(11) NOT NULL AUTO_INCREMENT,`usename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`tp` int(10) NULL DEFAULT NULL,`state` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 651 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for wjgl_wfplist
-- ----------------------------
DROP TABLE IF EXISTS `wjgl_wfplist`;
CREATE TABLE `wjgl_wfplist`  (`id` int(10) NOT NULL AUTO_INCREMENT,`usename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`s` int(10) NULL DEFAULT NULL,`r` int(10) NULL DEFAULT NULL,`e` int(10) NULL DEFAULT NULL,`sk` int(10) NULL DEFAULT NULL,`ek` int(10) NULL DEFAULT NULL,`rk` int(10) NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 269 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for wjgl_yfplist
-- ----------------------------
DROP TABLE IF EXISTS `wjgl_yfplist`;
CREATE TABLE `wjgl_yfplist`  (`id` int(11) NOT NULL AUTO_INCREMENT,`usename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`jname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`j_r` int(10) NULL DEFAULT NULL,`s` int(10) NULL DEFAULT NULL,`r` int(10) NULL DEFAULT NULL,`e` int(10) NULL DEFAULT NULL,`sk` int(10) NULL DEFAULT NULL,`ek` int(10) NULL DEFAULT NULL,`rk` int(10) NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 56 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;SET FOREIGN_KEY_CHECKS = 1;

操作说明

在这里插入图片描述
1.用户注册
在这里插入图片描述
2.用户登录
在这里插入图片描述
3.登录之后即可进入主页即可选择要进行模拟的实验
在这里插入图片描述

(1)处理器调度

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)存储管理

主存初始状态 主存为空(最小可用单元8bt,可用单元共1024bt)
在这里插入图片描述

添加3个进程ABC,为其分配空间根据fist-ft,算法依次为ABC分配空间,得到如图所示分区表。
在这里插入图片描述
回收一个进程B的空间,如图,B所占用主存空间被回收
在这里插入图片描述
添加一个进程D,为其分配空间
在这里插入图片描述
根据D所需要的主存空间,第一个空闲分区正好满足要求。

添加一个进程E,为其分配空间
在这里插入图片描述

根据E所需要的主存空间,第一个空闲分区不能满足要求,找到第一个可放入次进程的空闲分区为其分配空间。

(3)存储管理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4)文件管理

1.磁盘初始状态为空
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.随机生成2k-10k的文件50个,文件名为1.txt、2.txt、……、50.txt,按照上述算法存储到模拟磁盘中。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.删除奇数.txt(1.txt、3.txt、……、49.txt)文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.新创建5个文件(A.txt、B.txt、C.txt、D.txt、E.txt),大小为:7k、5k、2k、9k、3.5k,按照与(1)相同的算法存储到模拟磁盘中。
在这里插入图片描述
在这里插入图片描述
5.给出文件A.txt、B.txt、C.txt、D.txt、E.txt的盘块存储状态和所有空闲区块的状态。
在这里插入图片描述

这篇关于操作系统模拟实验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/379270

相关文章

Linux操作系统 初识

在认识操作系统之前,我们首先来了解一下计算机的发展: 计算机的发展 世界上第一台计算机名叫埃尼阿克,诞生在1945年2月14日,用于军事用途。 后来因为计算机的优势和潜力巨大,计算机开始飞速发展,并产生了一个当时一直有效的定律:摩尔定律--当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。 那么相应的,计算机就会变得越来越快,越来越小型化。

1、简述linux操作系统启动流程

1、简述linux操作系统启动流程 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。开机时将ROM中的指令映射到RAM的低地址空间,CPU读取到这些指令,硬件的健康状况进行检查,按照BIOS中设置的启

操作系统是怎么为不同的程序分配所需的内存空间的

操作系统为不同的程序分配内存空间的过程涉及多个关键步骤,确保每个程序都有其所需的内存资源,同时避免程序之间的冲突。以下是操作系统如何为程序分配内存空间的详细过程: 1. 内存管理的基础概念 虚拟内存:现代操作系统使用虚拟内存机制来为程序提供隔离的内存空间。每个程序运行在其独立的虚拟地址空间中,这使得程序间的内存互不干扰。物理内存:实际的 RAM(随机存取存储器),由操作系统和硬件共同管理。虚拟

操作系统安全保护

操作系统安全概述 概念:满足安全策略要求,具有响应安全机制及安全功符合特定安全标准,在一定约束条件下 能抵御常见网络安全威胁,保障自身安全运行及资源安全 安全等级:根据安全功能和安全保障要求分为 用户自主保护级  系统审计保护级 安全标记保护级 结构化保护级 访问验证保护级 操作系统作用: 负责计算系统的资源管理、支撑和控制各种应用程序运行,为用户提供计算机系统管理接口 是构成网络信息

Linux操作系统命令集(一)

最近开了操作系统的课,弄着虚拟机的linux系统命令学学 文件和目录操作命令: ls:列出目录内容 示例:ls -l 以长格式列出目录内容cd:切换目录 示例:cd /home/user 切换到 /home/user 目录mkdir:创建目录 示例:mkdir new_directory 创建名为 new_directory 的目录rmdir:删除空目录touch:创建空文件或更新文件的时间戳

操作系统分页式存储管理

每次输入地址后,计算出页号,若页号越界,则给出错误提示。否则依次调用FIFO和LRU算法,这里值得注意的是,由于我们的FIFO算法先于LRU算法被调用,那么当在处理FIFO算法时,我们暂且不将位视图相应位置做变化,留到处理LRU算法再做处理。 对于FIFO、LRU算法的缺页,我们分两种情况考虑,第一种是模拟栈内还有空间,那么直接将其入栈。第二种是模拟栈内无空间,要发生置换。发生置换时把模拟栈最底

linux定时监听ssh服务是否启动-------麒麟操作系统永久关闭swap

linux监听ssh服务是否启动 1、监听脚本2、定时任务3、麒麟操作系统,永久关闭swap 1、监听脚本 #在/usr/local/bin目录下新建脚本文件 cd /usr/local/bintouch check_sshd.sh#给可执行权限chmod +x /usr/local/bin/check_sshd.sh 脚本内容如下: #!/bin/bashs

【银河麒麟高级服务器操作系统实例】虚拟化平台系统服务中断现象分析及处理建议

服务器环境以及配置 【机型】虚机 处理器: Kunpeng-920 内存: 40G 【内核版本】 4.19.90-23.8.v2101.ky10.aarch64 【OS镜像版本】 银河麒麟操作系统 Kylin-Server-10-SP1-Release-Build20-20210518-arm64 【第三方软件】 智能运维系统、mysql数据集群 现象描述 环境描

VMware17 虚拟机下载以及 CentOS8 操作系统安装配置 一条龙全教程

目录 一、安装 vmware workstation 虚拟机  二、安装 CentOS8 操作系统 三、安装 FinalShell 远程连接 一、安装 vmware workstation 虚拟机     安装中...(耐心等待)  到此安装完成,点击启动运行  激活码如下:  MC60H-DWHD5-H80U9-6V85M-8280D

操作系统之虚拟机

虚拟机(Virtual Machine, VM)是一种通过虚拟化技术将一台物理计算机虚拟化为多个独立的虚拟计算机的技术。每个虚拟机都可以运行自己的操作系统,仿佛它们是独立的物理计算机。虚拟机的引入大大提高了计算资源的利用率,并提供了更大的灵活性。 虚拟机的定义 虚拟机是通过虚拟化技术在一台物理计算机上创建的多个虚拟计算环境。每个虚拟环境(虚拟机)都可以运行一个独立的操作系统和应用程序,仿