欢迎来到天天文库
浏览记录
ID:36900096
大小:305.50 KB
页数:54页
时间:2019-05-10
《第六章存储管理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第六章存储管理存储管理功能内存资源管理存储管理方式外存空间管理虚拟存储系统管理资源吧(www.glzy8.com),提供海量管理资料免费下载!6.1存储管理功能存储分配和去配分配去配对象内存、外存(相同方法)分配去配时刻进程创建、撤销、交换、长度变化存储共享目的:节省内存、相互通讯内容:代码、数据存储保护防止地址越界防止操作越权6.1存储管理功能(Cont.)存储扩充内存、外存结合,虚拟存储体系速度接近内存,容量相当外存地址映射逻辑地址=>物理地址硬件支持基址寄存器(base)、限长寄存器(limit
2、)、快表;使用上述寄存器完成地址映射过程;不能正常完成地址映射时产生中断。6.2内存资源管理6.2.1内存分区分区时刻静态分区:系统初始化时分;动态分区:申请时分。分区大小等长分区:2i异长分区:依程序、程序单位、对象大小。通常作法静态+等长(页式、段页式)动态+异长(段式、界地址)6.2.2内存分配静态等长分区的分配字位映象图空闲页面表空闲页面链动态异长分区的分配最先适应(FirstFit)最佳适应(BestFit)最坏适应(WorstFit)字位映象图(bitmap)100…1...10第0页第2
3、页第1页第k页第n页......分配:自头寻找第一个为0的位,改为1,返回页号;去配:页号对应的位(bit)置为0。用一个bit代表一页状态,0表空闲,1表占用。(多单元)空闲页面表首页号空页数............1204特点:可以分配连续页面。占用占用120页121页122页123页......空闲页面链占用占用占用Head:优点:节省空间。(不适合管理外存)动态异长分区的分配空闲区首址空闲区长度............25001500数据结构:Criteria:尽量使空闲区域连续。初始时一个连
4、续空闲区。长度=0为表尾。最先适应算法(FirstFit)空闲区首址空闲区长度128641024256322560......空闲区:首址递增排列;申请:取第一个可满足区域;优点:尽量使用低地址空间,高区保持大空闲区域。缺点:可能分割大空闲区。Eg.申请32将分割第一个区域。最佳适应算法(BestFit)空闲区:首址递增排列;申请:取最小可满足区域;优点:尽量使用小空闲区,保持大空闲区。缺点:可能形成碎片(fragment)。Eg.申请30将留下长度为2的空闲区。空闲区首址空闲区长度128641024
5、256322560......最坏适应算法(WorstFit)空闲区:首址递增排列;申请:取最大可满足区域;优点:防止形成碎片。缺点:分割大空闲区域。空闲区首址空闲区长度128641024256322560......UNIX存储分配--FFstructmap{char*m_size;char*m_addr;};structmapcoremap[CMAPSIZ];structmapswapmap[SMAPSIZ];defineCMAPSIZ100defineSMAPSIZ100malloc(mp,si
6、ze)structmap,*mp;{registerinta;registerstructmap*bp;for(bp=mp;bp->m_size;bp++){if(bp-m_size>=size){a=bp->m_addr;bp->m_addr=+size;if((bp->m_size=-size)==0)do{bp++;(bp-1)->m_addr=bp->m_addr;}while((bp-1)->m_size=bp->m_size);return(a);}}return(0);}mfree(mp
7、,size,aa)structmap*map;{registerstructmapbp;registerintt,a;a=aa;for(bp=mp;bp->m_addr<=a&&bp->m_size!=0;bp++);if(bp>mp&&(bp-1)->m_addr+(bp-1)->m_size==a){//与前合并(bp-1)->m_size=+size;if(a+size==bp->m_addr){//前后合并(bp-1)->m_size=+bp->m_size;while(bp->m_size)
8、{bp++;(bp-1)->m_addr=bp->m_addr;(bp-1)->m_size=bp->m_size;}}}}else{if(a+size==bp->m_addr&&bp->m_size){//与后合并bp->m_addr=-size;bp->m_size=+size;}elseif(size)do{//无合并t=bp->m_addr;bp->m_addr=a;a=t;t=bp->m_size;bp->m_size=size;bp++;}w
此文档下载收益归作者所有