欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    二章节内存寻址.ppt

    • 资源ID:2552237       资源大小:441.01KB        全文页数:41页
    • 资源格式: PPT        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    二章节内存寻址.ppt

    ,第二章 内存寻址,Linux系统地址映射示例,内存寻址操作系统设计的硬件基础之一,操作系统横跨软件和硬件的桥梁 内存寻址操作系统设计的硬件基础之一 操作系统的设计者必须在硬件相关的代码与硬件无关的代码之间划出清楚的界限,以便于一个操作系统很容易地移植到不同的平台。 在这众多的平台中,大家最熟悉的就是i386,即Intel80386体系结构。因此,我们所介绍的内存寻址也是以此为背景。,内存寻址的不同时期,石器时期8位寻址,在微处理器的历史上,第一款微处理器芯片4004是由Intel推出的,4位。 在4004之后,intel推出了一款8位处理器叫8080,它有1个主累加器(寄存器A)和6个次累加器(寄存器B,C,D,E,H和L) 那时没有段的概念,访问内存都要通过绝对地址,因此程序中的地址必须进行硬编码(给出具体地址),而且也难以重定位,青铜时期“段”的引入,intel开发出的16位的处理器叫8086,标志着Intel X86王朝的开始,同时引入了“段 ”概念。 段描述了一块有限的内存区域,区域的起始位置存在专门的寄存器(段寄存器)中。 8086处理器地址线扩展到了20位,寻址空间到了1M 也就是把1M大的空间分成数个64k的段来管理(化整为零了)。 把16位的段地址左移动4位后,再与16位的偏移量相加便可获得一个20位的内存地址,,白银时期“保护模式”的引入,intel的80286处理器于1982年问世 。 地址总线位数增加到了24位 。 从此开始引进了一个全新理念保护模式 访问内存时不能直接从段寄存器中获得段的起始地址了,而需要经过额外转换和检查 。 80286处理器一些致命的缺陷注定不能长久,它很快被天资卓越的兄弟80386代替了,黄金时期内存寻址的飞跃,80386是一个32位的CPU,其寻址能力达到4GB Intel选择了在段寄存器的基础上构筑保护模式,并且保留段寄存器16位 在保护模式下,它的段范围不再受限于64K,可以达到4G 这真正解放了软件工程师,他们不必再费尽心思去压缩程序规模,软件功能也因此迅速提升 从80386以后,Intel的CPU经历了80486、Pentium、PentiumII、PentiumIII等型号,但基本上属于同一种系统结构的改进与加强,而无本质的变化,所以我们把80386以后的处理器统称为IA32(32 Bit Intel Architecture)。,IA32寄存器简介,· 把16位的通用寄存器、标志寄存器以及指令指针寄存器扩充为32位的寄存器 · 段寄存器仍然为16位。 · 增加4个32位的控制寄存器 · 增加4个系统地址寄存器 · 增加8个调式寄存器 · 增加2个测试寄存器,常用寄存器简介,通用寄存器 8个通用寄存器是8086寄存器的超集,它们分别为:EAX ,EBX ,ECX ,EDX ,EBP ,EBP, ESI及 EDI 段寄存器 8086中有4个16位的段寄存器:CS、DS、SS、ES,分别用于存放可执行代码的代码段、数据段、堆栈段和其他段的基地址。 这些段寄存器中存放的不再是某个段的基地址,而是某个段的选择符(Selector) 段基地址存放在段描述符表(Descriptor )中,表的索引就是选择符,常用寄存器简介,指令指针寄存器 指令指针寄存器EIP中存放下一条将要执行指令的偏移量(offset ),这个偏移量是相对于目前正在运行的代码段寄存器CS而言的。偏移量加上当前代码段的基地址,就形成了下一条指令的地址。 EIP中的低16位可以被单独访问,给它起名叫指令指针IP寄存器,用于16位寻址。 标志寄存器 标志寄存器EFLAGS存放有关处理器的控制标志,很多标志与16位FLAGS中的标志含义一样。,用于分页机制的控制寄存器,物理地址、虚拟地址及线性地址,将主板上的物理内存条所提供的内存空间定义为物理内存空间,其中每个内存单元的实际地址就是物理地址 将应用程序员看到的内存空间定义为虚拟地址空间(或地址空间),其中的地址就叫虚拟地址(或虚地址), 一般用“段:偏移量”的形式来描述 线性地址空间是指一段连续的,不分段的,范围为0到4GB的地址空间,一个线性地址就是线性地址空间的一个绝对地址。,地址之间的转换保护模式下的寻址,CPU,MMU,内存,磁盘 控制器,总线,CPU把虚地址送给MMU,MMU把物理地址送给存储器,地址之间的转换MMU机制,段机制,段是虚拟地址空间的基本单位,段机制必须把虚拟地址空间的一个地址转换为线性地址空间的一个线性地址。 用三个方面来描述段 段的基地址(Base Address):在线性地址空间中段的起始地址。 段的界限(Limit):在虚拟地址空间中,段内可以使用的最大偏移量。 段的保护属性(Attribute): 表示段的特性。例如,该段是否可被读出或写入,或者该段是否作为一个程序来执行,以及段的特权级等等。,虚拟线性地址的转换,虚拟地址空间,段描述符表段表,如图所示的段描述符表(或叫段表)来描述转换关系。段号描述的是虚拟地址空间段的编号,基地址是线性地址空间段的起始地址。 段描述符表中的每一个表项叫做段描述符,0 1 2,索引 (段号),保护模式下的其他描述符表简介,全局描述符表GDT(Gloabal Descriptor Table) 中断描述符表IDT(Interrupt Descriptor Table) 局部描述符表LDT(Local Descriptor Table) 为了加快对这些表的访问,Intel设计了专门的寄存器,以存放这些表的基地址及表的长度界限 。这些寄存器只供操作系统使用。 有关这些表的详细内容请参看有关保护模式的参考书。,保护模式下段寄存器中存放什么,存放索引或叫段号,因此,这里的段寄存器也叫选择符,即从描述符表中选择某个段。 选择符(段寄存器)的结构:,RPL表示请求者的特权级(Requestor Privilege Level),保护模式下的特权级,保护模式提供了四个特权级,用03四个数字表示 很多操作系统(包括Linux,Windwos)只使用了其中的最低和最高两个,即0表示最高特权级,对应内核态;3表示最低特权级,对应用户态。 保护模式规定,高特权级可以访问低特权级,而低特权级不能随便访问高特权级。,地址转换及保护,Linux中的段,Linux是怎样处理段机制?,?,分页机制页,将线性地址空间划分成若干大小相等的片,称为页(Page) 物理地址空间分成与页大小相等的若干存储块,称为(物理)块或页面(Page Frame) 页的大小应该为多少?由谁确定?,分页机制页表,页表是把线性地址映射到物理地址的一种数据结构。 页表中应当包含如下内容: 物理页面基地址:线性地址空间中的一个页装入内存后所对应的物理页面的起始地址。 页的属性:表示页的特性。例如该页是否在内存,是否可被读出或写入等。 页面的大小为4KB ,物理页面基地址需要多少位就可以?,分页机制页表项结构,物理页面基地址: 指的是页所对应的物理页面在内存的起始物理地址。相当于物理块号(为什么?) 其最低12位全部为0,因此用高20位来描述32位的地址。 属性见书,物理页面基地址 属性,31 11 0,分页机制两级页表,为什么要采用两级页表?,页目录,页表,物理页面,分页机制线性地址结构,这个结构的伪代码描述如下 typedef struct unsigned int dir:10; /*用作页目录中的下标,对应的 目录项指向一个页表*/ unsigned int page:10 /*用作页表的下标,对应的页表 项指向一个物理页面*/ unsigned int offset:12 /*在4K字物理页面内的偏移量*/ LinearAddr,31 22 12 0,分页机制硬件保护机制,对于页表,页的保护是由属性部分的U/S标志和R/W标志来控制的。当U/S标志为0时,只有处于内核态的操作系统才能对此页或页表进行寻址。当这个标志为1时,则不管在内核态还是用户态,总能对此页进行寻址。 此外,与段的三种存取权限(读、写、执行)不同,页的存取权限只有两种(读、写)。如果页目录项或页表项的读写标志为0,说明相应的页表或页是只读的,否则是可读写的。,分页机制线性地址到物理地址的转换,分页机制分页示例,假如操作系统给一个正在运行的进程分配的线性地址空间范围是0x20000000 到 0x2003ffff。这个空间由64页组成。 我们从分配给进程的线性地址的最高10位(分页硬件机制把它自动解释成页目录域)开始。这两个地址都以2开头,后面跟着0,因此高10位有相同的值,即十六进制的0x080或十进制的128。因此,这两个地址的页目录域都指向进程页目录的第129项。相应的目录项中必须包含分配给进程的页表的物理地址,如图2.13。如果给这个进程没有分配其它的线性地址,则页目录的其余1023项都为0,也就是这个进程在页目录中只占一项。,分页机制分页示例,1023(0x3ff) 128(0x80),1023(0x3ff) 64(0x040) 63(0x03f),页目录,页表,假设进程需要读线性地址0x20021406中的内容。这个地址由分页机制如何进行处理?,分页机制页面高速缓存,分页机制Linux中的分页,Linux主要采用分页机制来实现虚拟存储器管理,因为: Linux的分段机制使得所有的进程都使用相同的段寄存器值,这就使得内存管理变得简单,也就是说,所有的进程都使用同样的线性地址空间(04G)。 Linux设计目标之一就是能够把自己移植到绝大多数流行的处理器平台。但是,许多RISC处理器支持的段功能非常有限。 为了保持可移植性,Linux采用三级分页模式而不是两级,分页机制Linux中的分页,Linux中的C语言和汇编语言,GNU 的C语言 http:/www.faqs.org/docs/learnc/ AT&T的汇编:参见书,Linux系统地址映射示例,Linux采用分页存储管理。虚拟地址空间划分成固定大小的“页”,由MMU在运行时将虚拟地址映射(变换)成某个物理页面中的地址 IA32的MMU对程序中的虚拟地址先进行段式映射(虚拟地址转换为线性地址),然后才能进行页式映射(线性地址转换为物理地址) Linux巧妙地使段式映射实际上不起什么作用,Linux系统地址映射示例,假定我们有一个简单的C程序Hello.c # include greeting ( ) printf(“Hello,world!n”); main() greeting(); ,Linux系统地址映射示例,用Linux的实用程序objdump对其可执行代码进行反汇编: % objdump d hello 08048568 : 8048568: pushl %ebp 8048569: movl %esp, %ebp 804856b: pushl $0x809404 8048570: call 8048474 8048575: addl $0x4, %esp 8048578: leave 8048579: ret 804857a: movl %esi, %esi 0804857c : 804857c: pushl %ebp 804857d: movl %esp, %ebp 804857f: call 8048568 8048584: leave 8048585: ret 8048586: nop 8048587: nop,Linux系统地址映射示例,Linux最常见的可执行文件格式为elf(Executable and Linkable Format)。 在elf格式的可执行代码中,ld总是从0x8000000开始安排程序的“代码段” ,这个地址就是虚地址 程序执行时在物理内存中的实际地址,则由内核为其建立内存映射时临时分配,具体地址取决于当时所分配的物理内存页面。,0x08048568 如何转化为物理地址?,本章小节,Linux系统地址映射示例,“内核之旅 ”网站,http:/www.kerneltravel.net/ 电子杂志栏目是关于内核研究和学习的资料 第二期“i386体系结构分两部分,上半部分让大家认识一下Intel系统中的内存寻址和虚拟内存的来龙去脉。下半部分将实现一个最短小的可启动内核,一是加深对i386体系的了解,再就是演示系统开发的原始过程。 下载代码进行调试,

    注意事项

    本文(二章节内存寻址.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开