华东交通大学操作系统课件第四章概要.ppt

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

利用段表和页表实现地址映射 2、地址变换过程 在段页式系统中,为了便于实现地址的变换,必须配置一个段表寄存器,其中存放段表始址和段长TL。 地址变换过程:首先利用段号S,将它与段长TL进行比较。若STL,表示未越界,利用段表始址和段号来求出该段所对应的段表项在段表中的位置,从中得到该段的页表始址; 利用逻辑地址中的段内页号P来获得对应页的页表项位置,从中读出该页所在的物理块号b,再利用块号b和页内地址来构成物理地址。 段页式系统中的地址变换 状态 三、两级和多级页表 现代的大多数计算机系统,由于都支持很大的逻辑地址空间,因此为了存放页表就需要很大的内存空间,而且还要求是连续的,因此这种方式是不现实的。为了解决这个问题,可以有两个方法: 1、采用离散分配方式来解决难于找到一块连续的大内存空间问题; 2、只将当前需要的部分页表项调入内存,其余的表项仍驻留在磁盘上,需要时再调入。 多级页表 32位地址空间+ 4K页面+页号连续?220个页表项 220个页表项都得放在内存中,需要4M内存 系统中并发10个进程,需要40M内存 实际上大部分逻辑地址根本不会用到 32位: 总空间[0,4G]! 引入多级页表,顶层页表常驻内存,不需要映射的逻辑地址不需要建立页表项 Offset 页号 0 12 11 32位逻辑地址格式(多级页表) 21 页目录号 22 31 多级页表时的地址翻译 10 bits 10 bits 12 bits 逻辑地址 Offset 页号 页目录号 4 bytes 页表指针 4 bytes Offset 物理页号 物理地址 4KB 页目录驻留内存(4K) 程序构成: 4M代码+4M数据+4M栈 3个页表驻留内存(12K) 2、多级页表 对于32位的机器,采用两级页表结构是合适的;但对于64位的机器,如果页面大小仍采用4 KB即212 B,那么还剩下52位, 假定仍按物理块的大小(212位)来划分页表,则将余下的42位用于外层页号。此时在外层页表中可能有4096 G个页表项, 要占用16384 GB的连续内存空间。 必须采用多级页表,将外层页表再进行分页,也是将各分页离散地装入到不相邻接的物理块中,再利用第2级的外层页表来映射它们之间的关系。 对于64位的计算机,如果要求它能支持264(=1844744 TB)规模的物理存储空间,则即使是采用三级页表结构也是难以办到的;而在当前的实际应用中也无此必要。 4.4 基本分段存储管理方式 存储管理方式从固定分区到动态分区分配,进而又发展到分页存储管理方式,其主要目的是为了提高内存的利用率。 而引入分段存储管理方式的目的主要是:为了满足用户(程序员)在编程和使用上多方面的要求,其中,有些要求是其它几种存储管理方式所难以满足的。 一、分段存储管理方式的引入 引入分段存储管理方式, 主要是为了满足用户和程序员的下述一系列需要: 1) 方便编程 2) 信息共享 3) 信息保护 4) 动态增长 5) 动态链接 二、分段系统的基本原理 1、分段 在分段存储管理的方式中,作业的地址空间划分为若干段,每个段定义了一组逻辑信息,用段号来标示。每个段都从0开始编址,并采用一段连续的地址空间,段的长度由相应的逻辑信息组的长度决定,所以各段长度不等。 整个作业的地址空间是分成多个段,所以是二维的。即逻辑地址由段号和段内地址组成,其结构如下: 一个用户程序往往由几个程序段(主程序、子程序和函数)所组成,当一个程序装入内存时,按段进行分配,每个段的大小是不相等的。 程序地址的组成:S:W 例: S1:XXXX S2:XXXX S3;XXXX 段号 段内地址 分段地址中的地址结构: 31 16 15 0 在上述地址结构当中,允许一个作业长度有64K(216)个段,每个段的最大长度为64KB。 分段方式已得到许多编译程序的支持,编译程序能自动地根据源程序的情况而产生若干个段。装入程序将装入所有这些段,并为每个段赋予一个段号。 程序通过分段(segmentation)划分为多个模块,如代码段、数据段、共享段。 可以分别编写和编译 可以针对不同类型的段采取不同的保护 可以按段为单位来进行共享,包

文档评论(0)

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

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

1亿VIP精品文档

相关文档