博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
操作系统模拟实验
阅读量:4104 次
发布时间:2019-05-25

本文共 11611 字,大约阅读时间需要 38 分钟。

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

项目文件

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

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.0Flask==1.0.2itsdangerous==1.1.0Jinja2==2.10MarkupSafe==1.1.0passlib==1.7.1PyMySQL==0.9.3Werkzeug==0.14.1WTForms==2.2.1

2.建立数据库

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

/* Navicat Premium Data Transfer Source Server         : homework1 Source Server Type    : MySQL Source Server Version : 80017 Source Host           : localhost:3306 Source Schema         : osmode Target Server Type    : MySQL Target Server Version : 80017 File Encoding         : 65001 Date: 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://nufsi.baihongyu.com/

你可能感兴趣的文章
Android经典的大牛博客推荐
查看>>
Java之开发者的十大戒律
查看>>
2009年西电计算机研究生复试上机题(4)
查看>>
算法之中缀表达式和后缀表达式
查看>>
ACM进阶之路
查看>>
Android 仿QQ主页
查看>>
牛人博客收集
查看>>
阿里巴巴2013笔试题
查看>>
题目1016: Prime Ring Problem
查看>>
题目26: 孪生素数问题
查看>>
题目1072: 括号匹配问题
查看>>
题目1100: 简单计算器
查看>>
题目1106: 哈夫曼树
查看>>
算法之优先级队列
查看>>
题目1873: 看病要排队
查看>>
题目1084: 二叉树遍历
查看>>
题目1073: 搬水果
查看>>
题目1104: 二叉排序树
查看>>
题目1105: 二叉搜索树
查看>>
计算机复试上机题解题报告
查看>>