- 1、本文档共71页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机软件及应用]操作系统全面剖析
如何装入可执行程序及其所需的数据
装入方式:
绝对装入
重定位装入
运行时动态装入
何时将程序的逻辑地址转换为物理地址
绝对装入
程序运行之前,按照程序的逻辑地址,将程序和数据装入内存指定的地方。
实现简单,无须进行逻辑地址到物理地址的变换。
绝对装入方式的缺点
1
4
程序每次必须装入同一内存区
程序员必须事先了解内存的使用情况,根据内存情况确定程序的逻辑地址
程序的修改(增加或删除指令)将引起整个程序中指令地址的变动
重定位装入
允许将程序装入与逻辑地址不同的物理内存空间。即程序可以装入到内存的任何位置,其逻辑地址与装入内存后的物理地址无直接关系
必须进行地址映射,将逻辑地址转换为物理地址
静态重定位
地址映射在程序装入时进行,以后不再更改程序地址
静态重定位不允许程序在内存中移动。这不便于进程交换和紧凑拼接操作,也很难实现多道程序环境下,多个程序同时装入内存的要求
静态重定位只适合于单道程序环境下
运行时动态装入
程序的地址转换不是在装入时进行,而是在程序运行时动态进行
运行时动态装入需要硬件支持,即重定位寄存器,用于保存程序在内存中的起始地址
程序被执行时,通过重定位寄存器内的起始物理地址和指令或数据的逻辑地址计算其物理地址
运行时动态装入有利于多道程序环境下,进程的换进/换出及实现紧凑技术
程序在内存中是如何组织的?
程序在内存中的组织
连续存储: 需要内存中一块连续的、足够大的分区
如果内存中没有足够大的连续空闲分区,但存在总量足够的独立小分区,系统要么拒绝分区,要么采用紧凑技术将独立小分区拼接起来供程序使用。
非连续存储:允许进程的程序和数据分别装在内存的不同分区中,必须把一个进程分到的所有分区的位置、大小、使用情况(如是否共享等)等信息记录下来。
常用的非连续存储技术:分页存储技术、分段存储技术及段页式存储技术。
动态地址转换和非连续存储是虚拟内存技术的关键。
连续存储与非连续存储
内存的连续存储与非连续存储
非连续存储--分页存储管理
分页存储管理技术是一种特殊的固定分区方法。
系统事先将物理内存划分成许多尺寸相等的页帧 (Page Frame),并将进程分割成许多大小相同的页面 (Page),页面与页框大小相同。
分区 分页
分区:进程的逻辑地址空间是连续的、一维的、线性地址,进程的每一条指令和数据的地址相对于第一条语句的地址而定。
分页:进程被分割成许多页面。每个页面内的指令和数据是连续的,它们的地址相对于其所属页的第一条语句的地址,称为页内偏移量。
逻辑地址被分为两部分:页号和页内偏移量 。
当进程被装入内存时,系统将为进程的每个页面分配一个页框
同一个进程的多个页面不必存放在连续的多个页框中
分页
,实现了虚拟机的高可用性。
进程装入到离中散的页帧
页表与页表寄存器
页表:系统为每个进程建立一张页面映射表,用于记载进程中各个页面到到物理内存中页帧的映射信息。
进程的每个页面依次对应页表中的一个表项,其中包含相应页在内存中对应的物理页帧号和页面存取控制权限等字段。
页表寄存器:存储执行进程的页表起始地址,执行快速地址映射。
进程的每个页面依次对应页表中的一个表项,其中包含相应页在内存中对应的物理页帧号和页面存取控制权限等字段。
分页地址直接映射
分页地址直接映射缺点
系统把被转换的逻辑地址和页表的基址放在处理器的高速寄存器中以保证在一个指令执行器内快速完成这些值的运算。
系统把直接映射的页表保存在主存中,对页表的一次饮用就需要一个完整的主存周期,而一个指令执行周期的最大部分都停留在主存访问上,再加上页到页帧之间的映射也需要一个主存访问,这就可能导致系统运行程序的速度下降一半。
有人提出把直接映射页表放在高速缓冲存储器以加快转换速度,但如果逻辑地址空间可能会很大,鉴于高速缓冲存储器的高成本,此方案很快被认为不可行。
快表
又称后备式转换缓冲器(TLB),只存储当前进程完整页表的一小部分内容,也即最近访问过的页表项。
快表基于局部性原理,即被访问过的页可能在不久的将来被再次访问。
快表地址转换
多级页表
直接地址映射中,一个页表中的所有页表项都必须在映射表中,按页号连续存储。这会消耗大量的内存空间。
假设一个页大小为4KB(212)的32位地址空间,将会有220(232-12)个页编号,这就相当于需要100万个页表项,而一个使用4MB的64位地址空间大约需要4万亿个页表项,这就会严重占用程序实际可使用的内存。
多级页表使得系统把一个进程经常使用的那部分页表保存在内存的不连续地址中。而进程页表的其它部分可以在第一次使用时创建,并在不再被经常使用时移出内存。
多级页表的层次
您可能关注的文档
- [计算机软件及应用]oracle10g for windows安装手册v10.doc
- [计算机软件及应用]oracle中文字符转换拼音.doc
- [计算机软件及应用]Oracle数据库设计.pdf
- [计算机软件及应用]OS第二章3.ppt
- [计算机软件及应用]Photoshop_CSPS基础知识教程完整版.doc
- [计算机软件及应用]PS快捷键大全.doc
- [计算机软件及应用]PS-LCD软件开发指南_V121.pdf
- [计算机软件及应用]PS教程之----抠图.pdf
- [计算机软件及应用]PT product training - 皮带安装维护 中文.ppt
- [计算机软件及应用]Ps设计光线照射功效的立体文字.doc
文档评论(0)