《内存管理数据结构》PPT课件.ppt

《内存管理数据结构》PPT课件.ppt

ID:51644840

大小:575.50 KB

页数:32页

时间:2020-03-27

《内存管理数据结构》PPT课件.ppt_第1页
《内存管理数据结构》PPT课件.ppt_第2页
《内存管理数据结构》PPT课件.ppt_第3页
《内存管理数据结构》PPT课件.ppt_第4页
《内存管理数据结构》PPT课件.ppt_第5页
资源描述:

《《内存管理数据结构》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、内存管理数据结构2015.3.31星期二(单周)2015.4.7星期二(双周)掌握内存管理的数据结构程序的页表MMU的APRU区的u.u_uisa[16],u.u_uisd[16]内存的空白区域structmap一、程序的内存组织方法Staticchar*class=host;//标题页上的类名Staticcharformat=‘f’;//打印文件用的格式字符Staticcharhdr=1;//是否打印标题①已经初始化的数据Staticchar*dfname;//数据文件Staticchar*fonts[4];//troff字体名Sta

2、ticchariflag;//需要的缩进②未初始化的数据bss程序Staticchar*lmktemp(char*id,intnum,intlen){char*s;if((s=malloc(len)==NULL)fatal2(“outofmemory”);(void)snfrintf(s,len,”%s%A%03d%S”,SD,id,num,host);}程序参数③栈区域局部变量③栈区域④堆代码Linux虚拟存储器管理与进程相关的数据结构(页表,task,mm结构,内核栈)物理存储器内核代码和数据每个进程不同每个进程相同用户栈共享库的存

3、储器映射区域运行时堆(malloc分配)未初始化数据.bss已初始化数据.data程序文件(.text)0x08048000(32)0x0040000(64)brk%esp内核虚拟存储器进程虚拟存储器二、UNIXV6内存管理(1)页表内存的分页管理(paging):把每个程序的地址空间分成大小相等的片,称之为页面或者页(page);内存的存储空间分成与页大小相同的片,称为页框(pageframe),为进程分配存储空间时,以页为单位。MMU为进程的每一个页面分配一个寄存器,这些寄存器组成一个表,称为页表页表的硬件实现有多种方法,用一组专用

4、寄存器存放页表。PDP-11/40使用APR,高速逻辑电路构造,有效进行分页地址的转换。由于对内存的每次访问都要经过页表,因此效率很重要。Unixv6的页表用APR实现。程序装入问题CPU调度程序swtch()在装入保存在U区的R0~R7数据时,也装入APR的数据。APR数据保存在u.u_uisa[16]和u.u_uisd[16]中。APR页表PDP-11/40的CPU字长是16位,地址是16位,页面大小8kB,因此APR页表有8个条目,每个程序最多有8个page。APR有8个快速reg组。216=64k页面8k,所以页表有8个条目。现

5、代OS的页表(一百万个条目)放在内存,将页表基地址存放在PTBR寄存器。使用快表,提高效率。PDP-11/40的CPU地址和总线物理地址总线18位,所以内存物理地址218=4*64k=256k。P5所以内存最多可存放4个完整的进程地址空间。P23实际上,一般情况是,执行进程的整个地址空间在内存中,而不在CPU上执行的进程,将它的数据段调出到交换区(交换文件),只有一部分进程映像在内存,可提高内存的利用率。UNIXV6进程页表的硬件实现PDP-11/40的APR页表是页面与块两级结构。页面长度8k,这是CPU字长决定的。每个页面分成128

6、块,块的长度64B.块是存储分配的基本单位PDP-11/46的页表包括8个页面,maxmem表示页表中最多块数。APR(activepageregister)寄存器一共有8组,每组APR由1个PAR(pageaddressregister)和1个PDR(pagedescriptionregister)寄存器构成,PAR[0]~[7],PDR[0]~[7]。UNIXV6进程页表的硬件实现PAR保存各页面在块的起始地址,PDR保存各页当前的块数。每页最多128块,每块64字节。128*64B=8k.APR0APR1APR2APR3APR4A

7、PR5APR6APR7PAR[0]PAR[1]PAR[2]PAR[3]PAR[4]PAR[5]PAR[6]PAR[7]PDR[0]PDR[1]PDR[2]PDR[3]PDR[4]PDR[5]PDR[6]PDR[7]地址转换逻辑地址151312650页号APR块号块内偏移量1512110PAR[i]块号起始地址+块号块内偏移量P25执行进程uP26执行进程U区,全局变量u(0140000)在内核PAR[6]的起始地址Proc.p_addr=PAR[6]内核APR0123456u71-100-000-000-000-0006:110U区内核

8、栈Proc.p_addr执行进程的数据段物理地址八进制数,16位CPU字长。最高位1位,后面15位,所以有5个数字。APR6(3)用户APR在进程调度时,savu()保存在U区进程切换swtch()PAR0

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。