OS-内存管理-4种内存管理方式(连续分配,页式,段式,段页)。

news2024/11/13 14:58:19

一,内存管理四种方式。

在这里插入图片描述

二,连续分配管理方式。

连续分配方式:为用户分配连续的内存空间。

1.单一连续分配方式

在这里插入图片描述

2.固定分区分配方式

在这里插入图片描述

3.动态分区分配方式

在这里插入图片描述
在这里插入图片描述

4.三种连续分配方式的对比。

在这里插入图片描述

三,基于页式存储管理。

1.页式

为进一步提高内存利用率,尽量避免碎片的产生,引入分页思想:
  ①将内存分为一个个大小相等的分区,每个分区就是一个 “页框/页帧/内存块/物理块/物理页面” 每个页框有一个编号叫"页框号/页帧号/内存块号/物理块号/物理页面号",页框号从0开始。
  ②将进程的逻辑地址空间也分为于页框大小相等的一个个小部分,每部分称 “页/页面” ,每个页有一个编号叫 “页号/页面号” ,从0开始。
在这里插入图片描述

2.基本概念

1.页框/页帧/内存块/物理块/物理页面 与 页/页面 。

2.页框号/页帧号/内存块号/物理块号/物理页面号 与 页号/页面号。

3.页表(实现页号到物理块号的地址映射)
为方便在内存中找到进程每个页面所对应的物理块,系统为每个进程都建立一张页表:记录了页面在内存中对应的物理块号,页表一般存放在内存中,包括页号与块号
在这里插入图片描述

4.逻辑地址A地址结构与确定页号,页内偏移量(由逻辑地址A)
由页表可知,我们只需要由逻辑地址A确定对应的页号与页内偏移量,我们就可以得到逻辑地址A在对应的物理块号中的位置。

①传统方式由逻辑地址A确定页号与页内偏移量:
在这里插入图片描述
注:页面大小决定了逻辑地址A中页内偏移量W占的位数。
注:页号位数决定了 一个进程最多拥有多少个页面。

②由拼接二进制方式确定页号与页内偏移量:
如果页面大小刚好是2的整次幂,则硬件可以很快将逻辑地址A,拆分成 页号P 与 页内偏移量W 假设某计算 32位 表示逻辑地址A。页面大小4KB,按字节编址。
在这里插入图片描述
5.基地址变换机构(具有快表)。
快表:又称相联存储器(TLB,Taranslation,lookaside buffer)是一种访问速度比内存更块的高速缓存(TLB不是内存)。
在这里插入图片描述
注1:p>=M 中" = " 也会产生越界,因为页号从0开始,页表项长度至少是1.
注2:页表项长度:指每个页表项占多大空间。
注3:页表长度:指有多少个页表项。

注4:系统先访问快表,若快表命中则直接访问目标页。
注5:系统先访问快表,若快表失效,则再访问慢表,并将副本放入快表。
注6:系统可同时访问快表与慢表,若快表命中则终止访问慢表。
注7:系统可同时访问快表与慢表,若快表失效,则继续访问慢表,并将副本放入快表。

6.对比基地址变换机构有无快表。
在这里插入图片描述

3.两级页表

普通页式管理遇到问题:
  1.页表必须连续存放,因此当页表很大的时候,需要占用很多个连续的页框,这种方式就失去了意义。
  2.没有必要让整个页表常驻内存,因为进程在一段时间内可能只需要访问某几个特定的页面。
为解决上述,引入多级页表:
可将长长的页表进行分组,使每个内存块刚好可以放入一个分组。
在这里插入图片描述
另外,要为这些离散的分组再建立一张页表,称为 页目录表 或 外层页表 或 顶层页表。
在这里插入图片描述
注1:若采用多级页表机制,则各级页表大小不可以超过一个页面的大小,如果只分两级,且一级页号表示的范围一个页面村放不下,则需要继续往上分。

四,基于段式存储管理。

1.段式

段式存储与页式最大区别就是:离散分配时所分配地址空间的基本单位不同。
段式:进程的地址空间按照程序自身的逻辑关系划分为若干段,每个段都有一个段名,每段从0开始。
在这里插入图片描述

注:(在低级语言中,程序员需使用段名来编程,但OS识别的是段号,故编译器会自动将段名转换,所以给了段名相当于给了段号)。

2.基本概念

1.段名,段号,段长,基址,段内地址。

2.地址结构,类比页式
分段系统逻辑地址结构由段号(段名)和段内地址(段内偏移量)所组成的:
在这里插入图片描述

3.段表
程序分多个段,各段离散地装入内存,为了保证程序能正常运行,就必须能从物理内存中找到各个逻辑段存放位置,为了高效,OS为每个进程建立一张段映射表,称段表。

注1:由于各段长度不一样,因此相比"页式"增加了段长项。
注2:每个段对应一个段表项,其中记录该段在内存的起始位置,又称基址和段的长度。
注3:各个段表项长度相同,因此K号段对应的段表项存放地址 = M + k*段表项长度。M为段表起始地址。
在这里插入图片描述
4.地址变换过程
在这里插入图片描述
注:在内存的系统区中,存放着很多用于管理软硬件资源的数据结构,包括进程控制块PCB,当一个进程要上cpu之前,进程切换相关的内核程序负责将某进程调度到cpu上并恢复相应运行环境,加载对应的PCB,这其中就包含一个非常重要的寄存器叫段表寄存器,里面存放着,进程对应的段表始址F以及段表长度M。

五,基于段页式存储管理。

1.段页式

分段存储会产生外部碎片,页式不利于实现信息的共享和保护,基于此,综合两者优点,引出段页式:
  ①将程序按照逻辑模块先分段,再将各段分页=内存块大小,每段中页号从0开始。
  ②再将内存空间分为大小相等的内存块,进程运行前将各页面分别装入中。
在这里插入图片描述

注:段表只有一个,页表可以有很多个。

2.基本概念

1.段号,页号,页表起始地址,段表,页表,段名,段长。

2.逻辑地址结构。
在这里插入图片描述
注1:段号位数决定了每个进程最多可分几个段。
注2:页号位数决定了每个段最大有多少各页。
注3:页内偏移量决定了页面大小,内存块大小。
注4:分段对用户可见,程序员给出的段名,段内地址(因此段页式为二维的地址结构。),而对段分页用户不可见,系统自动根据段内地址划分页号与页内偏移量。
段式页式二维的,页式为一维的。

3.地址变化机构
在这里插入图片描述

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

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

相关文章

【来不及刷题之】32、二分搜索(寻找数,寻找左右边界)

1. 基础二分搜索&#xff1a;寻找一个数 一道很基础的题目&#xff0c;主要注意一下循环条件是 left<right 即可 class Solution {public int search(int[] nums, int target) {int left0;int rightnums.length-1;while(left<right){int midleft(right-left)/2;if(nums…

第二十一章行为性模式—访问者模式

文章目录 访问者模式解决的问题结构实例存在的问题使用场景 拓展动态分派静态分派双分派 行为型模式用于描述程序在运行时复杂的流程控制&#xff0c;即描述多个类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务&#xff0c;它涉及算法与对象间职责的分配。行为型模…

华为OD机试真题B卷 Java 实现【箱子之形摆放】,附详细解题思路

一、题目描述 要求将一批箱子按从上到下以‘之’字形的顺序摆放在宽度为 n 的空地上&#xff0c;输出箱子的摆放位置&#xff0c;例如&#xff1a;箱子ABCDEFG&#xff0c;空地宽为3。 摆放效果如下图&#xff1a; 则输出结果为&#xff1a; AFG BE CD 二、输入描述 一行…

智能语音交互流程

引言 用该文来讲解语音全流程涉及到的技术&#xff0c;整体语音涉及的交互流程如下图&#xff1a; Part1 唤醒 语音唤醒指的是通过预设的关键词即可将智能硬件从休眠状态唤醒&#xff0c;来执行相应操作。 1.1 交互模式 传统模式 唤醒方式&#xff1a;先唤醒设备&#xff…

重学数据结构与算法

学习数据结构与算法的目的&#xff1a; 优化时间复杂度与空间复杂度 优化时间复杂度与空间复杂度 优化时间复杂度与空间复杂度 教程总纲&#xff1a; 暴力解法(模拟)、算法优化(递归/二分/排序/DP)、时刻转换(数据结构) 1.时间复杂度的核心方法论2.增删查——选取数据结构的基…

MySQL_9 事务机制与隔离机制

目录 一、事务概述 1.定义 : 2.事务和锁 : 二、事务操作 1.MySQL控制台事务的基本操作 : 2.代码演示 : 3.注意事项 : 三、事务的“ACID”特性 : 四、隔离机制 1.介绍 : 2.分类 : 3.常用指令 : 一、事务概述 1.定义 : 事务用于保证数据的一致性&#xff0c;它由一…

python批量实现pdf转换为图片|实现pdf转为jpg/png|实现word批量转pdf|python批量实现word转换为图片

本文介绍了一种使用 Python 脚本来完成这项工作的方法&#xff0c;该脚本基于 PyMuPDF、pdf2image 和 win32com 库实现&#xff0c;可以帮助您快速地将 Word 文档转换为 PDF 文件&#xff0c;并将 PDF 文件转换为 PNG 图片。 一、安装所需的库和软件 在开始使用该脚本之前&am…

AWTK实现汽车仪表Cluster/DashBoard嵌入式GUI开发(一):概述

AWTK=Toolkit AnyWhere,一款国产免费开源工具,ZLG开发的开源GUI引擎,为嵌入式等系统提供图形界面开发IDE。 随着汽车技术的发展,汽车仪表盘也在快速发展,从最初的机械式到电气式,再到数字化。这次电动化、智能化又一次让汽车仪表出现了飞跃式的发展,再未来,仪表板上可…

04SpringCloud 消息中间件

为什么要使用消息中间件 同步通信&#xff1a;耗时长&#xff0c;受网络波动影响&#xff0c;不能保证高成功率&#xff0c;耦合性高。 同步&#xff0c;异步 并发&#xff1a;一段时间&#xff08;1S&#xff09;多个请求数 并行&#xff1a;时间节点&#xff0c;多个指令…

干接点与湿接点

&#xff08;1&#xff09;干接点的定义 无源开关&#xff1b;具有闭合和断开的2种状态&#xff1b;2个接点之间没有极性&#xff0c;可以互换。 常见的干接点信号有&#xff1a; 1&#xff09;各种开关如&#xff1a;限位开关、行程开关、脚踏开关、旋转开关、温度开关、液…

超越象限:解密 α 碎片的归属问题

文章目录 参考环境α 碎片的归属问题问题概述终边相同角圆心角终边相同角 象限角 描述象限角第一象限角任意象限角 特殊方案问解 叠加坐标系上部下部叠加坐标系 一般方案问解任意角 α分析绘图要领叠加坐标系N-N 参考 项目描述搜索引擎Google 、Bing百度百科首页佟大大还是ETT…

苹果iPhone14如何批量删除联系人?iPhone 14批量删除联系人方法

苹果iPhone 14如何批量删除联系人&#xff1f;手动一个个删实在太麻烦了&#xff01; 苹果iPhone 14手机的通讯录本身不支持批量删除联系人&#xff0c;但是如果通讯录在iCloud中开启过备份&#xff0c;就可以对联系人进行批量操作。 需要注意的是&#xff0c;iPhone 14手机端…

聊聊开源的类ChatGPT工作——ChatGLM

这是”聊聊开源的类ChatGPT工作“的第二篇&#xff0c;写第一篇[7]的时候&#xff0c;当时恰巧MOSS开源&#xff0c;就顺手写了MOSS。但要问目前中文领域的“开源”的语言模型谁更强&#xff0c;公认的还是ChatGLM-6B&#xff08;以下简称ChatGLM&#xff09;。 下面是官方对C…

【20230531】Git命令和Github相关使用

1 在Git中缓存GitHub凭据 根据系统下载对应的GitHub CLI 2.25.1 2. github主页&#xff0c;点击用户头像选择settings->Developer Settings->Personal access tokens申请密钥&#xff08;主要分为Fine-grained tokens和Tokens classic&#xff09;gh需要使用的是Tokens …

Spring Boot如何实现接口文档自动生成

Spring Boot如何实现接口文档自动生成 在开发Web应用程序时&#xff0c;接口文档是非常重要的一环&#xff0c;它可以帮助我们快速了解API的功能和使用方法&#xff0c;同时也是与其他开发人员和团队协作的重要工具。然而&#xff0c;手动编写和维护接口文档是一项繁琐的工作&…

商品上架业务

一.商品上架操作 将检索数据存入es&#xff0c;更改商品上架状态为已上架 二.业务设计 &#xff08;1&#xff09;设计检索数据 分析&#xff1a;商品上架在 es 中是存 sku 还是 spu&#xff1f; 1&#xff09;、检索的时候输入名字&#xff0c;是需要按照 sku 的 title 进行…

给大龄准备转行网络工程师的朋友一些建议

我一直认为&#xff0c;网络工程师是一个看能力而不是看年龄的工作。 大龄转行网络工程师到底有没有机会&#xff1f;很多三十多岁的朋友对于跨行业完全心里没底&#xff0c;冒然转行学习网工又不知道从何学起。今天就给大家整理几个在学习网络工程师的时候需要注意的地方&…

Linux系统下imx6ull QT编程—— C++数据封装与数据抽象(八)

Linux QT编程 文章目录 Linux QT编程前言一、数据封装二、数据抽象 前言 封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念&#xff0c;这样能避免受到外界的干扰和误用&#xff0c;从而确保了安全。数据封装引申出了另一个重要的 OOP 概念&#xff0c;即数…

用JavaScript做一个拼图游戏

喜欢的可以复制下面完整代码查看效果在自己本地查看效果 实现难度&#xff1a;不算大&#xff0c;毕竟是小游戏 开发工具&#xff1a;html&#xff0c;css&#xff0c;js&#xff0c;jquery 效果截图 完整代码 <!DOCTYPE html> <html lang"en"> <he…

24届秋招专场·双指针巧解链表套路题

你好&#xff0c;我是安然无虞。 文章目录 合并两个有序链表分隔链表合并K个有序链表链表中倒数最后K个节点变形题: 删除链表的倒数第N个节点链表的中点判断链表是否有环环形链表II相交链表 大家好, 好久不见了, 从今天开始, 后面会经常更新笔试面试真题, 准备今年24届秋招的小…