内存与操作系统内存管理


文章目录

  • 内存与操作系统内存管理
    • 一、内存的基础知识
    • 二、内存管理
      • 2.1 内存空间扩充
      • 2.2 内存空间的分配与回收**

Java、大数据开发学习要点(持续更新中…)


一、内存的基础知识

  内存是用于存放数据的硬件,程序执行前需要将数据放入内存中才能被CPU处理。内存通过对内部的存储单元编址来解决并发执行下各个程序的数据区分,根据计算机字长的不同,存储单元大小不同(如64位计算机每个字大小为64位,8个字节)。
  内存存放的相对寻址:编译语言编译后的指令寻址,是通过相对地址实现的,实际存入内存时再根据进程在内存中的起始地值得到绝对地址。编译生成的机器语言中的地址实际都是逻辑地址,再通过链接(形成完整逻辑地址)后,通过装入模块装入内存运行,这时将逻辑地址转换成物理地址(主要使用动态重定位装入方法:CPU内有重定位寄存器保存了程序存放内存的起始位置,结合逻辑地址可以实现动态重定位)。

二、内存管理

  操作系统是系统资源的管理者,也需要对内存进行管理。操作系统需要负责以下事情:

  1. 提供某种技术从逻辑上对内存空间进行扩充
  2. 内存空间的分配与回收
  3. 提供地址转换功能,负责程序从逻辑地址到物理地址的转换(动态重定位,依赖于重定位寄存器)
  4. 提供内存保护功能,保证各个进程在各自存储空间内运行,互不干扰。

2.1 内存空间扩充

  操作系统对内存空间的扩充主要有覆盖技术、交换技术和虚拟存储技术(后面详细介绍):

  • 覆盖技术:用于早期操作系统中。
  • 交换技术:实际就是进程调度中的内存调度,进程在内存和磁盘间动态调度(进程未结束前内存中始终保留PCB信息)。进程从内存中被换出是保存在磁盘的对换区中(这个区域I/O速度比文件区快,详细在文件部分讲解)。

2.2 内存空间的分配与回收**

  内存空间分配分为连续分配管理方式和非连续分配管理方式:

(1)连续分配管理方式中又分为单一连续分配、固定分区分配和动态分区分配

  • 单一连续分配,只适用于单任务操作系统。
  • 固定分区分配,将内存中除了系统区外的用户空间分为固定大小或大小不等的分区,并建立分区说明表的数据结构(数组或链表)记录每个分区大小、起始地址、状态等信息,缺点在于用户程序过大需要覆盖技术支持,且会产生内部碎片。
  • 动态分区分配,在进程装入内存时,动态地建立分区。操作系统使用空闲分区表或空闲分区链来记录内存使用情况(分区号、分区大小、起始地址等)。

    而当新的进程要装入内存时,需要用动态分区分配算法来选择出一个合适的分区。

(2)非连续分配管理方式为用户进程分配的可以是一些分散的内存空间,主要管理方式有分页存储管理分段存储管理段页式存储管理

  • 分页存储管理:将内存空间分为大小相等的小分区,每个分区称为页框,编号从0开始。相应地,将用户进程的地址空间也分为 与页框大小相等 的一个个区域,每个部分称为,编号同样从0开始。(注:进程的最后一个页可能没有一个页框那么大,因此页框不能过大,否则可能产生过大的内部碎片)
      那么分页存储是离散存储的,如何实现逻辑地址到物理地址的转换?
      将动态重定位的思想使用到分页存储中,首先计算逻辑地址对应的页号(逻辑地址/页面大小)和页内偏移量(逻辑地址%页面大小),得到该页号在内存中存放的起始地址,由此物理地址=页面地址+页内偏移量。而要知道进程的每个页在内存中存放的位置,操作系统需要为每个进程建立一张页表
  • 分段存储管理按照程序自身逻辑关系划分为若干个段,每个段有一个段名,每段从0开始编址。每个段在内存中占据连续空间,但各个段之间可以不相邻。与分页存储类似,操作系统在分段存储时为每个进程建立一张段表来保存各个段离散装入内存对应的段长、基址(与分页相似,段表项长度相同,可以通过段表计算段号,所以段号是隐含的不占存储空间)等信息。分段存储管理逻辑地址到物理地址的转换如下图:

    可以看出分段存储中由于每个段的长度都不同,因此对比分页存储多了段内地址越界检查。
  • 分段与分页的对比
  1. 信息的物理单元对用户不可见,信息的逻辑单元对用户可见。
  2. 大小固定且由系统决定长度不固定且决定于用户编写的程序
  3. 分页用户进程地址是一维的(只需要一个记忆符),分段用户进程地址是二维的(需要给出段名和段内地址)。
  4. 分段更容易实现信息的共享和保护(只能共享不属于临界资源的代码),当需要让内存中的某个片段共享给多个进程,只需要将各个进程的段表指向同一个段即可。
  • 加快分页过程
  1. 如何提高逻辑地址和物理地址的映射速度?(快表)
      系统一旦访问了某一个页,就会在一段时间内稳定工作在这个页上。所以为了提高访问页表的速度,计算机配备了一组能容纳部分页表的硬件寄存器。当系统再次需要将地址转换时,先访问这组硬件寄存器(即,快表)。
  2. 页表过大怎么解决?
      页表存在的问题是,页表必须连续存放在多个连续的页框中,页表过大时离散存储失去了其本质意义,所以可以再建一级索引(二级页表)来让原页表连续页表项分组离散存储。

参考:《王道考研操作系统》
地址:https://www.bilibili.com/video/BV1YE411D7nH

内存与操作系统内存管理相关推荐

  1. linux c 内存分配内存,Linuxc - 操作系统内存分配

    静态变量是存储在数据段的,在函数中可以共用. 全局变量也是存储在数据段的,在全局中可以共用. 指针变量本质上是地址,数组变量本质上也是地址. 数组是可靠的,不可变的地址.指针变量是不可靠的,可变的.数 ...

  2. linux 内存 thp,操作系统内存大页(THP)对redis性能的影响

    redis启动日志的warning: WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. Thi ...

  3. 操作系统--内存管理方式

    "碎片的内存"描述一个系统中所有不可用的空闲内存.这些资源之所以仍然未被使用,是因为负责分配内存的分配器使这些内存无法使用.这一问题通常都会发生,原因在于空闲内存以小而不连续方式出 ...

  4. 操作系统内存管理-Linux版

    引言 操作系统内存管理:总的来说,操作系统内存管理包括物理内存管理和虚拟内存管理. 物理内存管理: 包括程序装入等概念.交换技术.连续分配管理方式和非连续分配管理方式(分页.分段.段页式). 虚拟内存 ...

  5. 操作系统内存管理_操作系统6内存管理基础

    引言 花了一段时间才把之前的笔记整理了一部分,平时太忙也没啥时间.今天开始整理内存管理部分的,内存管理部分大致分为三部分笔记,第一部分就是本篇内存管理基础,第二部分是虚拟内存,第三部分高速缓存. 一个 ...

  6. 操作系统内存管理之 内部碎片vs外部碎片

    "碎片的内存"描述一个系统中所有不可用的空闲内存.这些资源之所以仍然未被使用,是因为负责分配内存的分配器使这些内存无法使用.这一问题通常都会发生,原因在于空闲内存以小而不连续方式出 ...

  7. 操作系统内存管理——分区、页式、段式管理

    操作系统内存管理--分区.页式.段式管理 标签: 内存管理操作系统数据结构算法 2010-07-05 11:26 20805人阅读 评论(5) 收藏 举报 分类: 操作系统(4) 版权声明:本文为博主 ...

  8. 操作系统内存管理--简单、页式、段式、段页式

    一.内存管理的目的和功能 内存一直是计算机系统中宝贵而又紧俏的资源,内存能否被有效.合理地使用,将直接影响到操作系统的性能.此外,虽然物理内存的增长现在达到了N个GB,但比物理内存增长还快的是程序,所 ...

  9. 操作系统——内存管理——分段和分页

    一. 物理地址和逻辑地址 物理地址:加载到内存地址寄存器中的地址,内存单元的真正地址.在前端总线上传输的内存地址都是物理内存地址,编号从0开始一直到可用物理内存的最高端.这些数字被北桥(Nortbri ...

最新文章

  1. 志澄观察:卫星互联网——太空经济新动力
  2. 生成可执行jar文件
  3. 如何完全卸载VS2010
  4. Android UI布局—— 仿QQ登录界面
  5. Java 面向对象:static的理解
  6. Java虚拟机(十一)——执行引擎
  7. 决策单调性Ⅱ:斜率优化(1597: [Usaco2008 Mar]土地购买)
  8. mysql存储过程 定时任务
  9. python下载显示文件丢失_python27.dll是什么文件|python27.dll丢失修复下载32/64位
  10. word | word一键排版 | word极速排版 | 真正的一键排版
  11. swf文件转mp4视频格式的失败与成功
  12. PostgreSql扩展(EXTENSION )
  13. requests、xpath应用案例
  14. 用 FFMPEG 合并 MP4 视频
  15. 《埃尔维斯与安娜贝尔》配色分享
  16. C++ 算法篇 动态规划----区间动态规划
  17. xctf之warmup
  18. bat脚本自动截取浏览器网页(整个网页那种)
  19. 循环 根据要求打印可空心倒三角形 123 简单
  20. IAR9.2及以上版本编辑器主题设置配色方案

热门文章

  1. ubuntu16.04安装及使用VLC
  2. Easy Connect提示:无法连接服务器,请检查网络
  3. 汽车ABS控制器设计及车身稳定算法研究笔记(一)——总体思路
  4. 打谱软件告诉你:编曲和作曲哪个难?
  5. 深信服aSV服务器虚拟化功能及原理
  6. Flutter MaterialApp Title
  7. 计算机二级试题怎么下载
  8. 《游戏大师Chris Crawford谈互动叙事》一22.4 本章小结
  9. [宋史学习] 积贫积弱局面的形成 --- 刘太后专政与积贫状况的加剧
  10. 微信中怎么打开app文件 安卓微信跳转打开外部浏览器打开app文件下载链接(苹果无需上架跳转Apple Store下载)