操作系统系列学习——内存分区与分页

文章目录

  • 前言
  • 内存分区与分页


前言

一个本硕双非的小菜鸡,备战24年秋招,计划学习操作系统并完成6.0S81,加油!
本文总结自B站【哈工大】操作系统 李治军(全32讲)
老师课程讲的非常好,感谢
【哈工大】操作系统 李治军(全32讲)

内存分区与分页

在这里插入图片描述
内存怎么割?以便把程序的各个段载入到相应的内存分区

内存分区指的是划分的一段用于存储程序段(或代码段cs,或数据段ds)的内存空间

在这里插入图片描述
在这里插入图片描述
可变分区:段请求来了后查看空闲区域,看请求要多少就在空闲分区割一段

如何管理

  • 空闲分区表:存储空闲的内存分区数据(或段释放后的内存空间列表);
  • 已分配分区表:已使用的内存分区的记录信息;
  • 注意:分区信息只需要记录 分区基址 和 长度 这两种信息
  • 在这里插入图片描述
    算法:

首先适配:(350, 150),挑选空闲分区表中第一条且分区空间足够大的分区来分配;空闲分区表查询 足够快;
最佳适配:(200, 50),内存空间浪费少,但空闲分区大小会越来越小,分割后产生的内存碎片比较多;
最差适配:(350, 150),挑选最大的分区进行分配,内存空间浪费多,但空闲分区大小比较均匀,内存碎片少;

操作系统为了让内存能够使用起来,将程序打成多个段。每个段要放在内存的不同空闲地方,所以就需要在内存中找到哪些地方是空闲的。为了找到空闲地方,需要:要维护空闲分区表和已分配分区表数据结构;给一个分配算法。
在这里插入图片描述
内存分区效率不高,实际采用内存分页操作来进行分配

内存分区在为了让段放入内存中需要割一个东西,物理内存采用分页割取(补充:虚拟内存是采用分区来分割或分配的)

内存分区导致存在大量内存碎片(可用的总内存大小大于申请的内存大小,但内存分区不连续,且每个分区小于申请大小,导致内存申请失败)
在这里插入图片描述
内存分页优点:

优点1:不存在内存碎片,因为中间的空闲页可以分配给其他进程;
优点2:内存浪费少:一个段最多浪费1页,即一个段最多浪费4K(一个段由多个页组成);

【小结】

物理内存采用分页进行分割和分配,减少了内存浪费,避免了内存碎片;

用户希望把程序分为多个段;

综上,操作系统需要既支持分段也支持分页对内存进行分割和分配;
在这里插入图片描述
需要建立页表存储页号与页框号映射关系,而找到页框号就可以计算出内存页基址;

一个段需要打散成很多页,这些页就放在内存中的空闲页框里,建立页表与PCB关联

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

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

相关文章

stm32开发环境搭建

软件驱动安装 安装Keil5 MDK 安装器件支持包 软件注册 安装STLINK驱动 安装USB转串口驱动 新建工程步骤 keil中创建工程,并选择对应的芯片型号 工程文件夹下新建Start文件夹,并添加以下文件: Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下的8个启动文件…

MATLAB机器学习工具箱——傻瓜式操作

一、使用回归学习器预测北京二手房房价 软件:MATLAB R2023 a 数据: 第一步:导入原始数据和待预测数据 第二步 :打开工具箱中的回归学习器导入学习数据 1.新建会话 2.寻找导入learning data 3.自动锁定前7列为自变量&#xff…

共射极放大电路理论计算

目录: 1、概述 2、理论计算 3、Multisim仿真验证 1)静态工作点与放大倍数 2)输入阻抗仿真 1、概述 如下图所示的共射极放大电路,本内容主要计算静态工作点电压、电压放大倍数与输入输出阻抗。 2、理论计算 列出方程如下&am…

AndroidStudio中一些实用插件

1.RainbowBrackets插件为圆括号、方括号和花括号内的代码添加了漂亮的彩虹色 2.CodeGlance类似于Sublime或Xcode,CodeGlance插件在编辑器中嵌入了代码迷你图。滚动条也有所增大。在CodeGlance预览文件的代码模式下,用户可以快速导航到目标处。 3.ADBWifi…

java数据结构与算法刷题-----LeetCode540. 有序数组中的单一元素

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 异或运算2. 全数组二分查找异或奇偶3. 偶数下标二分查找 1. 异…

前端如何判断元素是否到达可视区域

以图片显示为例: window.innerHeight 是浏览器可视区的高度;document.body.scrollTop || document.documentElement.scrollTop 是浏览器滚动的过的距离;imgs.offsetTop 是元素顶部距离文档顶部的高度(包括滚动条的距离&#xff0…

备战面试:Java基础二

continue、break 和 return 的区别是什么? 在循环结构中,当循环条件不满足或者循环次数达到要求时,循环会正常结束。但是,有时候可能需要在循环的过程中,当发生了某种条件之后 ,提前终止循环,这就需要用到…

快速上手Spring Cloud 十一:微服务架构下的安全与权限管理

快速上手Spring Cloud 一:Spring Cloud 简介 快速上手Spring Cloud 二:核心组件解析 快速上手Spring Cloud 三:API网关深入探索与实战应用 快速上手Spring Cloud 四:微服务治理与安全 快速上手Spring Cloud 五:Spring …

机器学习——聚类算法-层次聚类算法

机器学习——聚类算法-层次聚类算法 在机器学习中,聚类是一种将数据集划分为具有相似特征的组或簇的无监督学习方法。聚类算法有许多种,其中一种常用的算法是层次聚类算法。本文将介绍聚类问题、层次聚类算法的原理、算法流程以及用Python实现层次聚类算…

蓝桥杯练习题——博弈论

1.必胜态后继至少存在一个必败态 2.必败态后继均为必胜态 Nim游戏 思路 2 3,先手必赢,先拿 1,然后变成 2 2,不管后手怎么拿,先手同样操作,后手一定先遇到 0 0 a1 ^ a2 ^ a3 … ^ an 0,先…

【文献分享】myMUSCLE, a New Multiphysics, Multiscale Simulation Coupling Environment

题目:myMUSCLE, a New Multiphysics, Multiscale Simulation Coupling Environment 链接: https://doi.org/10.1080/00295639.2022.2148809 myMUSCLE,一种新的多物理场、多尺度仿真耦合环境 摘要 计算能力的提高使核界能够结合有关反应…

【保姆级讲解如何Chrome安装Vue-devtools的操作】

🌈个人主页:程序员不想敲代码啊🌈 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家🏆 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提…

vue3 hooks之事件广播(支持跨标签页)

/**** 同源下的全局事件总线,支持跨标签页通信* 第一步:注册事件* 第二步:广播事件* 第三步:处理事件*/// source:消息发起源href,将在跨标签页通信时传入 interface callback {(data: any, source: any): …

github配置ssh

生成公钥 在电脑用户的目录下打开终端执行 ssh-keygen -t rsa: 执行完不要关 配置文件 看看用户的目录里 .ssh 目录: Host github.comHostname ssh.github.comPort 443配置公钥 复制 id_rsa.pub 文件里的内容 粘贴到 github上 连接密钥 回到刚才的终端…

sql语句的常用方法以及sql语句的通用方法

SQL语句常用方法及步骤 一、sql七步曲1.七步曲2.DVD数据库中的表的设计详情: 二、增三、删四、改五、查六、方法优化1--非查找七、方法优化2--查找总结 一、sql七步曲 1.七步曲 1.手动加载数据库驱动类 2.获得数据库连接对象 3.写sql语句 4.获得执行对象 5.执行命…

Leaflet 中创建一个二维地图

要在 Leaflet 中创建一个二维地图&#xff0c;需要以下步骤&#xff1a; 1. 引入 Leaflet 库 首先&#xff0c;你需要在 HTML 文件中引入 Leaflet 库的 CSS 和 JavaScript 文件。你可以从官方网站下载 Leaflet&#xff0c;或者通过 CDN 引入。 <!-- Leaflet CSS --> &…

【QQ版】QQ群短剧机器人源码 全网短剧机器人插件

内容目录 一、详细介绍二、效果展示2.效果图展示 三、学习资料下载 一、详细介绍 QQ版本可以兼容两个框架&#xff08;HTQQ&#xff0c;MYQQ这两个的vip版也可以使用) 支持私聊与群聊&#xff0c;命令是 搜剧影视关键词 如果无法搜索到影视资源&#xff0c;请使用下方命令&…

推特Twitter有直播功能吗?如何用Twitter直播?

现在各大直播平台已经成为社交媒体营销的一种重要渠道&#xff0c;它让品牌能够即时地与全球受众进行互动。据统计&#xff0c;直播市场正在迅速增长&#xff0c;预计到2028年将达到2230亿美元的规模。在这个不断扩张的市场中&#xff0c;许多社交媒体平台如YouTube、Facebook、…

【算法】单源最短路问题之Dijkstra算法

构建图 void TestGraphDijkstra(){const char* str "syztx";Graph<char, int, INT_MAX, true> g(str, strlen(str));g.AddEdge(s, t, 10);g.AddEdge(s, y, 5);g.AddEdge(y, t, 3);g.AddEdge(y, x, 9);g.AddEdge(y, z, 2);g.AddEdge(z, s, 7);g.AddEdge(z, x,…

TCP建立连接时,为什么每次的SYN都不一样

为什么 TCP 每次建立连接时&#xff0c;初始化序列号都要不一样呢&#xff1f; 主要原因是为了防止历史报文被下一个相同四元组的连接接收。 TCP 四次挥手中的 TIME_WAIT 状态不是会持续 2 MSL 时长&#xff0c;历史报文不是早就在网络中消失了吗&#xff1f; 是的&#xff0c…