八、操作系统——基本分页存储管理的基本概念(详解)

一、思考:连续分配方式的缺点?

在这里插入图片描述
考虑支持多道程序的两种连续分配方式:

  1. 固定分区分配:缺乏灵活性,会产生大量的内部碎片内存的利用率很低
  2. 动态分区分配:会产生很多外部碎片,虽然可以用“紧凑”技术来处理,但是“紧凑”的时间代价很高
    如果允许将一个进程分散地装入到许多不相邻的分区中,便可充分地利用内存,而无需再进行“紧凑”。基于这一思想,产生了“非连续分配方式”,或者称为“离散分配方式”。
    在这里插入图片描述
    连续分配:为用户进程分配的必须是一个连续的内存空间
    非连续分配:为用户进程分配的可以是一些分散的内存空间

二、把“固定分区分配”改造为“非连续分配版本”

假设进程A大小为23MB,但是每个分区大小只有10MB,如果进程只能占用一个分区,那显然放不下。
解决思路:如果允许进程占用多个分区,那么可以把进程拆分成10MB+10MB+3MB三个部分,再把这三个部分分别放到三个分区中(这些分区不要求连续)。但是,进程A的最后一个部分是3MB,放入分区后会产生7MB的内部碎片

如果每个分区大小为2MB,那么进程A可以拆分成11*2MB+1MB共12个部分,只有最后一部分1MB占不满分区,会产生1MB的内部碎片
显然,如果把分区大小设置的更小一些,内部碎片会更小,内存利用率会更高
基本分页存储管理的思想——把内存分为一个个相等的小分区,再按照分区大小把进程拆分成一个个小部分
在这里插入图片描述

三、分页存储管理的基本概念

将内存空间分为一个个大小相等的分区(比如:每个分区4KB),每个分区就是一个“页框”,或称“页帧”、“内存块”、“物理块”。每个页框有一个编号,即“页框号”(或者“内存块号”、“页帧号”、“物理块号”)页框号从0开始

将用户进程的地址空间也分为与页框大小相等的一个个区域,称为“”或“页面”。每个页面也有一个编号,即“页号”,页号也是从0开始
(注:进程的最后一个页面可能没有一个页框那么大。因此,页框不能太大,否则可能产生过大的内部碎片

操作系统以页框为单位为各个进程分配内存空间。进程的每个页面分别放入一个页框中。也就是说,进程的页面内存的页框一一对应的关系。各个页面不必连续存放,也不必按先后顺序来,可以放到不相邻的各个页框中。
在这里插入图片描述

四、思考:如何实现地址的转换?

将进程地址空间分页之后,操作系统该如何实现逻辑地址到物理地址的转换?
在这里插入图片描述
先回顾一下,进程在内存中连续存放时,操作系统是如何实现逻辑地址到物理地址的转换的?(采取动态重定位的方法)
在这里插入图片描述
在这里插入图片描述

五、如果采用分页技术,应该如何实现地址转换?

在这里插入图片描述
CPU执行指令1,需要访问逻辑地址为80的内存单元,如何转化为物理地址?

逻辑地址为80的内存单元:
应该在1号页,该页在内存中的起始位置为450,逻辑地址为80的内存单元相对于该页的起始地址而言,“偏移量”应该是30
所以,实际物理地址=450+30=480

  1. 要算出逻辑地址对应的页号
  2. 要知道该页号对应页面在内存中的起始地址
  3. 要算出逻辑地址在页面内的“偏移量”
  4. 物理地址=页面始址+页内偏移量

如何计算:
页号=逻辑地址/页面长度(取除法的整数部分)
页内偏移量=逻辑地址%页面长度(取除法的余数部分)
页面在内存中的起始位置:操作系统需要用某种数据结构记录进程各个页面的起始位置。

页号=80/50=1
页内偏移量=80%50=30
1号页在内存中存放的起始位置450
注意:为了方便计算页号、页内偏移量,页面大小一般设为2的整数幂

在这里插入图片描述
在这里插入图片描述
结论:如果每个页面大小为2^K B,用二进制数表示逻辑地址,则末尾K位即为页内偏移量其余部分就是页号
因此,如果让每个页面的大小为2的整数幂,计算机就可以很方便地得出一个逻辑地址对应的页号和页内偏移量。

六、逻辑地址结构

分页存储管理的逻辑地址结构如下所示:
在这里插入图片描述
地址结构包含两个部分:前一部分为页号,后一部分为页内偏移量W。在上图所示的例子中,地址长度为32位,其中0-11位为“页内偏移量”,或称“页内地址”;12-31位为“页号”。
如果有K位表示“页内偏移量”,则说明该系统中一个页面的大小是2^K个内存单元
如果有M位表示“页号”,则说明在该系统中,一个进程最多允许有2^M个页面

分页存储管理中,如何实现地址转换?

  1. 要算出逻辑地址对应的页号
  2. 要知道该页是对应页面在内存中的起始地址
  3. 要算出逻辑地址在页面内的“偏移量”
  4. 物理地址=页面始址+页内偏移量
    注:如果题目中是用十进制数表示逻辑地址,则页号=逻辑地址/页面长度(取除法的整数部分)页内偏移量=逻辑地址%页面长度(取除法的余数部分)

七、页表

为了能知道进程的每个页面在内存中存放的位置,操作系统要为每个进程建立一张页表
在这里插入图片描述
为什么每个页表项的长度是相同的,页号是“隐含”的?
Eg:假设某系统物理内存大小为4GB,页面大小为4KB,则每个页表项至少应该为多少字节?
4GB=2^32B,
4KB=2^12B
因此4GB的内存总共会被分为2^32 / 2^12= 220个内存块**,因此内存块号的范围应该是0~220-1因此至少要20个二进制位才能表示这么多的内存块号,因此至少要3个字节才够(每个字节8个二进制位,3个字节共24个二进制位)
在这里插入图片描述
各页表项会按顺序连续地存放在内存中。如果该页表在内存中存放的起始地址为x,则M号页对应的页表项一定是存放在内存地址为 X+3*M。因此,页表中的“页号”可以是“隐含”的。
只需要知道
页表存放的起始地址页表项长度**,即可找到各个页号对应的页表项存放的位置。在本例中,一个页表项占3B,如果进程由n个页面,则该进程的页表总共会占3*n个字节。

八、总结

在这里插入图片描述

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

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

相关文章

oracle 查看服务器密码修改,如何修改oracle用户密码

修改oracle用户密码的方法:首先连接oracle数据库所在服务器,并进入oracle控制台;然后输入“select username from dba_users”查看用户列表;最后输入修改用户口令即可。本教程操作环境:windows7系统、oracle版&#xf…

计算机组成原理——校验码(奇偶校验码、汉明校验码、循环冗余校验码)

一、为什么要使用校验码? 数据在计算机系统内加工、存取和传送的过程中可能会产生错误。为了减少和避免这类错误,引入了数据校验码。数据校验码是一种常用的带有发现某些错误,甚至带有一定自动改错能力的数据编码方法。 例子: …

(转)基因芯片数据GO和KEGG功能分析

随着人类基因组计划(Human Genome Project)即全部核苷酸测序的即将完成,人类基因组研究的重心逐渐进入后基因组时代(Postgenome Era),向基因的功能及基因的多样性倾斜。通过对个体在不同生长发育阶段或不同生理状态下大量基因表达的平行分析,…

LeetCode 2164. 对奇偶下标分别排序

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的整数数组 nums 。根据下述规则重排 nums 中的值: 按 非递增 顺序排列 nums 奇数下标 上的所有值。 举个例子,如果排序前 nums [4,1,2,3] ,对奇数下标的值排序后变为 [4,3,2,1] 。奇…

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

一、概览 重点理解、记忆基本地址变换机构(用于实现逻辑地址到物理地址转换的一组硬件机构)的原理和流程 二、基本地址变换机构 基本地址变换机构可以借助进程的页表将逻辑地址转换为物理地址。 通常会在系统中设置一个页表寄存器(PTR&am…

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

客户端请求服务器图片不显示 内容精选换一换已成功登录鲲鹏代码迁移工具。只有管理员用户(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;甚至于…