内存分配算法_第1页
内存分配算法_第2页
内存分配算法_第3页
内存分配算法_第4页
内存分配算法_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式系统三级项目嵌入式系统三级项目主要内容 内存分配的方法:FF、BF、WF和NF 内存管理的一些指令malloc()、realloc()和free() 内存保护最佳适合内存分配算法BF最先适合内存分配算法FF最差适合内存分配算法WF循环首次适应分配算法NF最先适合内存分配算法(FF)一、空闲分区按照地址递增的次序链接二、从链头开始查找,选择第一个满足要求的空闲区优点:尽可能的利用存储器的低地址部分缺点:搜索次数增加,影响工作效率 一、空闲分区按从小到大进行排序 二、自表头开始查找到第一个满足要求的自由分区分配 优点:使碎片尽量小,保留大的空闲区 缺点:造成许多难利用的小空闲区,分配后必须重

2、新排序最佳适合分配算法BF最差适合分配算法(WF) 一、空闲分区按从大到小进行排序 二、自表头开始查找到第一个满足要求的自由分区分配 优点:尽量减少小的碎片产生 缺点:缺乏大的空闲分区,分配完需要重新排序循环首次分配算法 一、空闲分区按地址递增的次序链接 二、从上次找到空闲区的下一个空闲开始查找,选择第一个满足要求的空闲区 优点:使内存中的空闲区分布得较均匀 缺点:缺乏大的空闲分区以FF算法为例输入1,设置内存的大小输入3,建立一个新进程并设置内存大小重复上一步骤,建立第二个进程,大小一样输入5,显示内存使用情况输入4,选择结束第二个进程输入5,再次查看内存使用情况指令malloc()内存分配

3、函数 void *malloc(int size); malloc 向系统申请分配指定size个字节的内存空间 返回类型是 void* 类型。void* 表示未确定类型的指针,返回后强行转换为实际类型的指针 int* p; p = (int *) malloc (sizeof(int); 如果写成p = malloc (sizeof(int); 则程序无法通过编译 函数的实参为 sizeof(int) ,用于指明一个整型数据需要的大小指令free()内存释放函数 void free(指针变量) free可以释放任意类型的指针 举例:int* p = (int *) malloc(4); *p

4、= 100; free(p); /释放 p 所指的内存空间 new/delete、new/delete、malloc/free 三对均需配套使用,不可混用!指令realloc()内存重新分配函数 void *realloc(void *mem_address, unsigned int newsize); 改变mem_address所指内存区域的大小为newsize长度 如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL 当内存不再使用时,应使用free()函数将内存块释放 如果原先的内存大小后面还有足够的空闲空间用来分配,加上原来的空间大小 newsize 如果原先的内存大小后面没有足够的空闲空间用来分配,那么从堆中另外找一块newsize大小的内存。 并把原来大小内存空间中的内容复制到newsize中。返回新的mem_address指针 如果没有足够可用的内存用来完成重新分配(扩大原来的内存块或者分配新的内存块),则返回null.而原来的内存块保持不变内存保护 内存保护可通过硬件提供的MMU来实现 MMU具有以下功能: 1、内存映射(逻辑地址物理地址) 2、防止地址越界:通过检查逻辑地址,确保应用程序只能访问地址空间所对应的、限定的物理地址空间 3、防

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论