操作系统——内存

操作系统学习-18. 可重定位分区分配与对换 写在前面 这一篇博客与前一篇博客内容连续,这一篇博客主要讨论可重定位分区分配与进程对换的相关知识,也是以理解概念为主要任务。多看几遍,就能搞懂。 动态重定位的引入 在连续分配方式中,必须把一个系统或用户程序装入一连续的内存空间。如果在系统中只有若干个小的分区,即使它们容量的总和大于要装入的程序,但由于这些分区不相邻接,也无法把该程序装入内存。 图1. 紧凑的示意 若想把作业装入, 阅读详情

目录

内存的基础知识

什么是内存

逻辑地址(相对地址)和物理地址(绝对地址) 

程序的执行过程(编译,链接,装入)

装入的三种方式

绝对装入

静态重定位 

动态重定位 

链接的三种方式

静态链接 

装入时动态链接 

运行时动态链接 

总结 

内存管理的概念

需要提供的功能

内存保护

方法一

方法二

总结 

内存空间的扩充

覆盖技术

交换技术

问题

总结 

内存空间的分配

单一连续分配 

固定分区分配  ​编辑 

动态分区分配

总结

动态分区分配算法(重点)

首次适应算法

最佳适应算法 

最坏适应算法

邻近适应算法 

总结


内存的基础知识

什么是内存

 

 

 

 

 

逻辑地址(相对地址)和物理地址(绝对地址) 

 

程序的执行过程(编译,链接,装入)

 

装入的三种方式

绝对装入

一般用于单道程序 

 

静态重定位 

早期多道批处理

 

 

动态重定位 

现代操作系统

 

链接的三种方式

静态链接 

装入时动态链接 

运行时动态链接 

 

总结 

 


内存管理的概念

需要提供的功能

-内存空间的分配与回收

-对内存空间进行扩充(实现虚拟性)

-地址转换功能(三种装入方式)

-内存保护

 

内存保护

方法一

 

方法二

总结 

 

内存空间的扩充

-覆盖技术

-交换技术

-虚拟存储技术

覆盖技术

让不可能同时执行的程序块共享一个覆盖区(已退出舞台)

 

交换技术

暂时换出外存等待的进程状态为挂起状态(就绪挂起,阻塞挂起)

 

问题

1.应该在外存(磁盘)什么位置保存被换出的进程

2.什么时候应该交换

3.应该换出哪些进程

 

总结 


内存空间的分配

-连续分配管理方式(连续分配指为用户进程分配的必须是一个连续的内存空间)

        -单一连续分配

        -固定分区分配

        -动态分区分配

-非连续分配管理方式

单一连续分配 

 

固定分区分配   

固定分区分配需要实现分区说明表,来实现各个分区的分配和回收

 

动态分区分配

问题:

-1.用什么样的数据结构

-2.多个空闲分区都可以满足要求,应选择哪一个空闲分区

-3.如何进行分区的分配与回收操作

采用的数据结构:空闲分区表或者空闲分区链(1)

 

选择需按照一定的动态分区算法(2)

 

分配与回收按照一定的动态分区算法(3)

分配的情况:

1.

 

2. 

 

回收的情况

回收时若相邻有空闲分区,则进行合并

1.

 

2.

 

3. 

 

内部碎片和外部碎片

 通过对进程的挪位,使进程1能够满足(紧凑,采用动态重定位的方式)

  

 

总结

 

 


动态分区分配算法(重点)

-首次适应算法(First Fit) 

-最佳适应算法(Best Fit)

-最坏适应算法(Worst Fit)

-邻近适应算法(Next Fit)

首次适应算法

最佳适应算法 

缺点:每次都选取最小的分区进行分配,会留下越来越多的,很小的,难以利用的内存块。因此这种算法所产生的外部碎片会很多

 

最坏适应算法

缺点:每次都选取最大的分区进行分配,虽然可以让分配后留下的空闲区更大,更可用;但是这种算法会导致较大的连续空闲区被迅速用完。如果有“大进程”进入,就没有内存空间可供分配了

 

邻近适应算法 

 

总结

 

内存管理笔记二、操作系统在内存中的位置 内存管理笔记二、操作系统在内存中的位置 引言:从根本上说,计算机里面运转的程序有两种:管理计算机的程序和使用计算机的程序。而操作系统就是管理计算机的程序,其本身也需要使用资源,需要占用内存。那我们如何将内存空间在操作系统和用户程序之间进行分配呢?或者说,应该将哪一部分内存空间用来存放操作系统呢? 内存管理笔记二、操作系统在内存中的位置 1、操作系统在RAM底层,用户程序占用RAM的上层... 阅读详情

相关推荐

操作系统是如何管理内存的

原创:花括号MC(huakuohao-mc),关注JAVA基础编程及大数据,注重经验分享及个人成长。 在计算机的世界里,有两个比较宝贵的资源,CPU和内存。这是每个进程都要争抢的资源。这篇文章说说操作系统是怎样进行内存管理的。 因水平有限,加之内存管理涉及的细节又很多,所以这里只是简单的介绍内存管理的一些关键概念及发展过程。 直面物理内存 在很久很久以前,内核与用户进程都是直接操作物理内存的。那个时候的物理内存模型大概可以简化成这样。物理内存按照固定大小编号,每个编号代表一个固定的二进制位。我们就像使用.

frank的专栏 1743

计算机操作系统学习(四)存储管理(1)

掌握各种管理方式的特点;可变分区方式的主存分配算法以及移动技术;分页式虚拟存储管理的实现以及页面调度算法;分段式虚拟存储管理的实现。学习中最好是通过优缺点,以及算法的开销等比较,掌握各种算法的原理。要求能够理解存储管理的主要功能,理解在不同的管理方式下如何实现存储保护、地址转换、以及主存空间的分配和回收;比较各种管理方式的特点;掌握虚拟存储器的实现原理和方法。

Shining0596_Limcy 1万+

操作系统分配内存

计算机体系结构和内存层次 操作系统中内存的最小访问单位是 字节 ,也就是8bit。 通常我们所说的计算机系统是32位的总线,所谓的32位总线就是说一次读写可以从内存当中读或者写32位(也就是4字节)。 因为一次读写是32位,所以需要地址对齐,访问的时候不能从任意地方开始。 在CPU中可以看到高速缓存,由于指令执行和访问数据都需要从内存里读数据,如果此时有大量数据要读写而且会

刘森林l的博客 5598

连续分配方式 -- 可重定位分区分配

连续分配方式,是指为一个用户程序分配一个连续的内存空间。 ----- 可重定位分区分配 1、动态重定位的引入 在连续分配方式中,必须把一个系统或用户程序装入一连续的内存空间。如果在系统中只有若干个小的分区,即使 它们的容量总和大于要装入的程序,但由于这些分区不相邻接,也无法把该程序装入内存。

dongyanxia1000的专栏 1万+

操作系统 内存的分配与回收

                                     操作系统 内存的分配与回收 无论什么进程,想要运行的就需要申请内存的空间,操作系统把我们的内存空间分割成化成一个个页表, 现在的一般一个页表的大小是4kb,而每个进程申请的空间都是以页为单位的。 比如我们写了一个java应用程序,这时候这个程序可能被分成若干个段,代码段,数据段,堆栈段等。如果每个段 需要内存比较大,...

0bug0warning的博客 9047

2、操作系统——连续内存分配、非连续内存分配

为了能对内存分配知识的整体有个对比了解,所以将内存的连续分配与非连续分配在这一节进行介绍。 一、内存分层 内存分层如下图所示,其中的主存表示内存。 二、 操作系统的目标 1、抽象 使用逻辑地址空间(后面有介绍),运行的程序不需要关心设备的相关信息。 2、保护 每个运行的程序都享有自己独立的地址空间。 3、共享 不同的程序可以访问相同的内存,...

mrsun1的博客 3217

Nowcoder专项练习:操作系统(二)

Nowcoder 操作系统专项练习第二弹。

不积跬步无以至千里 2273

MaxENT生态位模型实战:从数据准备到论文发表的完整指南

本文提供MaxENT生态位模型从数据准备到论文发表的完整实战指南,涵盖物种分布数据处理、环境变量筛选、参数优化及结果可视化等关键步骤。特别介绍如何通过R语言进行高级建模优化,提升模型AUC值,并分享海洋生物专题研究中的数据处理技巧。适合生态学研究者快速掌握这一强大的物种分布预测工具,产出高质量研究成果。

tensor9flow的博客 303

操作系统复习笔记

存储管理是指存储器资源的管理。主要是做以下三件事情:--- 存储器资源的组织--- 地址变换---虚拟存储的调度算法5.1.3 存储管理的功能总结下来就是 内存分配,地址映射,内存保护,内存扩充.1. 主存分配与回收2. 地址变换体现在: 1. 可执行文件生成中的链接技术2. 程序加载时的重定位技术3. 进程运行时硬件和软件的地址变换技术和机构3. 存储共享和保护4. 主存容量扩充。

m0_61065786的博客 792

Endnote 导入参考文献的时候,格式错误太多了。et.al错误,国标GBT7714在endnote中的详细配置教程,适用于本科,硕士论文文献插入的模板

EndNote插入文献常遇到以下错误主要如下: 等、et al不分; 英文作者全名大写; 期刊名字使用了缩写(图片里没有体现;卷号、期号缺失时出现乱码,多了半个括号;页码范围略去了相同部分;没有悬挂缩进,本文全部解决,全网最细

sakura的博客 3万+

音频DSP开发中的‘隐藏关卡’:那些SigmaStudio未公开的模块计算秘籍

本文深入探讨音频DSP开发中SigmaStudio未公开的模块计算秘籍,重点解析动态范围控制、均衡器参数映射和混响算法优化等核心模块计算公式。通过实际案例揭示如何利用这些非官方技巧提升音频质量与系统性能,为ADI DSP开发者提供宝贵的实战经验。

water的专栏 911

【操作系统】内存

空间只占磁盘空间的小部分,被换出的进程数据就存放在对换区。动态分区分配算法:在动态分区分配方式中,当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?,而是在进程装入内存时,根据进程的大小动态地建立分区,并使分区的大小正好适合进程的需要。缺页中断是因为当前执行的指令想要访问的目标页面未调入内存而产生的,因此属于内中断。具有对换功能的操作系统中,通常把磁盘空间分为文件区和对换区两部分。,分配给某进程的内存区域中,如果有些部分没有用上。主要用于存放文件,主要追求存储空间的利用率,因此对。

1301

MATLAB实战:手把手教你用三频四步相移法搞定结构光三维重建(附完整代码)

本文详细介绍了如何使用MATLAB实现三频四步相移法进行高精度结构光三维重建。通过光栅图像预处理、相位计算、多频外差与相位解包裹等步骤,结合完整代码示例,帮助读者掌握从二维图像到三维点云的关键技术。该方法在工业检测和逆向工程中具有抗干扰能力强、高分辨率和鲁棒性等优势。

weixin_29201933的博客 340

操作系统在内存中的位置

从根本上来说,计算机里面运转的程序有两种:管理计算机的程序和使用计算机的程序。正如本书前面多次提到,操作系统就是管理计算机的程序。而管理者本身也需要使用资源。其中的一个资源就是内存空间。内存管理的第一个问题是操作系统本身在内存中的存放位置。应该将哪一部分的内存空间用来存放操作系统呢?或者说,我们如何将内存空间在操作系统和用户程序之间进行分配呢? 最简单的方式就是将内存划分为上下两个区域,操作系统和用户程序各占用一个区域,如图11-4所示。 比较起来图11-4a的构造最容易理解。因为操作系统是为用户提供服务

鸭梨的博客 8978

传感器应用案例:压力传感器在工业自动化中的应用_(13).压力传感器的数据采集与处理

数据采集系统(Data Acquisition System, DAS)是连接传感器和控制系统的重要桥梁。它包括硬件(如数据采集卡、信号调理器)和软件(如数据采集软件、数据处理算法)两部分。信号调理:将传感器输出的模拟信号转换为适合AD转换的信号。AD转换:将模拟信号转换为数字信号。数据传输:将数字信号传输到控制系统或上位机。存储:将采集的数据存储在本地或远程数据库中。实时性:保证数据的实时性和准确性。压力传感器的数据采集与处理是工业自动化中不可或缺的一部分。

2401_87715305的博客 1621

C#实战大华智能安防系统:从SDK封装到视频流与智能报警的全链路落地

本文将介绍C#集成大华SDK开发安防系统的实战经验,重点解决多路视频预览卡顿和报警延迟问题。文章通过三层架构设计(SDK封装层、业务服务层、应用层)实现解耦,详细分析线程安全封装、高效解码显示和智能事件联动等核心技术。针对16路摄像头同时预览时CPU占用率过高的问题,提出使用子码流拉流与异步解码的优化方案,并总结8个常见开发陷阱的解决方案。文中还提供了大华智能安防系统的完整架构图,展示从设备层到应用层的交互流程,特别强调业务服务层中视频流服务和智能报警服务的核心功能设计。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 432

浅谈操作系统与内存

浅谈操作系统与内存 对于计算机的发明,相信大家都有耳闻那个占地面积按平米算的第一台计算机。在那个时候,CPU的资源是极其珍贵的,随着这些年突飞猛进的发展,一片指甲盖大小的民用级CPU一秒钟能执行的指令数可以达到上亿级别。 随着计算能力的增长,芯片外围的硬件和配套的软件也是一路高歌,发生了天翻地覆的变化,今天我们简单回顾历史,来看一看操作系统和内存机制的演变,不仅要了解它们是怎样,同时也看...

did59261的博客 821

无需Python环境!纯C#上位机+OpenCVSharp4+ONNX Runtime实现YOLOv8摄像头实时流检测,工业级稳定

摘要 工业自动化C#开发中,传统Python方案实现视觉检测功能存在环境依赖、内存泄漏和性能不稳定等问题。本文提出基于.NET 8+OpenCVSharp4+ONNX Runtime的纯C#方案,通过实际案例验证其优势: 零Python依赖,支持离线部署 内存稳定(380MB/72h),检测延迟<80ms 检测精度达漏检率<0.1%,误检率<0.5% 保留原有业务逻辑代码,3天完成适配 方案采用分层架构设计,支持多种硬件平台和操作系统,提供从模型导出到部署的全流程指导,为工业视觉检测提供高

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 196

JVM内存是对应到操作系统内存

根据上面两个图可以看出,JVM内存模型是模仿操作系统内存模型构建的,JVM内存模型和操作系统内存模型是可以一一对应起来的,整个JVM内存模型存储在操作系统的堆中。JVM就是个操作系统,而JVM的方法区,也就相当于操作系统/主机的硬盘区,也叫永久区;而操作系统栈(本地方法栈)和JVM的栈也是一致的,无论是生长方向还是管理方式;JVM堆和操作系统堆在概念上和目标上是一致的,分配内存的方式也是一致的,但JVM堆管理垃圾的方式是GC回收,而操作系统堆则是需要程序员手动释放;至于PC寄存器,无论是在虚拟...

qq_41088031的博客 1989

uniapp微信小程序 - 解决输入框input软键盘弹起时页面整体上移问题,页面上推导致顶部出现元素遮挡问题,uniapp软键盘导致页面上移头部内容被错位遮住错乱,让页面头固定在顶部不动不会受影响!

解决uni-app微信小程序底部input输入框,键盘弹起时页面整体上移问题,当键盘弹起时,会导致页面整体上移,页面头固定在顶部不动,微信小程序键盘弹起时,底部输入框抬起至键盘上方,顶部导航栏固定不动,uni-app输入框,输入框在底部;当弹出键盘时,页面整体上移,页面头信息会消失不见,小程序底部input输入框,input组件弹起系统键盘时,键盘会顶住页面导致页面会上移,当键盘弹起时整个页面被挤压,导致元素上移或被覆盖,输入框能自动抬起至键盘上方,顶部导航栏保持固定,不被顶上去,如何解决这个问题,动态高度

✅ 精选推荐文章 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

关于操作系统内存分配调用的讨论

前注:这是我在学校BBS上贴的一个回复,贴于此处与大家讨论. 原文是: 发信人: true (对自己更残酷一点), 信区: C_and_CPP标  题: new出来的空间系统会不会自动回收?发信站: 哈工大紫丁香 (Fri May 14 12:07:43 2004), 转信当程序运行完之后,我觉得系统应该会自动回收才对,是否?各个操作系统都一样吗? 在哪里找理论根据? 我的第一个回复是:

潇寒的Blog 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

操作系统内存分配

当一个可执行程序要装入内存时,操作系统要为它分配可用内存区域,供进程来存放他的代码和数据。操作系统是如何分配的呢?

cx的学习经历 2317

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

操作系统的内存管理

操作系统内存管理:总的来说,操作系统内存管理包括物理内存管理和虚拟内存管理 物理内存管理: 包括程序装入等概念、交换技术、连续分配管理方式和非连续分配管理方式(分页、分段、段页式) 虚拟内存管理: 虚拟内存管理包括虚拟内存概念、请求分页管理方式、页面置换算法、页面分配策略、工作集和抖动。 一、 计算机的存储体系 内存是计算机很重要的一个资源,因为程序只有被加载到内存中才可以运行;此外,CPU所需要的指令与数据也都是来自内存的。可以说,内存是影响计算机性能的一个很重要的因素 分层存储器体系 在介绍内存管理的细

qq_40813329的博客 3179

操作系统与内存

想象一下,你的电脑就像是一个小镇,上面有很多房子(内存),每个房子里面可以住人(装数据和程序)。操作系统就像是小镇的管理者,它的工作就是确保每个人(数据和程序)都有个合适的地方住(存储在内存中)。### 分区(分为段或页)管理者需要为小镇规划不同区域:- **分段**:就像将小镇分成商业区、居住区等。商业区专做买卖,居住区则供人生活。操作系统也有这种“区域划分”,不同的应用根据类型被放入不同的“段”。

la1466128339的博客 1081

操作系统-内存管理

内存抖动通常发生在系统内存不足时,导致操作系统频繁地将页面从物理内存中换出到磁盘(页面置换),而后又需要将其重新调入内存,这样频繁的置换操作会消耗大量的计算资源和时间,影响系统的性能。通常,操作系统会被加载到计算机的物理内存中,并占用一定的地址空间。通过这种方式,双向链表可以根据页面的访问顺序进行排序,最近访问的页面始终位于链表的头部,而最久未使用的页面位于链表的尾部。内存管理是操作系统中一个非常重要的功能,它主要负责管理计算机系统中的内存资源,包括内存的分配、回收、保护和共享等。

captain 3080

内存与操作系统内存管理

内存与操作系统内存管理 文章目录内存与操作系统内存管理一、内存的基础知识二、内存管理2.1 内存空间扩充2.2 内存空间的分配与回收 一、内存的基础知识   内存是用于存放数据的硬件,程序执行前需要将数据放入内存中才能被CPU处理。内存通过对内部的存储单元编地址来解决并发执行下各个程序的数据区分,根据计算机字长的不同,存储单元大小不同(如64位计算机每个字大小为64位,8个字节)。   内存存放的相对寻址:编译语言编译后的指令寻址,是通过相对地址实现的,实际存入内存时再根据进程在内存中的起始地值得到绝对

weixin_38836273的博客 3411
上一篇: redis——实现点赞功能
下一篇: 操作系统——内存管理
486过于烦躁
博客等级 码龄6年 17粉丝 34原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值