操作系统之内存管理

连续分配

一、单一连续

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

二、等分分区

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB【常用命令】

目录 1:基本常用命令 1.1:演示案例 1.2:数据库操作 1.2.1:选择和创建数据库,查看当前正在使用的数据库命令 1.2.2:数据库的删除 1.3:集合操作 1.3.1:集合的显式创建&#xff0…

C++ srand()和rand()用法

参考C rand 与 srand 的用法 计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子。(注意: 小M多项式序列的周期是65535,即每次利用一个随机种子生成的随…

【机器学习】HOG+SVM实现行人检测

文章目录 一、准备工作1. 下载数据集2. 解压数据集 二、HOG特征简介1. 梯度(Gradient)2. 格子(Cell)3. 块归一化(Block Normalization)4. HOG特征(HOG Feature)5. 使用skimage.featu…

docker容器原理及简单且详细的使用

docker原理简单介绍 docker是一种虚拟化容器技术。 虚拟化:早期为了节约成本和学习只有在宿主机中基于 kvm(基于内核的虚拟机)等技术虚拟出来完整的操作系统,而这个完整的操作系统会大量的占用宿主机的硬件资源,当创建…

Oracle LiveLabs实验:DB Security - Data Masking and Subsetting (DMS)

概述 本实验介绍了适用于 Enterprise Manager 的 Oracle 数据屏蔽和子集 (DMS) 包的各种特性和功能。 它使用户有机会学习如何配置这些功能,以便在非生产环境中保护他们的敏感数据。 此实验申请地址在这里,时间为60分钟。 本实验也是DB Security Adva…

无惧黑暗强光,纯视觉导航也能全天候作业

对于一台激光导航扫地机器人而言,全天候作业并非难事,那么纯视觉导航扫地机器人能做到吗? 无论对于人,还是机器人,光线环境的变化对“眼睛”的影响都是致命的。由于视觉传感器对于光线十分敏感,在家庭场景…

linux入门---软硬链接

软链接 使用指令ln -s 被链接的文件 生成的软链接文件 便可以创建软连接文件,ln是link的简写表明当前要创建链接文件,s是soft的简写表明当前创建的链接文件为软链接文件,然后加上被链接的文件,最后写上生成的链接文件的文件名比如…

使用 ArcGIS Pro 进行土地利用分类的机器学习和深度学习

随着技术进步,尤其是地理信息系统 (GIS)工具的进步,可以更有效地对土地利用进行分类。分类的使用可用于识别植被覆盖变化、非法采矿区和植被抑制区域,这些只是土地利用分类的众多示例中的一部分。 分类的一大困难是确定要解决的问题的级别。我分类的目的是什么?分类是否需…

【科普知识】电机的10种工作制说明:S1~S10

如今,在我们的生活中,电机几乎无处不在,从国防、工农、运输、临床器械、通讯到生活中的洗衣机、风扇、吸尘器、电动机器人等,都在应用着各式各样的电动机。 电机作为一种能够将电能转换成机械能的装置,是现代工业生产和…

【搭建私有云盘】无公网IP,在外远程访问本地微力同步

文章目录 1.前言2. 微力同步网站搭建2.1 微力同步下载和安装2.2 微力同步网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 私有云盘作为云存储概念的延伸,虽然谈不上多么新颖,但是其…

快速上手非关系型数据库Redis

一、Redis介绍 1.非关系型数据库,纯内存操作,key-value存储,性能很高,可持久化(内存---->保存到硬盘上) 2.缓存,计数器,验证码,geo地理位置信息,发布订阅…

RocketMq windows 安装

RocketMq安装步骤: 1、直接在官网下载。也可以从这里自取 https://rocketmq.apache.org/download/ 2、修改bin目录下的文件 runserver.cmd 和 runbroker.cmd文件。主要修改所占用内存的大小。 runserver.cmd 修改如下: runbroker.cmd 修改如下&#xff…

【人脸检测】——Sample and Computation Redistribution for Efficient Face Detection论文简读

人脸检测 摘要 在非受控人脸检测方面已经取得了巨大的进步,但低计算成本和高精度的高效人脸检测仍然是一个开放的挑战。作者提出了两种简单而有效的方法:样本再分配(SR)和计算再分配(CR)。在WIDER FACE上进…

AI失业潮来袭,某些部门裁员过半

历史的车轮滚滚向前,每次生产力的大幅跃进,都会造成一批失业潮。想当年,纺纱机的出现让无数手工作坊的织布师傅失业。如今,在AI技术的催化下,同样的事正在互联网行业的各个领域重演。 疯狂的裁员浪潮 “AI15秒做的&am…

np.convolve(x,h, mode=‘##‘)的使用

用法: np.convolve(a,v,mode) a代表卷积数据,v卷积核大小,mode卷积方式,mode卷积方式有三种 same full valid mode可能的三种取值情况: full’ 默认值,返回每一个卷积值,长度是NM-1,在卷积的…

【策略设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

简介 策略模式(Strategy Pattern)属于行为型设计模式。将每一个算法封装到具有共同接口的独立类中,根据需要来绑定策略,使得具体实现和策略解耦。 当你想使用对象中各种不同的算法变体,使用if...else 所带来的复杂和…

Python入门教程+项目实战-11.5节: 程序实战-选择排序算法

目录 11.5.1 排序算法简介 11.5.2 选择排序算法 11.5.3 系统学习python 11.5.1 排序算法简介 所谓排序,是指将数据集合中的元素按从小到大的顺序进行排列,或按从大到小的顺序进行排列。前者称为升序排序,后者称为降序排序。在数据结构与算…

【Java笔试强训 7】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥Fibona…

( 哈希表) 594. 最长和谐子序列 ——【Leetcode每日一题】

❓594. 最长和谐子序列 难度:简单 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。 现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。 数组的子序列是一个由数组派生出来的序列&am…

AWSFireLens轻松实现容器日志处理

applog应用程序和fluent-bit共享磁盘,日志内容是json格式数据,输出到S3也是JSON格式 applog应用部分在applog目录: Dockerfile文件内容 FROM alpine RUN mkdir -p /data/logs/ COPY testlog.sh /bin/ RUN chmod 777 /bin/testlog.sh ENTRYP…