当前位置: 首页 > news >正文

操作系统之内存管理

连续分配

一、单一连续

直接为要运行的进程分配一个内存,只适合单任务,只能用于单对象、单任务,内存被分配为系统区和用户区,系统区在低地址,用户区是一个用户独享

二、等分分区

由于分配一个内存只能执行单任务,所以出现了等分区的优化,可以多任务在不同的分区去工作,但是等分内存空间,导致进程大则无法放入,进程小则浪费空间;
在这里插入图片描述

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

内部碎片:分配给某进程的内存区域中,如果有些部分没有用上
外部碎片:是指内存中的某些空闲分区由于太小而难以利用(如果有外部碎片,可以采用紧凑技术)

根据进程的大小来分配空间,但是由于操作系统是二倍数的大小,导致会产生很多的内部碎片
在这里插入图片描述
根据进程大小动态分配空间,容易产生碎片,当内存使用完毕之后,将使用的空闲分区使用链表或者空闲分区表记录
在这里插入图片描述
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运行时才编…...

Golang-常见数据结构Map

Map map 是一种特殊的数据结构:一种元素对(pair)的无序集合,pair 的一个元素是 key,对应的另一个元素是 value,所以这个结构也称为关联数组或字典。这是一种快速寻找值的理想结构:给定 key&…...

基于空间矢量脉宽调制(SVPWM)的并网逆变器研究(Simulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

介绍tcpdump在centos中的使用方法

tcpdump是一款强大的命令行数据包分析器,支持多种过滤和抓包参数。下面将介绍tcpdump的常用抓包参数。当需要监控CentOS系统的网络流量或者进行网络故障排查时,可以使用tcpdump来捕获数据包并进行分析。 下面介绍在CentOS中使用tcpdump的方法&#xff1…...

机器学习实战:Python基于DT决策树模型进行分类预测(六)

文章目录 1 前言1.1 决策树的介绍1.2 决策树的应用 2 Scikit-learn数据集演示2.1 导入函数2.2 导入数据2.3 建模2.4 评估模型2.5 可视化决策树2.6 优化模型2.7 可视化优化模型 3 讨论 1 前言 1.1 决策树的介绍 决策树(Decision Tree,DT)是一…...

操作系统之进程同异步、互斥

引入 异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进。 但是在一定的条件之下,需要进程按照一定的顺序去执行相关进程: 举例说明1: 举例说明2: 读进程和写进程并发地运行,由于并发必然导致异步性…...

你了解这2类神经性皮炎吗?常常预示着这5类疾病!

神经性皮炎属于慢性皮肤病,患者皮肤可出现局限性苔藓样变,同时伴有阵发性瘙痒。神经性皮炎易发生在颈部两侧和四肢伸侧,中年人是高发人群。到目前为止神经性皮炎病因还并不是很明确,不过一部分病人发病前常常出现精神神经方面异常…...

二叉搜索树【Java】

文章目录 二叉搜索树的性质二叉搜索树的操作遍历查找插入删除 二叉搜索树又称为二叉排序树,是一种具有一定性质的特殊的二叉树; 二叉搜索树的性质 若它的左子树不为空,则左子树上结点的值均小于根节点的值; 若它的右子树不为空&a…...

二叉树的遍历方式

文章目录 层序遍历——队列实现分析Java完整代码 先序遍历——中左右分析递归实现非递归实现——栈实现 中序遍历——左中右递归实现非递归实现——栈实现 后续遍历——左右中递归实现非递归实现——栈加标志指针实现 总结 层序遍历——队列实现 给你二叉树的根节点 root &…...

SpringCloud01

SpringCloud01 微服务入门案例 实现步骤 导入数据 实现远程调用 MapperScan("cn.itcast.order.mapper") SpringBootApplication public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}…...

SpringBoot整合Redis实现点赞、收藏功能

前言 点赞、收藏功能作为常见的社交功能,是众多Web应用中必不可少的功能之一。而redis作为一个基于内存的高性能key-value存储数据库,可以用来实现这些功能。 本文将介绍如何使用spring boot整合redis实现点赞、收藏功能,并提供前后端页面的…...

做网站必须会php吗/seo文章排名优化

一、什么是正则表达式? 正则表达式(regular expression)描述了一种字符串匹配的模式。这种模式,我们可以理解成是一种“规则”。根据这种规则再去匹配符合条件的结果,而匹配的过程就是检索,查找、提取的过程。正则表达式只能对字…...

防邪办网站建设方案文档/windows优化大师好不好

转自:http://www.dearda.com/index.php/archives/380 之前我发布的《SharePoint备份与还原》一文初步探讨了使用SharePoint管理中心备份与还原站点的方法。但是在我实际部署的过程中发现用管理中心做还原并不可靠!(PS:微软的备份与…...

网站建设图片怎么做/seo站长

此处主要便于对异常类的使用上,方便大家理解,以一个公约数为例做了一个简单自定义异常的处理代码如下:如果操作者输入数字符合要求程序运行,不符合则抛出错误。package 自定义异常简单实例;import java.util.Scanner;public class…...

什么自己做网站吗/代做关键词收录排名

1、JSP页面 <a href"javascript:void();" id"PicName" > 选择图片</a> <input type"file" id"fileToUpload" name"fileToUpload" ><!--需要设置name属性值&#xff0c;不然上传不了 --> <butto…...

国外成人做视频网站有哪些/新闻头条最新消息今天发布

前言 马爸爸总结了一句话&#xff1a;跳槽&#xff0c;要么是钱不到位&#xff0c;要么是受了委屈。 我给自己这次的跳槽经历做了一个分析&#xff0c;希望能对那些想换工作的朋友有所帮助。 许多朋友想换工作&#xff0c;但是对“换工作”的理解可能仅限于写简历、投简历、…...

周口学做网站/网站之家

2019独角兽企业重金招聘Python工程师标准>>> 一、点击链接 https://natapp.cn/ 注册个免费的账户 NATAPP官网 二、登陆进去以后查看authtoken。复制这个&#xff0c;等下要在客户端用到&#xff01; 分配的authtoken 三、点击右侧配置&#xff0c;做一下配置&#x…...