内蒙古大学《算法与数据结构》课件第9章动态存储管理
51页1、计算机专业本科主干基础课计算机专业本科主干基础课第九章第九章 动态存储管理动态存储管理9.1 概述概述9.2 可利用空间表可利用空间表9.3 伙伴系统(伙伴系统(Buddy system)9.4 一个小型的动态存储管理系统一个小型的动态存储管理系统 9.1 概述概述 内存管理分别由操作系统、高级语言的编译内存管理分别由操作系统、高级语言的编译系统和程序员分工合作管理。通常编译系统系统和程序员分工合作管理。通常编译系统负责静态储存管理,操作系统负责整个内存负责静态储存管理,操作系统负责整个内存管理和动态储存管理。管理和动态储存管理。 用户程序中所用的储存结构可分为两类,静态用户程序中所用的储存结构可分为两类,静态结构:空间量在编译后,即可确定;动态结构:结构:空间量在编译后,即可确定;动态结构:程序运行中申请空间,编译时无法确定。静态程序运行中申请空间,编译时无法确定。静态储存由编译系统管理;动态储存由程序员和操储存由编译系统管理;动态储存由程序员和操作系统管理,但程序员的管理非常简单。作系统管理,但程序员的管理非常简单。 程序员级的管理:程序员级的管理: 程序员的工作就是在需要的时候向
2、系统申请空程序员的工作就是在需要的时候向系统申请空间,在不需要时释放占有的动态储存空间。间,在不需要时释放占有的动态储存空间。例例如:如: 在在C语言中语言中: malloc(size):申请申请size字节的内存;字节的内存; free(p): 释放释放p,把空间归还给系,把空间归还给系.用户程序:用户程序:# include iostd.libInt main() *r=new int100; free (r);操作系统操作系统分配分配 OS_AllocMemory(r,size,flags)回收回收 OS_ReclaimMemory(r) FreeMem图图9.1 程序员管理内存程序员管理内存 在在C+中中: new objectType():申请空间;申请空间; delete(p): 释放释放p,把空间归还给系统;,把空间归还给系统; 在在Java语言中语言中: new objectType():申请空间申请空间; 当用户在程序执行到空间申请语句时,操作系统执行分当用户在程序执行到空间申请语句时,操作系统执行分配操作,从空闲存储空间中取出所需空间,交给用户程配操作,从空闲存储空
3、间中取出所需空间,交给用户程序使用。当执行到释放空间语句,操作系统执行回收操序使用。当执行到释放空间语句,操作系统执行回收操作,将被释放的空间回收到空闲存储空间中,如图作,将被释放的空间回收到空闲存储空间中,如图9.1所所示。示。 编译系统级管理:编译系统级管理: 在编译中,编译系统为程序设置了一个虚拟在编译中,编译系统为程序设置了一个虚拟空间。程序中所说明的数据在编译时根据其类型空间。程序中所说明的数据在编译时根据其类型在虚拟存储空间中为它们分配存储空间,这样的在虚拟存储空间中为它们分配存储空间,这样的数据称为静态数据。程序执行时,首先将程序装数据称为静态数据。程序执行时,首先将程序装入内存,并将虚拟空间映射到内存。编译系统管入内存,并将虚拟空间映射到内存。编译系统管理的是虚拟存储空间。编译原理与技术中将做详理的是虚拟存储空间。编译原理与技术中将做详细介绍。细介绍。 程序:程序: int x,y; float r,s; char str10; x: 2bytesy: 2bytesr: 4bytess: 4bytes str: 10bytes内存内存程序装入时程序装入时,重定位重定位图
4、图9.2 数据说明、虚拟存储空间和内存的关系数据说明、虚拟存储空间和内存的关系虚拟存储空间:虚拟存储空间: 操作系统级管理:操作系统级管理:操作系统的存储管理操作系统的存储管理为程序代码和静态数据为程序代码和静态数据 分配空间,为程序动态分分配空间,为程序动态分 配空间配空间 回收不用的动态空间回收不用的动态空间 回收程序代码和所数据回收程序代码和所数据 占用的空间占用的空间 分分配配回回收收程序程序 New Otype()delete(p)执行完毕或撤消执行程执行完毕或撤消执行程 执行程序执行程序 9.2 可利用空间表可利用空间表 可利用空间表是动态存储管理的常用方法一。可利用空间表是动态存储管理的常用方法一。系统在初始时,除了操作系统占用的空间外,其它系统在初始时,除了操作系统占用的空间外,其它空闲空间是连续的一大块,空闲空间是连续的一大块,如图如图8.4所示所示。经过一系。经过一系列的分配与回收之后,空闲块变的七零八乱,分布列的分配与回收之后,空闲块变的七零八乱,分布在存储空间的各处。可利用空间表就是将这些空闲在存储空间的各处。可利用空间表就是将这些空闲块链接成一个链表,分配时从
5、可利用空间表中取一块链接成一个链表,分配时从可利用空间表中取一适当的块进行分配,回收时将被释放的块插入可利适当的块进行分配,回收时将被释放的块插入可利用空间表。可利用空间表是一个存储资源仓库,也用空间表。可利用空间表是一个存储资源仓库,也称称“存储池存储池”或或“堆堆”,存储管,存储管 理系统是它的管理员,当需要存储空间时向它借用一块空理系统是它的管理员,当需要存储空间时向它借用一块空间,用完后归还。针对不同的用途和在不同的系统中,可间,用完后归还。针对不同的用途和在不同的系统中,可利用空间表的组织方法和实现方法有所不同。一般主要有利用空间表的组织方法和实现方法有所不同。一般主要有以下几种结构形式。以下几种结构形式。 第一种形式,将空闲空间分成大小相同的块,它们是不可第一种形式,将空闲空间分成大小相同的块,它们是不可分割和合并的,系统分配与回收存储空间都以块为单位。分割和合并的,系统分配与回收存储空间都以块为单位。如如LISP语言,是一种符号处理语言,程序与数据均以广义语言,是一种符号处理语言,程序与数据均以广义表形式表示和存储,其存储单元是表形式表示和存储,其存储单元是Cell,即广
《内蒙古大学《算法与数据结构》课件第9章动态存储管理》由会员东***分享,可在线阅读,更多相关《内蒙古大学《算法与数据结构》课件第9章动态存储管理》请在金锄头文库上搜索。
幼儿园大班科学活动《智能留言机》课件
幼儿园大班语言绘本阅读《手电筒看见了什么》PPT
幼儿园小班科学《教宝宝认识动物》课件
幼儿园中班语言《灰狼家的小饭桶们》教案
【国家审计报告】审计报告W-06审计处罚决定书
【企业财务管理办法】会计档案管理办法
【员工主动离职-风险防范】劳动争议判决书
【员工被动离职-后续工作】70-070员工违反有关商业秘密的约定可以索赔吗
【员工被动离职-辞退申请】第六节 员工任免通知书
【员工被动离职-后续工作】70-050因员工的原因使服务期无法完成可以索赔吗
企业岗位管理制度12办公室行为规范
企业岗位管理制度30离职人员薪资发放通知单
幼儿园春游活动美丽的公园教案
呼职院电力机车制动机讲义11高速列车和重载列车制动
武理工《运输管理》教案第1章 运输系统
中海大海洋化学讲义02海洋的形成和海水的组成——兼论地球上水的起源、变迁和循环
武理工船舶柴油机习题库及答案04燃油喷射和燃烧
厦大海洋生态学课件07海洋初级生产力
华北理工水声学课件05声波在目标上的反射和散射-1目标强度及常见声纳目标的目标强度的一般特征
武理工船舶结构与设备课件02船体结构与管系-4专用船特殊船体结构特点
2023-09-25 37页
2023-09-25 10页
2023-09-25 33页
2023-09-25 26页
2023-04-03 8页
2023-04-03 4页
2023-04-03 8页
2023-03-29 10页
2023-03-22 10页
2023-03-20 8页