本文共 11611 字,大约阅读时间需要 38 分钟。
开门见山,此篇文章向大家分享一个我个人开发的代码,主要实现在线模拟操作系统的几个小实验,可以说是一个在线的模拟平台(项目文件传至资源,可自行下载,私戳我也可以获取)
项目文件
平台具有一定的局限性,只能模拟以下四个实验
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.1 实验目的
对内存管理的相关内容做进一步的理解。了解内存管理的主要任务。 了解内存管理任务的主要实现方法。通过编程加深理解内存的分配、回收等主要算法的原理。 3.2 实验说明 1、在该实验中,采用可变分区方式完成对存储空间的管理(即存储空间的分配与回收工作)。 2、设计用来记录主存使用情况的数据结构:已分区表和空闲分区表。 3、在设计好的数据结构上设计一个主存分配算法,要求实现的基本功能操作有:寻找空闲分区、空闲分区表的修改、已分区表的修改。 4、在设计好的数据结构上设计一个主存回收算法。其中,若回收的分区有上邻空闲分区和(或)下邻空闲分区,要求合并为一个空闲分区登记在空闲分区表的一个表项里。 5、系统每进行一次分配或回收,都要给出内存映像图或已分配表及未分配表以观察内存的变化。4.1 实验目的
加深对于操作系统设备管理技术的了解,体验磁盘移臂调度算法的重要性;掌握几种重要的磁盘移臂调度算法,练习模拟算法的编程技巧,锻炼研究分析试验数据的能力。 4.2 实验说明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;
主存初始状态 主存为空(最小可用单元8bt,可用单元共1024bt)
添加3个进程ABC,为其分配空间根据fist-ft,算法依次为ABC分配空间,得到如图所示分区表。
回收一个进程B的空间,如图,B所占用主存空间被回收 添加一个进程D,为其分配空间 根据D所需要的主存空间,第一个空闲分区正好满足要求。添加一个进程E,为其分配空间
根据E所需要的主存空间,第一个空闲分区不能满足要求,找到第一个可放入次进程的空闲分区为其分配空间。
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/