九、操作系统——基本地址变换机构(详解)

一、概览

重点理解、记忆基本地址变换机构(用于实现逻辑地址到物理地址转换的一组硬件机构)的原理和流程
在这里插入图片描述

二、基本地址变换机构

基本地址变换机构可以借助进程的页表将逻辑地址转换为物理地址。
通常会在系统中设置一个页表寄存器(PTR),存放页表在内存中的起始地址F和页表长度M。进程未执行时,页表的始址和页表长度放在进程控制块(PCB)中,当进程被调度时,操作系统内核会把它们放到页表寄存器中。
注意:页面大小是2的整数幂
设页面大小为L,逻辑地址A到物理地址E的变换过程如下:

①根据逻辑地址计算出页号、页内偏移量
②判断页号是否越界:页表长度就是页表中页表项的个数,有多少个页表项就有多少个页面。如果页号P >= 页表长度M,则抛出越界中断。否则,进入③
③查询页表,找到页号对应的页表项,确定页面存放的内存块号:根据页号P和页表起始地址F得到该页号对应的页表项在内存块中的地址=页号P*页表项大小+页表起始地址F。通过页表项在内存块中的地址,找到这个页表项之后,便可以得到页表项中的内存块号,然后进入④
④用内存块号和页内偏移量得到物理地址b号内存块号(即P号页面)在内存中的起始地址=b*每个内存块的大小。然后得到物理地址 = 内存块号 * 每个内存块的大小 + 页面偏移量
在这里插入图片描述
⑤访问目标内存单元
在这里插入图片描述
①计算页号P页内偏移量W(如果用十进制数手算,则P=A/L,W=A%L;但是在计算机实际运行时,逻辑地址结构是固定不变的,因此计算机硬件可以更快地得到二进制表示的页号、页内偏移量)
②比较页号P和页表长度M,若P>=M,则产生越界中断,否则继续执行。(注意:页号是从0开始的,而页表长度至少是1,因此P=M时也会越界
③页表中页号P对应的页表项地址=页表起始地址F+页号P*页表项长度,通过页表项地址找到这个页表项,并取出该页表项内容b,即为内存块号。(注意区分页表项长度、页表长度、页面大小的区别。页表长度指的是这个页表中总共有几个页表项,即总共有几个页;页表项长度指的是每个页表项占多大的存储空间页面大小指的是一个页面占多大的存储空间),页面大小L
④计算E=b*L+W,用得到的物理地址E去访存。(如果内存块号、页面偏移量是用二进制表示的,那么把二者拼接起来就是最终的物理地址了)

例:若页面大小L为1K字节,页号2对应的内存块号b=8,将逻辑地址A=2500转换为物理地址E。
等价描述:某系统按字节寻址,逻辑地址结构中,页内偏移量占10位(说明一个页面的大小为2^10 B=1KB),页号2对应的内存块号b=8,将逻辑地址A=2500转换为物理地址E。
解:
①计算页号、页内偏移量
页号P=A/L=2500/1024=2;页内偏移量W=A%L=2500%1024=452
②根据题中条件可知,页号2没有越界,其存放的内存块号b=8(容易被忽略的步骤)
物理地址E=b*L+W=8*1024+452=8644在分页存储管理(页式管理)的系统中,只要确定了每个页面的大小,逻辑地址结构就确定了。因此,页式管理中地址是一维的。即,只要给出一个逻辑地址,系统就可以自动地算出页号、页内偏移量两个部分,并不需要显式地告诉系统这个逻辑地址中,页内偏移量占多少位。

三、对页表项大小的进一步探讨

每个页表项的长度是相同的,页号是“隐含”的
Eg:假设某系统物理内存大小为4GB,页面大小为4KB,的内存总共会被分为2^32 / 2^12 = 2^20 个内存块,因此内存块号的范围应该是 0~2^20-1。因此至少要20个二进制位才能表示这么多的内存块号,因此至少要3个字节才够(每个字节8个二进制位,3个字节共24个二进制位)

在这里插入图片描述

在这里插入图片描述
各页表项会按顺序连续地存放在内存中。如果该页表在内存中存放的起始地址为x,则M号页对应的页表项是存放在内存地址为X+3*M
一个页面为4KB,则每个页框可以存放4096/3=1365个页表项,但是这个页框会剩余4096%3=1B页内碎片。因此,1365号页表项存放的地址为X+3*1365+1。而如果每个页表项占4字节,则每个页框刚好可存放1024个页表项。
在这里插入图片描述
1024号页表项虽然是存放在下一个页框中的,但是它的地址依然可以用X+4*1024得出

结论:理论上,页表项长度为3B即可表示内存块号的范围,但是,为了方便页表的查询,常常会让一个页表项占更多的字节,使得每个页面恰好可以装得下整数个页表项

四、总结

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

客户端显示服务器图片不显示,客户端请求服务器图片不显示

客户端请求服务器图片不显示 内容精选换一换已成功登录鲲鹏代码迁移工具。只有管理员用户(portadmin)可以执行生成CSR文件、导入web服务器证书、重启和更换工作密钥的操作。普通用户只能查看web服务端证书信息。SSL证书通过在客户端浏览器和web服务器之间建立一条SSL安全通道(访…

LeetCode 2165. 重排数字的最小值(计数)

文章目录1. 题目2. 解题1. 题目 给你一个整数 num 。重排 num 中的各位数字,使其值 最小化 且不含 任何 前导零。 返回不含前导零且值最小的重排数字。 注意,重排各位数字后,num 的符号不会改变。 示例 1: 输入:nu…

优酷路由宝无线服务器,优酷路由宝一站式刷潘多拉!!!整理版

本帖最后由 louis000 于 2015-11-3 14:57 编辑优酷路由宝L1W刷潘多拉固件-整理优化版准备工作:使用有线连接路由宝和电脑;电脑网络连接设置为手动获取IP地址。---------------------------------------------------------------------------------------…

LeetCode 2166. 设计位集(Bitset)

文章目录1. 题目2. 解题1. 题目 位集 Bitset 是一种能以紧凑形式存储位的数据结构。 请你实现 Bitset 类。 Bitset(int size) 用 size 个位初始化 Bitset ,所有位都是 0 。void fix(int idx) 将下标为 idx 的位上的值更新为 1 。如果值已经是 1 ,则不…

Web框架——Flask系列之Flask简介(一)

一、Web应用程序作用 Web(World Wide Web)诞生最初的目的,是为了利用互联网交流工作文档 二、关于Web框架 (一)什么是Web框架? 已经封装好了一段代码,协助程序快速开发,相当于项目半成品开发者只需要按照框架约定要求,在指定位置写上自己…

服务器系统网卡驱动装不上,网卡驱动装不上去怎么办?

满意答案hgtn1q6xvv52014.09.28采纳率:58% 等级:13已帮助:9534人现提示原: SP2更考虑安全问题IP设置自获取其实DHCP服务器获取IP及相关参数程能由于某种原没完. SP1代种情况操作系统防止脱网(微软写)自作主张网卡设置169.x.x.x保留IP作任何…

moco-globalsettings

1.单个json文件 (1)目录配置 (2)新建foo.json 在project文件夹中新建foo.json [{"request" : {"uri" : "/foo"},"response" : {"text" : "foo"}} ] (3&a…

LeetCode 2169. 得到 0 的操作数

文章目录1. 题目2. 解题1. 题目 给你两个 非负 整数 num1 和 num2 。 每一步 操作 中,如果 num1 > num2 ,你必须用 num1 减 num2 ; 否则,你必须用 num2 减 num1 。 例如,num1 5 且 num2 4 ,应该用 …

阿里云 腾讯云 服务器挂载数据盘

在默认拥有的腾讯云服务器是没有额外的数据盘的,默认Linux只有8GB系统盘,一般的网站也足够使用,如果额外购买的数据盘安装系统之后根据不同的面板、系统的路径问题可能不会自动加载到指定的数据盘目录,需要我们手工进行加载数据盘…

LeetCode 2171. 拿出最少数目的魔法豆(排序)

文章目录1. 题目2. 解题1. 题目 给你一个 正 整数数组 beans ,其中每个整数表示一个袋子里装的魔法豆的数目。 请你从每个袋子中 拿出 一些豆子(也可以 不拿出),使得剩下的 非空 袋子中(即 至少 还有 一颗 魔法豆的袋…

LeetCode 2176. 统计数组中相等且可以被整除的数对

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始长度为 n 的整数数组 nums 和一个整数 k &#xff0c;请你返回满足 0 < i < j < n &#xff0c;nums[i] nums[j] 且 (i * j) 能被 k 整除的数对 (i, j) 的 数目 。 示例 1&#xff1a; 输入&#xff1a;nums …

Web框架——Flask系列之Jinja2模板引擎(二)

Jinja2模板引擎简介 一、Jinja2模板概述 用来展示数据的html页面,这个过程也通常称为渲染,属于Jinja2的功能 使用模板的好处&#xff1a; 视图函数只负责业务逻辑和数据处理(业务逻辑方面)而模板则取到视图函数的数据结果进行展示(视图展示方面)代码结构清晰&#xff0c;耦合…

LeetCode 2177. 找到和为给定整数的三个连续整数

文章目录1. 题目2. 解题1. 题目 给你一个整数 num &#xff0c;请你返回三个连续的整数&#xff0c;它们的 和 为 num 。 如果 num 无法被表示成三个连续整数的和&#xff0c;请你返回一个 空 数组。 示例 1&#xff1a; 输入&#xff1a;num 33 输出&#xff1a;[10,11,12]…

LeetCode 2178. 拆分成最多数目的偶整数之和(等差数列求和)

文章目录1. 题目2. 解题1. 题目 给你一个整数 finalSum 。请你将它拆分成若干个 互不相同 的偶整数之和&#xff0c;且拆分出来的偶整数数目 最多 。 比方说&#xff0c;给你 finalSum 12 &#xff0c;那么这些拆分是 符合要求 的&#xff08;互不相同的偶整数且和为 finalS…

Web框架——Flask系列之CSRFToken详解(四)

CSRF(理解) 一. 什么是CSRFToken? CSRF全拼为Cross Site Request Forgery&#xff0c;译为跨站请求伪造。CSRF指攻击者盗用了你的身份&#xff0c;以你的名义发送恶意请求。 包括&#xff1a;以你名义发送邮件&#xff0c;发消息&#xff0c;盗取你的账号&#xff0c;甚至于…

apache ab test使用 单独安装ab和htpasswd

apache ab test使用 apache ab test使用 单独安装ab和htpasswd 转载自&#xff1a; http://www.cnblogs.com/super-d2/p/3831155.html#top http://blog.chinaunix.net/uid-20382003-id-3032167.html 注意&#xff1a;ab test是不支持长连接压测的&#xff0c;只支持短连接压测 …

LeetCode 2180. 统计各位数字之和为偶数的整数个数

文章目录1. 题目2. 解题1. 题目 给你一个正整数 num &#xff0c;请你统计并返回 小于或等于 num 且各位数字之和为 偶数 的正整数的数目。 正整数的 各位数字之和 是其所有位上的对应数字相加的结果。 示例 1&#xff1a; 输入&#xff1a;num 4 输出&#xff1a;2 解释&a…

LeetCode 2181. 合并零之间的节点(链表)

文章目录1. 题目2. 解题1. 题目 给你一个链表的头节点 head &#xff0c;该链表包含由 0 分隔开的一连串整数。 链表的 开端 和 末尾 的节点都满足 Node.val 0 。 对于每两个相邻的 0 &#xff0c;请你将它们之间的所有节点合并成一个节点&#xff0c;其值是所有已合并节点的…

Web框架——Flask系列之模板使用练习(六)

一、实现的效果如下: 二、实现要求&#xff1a; 给定如下5条数据,只显示4行数据&#xff0c;背景颜色依次为&#xff1a;黄&#xff0c;绿&#xff0c;红&#xff0c;紫 my_list [{"id": 1,"value": "我爱工作"},{"id": 2,"va…

Android安全研究经验谈

安全研究做什么从攻击角度举例&#xff0c;可以是&#xff1a;对某个模块进行漏洞挖掘的方法&#xff0c;对某个漏洞进行利用的技术&#xff0c;通过逆向工程破解程序、解密数据&#xff0c;对系统或应用进行感染、劫持等破坏安全性的攻击技术等。而防御上则是&#xff1a;查杀…