第一节:内存管理数据结构.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
coremap[] 起始块号 X 长度 Y 起始块号 X’ 长度 Y’ 起始块号 X’’ 长度 Y’’ 起始块号 X’’’ 长度 Y’’’ coremap[]数组有4个元素, coremap[0], coremap[1], coremap[2], coremap[3] 物理内存 内存管理数据结构 2015.3.31星期二(单周) 2015.4.7星期二(双周) 掌握内存管理的数据结构 程序的页表 MMU的APR U区的u.u_uisa[16],u.u_uisd[16] 内存的空白区域 struct map 一、程序的内存组织方法 Static char *class=host;//标题页上的类名 Static char format=‘f’; //打印文件用的格式字符 Static char hdr=1; //是否打印标题 ①已经初始化的数据 Static char *dfname; //数据文件 Static char *fonts[4]; //troff字体名 Static char iflag; //需要的缩进 ②未初始化的数据bss 程序 Static char* lmktemp(char *id,int num,int len){ char *s; if((s=malloc(len)==NULL) fatal2(“out of memory”); (void)snfrintf(s,len,”%s%A%03d%S”,SD,id,num,host); } 程序参数③栈区域 局部变量③栈区域 ④堆 代码 Linux虚拟存储器管理 与进程相关的数据结构(页表,task,mm结构,内核栈) 物理存储器 内核代码和数据 每个进程不同 每个进程相同 用户栈 共享库的存储器映射区域 运行时堆(malloc分配) 未初始化数据.bss 已初始化数据.data 程序文件(.text) 032) 0x0040000(64) brk %esp 内核虚拟存储器 进程虚拟存储器 二、UNIX V6内存管理 (1)页表 内存的分页管理(paging):把每个程序的地址空间分成大小相等的片,称之为页面或者页(page);内存的存储空间分成与页大小相同的片,称为页框(page frame),为进程分配存储空间时,以页为单位。 MMU为进程的每一个页面分配一个寄存器,这些寄存器组成一个表,称为页表 页表的硬件实现 有多种方法,用一组专用寄存器存放页表。PDP-11/40使用APR,高速逻辑电路构造,有效进行分页地址的转换。由于对内存的每次访问都要经过页表,因此效率很重要。 Unix v6的页表用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个条目。 现代OS的页表(一百万个条目)放在内存,将页表基地址存放在PTBR寄存器。使用快表,提高效率。 PDP-11/40的CPU地址和总线物理地址 总线18位,所以内存物理地址218=4*64k=256k。P5 所以内存最多可存放4个完整的进程地址空间。 P23 实际上,一般情况是,执行进程的整个地址空间在内存中,而不在CPU上执行的进程,将它的数据段调出到交换区(交换文件),只有一部分进程映像在内存,可提高内存的利用率。 UNIX V6进程页表的硬件实现 PDP-11/40的APR页表是页面与块两级结构。 页面长度8k,这是CPU字长决定的。 每个页面分成128块,块的长度64B. 块是存储分配的基本单位 PDP-11/46的页表包括8个页面,maxmem表示页表中最多块数。 APR(active page register)寄存器一共有8组,每组APR由1个PAR(page address register)和1个PDR(page description register)寄存器构成,PAR[0]~[7],PDR[0]~[7]。 UNIX V6进程页表的硬件实现 PAR保存各页面在块的起始地址,PDR保存各页当前的块数。每页最多128块,每块64字节。128*64B=8k. APR0 APR1 APR2 APR3 APR4 APR5 APR6 APR7 PAR[0] PAR[1] PAR[2]

文档评论(0)

awang118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档