2701: 【操作系统】实验五 - 存储器管理模拟程序(Hard)
金币值:10
定数:9
时间限制:1.000 s
内存限制:128 M
正确:1
提交:1
正确率:100.00% 命题人:
题目描述
此题与 $Easy$ 的区别是采用最优存储策略,即优先分配空间较小的分区以减少碎片化。
当每个分区都获得空间后,给出 $4$ 个操作选项:
$1$.为某个进程申请内存空间;
$2$.释放某个分区的空间;
$3$.显示当前的分区表;
$4$.退出程序。
结构体示例:
实验目标
设计一个程序,模拟存储器的存储过程。
一、程序思想
现规定总共有 $1024MB$ 的空间大小,有 $10$ 个分区共同占有这些空间。我想通过为某一进程申请空间,使得该进程被分往哪个分区。或者释放分区从而重新获得所有空间。二、实验过程
首先,输入每个分区的大小。(分区号从 $0$ 开始)当每个分区都获得空间后,给出 $4$ 个操作选项:
$1$.为某个进程申请内存空间;
$2$.释放某个分区的空间;
$3$.显示当前的分区表;
$4$.退出程序。
结构体示例:
typedef struct sp{ int id; int address; int size; int status; } ZHT;
输入样例 复制
200
10
150
50
20
30
100
200
10
254
1
10
3
2
0
3
2
1
3
0
输出样例 复制
剩余分区为:1024
请输入第0个分区的大小:剩余分区为:824
请输入第1个分区的大小:剩余分区为:814
请输入第2个分区的大小:剩余分区为:664
请输入第3个分区的大小:剩余分区为:614
请输入第4个分区的大小:剩余分区为:594
请输入第5个分区的大小:剩余分区为:564
请输入第6个分区的大小:剩余分区为:464
请输入第7个分区的大小:剩余分区为:264
请输入第8个分区的大小:剩余分区为:254
请输入第9个分区的大小:请输入操作选项:
1:申请内存空间
2:释放内存空间
3:显示当前内存空间表
0:退出程序
输入选择:请输入所需的内存大小:内存分配成功!
请输入操作选项:
1:申请内存空间
2:释放内存空间
3:显示当前内存空间表
0:退出程序
输入选择:分区号 地址 大小 状态
0 0 200 未分配
1 200 0 已分配
2 210 150 未分配
3 360 50 未分配
4 410 20 未分配
5 430 30 未分配
6 460 100 未分配
7 560 200 未分配
8 760 10 未分配
9 770 254 未分配
请输入操作选项:
1:申请内存空间
2:释放内存空间
3:显示当前内存空间表
0:退出程序
输入选择:请输入释放的分区号:第0个分区释放成功!
请输入操作选项:
1:申请内存空间
2:释放内存空间
3:显示当前内存空间表
0:退出程序
输入选择:分区号 地址 大小 状态
0 0 200 未分配
1 200 0 已分配
2 210 150 未分配
3 360 50 未分配
4 410 20 未分配
5 430 30 未分配
6 460 100 未分配
7 560 200 未分配
8 760 10 未分配
9 770 254 未分配
请输入操作选项:
1:申请内存空间
2:释放内存空间
3:显示当前内存空间表
0:退出程序
输入选择:请输入释放的分区号:第1个分区释放成功!
请输入操作选项:
1:申请内存空间
2:释放内存空间
3:显示当前内存空间表
0:退出程序
输入选择:分区号 地址 大小 状态
0 0 200 未分配
1 200 10 未分配
2 210 150 未分配
3 360 50 未分配
4 410 20 未分配
5 430 30 未分配
6 460 100 未分配
7 560 200 未分配
8 760 10 未分配
9 770 254 未分配
请输入操作选项:
1:申请内存空间
2:释放内存空间
3:显示当前内存空间表
0:退出程序
输入选择:
提示
温馨提示
你的运行窗口的运行信息依照样例数据应该是这样的,不必查看样例输入输出的内容:剩余分区为:1024 请输入第0个分区的大小:200 剩余分区为:824 请输入第1个分区的大小:10 剩余分区为:814 请输入第2个分区的大小:150 剩余分区为:664 请输入第3个分区的大小:50 剩余分区为:614 请输入第4个分区的大小:20 剩余分区为:594 请输入第5个分区的大小:30 剩余分区为:564 请输入第6个分区的大小:100 剩余分区为:464 请输入第7个分区的大小:200 剩余分区为:264 请输入第8个分区的大小:10 剩余分区为:254 请输入第9个分区的大小:254 请输入操作选项: 1:申请内存空间 2:释放内存空间 3:显示当前内存空间表 0:退出程序 输入选择:1 请输入所需的内存大小:10 内存分配成功! 请输入操作选项: 1:申请内存空间 2:释放内存空间 3:显示当前内存空间表 0:退出程序 输入选择:3 分区号 地址 大小 状态 0 0 200 未分配 1 200 0 已分配 2 210 150 未分配 3 360 50 未分配 4 410 20 未分配 5 430 30 未分配 6 460 100 未分配 7 560 200 未分配 8 760 10 未分配 9 770 254 未分配 请输入操作选项: 1:申请内存空间 2:释放内存空间 3:显示当前内存空间表 0:退出程序 输入选择:2 请输入释放的分区号:0 第0个分区释放成功! 请输入操作选项: 1:申请内存空间 2:释放内存空间 3:显示当前内存空间表 0:退出程序 输入选择:3 分区号 地址 大小 状态 0 0 200 未分配 1 200 0 已分配 2 210 150 未分配 3 360 50 未分配 4 410 20 未分配 5 430 30 未分配 6 460 100 未分配 7 560 200 未分配 8 760 10 未分配 9 770 254 未分配 请输入操作选项: 1:申请内存空间 2:释放内存空间 3:显示当前内存空间表 0:退出程序 请输入释放的分区号:1 第1个分区释放成功! 请输入操作选项: 1:申请内存空间 2:释放内存空间 3:显示当前内存空间表 0:退出程序 输入选择:3 分区号 地址 大小 状态 0 0 200 未分配 1 200 10 未分配 2 210 150 未分配 3 360 50 未分配 4 410 20 未分配 5 430 30 未分配 6 460 100 未分配 7 560 200 未分配 8 760 10 未分配 9 770 254 未分配 请输入操作选项: 1:申请内存空间 2:释放内存空间 3:显示当前内存空间表 0:退出程序 输入选择:0