操作系统之内存管理
连续分配
一、单一连续
直接为要运行的进程分配一个内存,只适合单任务,只能用于单对象、单任务,内存被分配为系统区和用户区,系统区在低地址,用户区是一个用户独享
二、等分分区
由于分配一个内存只能执行单任务,所以出现了等分区的优化,可以多任务在不同的分区去工作,但是等分内存空间,导致进程大则无法放入,进程小则浪费空间;

三、不均匀的分配大小
提前将内存分为不同的分区大小,当进程进来的时候,分配最相近大小的内存块给他,但是这样也会产生很多外部碎片(由于进程放不进而浪费的空间)和内部碎片(进程太小了放入空间的时候有一部分空间没有使用导致浪费)

四、动态分配空间
内部碎片:分配给某进程的内存区域中,如果有些部分没有用上
外部碎片:是指内存中的某些空闲分区由于太小而难以利用(如果有外部碎片,可以采用紧凑技术)
根据进程的大小来分配空间,但是由于操作系统是二倍数的大小,导致会产生很多的内部碎片

根据进程大小动态分配空间,容易产生碎片,当内存使用完毕之后,将使用的空闲分区使用链表或者空闲分区表记录

1、首次适应算法(First Fit)
算法思想:每次从低地址开始查找,找到第一个能满足大小的空闲分区
2、最佳适应算法(Best Fit)
算法思想:为了保证“大进程”到来时能有连续的大片区域,可以尽可能留下大片的空闲区,优先使用更小的空闲区。
空闲分区按容量递增次序链接,分配内存时顺序查找空闲分区链
缺点:会留下小碎片
3、最坏适应算法(Worst Fit)
算法思想:和最佳适应算法相反,按容量递减次序排列,每次尽可能用大的分区
4、领近适应算法(Next Fit)
算法思想:每次从上次查找结束的位置开始检索
缺点:大空间容易被用完
(四)根据静态和动态组合成伙伴系统

根据总内存一次一次的划分,当使用 完成后如果内存来自于统一块,就直接合并内存
非连续分配
由于连续分配的时候,会产生很多的碎片,后续出现了紧凑操作可以将碎片压缩在一起,但是比较消耗性能,所以出现了非连续的分配内存的方式。
一、页存储方式
分为逻辑地址和物理地址映射、允许一个进程分散地装入道许多不相邻的位置
连续分配:为用户进程分配连续的内存空间
非连续分配:为用户进程分配分散的内存空间
将内存分为大小相等的小分区“页框”,将用户的进程空间也分为大小相等的一个个区域,以页框的基本单位分配给每个进程片
分页管理:物理地址=页面的其实位置+偏移量
计算机中用2的整数倍表示页面的大小
页表:存放页号和块号的对应关系
举例:一段代码执行的时候,通过访问逻辑地址,然后通过页表去访问物理地址拿到信息,页表寄存器(PTR),存放页表在内存中的起始地址F和页表长度M,进程未执行时,页表的起始地址和页表的长度放在进程控制块(PCB)中,当进程被调度时,操作系统内核会把它们放在页表寄存器中。
二、段式储存
1、什么是分段?
进程的地址空间:按照程序自身的逻辑关系划分为若干个段,每段有段名,每段从0开始编址
段号的位数决定了每个进程最多可以分几个段
段内地址位数决定了每个段的最大长度是多少
2、什么是段表
段表:段映射表
每个程序被分段后,用段表记录该程序在内存中存放的位置
段表:段号 段长 基址
3、如何实现地址变换
4、分段、分页管理的对比
页:信息的物理单位,实现离散分配,提高内存利用率,地址是一维的,访存两次
段:信息的逻辑单位,对系统可见,地址是二维的,访存3次
分段比分页更容易实现信息的共享和保护(不能被修改的代码称为纯代码和可重入代码,不属于临界资源)
三、段页式储存
1、分页、分段管理方式最大的优缺点
分页:利用率高,碎片少,不方便进行信息共享和保护
分段:方便信息共享和保护,如果段长大,容易产生外部碎片
2、分段+分页的结合——段页式管理方式
先分段再分页
段号+页号+页内偏移量
地址结构是二维的
3、段表、页表
虚拟内存技术
一、定义和特征
虚拟内存最大容量是计算机地址结构确定的
虚拟内存的实际容量=min(内存和外存容量之和,CPU寻址范围)
eg:某计算机地址结构为32位,按字节编址,内存大小为512MB,外存大小为2GB.
则虚拟内存的最大容量为 2^32B=4GB
虚拟内存的实际容量=min(2^32B,512MB+2GB)=2GB+512MB
多次性:无需在作业运行时一次性全部装入内存,而是允许被分成多次调用内存
对换性:在作业运行时无需一直常驻内存,而是允许在作业运行过程中,将作业换入换出
虚拟性:从逻辑上扩充了内存的容量,使用户看到的内存容量,远大于实际的容量
在程序执行过程中,当所访问的信息不再内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存。
覆盖技术
是以进程为单位,发生在同一个进程内的不同执行的模块间,解决一个进程空间需求无法满足的问题,通过程序员定义的模块间的逻辑结构来进行页的覆盖
交换技术

进程的换入:系统定时的查看所有进程的状态,从中找出“就绪”状态且已换出的进程,将其换出时间最久的进程换入;
进程的换出:当某种由于创建子进程而需要更多的内存空间,但又无足够的内存空间时,则系统将某进程换出,一般选择阻塞状态且优先级最低的进程换出;
虚拟储存技术
当所需要访问的页面不在内存中的时候,就会发生缺页中断,请求系统所需的页调入内存,

页面置换算法
1、最佳置换算法(OPT)
每次选择淘汰的页面是以后永不使用或者在最长时间内不再被访问的页面,这样可以保证最低的缺页率。
实际上不知道后面的序列
2、先进先出置换算法(FIFO)
每次选择淘汰的页面是最早进入内存的页面
Belady异常,当分配的内存块增大时,缺页次数反而增加
3、最近最久未使用置换算法(LRU)
每次淘汰最近最久未使用的页面
4、时钟置换算法(最近未用算法,CLOCK)
简单的:最多经历两轮扫描,初始为1,扫一下为0,再扫一下被踢
5、改进型的时钟置换算法
优先淘汰没有被修改过的,因为没有修改过的不用进行IO操作00->01(改)->00->01
相关文章:
操作系统之内存管理
连续分配 一、单一连续 直接为要运行的进程分配一个内存,只适合单任务,只能用于单对象、单任务,内存被分配为系统区和用户区,系统区在低地址,用户区是一个用户独享 二、等分分区 由于分配一个内存只能执行单任务&a…...
【Python | matplotlib】matplotlib.cm的理解以及举例说明
文章目录 一、模块介绍二、颜色举例 一、模块介绍 matplotlib.cm是Matplotlib中的一个模块,它提供了一组用于处理颜色映射(colormap)的函数和类。颜色映射是一种将数值映射到颜色的方法,常用于制作热力图、等值线图、散点图等。 …...
数据库单实例升级
一、单实例环境,全时长二个半钟多。详细图文说明到这下载 1、停止所有oracle相关进程。 Emctlstop dbconsole Isqlplusctl stop Lsnrctl stop sqlplus /nolog sql>conn /as sysdba Connectedtoanidleinstance. sql>shutdown 然后,冷备份下数据库cp…...
Photoshop如何使用选区之实例演示?
文章目录 0.引言1.利用快速选择工具抠图2.制作网店产品优惠券3.利用选区改变眼睛颜色4.抠取复杂的花束5.制作丁达尔光照效果6.利用选区调整图像局部颜色 0.引言 因科研等多场景需要进行绘图处理,笔者对PS进行了学习,本文通过《Photoshop2021入门教程》及…...
ThreadLocal的使用介绍和底层原理解析和开源框架的使用实例
文章目录 ThreadLocal的使用介绍和底层原理解析和开源框架的使用实例ThreadLocal简介ThreadLocal使用示例ThreadLocal原理解析Spring中ThreadLocal的应用小结ThreadLocal的使用步骤常见面试题案例解析(框架源码经典案例)案例实战 ThreadLocal的使用介绍和底层原理解析和开源框架…...
带你学c带你飞-P7取值范围
比特位 CPU能读懂的最小单元——比特位,bit,b 字节 内存机构的最小寻址单元——字节,Byte,B 1Byte8bit 进制 怎么算 注意:int默认是signed类型,signed类型第一位是符号位 符号位 存放signed类型的存…...
ramfs, rootfsinitramfs
什么是ramfs? ramfs是一个非常简单的文件系统,它将Linux的磁盘缓存机制(页面缓存和dentry缓存)导出为一个动态可调整大小的基于ram的文件系统。 Linux通常将所有文件缓存在内存中。从后备存储(通常是挂载文件系统的块设备)读取的数据页被保留下来,以防…...
十三届蓝桥杯研究生组国赛-最大公约数(线段树+二分)
十三届蓝桥杯研究生组国赛-最大公约数 1、问题描述2、解题思路2.1 解法一:暴力查询区间gcd(75%)2.2 解法二:线段树+二分法(AC)1、问题描述 问题描述 给定一个数组, 每次操作可以选择数组中任意两个相邻的元素 x , y x,y x,y...
数据结构——二叉树层序遍历
数据结构——二叉树层序遍历 107. 二叉树的层序遍历 II199. 二叉树的右视图思路: 637. 二叉树的层平均值 107. 二叉树的层序遍历 II 107. 二叉树的层序遍历 II 给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节…...
【微机原理】8088/8086微处理器
目录 一、8088/8086的功能结构 1.总线接口部件(BIU) 2.执行部件(EU) 二、8088/8086的寄存器结构(14个) 溢出标志的概念 溢出和进位的区别 8086CPU是Intel系列的16位微处理器,他有16根数据…...
springboot第12集:DAO功能代码
在Spring Boot中,DAO是数据访问对象的缩写,它是一种设计模式用于提供对数据库操作的抽象层。通过使用DAO模式,我们可以将数据操作与业务逻辑分离,并提供一个单独的接口来执行所有的数据库操作。 在Spring Boot中,通常使…...
基于KZG多项式承诺方案的RLN
1. 引言 RLN——Rate-Limiting Nullifier为PSE团队主导的项目,源自: Barry White Hat 2019年博客 Semaphore RLN, rate limiting nullifier for spam prevention in anonymous p2p setting RLN(Rate-Limiting Nullifier)是一种…...
《站在巨人的肩膀上学习Java》
Java从诞生距今已经有28年了,在这段时间里,随着Java版本的不断迭代,Java新特性的不断出现,使得Java被使用的越来越广泛。在工程界Java语言一直是大家最喜欢的语言之一,Java一直排行在编程语言热门程度的前3名。 可想而…...
敏捷ACP.敏捷估计与规划.Mike Cohn.
第一部分 传统规划失败的原因 vs 敏捷规划有效的原因 传统的项目规划方式往往会让我们失望。要回答-一个 新产品的范围/进度/资源的组合问题,传统规划过程不一定会产生令人非常满意的答案和最终产品。以下- -些论据可以支持这个结论: ●大约2/3的项目会显著超…...
[创新工具和方法论]-01- DOE课程基础知识
文章目录 1.DOE实验设计的介绍1.1 什么是实验设计DOE?1.2 DOE的优势有哪些?1.3 如何开展DoE研究?步骤 2.DOE实验培训3.数据分析步骤4.实验的随机化5.偏差6.R方 相关系数假设检验 7.三因子二水平全因子设计 1.DOE实验设计的介绍 实验设计是一种安排实验和分析实验数…...
LeetCode-1033. 移动石子直到连续
题目链接 LeetCode-1033. 移动石子直到连续 题目描述 题解 题解一(Java) 作者:仲景 这题目挺难懂的,得画画图才能更好的理解 这也是LeetCode的尿性,习惯了,非得整这种别人看不懂的鸟语 你可以这样理解&a…...
JVM调优入门指南:掌握步骤、参数和场景
前言 作为Java开发者,我们经常需要优化应用的性能,其中JVM调优是非常重要的一部分。在本文中,我们将介绍JVM调优的一般步骤和方法,了解JVM调优参数,如堆大小、新生代比例、GC算法等参数的作用和配置方式,并…...
基于JSP+MySQL的跳蚤市场网站设计与开发
摘 要 在当今社会,网络信息已经不是什么很陌生的词汇,每天都在这个信息时代里生活着并且享受着它带来的与众不同。网络购物可以说是飞速发展的,这种购物方式逐渐的影响着人们的衣食住行。所以利用计算机实现 跳蚤市场网站设计与开发势在必行。本网站是一个校园的跳蚤市场网…...
内网穿透NPS和宝塔Nginx配合使用,开启SSL访问本地局域网网络
并非为了教学,仅供自己记录,方便下次用。所以内容不会刻意花时间写的很细节详细。 1. 服务器NPS配置 NPS install安装后,配置文件会在其他位置,通过是 /etc/nps/nps.conf目录。 找到进行修改,主要修改的是http_proxy_p…...
ToLua框架
ToLua 是一个用于在 Unity 中为 Lua 提供 C# 语言绑定的框架。通过 ToLua,你可以方便地将 C# 代码暴露给 Lua 脚本,并在 Lua 脚本中调用 C# 类、方法和属性。 更新流程 原理:使用AssetBundle进行资源的更新,而由于lua运行时才编…...
AI Agent Harness Engineering 开发必备技能栈:编程语言、框架与工具全梳理
AI Agent Harness Engineering 开发必备技能栈:编程语言、框架与工具全梳理 一、引言 (Introduction) 钩子 (The Hook) 你是否见过凌晨三点的硅谷车库咖啡馆?哦,现在的硅谷极客早就不再只盯着屏幕上单调的GAN生成图或微调Transformer的loss曲线了——最近,一杯Espresso旁…...
线性规划实战指南:从基础理论到优化应用
1. 线性规划基础:从菜市场砍价到数学建模 第一次听说线性规划时,我正蹲在菜市场跟大妈讨价还价。大妈说:"西红柿3块一斤,买5斤送半斤",我脑子里瞬间闪过一道光——这不就是典型的线性约束条件吗?…...
告别华而不实:H3C TX1801 Plus刷OpenWRT后,IPv6和插件功能实测
H3C TX1801 Plus刷OpenWRT实战:解锁IPv6与插件生态的进阶玩法 当你手握一台H3C TX1801 Plus路由器,原厂固件那些看似丰富的功能选项是否总让你感觉"差点意思"?特别是当需要深度定制网络环境、实现完整IPv6支持或部署去广告插件时&a…...
自动化脚本ui开发基础入门
自动化脚本ui采用XML 描述界面 JS 处理逻辑的模式,零基础也能快速上手自定义可视化界面,本文结合官方文档,从核心概念、开发规则、基础控件、全局函数到完整 Demo,全面讲解冰狐 UI 开发入门知识,助力开发者快速搭建实…...
充电桩怎么选?内行人才知道的选购逻辑,一次讲透
很多车主装充电桩时都踩过坑:买了装不了、功率不匹配、信号不好用、安全不放心…… 其实充电桩怎么选有非常清晰的专业逻辑,只要掌握正确思路,就能一步选对,不花冤枉钱。今天从实用角度,把家用充电桩的选购要点讲透彻。…...
大白原创:Trade Copilot账户盈亏统计工具免费使用
文章来源:大白E宝库/123财经导航工具获取提示:工具的功能模块更新迭代频繁,为了你能第一时间获得最新的版本,请关注留言领取!该工具全网免费提供,如发现贩卖行为请立即举报!分享好友使用可获得额…...
LeetCode--541.反转字符串 II(字符串)
题目描述 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k…...
三分钟掌握Bifrost:免费下载三星官方固件的终极解决方案
三分钟掌握Bifrost:免费下载三星官方固件的终极解决方案 【免费下载链接】SamloaderKotlin 项目地址: https://gitcode.com/gh_mirrors/sa/SamloaderKotlin 还在为找不到三星官方固件而烦恼吗?Bifrost(原SamloaderKotlin)…...
Qwen3-TTS-12Hz-1.7B-CustomVoice部署教程:NVIDIA Triton推理服务器集成方案
Qwen3-TTS-12Hz-1.7B-CustomVoice部署教程:NVIDIA Triton推理服务器集成方案 1. 为什么选择Qwen3-TTS-12Hz-1.7B-CustomVoice 你是否遇到过这样的问题:语音合成服务在多语言场景下表现不稳定,切换语种时音色突变、情感生硬;流式响…...
Cogito 3B效果展示:中文技术博客自动续写+风格迁移(严谨→通俗/幽默)
Cogito 3B效果展示:中文技术博客自动续写风格迁移(严谨→通俗/幽默) 1. 开篇:当技术博客有了“灵魂” 你有没有遇到过这种情况?写技术博客时,思路卡壳,对着空白文档发呆半小时,一个…...
