0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅析计算机中物理内存的模型

存储界 来源:未知 作者:胡薇 2018-08-28 16:29 次阅读

小伙伴们有没有好奇,数据在计算机内存中,是如何存储的?计算机中物理内存的模型是怎样的呢?今天大雄就给大家详细的介绍一下。

在了解存储模型之前,我们首先应该了解一下计算机的存储体系。

个人感觉学这部分的知识应该首先在脑海中抽象出存储体系,因为无论磁盘,物理内存还是虚拟内存都是互相有联系的,抽象出模型有助于我们的理解和记忆。接着需要哪部分知识或再次深入哪部分知识,从体系图中找。

建议不要在这块知识拉长战线,看了前面忘后面。

计算机存储体系图

简述上图:

从进程开始,我们知道进程运行在内存中,每个进程都有自己独立的内存地址空间,目的是安全和高效利用内存,一个进程的地址空间是抽象出来的,属于虚拟内存,而内存分为虚拟内存和物理内存。

从物理内存分析,物理内存管理分为等长和不等长划分,等长划分一般通过位图来记录结构,不等长划分一般通过空闲区表来记录。

而物理内存的要通过算法来使进程合理分配回收,其中分配算法有四种,回收算法分为四种情况,而内存分配和回收会引起内存碎片问题,内存碎片问题分为内碎片和外碎片,解决方案有压缩技术。

从虚拟内存分析,分为页式/段式/段页式内存管理,中间通过页表/段表/段页表来进行物理到虚拟内存的转换,重点是页式管理,页式管理中重要的概念有页表项,多级页表,倒排页表,MMU,快表TLB和页错误/缺页异常,而虚拟存储技术中核心概念就是将内存中暂时不用的页面(内存块)放入磁盘上,问题是哪些页面(内存块)放到磁盘上呢,于是我们引入页面置换算法,其中OPT为理想置换算法,基本算法有FIFO,FIFO改进后的第二次机会算法和时钟算法,LRU中老化算法和NRU,既然部分页面暂存到磁盘上,那么就要聊聊磁盘。

磁盘是硬件,所以要讨论它的结构,和如何存取数据,以及磁盘调度的一些算法,此外,虚拟内存还有重要的两个技术就是内存映射和写时复制。

物理内存

物理内存其实就是我们机器的实际内存大小,比如我的笔记本电脑内存是4G。我们都知道程序是要加载道内存中才能执行,所以物理内存越大,我们电脑的性能就越好。

位图

位图(bitmap),其实就是用位来标记数据。

在等长内存管理中,比如我们将内存等分为大小相同的内存块,那么一位标记一块,因为会形成一个位图。

这样,我们需要多大的块,只需要匹配bitmap中连续多少个0即可。

空闲区表

在不等长划分中,比如我们根据进程的大小来分配内存,这是就需要采用空闲区表来存储空闲的内存。

空闲区链表只不过是通过链式结构将空闲区表中的数据组织起来。

内存分配算法

上面说了我们如何通过数据结构来组织未分配的内存,我们以空闲区链表结构为例,下面来说说物理内存的分配算法,有如下四种。

1.首次适配算法

首次适配算法是在空闲区链表中从头开始查找符合申请内存大小的块,直到找到满足条件的为止,该算法不断的从头开始试验申请,所以大部分使用的都是低地址空间的内容,从而流出了高地址空间来满足大的申请需求,但是缺点是会在较低的地址空间中频繁的申请和释放导致低地址空间中的内存碎片,而且每次都查找都从头开始,查找效率比较低。

2.下次适配算法

下次适配算法是首次适配算法的一个改进,它每次从上一次适配的地方开始向下查找,不需要每次都从头开始,此算法使得内存使用均匀,但是不会有大的内存块来满足内存分配。

3.最佳适配算法

此算法先按照内存块的空闲区大小从小到大进行排序,排序后,每次从头开始匹配,这样匹配出来的结果肯定是最优的,但实际因为比较符合申请内存的大小,会出现很多较小的内存碎片无法使用,并且每次分配后都要重新排序,开销比较大。

4.最差适配算法

此算法按照内存块的空闲区从大到小进程排序,排序后,有进程申请内存时,将表头最大的内存块分配给它,这样如果不能分配则所有不能分配,且将大内存分配给它,若只占用一小部分还可以进行二次分配。

内存回收算法

内存分配且进程使用完后,我们要进行回收,一般而言,内存回收算法和内存的分配算法有着密切的关系。

所以我们仅仅看内存回收算法可能会出现的四种情况。

左上为上相邻,右下相邻,左下是上下相邻,右下是上下不相邻。

内存碎片

什么是内存碎片,就是在内存中占据一定大小的空间却得不到利用的内存。内存碎片分为内碎片和外碎片。

内碎片:比如按页式分配等长,那么如果有一个进程需要5页多内存,那么我们只能给他分配6页内存,那么这第6页是未用完的,其中除过一些数据外,我们还有空闲的被该进程占据,其他进程也不能使用。

外碎片:外碎片是还未分出来的,未被进程占用且因为太小或其他不满足条件再次分配的小的内存块称为外碎片。

紧缩技术:我们一般采用紧缩技术来合并小的内存碎片,原理是将暂时不运行的进程安全的移动位置,独立出内存碎片,从而组装多个内存碎片合并成一个大的内存块。

注意的是有些进程并不能被移动,比如正在读写IO。

伙伴算法

伙伴算法是Linux底层内存分配回收算法的一种实现。本文只讲述伙伴算法的基本原理。

伙伴算法基本思想:

将内存大小变为二的n此方 。

如果一个程序申请的内存块大小 m 满足 2^n-1 < m < 2^n条件,那么就将此时的内存块分配给它。

如上图,我们现在需要200K空间,1M等于1024K,如果m小于1M的一半,那么继续分离m,当分离到256时,刚好能满足200K的需求,所以分配。

归还时,采用内存回收算法的思想,看左右相邻。若没被占用则合并(也是为什么叫伙伴算法)。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内存
    +关注

    关注

    8

    文章

    3025

    浏览量

    74054
  • 磁盘
    +关注

    关注

    1

    文章

    379

    浏览量

    25209

原文标题:浅谈计算机中的存储模型之物理内存

文章出处:【微信号:cunchujie,微信公众号:存储界】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    计算机中的电磁兼容情况

    电磁兼容的英文名称为Electromagnetic Compatibility ,简称EMC。电磁兼容技术涉及的频率范围宽达0-400GHz,研究对象除传统设施外,涉及芯片级,直到各型舰船、航天飞机、洲际导弹,甚至整个地球的电磁环境。本文章主要介绍计算机中的电磁兼容情况。
    发表于 05-31 08:22

    什么是计算机系统、计算机硬件和计算机软件?

    第一章 计算机系统概论1. 什么是计算机系统、计算机硬件和计算机软件?硬件和软件哪个更重要?解:P3计算机系统:由
    发表于 07-22 09:06

    关于计算机的硬件维护的浅析

    大家搜索整理的关于计算机的硬件维护的浅析,欢迎参考阅读,希望对您有所帮助!随着社会的进步,科学技术的发展,信息的传播方式以计算机传播为主。这就需要我们定期对良好计算机进行防范检查,对故
    发表于 09-08 08:07

    微型计算机的存储设备

    第四章微型计算机的存储设备4.1 内存内存计算机中数据存储和交换的设备。在整个计算机中内存起着
    发表于 09-10 09:02

    微型计算机中采用的逻辑元件是什么

    第7部分 计算机硬件 单选(1) .[B]计算机向使用者传送计算、处理结果的设备称为______。(A) 输入设备(B) 输出设备(C) 存储设备(D) 微处理器(2) .[C]目前微型计算机
    发表于 09-15 07:43

    个人计算机中的串行端

    【LabVIEW从入门到精通】4.1.5 个人计算机中的串行端口
    发表于 01-08 15:43 0次下载

    量子计算机的优点_量子计算机的应用_量子计算机的未来应用

    量子计算机是一类遵循量子力学规律进行高速数学和逻辑运算、存储及处理量子信息的物理装置。当某个装置处理和计算的是量子信息,运行的是量子算法时,它就是量子计算机。量子
    发表于 11-28 18:10 1.2w次阅读

    内存计算机中的作用是什么

    内存计算机运行过程是一个数据的临时存储和中转站。当程序开始运行时,数据从硬盘读入内存,然后内存数据和CPU之间交换,CPU的运算结果存放
    的头像 发表于 12-03 17:58 1w次阅读

    计算机中程序到底是如何运行的?

    摘要:计算机内存计算机中所有程序的运行都在内存中进行,也就是你电脑的内存运行的。
    的头像 发表于 05-03 17:31 9122次阅读
    <b class='flag-5'>计算机中</b>程序到底是如何运行的?

    cmos技术在计算机中的应用

    cmos技术在计算机中的应用 CMOS技术(互补金属氧化物半导体技术)是现代电子设备制造过程中使用最广泛的技术之一。CMOS技术结合了MOSFET晶体管的特性,利用正负电荷的互补作用,使得芯片的功耗
    的头像 发表于 09-05 17:39 2011次阅读

    DRAM在计算机中的应用

    DRAM(Dynamic Random Access Memory,动态随机存取存储器)在计算机系统扮演着至关重要的角色。它是一种半导体存储器,用于存储和快速访问数据,是计算机内存
    的头像 发表于 07-24 17:04 1196次阅读

    边沿触发器在计算机中的应用

    边沿触发器在计算机中的应用极为广泛,它们作为数字电路的基本单元,对于实现计算机内部的时序控制、数据存储与传输、以及复杂逻辑功能等方面起着至关重要的作用。以下将从边沿触发器的定义、特点、工作原理及其在
    的头像 发表于 08-12 14:20 537次阅读

    计算机中总线的作用是什么

    计算机中,总线(Bus)扮演着极其重要的角色,它是计算机内部各功能部件之间传送信息的公共通信干线。总线不仅连接了计算机的各个核心组件,还确保了数据、指令和控制信号的高效、准确传输。
    的头像 发表于 08-26 15:57 1375次阅读

    逻辑内存物理内存的区别

    Access Memory),是计算机硬件的一部分,用于存储计算机当前正在使用的数据和程序。物理内存计算机中的一种易失性存储器,这意味着
    的头像 发表于 09-27 15:38 687次阅读

    虚拟内存计算机性能的影响

    在现代计算机系统内存管理是确保系统高效运行的关键因素之一。虚拟内存技术作为内存管理的核心组成部分,对于提升
    的头像 发表于 12-04 09:17 680次阅读