如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
会计学6.1存储管理功能6.1存储管理功能(Cont.)存储保护防止地址越界;防止操作越权。存储扩充内存、外存结合,虚拟存储体系;速度接近内存,容量相当外存。地址映射逻辑地址=>物理地址硬件支持基址寄存器(base)、限长寄存器(limit)、快表;使用上述寄存器完成地址映射过程;不能正常完成地址映射时产生中断。6.2内存资源管理6.2.2内存分配6.2.2.1静态等长分区的分配空闲页面表:6.2.2.1静态等长分区的分配(Cont.)6.2.2.2动态异长分区的分配6.2.2.2动态异长分区的分配(Cont.)6.2.2.2动态异长分区的分配(Cont.)6.2.2.2动态异长分区的分配(Cont.)例:UNIX存储分配-FirstFit(见12章p286-12.4.2)intmalloc(mp,size)//存储分配函数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)//当前块=sizedo{bp++;//do循环压缩size=0的存储表项(bp-1)->m_addr=bp->m_addr;}while((bp-1)->m_size=bp->m_size);return(a);//分配成功,返回分配存储块的首地址}return(0);//分配不成功,返回0}mfree(mp,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)//删除后项存储块表项{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)//与前、后项存储块均不相连,插入(size,a)表项do{t=bp->m_addr;//do循环逐项后移bp->m_addr=a;a=t;//a与bp->m_addr交换t=bp->m_size;bp->m_size=size;//size与bp->m_size交换bp++;}while(size=t);}}6.2.3碎片与紧凑6.3存储管理方式6.3.1界地址管理方式6.3.1界地址管理方式(Cont.)6.3.1界地址管理方式(Cont.)6.3.1界地址管理方式(Cont.)6.3.1界地址管理方式(Cont.)6.3.1界地址管理方式(Cont.)6.3.2分页式存储管理6.3.2分页式存储管理(Cont.)6.3.2分页式存储管理(Cont.)6.3.2分页式存储管理(Cont.)6.3.2分页式存储管理(Cont.)6.3.2分页式存储管理(Cont.)页表长度寄存器页表长度寄存器有效访问时间EffectiveAccessTime:EAT6.3.2.2多级页表6.3.2分页式存储管理(Cont.)6.3.2分页式存储管理(Cont.)6.3.2分页式存储管理(Cont.)6.3.2分页式存储管理(Cont.)6.3.2.3反置页表6.3.2.3反置页表(Cont.)速度问题6.3.3分段式存储管理segmentation6.3.3分段式存储管理(Cont.)6.3.3分段式存储管理(Cont.)6.3.3分段式存储管理(Cont.)6.3.3分段式存储管理(Cont.)逻辑地址(s,d)物理地址(b’+d):⑴由程序确定逻辑地址(s,d);⑵由s查快表得b’和l’;如查不到:①s与l比较,判别是否越界:不满足:0≤s≤l–1,越界中断;②由s和b查段表得b’和l’,(s,b’,l’)快表,如快表满淘汰一个;③转⑵;⑶d与l’比较,不满