当前位置: 首页 > wzjs >正文

廊坊做网站公司温州网站建设制作

廊坊做网站公司,温州网站建设制作,找快照网站查询,襄阳做网站公司文章目录 一、实验目的二、实验内容与设计思想实验内容设计思路 三、实验代码实现四、总结 一、实验目的 理解动态异长存储分区资源管理,掌握所需数据结构和管理程序,了解各种存储分配算法的优点和缺点。 二、实验内容与设计思想 实验内容 1.分析uni…

文章目录

    • 一、实验目的
    • 二、实验内容与设计思想
      • 实验内容
      • 设计思路
    • 三、实验代码实现
    • 四、总结

一、实验目的

理解动态异长存储分区资源管理,掌握所需数据结构和管理程序,了解各种存储分配算法的优点和缺点。

二、实验内容与设计思想

实验内容

1.分析unix最先适应存储分配算法,即map数据结构,存储分配函数malloc()和存储释放函数mfree(),找出与算法有关的成分;
2.修改上述与算法有关的成分,使其分别体现最佳适应分配原则和最坏适应分配原则;

设计思路

  1. 数据结构设计
    定义 5 个进程(P0-P4)共享 3 类资源(R0-R2),关键数据结构包括:
    avail[R]:当前可用资源数
    max[P][R]:各进程对资源的最大需求
    allot[P][R]:各进程已分配的资源
    need[P][R]:各进程仍需的资源(need = max - allot)

  2. 安全状态检查函数 isSafe()
    核心逻辑:
    计算各进程的需求矩阵 need
    初始化工作向量 work(可用资源)和完成标志 finish
    寻找可运行的进程(need <= work),模拟资源回收,更新work并标记进程完成
    若所有进程完成则系统安全,否则不安全

三、实验代码实现

#include <stdio.h>
#include <stdlib.h>typedef struct Block {int start;int size;struct Block *next;
} Block;Block *freeList;void initMemory(int size) {freeList = (Block *)malloc(sizeof(Block));freeList->start = 0;freeList->size = size;freeList->next = NULL;
}void printFreeList() {Block *current = freeList;while (current != NULL) {printf("(%d, %d)\n", current->start, current->size);current = current->next;}
}void coalesce() {Block *current = freeList;while (current != NULL && current->next != NULL) {if (current->start + current->size == current->next->start) {current->size += current->next->size;Block *temp = current->next;current->next = temp->next;free(temp);} else {current = current->next;}}
}void mfree(int start) {Block *current = freeList, *prev = NULL;while (current != NULL && current->start != start) {prev = current;current = current->next;}if (current == NULL) return;Block *newBlock = (Block *)malloc(sizeof(Block));newBlock->start = start;newBlock->size = current->size;newBlock->next = current->next;if (prev == NULL) {freeList = newBlock;} else {prev->next = newBlock;}free(current);coalesce();
}int mallocFirstFit(int size) {Block *current = freeList, *prev = NULL;while (current != NULL) {if (current->size >= size) {if (current->size == size) {if (prev == NULL) {freeList = current->next;} else {prev->next = current->next;}free(current);return current->start;} else {Block *newBlock = (Block *)malloc(sizeof(Block));newBlock->start = current->start + size;newBlock->size = current->size - size;newBlock->next = current->next;current->size = size;current->next = newBlock;return current->start;}}prev = current;current = current->next;}return -1;
}int main() {initMemory(1000);int allocated1 = mallocFirstFit(100);printf("Allocated 1: %d\n", allocated1);int allocated2 = mallocFirstFit(200);printf("Allocated 2: %d\n", allocated2);int allocated3 = mallocFirstFit(300);printf("Allocated 3: %d\n", allocated3);printFreeList();mfree(allocated1);mfree(allocated2);mfree(allocated3);printFreeList();return 0;
}

结果:
在这里插入图片描述

四、总结

  • 遇到的问题
  1. 致命语法错误:行头缺失
    遇到的问题
    函数命名冲突:malloc函数是标准库函数,在代码中重新定义会导致冲突。
    在这里插入图片描述
    编译后提示错误,malloc 函数是标准库函数,重新定义会导致冲突。mfree 函数参数类型与标准库函数不匹配。指针转换为整数类型时需要进行类型转换。
    参数类型不匹配:mfree函数参数类型与标准库函数不匹配。
    类型转换问题:指针转换为整数类型时需要进行类型转换。
    在这里插入图片描述
    空闲列表更新问题:程序在分配和释放内存后,空闲列表显示的结果是相同的,这意味着分配和释放操作没有正确更新空闲列表。

通过这次实验,我对动态异长存储分区资源管理有了更深入的理解。我不仅掌握了所需的数据结构和管理程序,还了解了各种存储分配算法的优缺点。在今后的学习和工作中,我将更加注重基础知识的学习和积累,提高自己的编程能力和问题解决能力。同时,我也会更加注重代码的质量和可维护性,养成良好的编程习惯。

对于后续的实验,我计划对代码进行进一步的修改和完善,实现最佳适应分配原则和最坏适应分配原则。我相信通过不断的实践和学习,我能够更好地掌握操作系统的相关知识和技能。

http://www.dtcms.com/wzjs/152799.html

相关文章:

  • 网站模板 英文巨量算数关键词查询
  • 英文网站怎么做seoapp香港账号
  • 网件路由器做网站电脑培训班多少费用
  • 百度seo站长链接转二维码
  • 不让人看出wordpress建的站seo课程培训机构
  • 网站建设词语seo公司上海牛巨微
  • 大网站建设推广普通话宣传周活动方案
  • 怎么在网站上做签到淘宝关键词排名是怎么做的
  • 电商供应链网站网络营销策略概念
  • 长宁区网站建设网站制首页关键词优化价格
  • 如何自己办网站发软文是什么意思
  • 西藏建设注册中心官方网站揭阳seo快速排名
  • 网站建设与运营未来发展怎样在百度上做广告推广
  • 网站设为首页代码磁力狗在线搜索
  • 1688黄页网免费网站怎么免费制作网页
  • 通用企业网站模板网络seo软件
  • 北大荒建设集团网站南昌百度seo
  • 经典重庆论坛新闻论坛黑帽seo排名
  • asp网站如何做伪静态活动策划方案
  • 广州建设网站服务山东seo优化
  • 网站建设维护与推广百度营销官网
  • 网站的需求分析都有哪些内容chrome 谷歌浏览器
  • 网站建设中采用的技术方案网站推广网络营销方案
  • wordpress中文图片插件厦门seo哪家强
  • 青青网站怎么做青岛seo软件
  • 作品集模板网站模拟搜索点击软件
  • 廊坊做网站的公司怎么提高seo关键词排名
  • 网站做排名需要多少钱整合营销传播案例
  • 哪些网站做免费送东西的广告6百度指数是免费的吗
  • 做网站大概多少钱如何进行网站推广