可变分区分配与回收——采用最坏算法,操作系统课程设计(5)

2019-03-28 19:47

哈尔滨理工大学课程设计报告

if(pp->nxt != NULL) { pp->nxt->pre = p; } free(pp);

} else if((p->pre == &subHead || p->pre->state == Busy) && (p->nxt != NULL && p->nxt->state == Free)) { // 情况2:只合并下面的分区 pp = p->nxt; p->size += pp->size; p->state = Free; p->taskId = -1; p->nxt = pp->nxt; if(pp->nxt != NULL) { pp->nxt->pre = p; } free(pp);

} else if((p->pre != &subHead && p->pre->state == Free) && (p->nxt == NULL || p->nxt->state == Busy)) { // 情况3:只合并上面的分区 pp = p; p = p->pre; p->size += pp->size; p->nxt = pp->nxt; if(pp->nxt != NULL) { pp->nxt->pre = p; } free(pp);

哈尔滨理工大学课程设计报告

} else {

// 情况4:上下分区均不用合并 p->state = Free; p->taskId = -1; } } p = p->nxt; }

if(flag == 1) { // 回收成功

printf(\内存分区回收成功...\\n\ return 1; } else {

// 找不到目标作业,回收失败

printf(\找不到目标作业,内存分区回收失败...\\n\ return 0; } }

/* int start(int task) { }

int end(int task) {

clock_t s;

clock_t s; s=(int)clock(); return s;

哈尔滨理工大学课程设计报告

}*/

s=(int)clock(); return s;

// 显示空闲分区链情况 void showSubArea() {

printf(\ printf(\ 当前的内存分配情况如下: **\\n\ printf(\ printf(\起始地址 | 空间大小 | 工作状态 | 作业号 **\\n\ subAreaNode *p = subHead.nxt; while(p != NULL) {

printf(\ printf(\

printf(\ k |\ printf(\ k |\

printf(\ %5s |\ if(p->taskId > 0) {

printf(\ \ } else {

printf(\ \ }

printf(\ p = p->nxt; }

printf(\

哈尔滨理工大学课程设计报告

} int main() {

int option, ope, taskId, size; // 初始化空闲分区链 intSubArea(); // 选择分配算法 l1: while(1) {

printf(\

printf(\请选择要模拟的分配算法:\\n0 表示首次适应算法\\n1 表示最佳适应算法\\n2 表示最坏适应算法\\n3 退出\\n\ printf(\ scanf(\

system(\

if(option == 0) {

printf(\你选择了首次适应算法,下面进行算法的模拟\\n\ break;

} else if(option == 1) {

printf(\你选择了最佳适应算法,下面进行算法的模拟\\n\ break;

} else if(option == 2) {

printf(\你选择了最坏适应算法,下面进行算法的模拟\\n\ break; }

else if(option == 3){

exit(0);

哈尔滨理工大学课程设计报告

}

else {

printf(\错误:请输入 0/1\\n\\n\ } }

// 模拟动态分区分配算法 while(1) {

printf(\

printf(\

printf(\ 1: 分配内存\\n 2: 回收内存\\n 3: 返回上一级菜单\\n 退出 \\n\\n\

printf(\ scanf(\

system(\

if(ope == 0) break; if(ope == 1) { // 模拟分配内存

printf(\请输入作业号: \ scanf(\

printf(\请输入需要分配的内存大小(KB): \ scanf(\ if(size <= 0) {

printf(\错误:分配内存大小必须为正值\\n\ continue; }

0:


可变分区分配与回收——采用最坏算法,操作系统课程设计(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:司法考试《刑法》知识点:破坏社会主义市场经济秩序罪每日一练(2

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: