第二版linux操作系统原理与应用chp2.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二版linux操作系统原理与应用chp2

虚拟内存管理的硬件机制 内存寻址的演变 段机制 分页机制 Linux中的汇编语言 Linux中的分页机制 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

文档评论(0)

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

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

1亿VIP精品文档

相关文档