千家信息网

Linux系统怎么用虚拟内存来欺骗应用程序

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章主要介绍"Linux系统怎么用虚拟内存来欺骗应用程序",在日常操作中,相信很多人在Linux系统怎么用虚拟内存来欺骗应用程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对
千家信息网最后更新 2024年09月22日Linux系统怎么用虚拟内存来欺骗应用程序

这篇文章主要介绍"Linux系统怎么用虚拟内存来欺骗应用程序",在日常操作中,相信很多人在Linux系统怎么用虚拟内存来欺骗应用程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Linux系统怎么用虚拟内存来欺骗应用程序"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

  • 一、让有意义的事情变的有意思

  • 二、物理内存、虚拟内存

  • 三、Linux 中的换页机制

一、让有意义的事情变的有意思

昨天,看到下面这句话,送给您:

让有意思的事情变的有意义,让有意义的事情变的有意思!

不敢说这是一句人生哲学,但是我们可以从这句话中找到我们做一件事情时的导向。

比如:在学习 Linux 操作系统的过程中,很多枯燥无味的知识点,都是不好玩、没有意思的事情。

但是为什么我们还要逼着自己,静下心来啃那些大部头书籍呢?因为这件事情有意义!

所以啊,如果能够在这件有意义的事情上,再变得更有意思,那就可以调动我们潜在的很多积极性。

这篇文章,我们用简单、轻松的方式,来聊一下老生常谈的虚拟内核和物理内存的那些事。

二、物理内存、虚拟内存

1. 从 x86 硬件角度看

在 x86 平台上,主存储器(也就是我们说说的内存)负责存储指令和数据,它的作用仅次于 CPU。

离开了内存,性能再好的 CPU 也无法工作。

就像人类的大脑一样,如果没有了记忆功能,再怎么聪明都无法施展。

内存被划分为若干个存储单元,从 0 开始编号,一直到最大的那个存储单元。

CPU 通过地址总线来定位一个内存的空间,通过数据总线从内存中读取数据、或者向内存中写入数据。

我们都知道,同一个 x86 平台的硬件,既可以安装 Windows 操作系统,也可以安装 Linux 操作系统。

也就是说,在生产硬件的时候,它并不知道: 在自己的硬件之上,将会运行什么样的程序。

也许会有高手直接写一个牛逼的程序,直接来管理各种硬件资源、实现自己特定的功能呢!?

不管如何,x86 平台处理器架构定义了自己的一套规则来访问内存。

因此,从 x86 平台硬件角度看,只有(物理)内存这个东西,它压根不知道什么是虚拟内存。

2. 从操作系统的角度看

操作系统最重要的功能就是:向应用程序屏蔽了各种硬件资源,提供更加友好的接口,让程序开发变得更容易。

所以,操作系统会充分利用硬件的各种运行机制,然后进行抽象、包装,面向应用程序开发者提供一个稳定的环境。

那么对于内存来说,操作系统向下对物理内存进行管理,向上对应用程序提供虚拟内存。

虚拟内存,就是操作系统在应用程序与物理内存之间加入的一层抽象,加入这个抽象层之后,有很多的好处。

3. 从应用程序开发者的角度看

在很久以前,各种单片机、嵌入式 MCU 上,编写应用程序的时候,经常会面对内存很紧张的情况,这是就要很好的来优化自己的程序,利用有限的硬件资源来实现一些功能。

(突然想起多年之前的以为老工程师对我说,面对那么有限的一点资源,都会想哭!)

随着硬件的快速发展,这种硬件资源紧张的情况好像很少遇到了,给我们的感觉是:内存我可以随便用,想要多少就 malloc 多少。

当然了,操作系统会给出一些限制的,这只是操作系统层面的限制,因为它有自己的考量因素。

当应用程序提出申请一块内存空间时,操作系统为了满足应用程序的需求,就会从虚拟内存中"划分"出一块空间,然后把这个空间的开始地址返回给应用程序。

因此,从应用程序开发的角度看,我们并不关心物理内存、虚拟内存。

只要我 malloc 了,操作系统给我一个足够的空间就行!至于这个空间是从哪里分配的,I don't care!

也就是说,应用程序是面向虚拟内存编写的,而不是面向物理内存编写的。

当然了,最终存储数据的肯定是物理内存,至于虚拟内存如何与物理内存建立对应的映射关系,这就是由操作系统操心的事情了。

每个应用程序只能看到自己的虚拟内存空间,这是一块连续的空间,从而保证了不同应用程序之间的隔离,达到安全目的。

三、Linux 中的换页机制

如今,我们去攒一台 PC 机,内存条最少都是 8G、16G吧!但是在多年之前,这是非常、非常奢侈的一件事情,主要还是价格的因素。

我记得自己在做毕业设计的时候,为了保存代码,去南京珠江路买了一个 U 盘,64G,好像是 70 块钱。

相比内存来说,硬盘的价格就便宜多了!

因此,Linux 操作系统就充分利用硬盘来糊弄应用程序,让应用程序觉得有永远也用不完的内存资源。

在一个 32 位的系统中,应用程序可以访问的最大内存空间是 2 的 32 次方,也就是 4 GB,即使此时实际的物理内存并没有这么大。

其实这就类似于一家旅馆,假如有一个老板,开了一家旅馆,一共有 1000 个房间。

同时,老板还有一个空间更大的仓库,仓库里可以放 10000 个床铺。

这个老板很聪明,他明白 2 个事实情况:

  1. 鸿蒙官方战略合作共建--HarmonyOS技术社区

  2. 旅行团或顾客只能看到这个旅馆的门头和大厅,并不知道旅馆里面的房间布局;

  3. 旅行团并不会在同一时刻、扎堆的同时来住宿;

因此老板在对外宣传的时候,就说:我的旅馆很大,有 10000 个房间,欢迎前来入住!

为了简化问题,我们假设每个旅行团有 100 人。

在某个时间,当有第一批的 3 个旅行团入住的时候,老板觉得房间足够,于是把这 300 人都安排在旅馆的房间中。

过了一会,又来了第二批 4 个旅行团,此时总的住宿人数变成了 700 人。

老板开始计算:一共就 1000 个房间,现在消耗掉 700 个了,还剩 300 个,还能撑一会。

没多久,第三批顾客上门了,这回是 5 个旅行团的人数:500 人 。因为老板宣传说:有 10000 个房间,充足的很。

老板在面对这新的 500 个人时,只见他从容的把第一批和第二批的 700 个人,从房间中转移到仓库。

我们假设顾客都处于睡眠状态,仅仅需要一张床而已,不需要消耗其他的资源。

然后把这新的 500 人,安排在房间中入住。

此时,一共入住了 300 + 400 + 500 = 1200 人,虽然旅馆只有 1000 个房间,但是通过借用仓库去暂时存放处于睡眠状态的顾客,此时旅馆中还剩下 500 个空闲的房间。

还可以继续接待客人。。

当到了 第一批的 3 个旅行团退房的时间时,老板再把这 300 人从仓库中 偷偷地转移到旅馆的房间中。这些客人醒来一看,还是我入睡时的那个环境,很好很好。。。

以上这个过程,就非常类似 Linux 系统中虚拟内存的换页方式:

虚拟内存 = 对外宣传的 10000 个房间;

物理内存 = 实际的 1000 个房间;

硬盘 = 只有床铺的仓库。

当物理内存不够的时候,操作系统把一些物理内存页的内存暂时存储到空间更大、价格更便宜的硬盘上,然后就可以回收这些物理内存继续使用了。

怎么样,通过这样的类比方式,是不是对 Linux 系统中的虚拟内存有更加感性的认识?

最后,再向你安利一下文章开头的那句话:

当你面对一件有意义、但是没意思的事情时,不妨考虑给它加点意思;而当你面对有意思、但是没意义的事情时,也可以给它赋予一些意义!

到此,关于"Linux系统怎么用虚拟内存来欺骗应用程序"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

内存 程序 系统 应用程序 应用 操作系统 物理 房间 硬件 空间 旅馆 老板 事情 旅行团 资源 旅行 有意思 仓库 时候 数据 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 浙江格家网络技术有限公司存 顺德软件开发培训学校比较好 两个不同的数据库同步数据 北京微客网络技术有限公司 为什么明日之后没有红杉镇服务器 数据库中group by的意思 网络安全于道德法规作文 全加固服务器技术含量 无法接通服务器 饥荒联机版服务器mod怎么启动 济南大学论文查重有自己数据库吗 台服魔兽世界服务器 海淀服务器交换机回收报价单 石家庄佳君网络技术有限公司 网络信息网络安全的三个时代 ibm服务器硬盘状态 广州软件开发和丰软件不错 添加数据库有相同数据 浪潮信息软件开发工资待遇 免费网络安全法 无锡小型软件开发行业 新吴区加工软件开发大全 网络技术学习报告 公司数据库操作笔试题 支持微软服务器操作系统的服务器 smarty读取数据库 ie网络安全 山西软件开发品质保障 服务器文件拷贝 汝阳软件开发选哪家
0