资源简介
代码主体非本人原创,由于测试中发现问题经本人修改后上传。原资源:https://blog.csdn.net/houchaoqun_xmu/article/details/55541299
该资源VS2010下可直接使用。优化了原代码中当出现请求内存块大小大于现有内存块大小时无法分配内存崩溃的现象。可实现首次适应算法,循环首次适应算法,最佳适应算法,最坏适应算法
代码片段和文件信息
#include
#include
#include
#include
#include
using namespace std;
int maxsize;
int k[50];
typedef struct memory
{
bool flage;
string name;
int start;
int size;
memory *front;
memory *next;
}rd;
rd *line = new rd;
/*
struct node
{
string name;
string operate;
int size;
}node1node2;
*/
void init()
{
line->flage = 0;
line->name = “空“;
line->start = 0;
line->size = maxsize;
line->front = NULL;
line->next = NULL;
}
void display()
{
rd *di = new rd;
di = line;
while (di != NULL)
{
cout << di->flage << “ “ << di->name << “ “ << di->start << “ “ << di->size << endl;
di = di->next;
}
/*
while (q->front != NULL)
{
cout << q->front->flage << “ “ << q->front->name << “ “ << q->front->start << “ “ << q->front->size << endl;
q = q->front;
}
*/
}
void firstmethod()
{
cout << “请输入申请的主存大小: “ << endl;
cin >> maxsize;
init();
display();
while (true)
{
string operate;
rd *temp = new rd;
temp->front = NULL;
temp->next = NULL;
temp->flage = 1;
cout << “请求名称( shutdown 为结束标识符 )“ << endl;
cin >> temp->name;
cout << “请求类型( 申请 完成 )“ << endl;
cin >> operate;
if (operate == “shutdown“)
{
cout << “此次首次适应算法分配结束!“ << endl;
return;
}
else if (operate == “申请“)
{
temp->start = 0;
cout << “请求大小“ << endl;
cin >> temp->size;
rd *p = new rd;
p = line;
while (p != NULL)
{
if (!p->flage && p->size >= temp->size)
{
temp->start = p->start + (p->size - temp->size);
p->size -= temp->size;
if (p->next != NULL)
{
temp->next = p->next;
p->next->front = temp;
}
temp->front = p;
p->next = temp;
}
p = p->next;
}
display();
}
else if (operate == “完成“)
{
rd *p = new rd;
p = line;
while (p != NULL)
{
if (p->name == temp->name)
{
rd *q = new rd;
q->flage = 0;
q->name = “空“;
q->start = 0;
q->size = maxsize;
q->front = NULL;
q->next = NULL;
if (p->front != NULL)
{
q = p->front;
if (p->front->front != NULL) q->front = p->front->front;
else q->front = NULL;
}
if (!q->flage)
{
q->size += p->size;
if (p->next != NULL && !p->next->flage)
{
q->size += p->next->size;
if (q->next->next->next != NULL)
{
q->next->next->next->front = q;
q->next = q->next->next->next;
}
else
{
q->next = NULL;
}
}
else if (p->next != NULL)
{
q->next = p->next;
}
p = q->next;
}
else if (p->next != NULL && !p->next->flage)
{
p->size += p->next->size;
if (p->next->next != NULL)
{
p->next->next->front = p;
p->next = p->next->next;
}
}
else if (((p->front != NUL
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 921 2018-10-31 22:13 动态分区算法\动态分区算法.sln
..A..H. 14336 2018-11-12 17:21 动态分区算法\动态分区算法.suo
文件 628568 2018-11-12 16:32 动态分区算法\Debug\动态分区算法.ilk
文件 764928 2018-11-12 16:32 动态分区算法\Debug\动态分区算法.pdb
文件 92160 2018-11-12 16:32 动态分区算法\Debug\动态分区算法.exe
文件 67 2018-11-12 17:14 动态分区算法\动态分区算法\data.txt
文件 9853 2018-10-31 22:14 动态分区算法\动态分区算法\分区.cpp
文件 7531 2018-11-12 22:48 动态分区算法\动态分区算法\动态分区.cpp
文件 3300 2018-11-01 19:29 动态分区算法\动态分区算法\动态分区算法.vcxproj
文件 1062 2018-11-01 19:29 动态分区算法\动态分区算法\动态分区算法.vcxproj.filters
文件 143 2018-10-31 22:13 动态分区算法\动态分区算法\动态分区算法.vcxproj.user
文件 1704 2018-11-12 16:32 动态分区算法\动态分区算法\Debug\cl.command.1.tlog
文件 14634 2018-11-12 16:32 动态分区算法\动态分区算法\Debug\CL.read.1.tlog
文件 920 2018-11-12 16:32 动态分区算法\动态分区算法\Debug\CL.write.1.tlog
文件 2238 2018-11-12 16:32 动态分区算法\动态分区算法\Debug\li
文件 4886 2018-11-12 16:32 动态分区算法\动态分区算法\Debug\li
文件 1032 2018-11-12 16:32 动态分区算法\动态分区算法\Debug\li
文件 834 2018-11-12 16:32 动态分区算法\动态分区算法\Debug\mt.command.1.tlog
文件 1494 2018-11-12 16:32 动态分区算法\动态分区算法\Debug\mt.read.1.tlog
文件 478 2018-11-12 16:32 动态分区算法\动态分区算法\Debug\mt.write.1.tlog
文件 355328 2018-11-12 16:32 动态分区算法\动态分区算法\Debug\vc100.idb
文件 282624 2018-11-12 16:32 动态分区算法\动态分区算法\Debug\vc100.pdb
文件 381 2018-11-12 16:32 动态分区算法\动态分区算法\Debug\动态分区算法.exe.intermediate.manifest
文件 71 2018-11-12 16:32 动态分区算法\动态分区算法\Debug\动态分区算法.lastbuildstate
文件 2235 2018-11-12 16:32 动态分区算法\动态分区算法\Debug\动态分区算法.log
文件 713 2018-11-01 19:29 动态分区算法\动态分区算法\Debug\动态分区算法.vcxprojResolveAssemblyReference.cache
文件 0 2018-10-31 22:13 动态分区算法\动态分区算法\Debug\动态分区算法.write.1.tlog
文件 191991 2018-10-31 22:14 动态分区算法\动态分区算法\Debug\首次适应.obj
文件 222355 2018-11-12 16:32 动态分区算法\动态分区算法\Debug\动态分区.obj
文件 5853184 2018-11-12 17:21 动态分区算法\动态分区算法.sdf
............此处省略10个文件信息
相关资源
- 任哲嵌入式实时操作系统uCos-ii原理及
- 操作系统课程设计.zip
- 分布式嵌入式实时操作系统QNX
- 杭州电子科技大学操作系统复习提纲
- 操作系统 nachos实验四
- 操作系统实验多线程读者写者优先问
- 操作系统课程设计--多用户多级目录文
- 操作系统原理课后答案第四版 庞丽萍
- 操作系统实验报告 安徽工业大学
- 任哲《嵌入式实时操作系统uCOS-II原理
- 动态分区分配存储管理-操作系统课程
- 计算机操作系统讲义知识点整理
- 操作系统课程设计进程管理与通信,
- 操作系统原理 第三版 孙钟秀 高清完
- 操作系统原理第3版答案
- 大连理工大学软件学院操作系统复习
- 现代操作系统(中文第三版)习题答
- 《计算机操作系统实验指导》郁红英
- 网络实验 LWIP无操作系统移植
- stm32f103+2路USART+SPI+CAN+FreeRTOS操作系统
- freeRTOS操作系统详解中文版
- EOS 操作系统实验教程
- 2014华农 操作系统 大实验六 模拟操作
- 嵌入式实时操作系统uCOS-II》(第二版
- 操作系统 Project4.zip
- 庞丽萍-操作系统原理与Linux系统实验
- 《计算机操作系统》课件 庞丽萍
- 操作系统--多级反馈队列进程的控制算
- 计算机操作系统原理pdf
- 操作系统课后答案(参考要点)-方敏
评论
共有 条评论