系列文章目录

1.《带你深挖计算机底层逻辑,打通你计算机基础知识的任督二脉》
2.《深度学习计算机底层原理,深度剖析存储器》
3.《基于内存全面理解高速缓冲存储器》
4.《深度学习计算机指令系统,彻底搞懂指令十大寻址方式》
5.《降维打击,带你深度学习CPU(上)》
6.《深度学习CPU(番外篇)——虚拟内存》
7.《深度学习CPU(番外篇)——虚拟内存》
8.《操作系统——内存连续分配管理方式》
9.《操作系统——内存基本分页存储管理》


文章目录

  • 系列文章目录
  • 前言
  • 一、基本分页存储管理方式
  • 二、分页存储的几个重要概念
  • 三、基本地址变换机构
  • 四、具有快表的地址变换机构
  • 总结

前言

连续分配的三种管理方式有一个共同的特点就是,用户程序在内存当中都是连续存放的,在连续存放的方式当中,即使内存由超过1GB的内存,可是却未必有超过1GB的连续内存,需要1GB内存的作业仍然是无法运行的,所以就引入了分连续分配的内存管理方式,他的存储密度是低于连续分配的管理方式的。

非连续分配方式有根据分区的大小是否固定,分为页式存储管理和段式存储管理,而在页式存储管理当中又将作业运行是否需要将全部的页面都调入内存分为基本分页式存储管理和请求分页式存储管理。


一、基本分页存储管理

固定分区会产生内部碎片,动态分区会产生外部碎片,这两种技术对内存的利用率都很低,我们希望在内存的使用过程当中尽可能地避免产生碎片,这也就引入了分页的思想;我们将主存划分为大小相同切固定的块,块相对较小,作为主存的基本单位,每个进程也已块为基本单位进行划分,进程在执行的时候,以块为单位逐个申请内存的块空间。

分页的方式从形式上看,像分区相等的固定分区技术,分页管理不会产生外部碎片,但是分页管理相比于固定分区又有着本质的特点,块的大小相对于分区要小很多,而且进程也会按照块进行划分,进程在执行的时候按照块为单位申请内存空间并且执行,这样子的话进程只会在为最后一个不完整的块申请内存空间的时候产生内存碎片,所以尽管产生碎片,但是这种碎片对于进程来说是很小的,每个进程平均只产生半个快大小的内部碎片,也叫页内碎片。


二、分页存储的几个重要概念

1.页面和页面大小

进程中的块称为页或者页面,内存中的块成为页帧或者页框,外存中也已同样的单位进行划分,直接成为块或者盘块,进程在执行的时候需要申请内存空间,也就是需要为进程中的每个页面申请可用的页框或者页帧,这也就产生了页面和页框的一一对应。

为了方便地址的转换,页面的大小应该是2的整数幂,同时页面的大小也应该适中,页面太小的话会使得进程中的页面数过多,这样子页表就会很长,占用了大量的内存,而且也会增加硬件地址转换的开销,降低页面换入/换出的效率;页面过大又会使页内碎片增多,降低内存的利用率。

2.地址结构

分页存储管理的逻辑地址结构如图所示:

页号P 页内偏移量W

地址结构包含两部分,前一部分为页号P,后一部分为页内偏移量W。地址长度为32位。其中0~11位为页内地址,即每页大小为4KB,12~31位为页号,即最多允许2^20页存在。

注意地址结构决定了虚拟内存的寻址空间有多大,在实际问题中页号、页内偏移量、逻辑地址可能是用十进制数给出的,若题目用二进制地址的形式给出时,读者要学会转换。

3.页表

为了便于在内存当中找到进程的每个页面所对应的物理块(页框),系统会为每个进程建立一张页表,它记录页面在内存中对应的页框,页表一般存放在内存当中。

配置页表后,进程执行的时候通过查找该表,即可找到每页在内存中的物理块号,可见页表就是实现从页号到物理块号的地址映射,说白了就是基本分页存储管理当中虚拟地址向物理地址的转换。

页表是由页表项组成的,很多人容易混淆页表项和地址结构的概念,页表项与地址结构都由两部分组成,而且第一部分都是页号,但是页表项的第二项是由物理块号组成的,也就是进程对应内存当中的物理块号(页框号),但是地址结构的第二部分确是由页内偏移量构成的。页表项的第二部分物理块号与地址结构的第二部分页内偏移量共同构成物理地址。

说到这里可能还是有很多的小伙伴不明白,首先要明白一个重要的概念页内偏移量也叫做页内地址,二者是等同的,只不过说法不一样而已,还要知道一个重要的概念就是,逻辑地址结构经过页表的检索以后,逻辑地址取下第二部分页内偏移量(页内地址)与页表的第二项结合经过一定的计算才能生成物理地址,这是为什么呢?

其实很简单,要知道物理块号知识一个笼统的地址范围,一个物理块号内部是可以存放很多的东西的,就比说我们的大学宿舍,一个大学宿舍里面是住着很多的人的,那么物理块号就相当于宿舍号,根据物理块号只能找到你的宿舍,但是你宿舍的床位在哪里呢?是不是在宿舍内部还要有一个地址,比如你是二号床,那么这个“二号床”就是页内地址也叫页内偏移量,物理块号仅仅代表你们宿舍的入口地址,但是从宿舍的大门入口到你自己的床位是有一个偏移量在里面的,所以给位小伙伴们你们现在可以理解页表的作用了吗?

    基本地址变换机构:
        

地址变换机构的任务是将逻辑地址转换为内存中的物理地址,而地址变换是借助于页表实现的,在系统中设置一个页表寄存器,存放页表在内存中的起始地址F和页表长度M。

平时进程在未执行的时候,页表的起始地址和页表长度存放在本进程的PCB中,当进程调度的时候才将页表的起始地址和页表长度装入页表寄存器当中。我们在这里将页面大小身为L,逻辑地址A到物理地址E的变换过程如下:

  • 计算页号P=A/L,逻辑地址的总大小除以页面大小,就是页号的总数量(页面的个数),因为一个页面 对应一个页号。
  • 比较页号P和页表长度M,若P>=M,则发生越界中断,否则继续执行。
  • 页表中页号P中对应的 页表项地址==页表起始地址F+页号*页表项长度,取出页表项内容b即为物理块号,注意区分页表长度和页表项长度,页表长度一共是指多少页,页表项长度是指页内地址占多少的存储空间。
  • 最后计算E=b*L+W。用得到的物理地址去访问内存。

三、具有快表的地址变换机构

1.为什么要引入快表

分页式存储管理面临着两个主要的问题,首先每次方寸操作都需要进行逻辑地址向物理地址的转换,地址转换的过程必须快,否则访存速度就会变低。其次每个进程都要引入页表,用于存储映射机制,页表不能太大,否则内存利用率就会降低。

在上面介绍的地址变换过程可知,若页表全部放在内存当中,则存取一个数据或者一条指令至少要访问两次内存,第一次是访问页表,确定所取的数据或者指令的物理地址,那么第二次就是根据该地址将数据或者指令取出来。显然这种方法比平时普通的取指令要慢了一半。

为此在地址变换机构当中设置一个具有并行查找能力的高速缓冲存储器——快表,又称相联存储器(TLB),用来存放当前访问的若干个页表项,以加速地址变换的过程,与此对应,主存中的页表常称为慢表,具有快表的地址变换机构如图所示。

在具有快表的分页机制当中,地址的变换过程如下:

  1. CPU给出逻辑地址以后,由硬件进行地址变换,将页号送入高速缓冲存储器当中,并将此页号与快表当中的所有页号进行比较。
  2. 若找到匹配的页号,说明所要访问的页表项在快表当中,则直接从中取出该页对应的页框号,与页内地址进行拼接形成物理地址,这样存取数据近一次访存即可。
  3. 若没有找到匹配的页号,则需要访问主存当中的页表,读出页表以后,应同时将其存入快表,以便后面再次访问,若快表已满则根据特定的算法淘汰一个旧的页表项。
  4. 但是有些处理机设计为快表与慢表同时查找,若快表中查找成功则终止慢表的查找。
  5. 一般的快表命中率为90%以上,这样分页带来的速度损失就会降低到10%以下。

总结

昨天为大家讲解了内存的连续分配管理方式,今天为大家详细地讲解了内存非连续分配管理方式中的基本分页存储管理,这种分配管理方式不需要在内存当中找到连续的内存空间也能够运行进程,明天将为大家讲解基本分段式存储管理,这个和基本分页式存储管理方式有很多类似的地方,希望我的每一篇文章都能让每一位读者都有所收获。

【操作系统——内存基本分页存储管理】相关推荐

  1. 操作系统:基本分页存储管理方式

    1.离散分配方式 ----连续分配方式(分区存储管理)要求把作业放在一个连续的存储区中,因而会形成许多"碎片",固定分区会产生内部碎片,动态分区会产生外部碎片.虽然可通过" ...

  2. 操作系统 内存管理单元MMU TLB

    前言 在了解操作系统 内存管理 分页/分段/段页式管理.操作系统 虚拟内存技术两篇文章后,接下来继续看看现代操作系统基本内存管理方式,本文详细介绍Linux操作系统下的内存管理单元MMU和TLB. d ...

  3. 12 操作系统第三章 内存管理 非连续分配管理方式 基本分页存储管理 基本分段存储管理 段页式存储管理

    文章目录 1 基本分页存储管理 1.1 什么是分页存储 1.2 重要的数据结构--页表 1.3 基本地址变换机构 1.4 具有快表的地址变换机构 1.4.1 什么是快表(TLB) 1.4.2 引入快表 ...

  4. 操作系统之内存管理:3、基本分页存储管理

    3.基本分页存储管理 思维导图 页框(页帧.内存块.物理块.物理页面)与页面(页) 如何确定进程的每个页面在内存中存放的位置?--------->页表 每个页表项多大?占几个字节?i号页表项的起 ...

  5. (王道408考研操作系统)第三章内存管理-第一节6-1:非连续分配管理方式之基本分页存储管理

    文章目录 一:分页存储管理基本思想 二:分页存储管理基本概念 (1)页框和页 (2)页框和页关系 (3)分页的优点 三:分页存储管理实现地址转换 (1)借鉴连续分配管理方式中的动态重定位 (2)分页管 ...

  6. 操作系统【四】分页存储管理

    连续分配方式的缺点: 固定分区分配:缺乏灵活性,产生大量的内部碎片,内存的利用率较低 动态分区分配:会产生许多外部碎片,虽然可以用紧凑技术处理,但是紧凑技术的时间代价较高 基本分页存储管理 思想:把内 ...

  7. 八、操作系统——基本分页存储管理的基本概念(详解)

    一.思考:连续分配方式的缺点? 考虑支持多道程序的两种连续分配方式: 固定分区分配:缺乏灵活性,会产生大量的内部碎片,内存的利用率很低. 动态分区分配:会产生很多外部碎片,虽然可以用"紧凑& ...

  8. 操作系统基本分页存储管理方式

    操作系统基本分页存储管理方式 连续分配内存方式会形成许多"碎片",通过紧凑的方式将碎片拼接成一块大的空间,但是拼接过程系统开销太大.如果允许将一个进程直接分散地装入到许多不相邻的分 ...

  9. 操作系统简单分页存储管理(含代码)

    实验目的: 在分页存储管理方式中,如果不具备页面置换功能,则称为基本的分页存储管理方式,或称为纯分页存储管理方式,它不具备支持虚拟存储器的功能,显示一次性的特征.本实验通过程序模拟操作系统的基本分页存 ...

最新文章

  1. scrapy框架_Scrapy框架学习---Scrapy介绍(一)
  2. SpringSecurity分布式整合之资源服务器搭建和测试
  3. UE4学习-新建C++组件、编码遇到问题
  4. laravel 检测sql_在Laravel PHP应用程序中轻松进行面部检测
  5. 去重的Set解不出“斯诺登的密码”(洛谷P1603题题解,Java语言描述)
  6. 设置虚拟机上的redis可以被windows的环境下的python访问连接
  7. Fixchart图表组件——仪表盘,纳尼?
  8. 谋定而后动,理想不相信热血
  9. FLASH 闪存的分类与介绍
  10. Win7 VirtualBox运行出现“0x00000000指令引用的0x00000000内存。该内存不能为written” ,错误解决
  11. 光纤跳线如何区分单模和多模
  12. 考研英语——阅读的逻辑关系分析(唐迟阅读的逻辑笔记+实战)更新中
  13. 图的深度(DFS)/广度优先搜索算法(BFS)/Dijkstra
  14. warmup lr+CosineAnnealingLR策略
  15. 一切免费的大学视频教程,免费空间和网盘
  16. 关于VMware虚拟机设置NAT后还不能上网解决办法
  17. 机器人控制器编程整理汇总-辞旧迎新-
  18. delphi 控件大全
  19. 金融投资之重要财务指标 (From Corporate Finance, 6th Edition) 与Tushare数据接口
  20. Vue全家桶(前后端完全分离)

热门文章

  1. C站助手插件 帮您管理海量模型 就是好用
  2. HTML5期末大作业:商城网站设计——防锤子手机商城官网首页模板(HTML+CSS+JavaScript ) 电商网页HTML代码
  3. 几个Linux实用快捷键分享
  4. 机器学习实验(一):运用机器学习(Kmeans算法)判定家庭用电主因
  5. 压缩感知重构之凸松弛法
  6. LG 2341 受欢迎的牛
  7. PS曲线绘画翅膀素材
  8. angular 定义对象_angular 自定义指令详解
  9. ORA-01078、LRM-00109错误问题处理
  10. 关于Windchill中简单的操作(对象的操作,客制化操作)