当前位置: 首页 > news >正文

考研系列—操作系统:第三章、内存管理

一、内存管理的概念

1.内存的基本知识

三种装入方式

三种链接方式

这里注意:装入方式-静态重定位、动态重定位区别在于什么时候转换地址

动态重定位需要重定位寄存器的支持

2.内存管理相关概念

主要内容(注意可能用到的一些寄存器)
存储保护:两种方式(第二种需要界地址寄存器和重定位寄存器)
地址转换:三种装入方式
内存扩充: 两种技术(覆盖和交换,注意区分对象)
内存分配和回收:两类分配(连续、非连续)
内存管理的主要功能:
内存空间的分配与回收、对内存空间的扩充、地址转换、内存共享、内存保护

(1)地址转换        

装入程序并不是进行地址转换修改的步骤,本质上链接才是
只不过:在可重定位装入的方式中,实现了链接的步骤,将逻辑地址转换为物理地址;而如果是其他装入方式,绝对装入的程序是已经完成地址转换的,动态重定向是在运行时完成链接过程,实现地址转换。

(2)内存保护

方法1:在CPU中设置一对上下限寄存器,存放用户作业在内存中的上限和下限地址。每当CPU访问地址时,分别于这两个寄存器的值进行比较,判断有无越界。

(3)内存空间的扩充

①覆盖技术-针对一个程序

②交换技术-针对多个作业进程

这里注意一下:交换技术是在磁盘空间内分区,并且各有特点
PCB常驻内存,不是所有的进程信息都换出内存

(4)内存的分配与回收-连续分配管理

分配-修改空闲分区表的情况:

分配-直接删除空闲分区条目的情况:

回收-更新表项:

回收-新增表项:

回收-合并表项:

3.动态分区分配算法

(1)首次适应算法:按照地址空间排序

(2)最佳适应算法:按照空闲空间大小排序

(3)最坏适应算法:空闲分区按照容量递减次序排序

(4)临近适应算法

4.非连续分配管理方式

(1)基本分页存储

尤其注意:这里页表内的块号并不是内存块的起始地址,如果看第k块的起始地址,应该用K×内存块的大小(如4KB)

逻辑地址->得到页号、页内偏移量->根据页号、页表查到物理页起始位置->根据页内偏移量从物理页块内得到数据

页表在内存的起始位置和长度存在于进程的PCB中,页表存在于内存中

※基本地址变换机构:重点

在地址转换的时候一定要注意:物理页号*页大小+块内地址
基本地址变换机构中一定要注意: 对是否越界判断!!!

※具有快表的地址变换机构

快表TLB命中的话:一次访存找目标数据

快表TLB不命中的话:先去内存找页表,把页表项同步到TLB,然后去内存找目标数据,共两次访存

(2)两级页表

二级页表解决:页表太大,可能超过一个页块的大小

(3)基本分段存储

分段比分页更容易实现信息的共享和保护

这个对比要注意:

(4)段页式存储管理方式

一个进程会对应一个段表,一个进程可能会对应多个页表

二、额外书本知识

1.内存保护

确保每个进程都有一个单独的内存空间
实现内存保护主要有两种方式

2.内存共享

前面介绍过基于共享内存的进程通信,由操作系统提供同步互斥工具。在后面还将介绍一种内存共享的实现方式——内存映射文件

3.覆盖和交换技术

覆盖和交换技术是多道程序环境下用来扩充内存的两种方法,实现方式可以看前面
        第二遍又做错的题目!!!
只要是有分区的内存分配方式都会有内部碎片

静态重定位:当一个作业装入内存时,必须给它分配要求的全部内存空间,若没有足够的内存则无法装入。此外,作业一旦进入内存,整个运行期间就不能在内存中移动,也不能再申请内存空间。所以静态重定位不能应用于页式存储方式(页式存储方式是非连续分配地址空间的)
重点注意:

这里区分一下:
装入程序并不是进行地址转换修改的步骤,本质上链接才是
只不过:在可重定位装入的方式中,实现了链接的步骤,将逻辑地址转换为物理地址;而如果是其他装入方式,绝对装入的程序是已经完成地址转换的,动态重定向是在运行时完成链接过程,实现地址转换。

第一个可以找到,第二个缺页中断
注意:第三个会越界中断!!!

习题总结

(一)选择题

2.段页式存储管理中,地址映射表是:
每个进程一张段表,每个段一张页表
3.内存保护需要由   操作系统和硬件机构合作  完成,以保护进程空间不被非法访问。

4.存储管理方案中, 单一连续存储管理   可采用覆盖技术。

8.动态重定位是在作业的   执行过程    中进行的

装入内存的三种方式:
绝对装入:只适用于单道程序环境。
可重定位装入:也叫做动态静态重定位,在装入时对目标程序中的指令和数据地址进行修改,地址变换通常在进程装入时一次完成。
动态运行时装入:也叫做动态重定位,装入程序把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址。这种方式需要一个重定位寄存器的支持。
12.不会产生内部碎片的存储管理是:

13.多进程在主存中彼此不干扰的环境下运行,操作系统是通过       内存保护     来实现的。

不能确定,页表和段表都存储在内存中,系统提供给用户的物理地址空间的总大小减去页表或段表的长度,由于页表和段表的长度不能确定,所以提供给用户的物理地址空间大小也是不能确定的。

可重入程序:是内存共享的相关内容,看前面7(2)

这个题目一定要注意:自己容易混淆 页式管理是会出现内部碎片!!!!!

静态重定位:当一个作业装入内存时,必须给它分配要求的全部内存空间,若没有足够的内存则无法装入。此外,作业一旦进入内存,整个运行期间就不能在内存中移动,也不能再申请内存空间。

(二)简答题

这个主要问题时要注意逻辑地址的页内偏移是11位!!!!

这个题主要是看有几种操作方式

主要错误原因是粗心了,0.2KB的部分没有加到页表中,而且64MB转换为二进制转成了64×230B

这个题目做对了,值得回顾
第二遍又做错了...

相关文章:

  • KVM——CPU独占
  • FreeRTOS通俗理解指南:基础概念 + 架构+ 内核组件+练手实验
  • LangChain-Tool和Agent结合智谱AI大模型应用实例2
  • 《数字世界的连接器:计算机网络应用全景解析》
  • 使用flex实现三栏布局,两边固定,中间自适应
  • 智能柜I立控信息I产品介绍
  • 八N皇后问题
  • LeetCode Hot100(动态规划)
  • YouTube视频广告指南:类型、投放策略与优劣势解析
  • 传输层核心技术解析
  • [CSS3]响应式布局
  • 主机号全0,代表网络本身地址; 主机号全1,代表广播地址
  • Spring Boot3.4.1 集成 mybatis plus
  • Linux | Shell脚本的常用命令
  • 2. JavaScript 基础:变量、运算符、分支
  • A类地址中最小网络号(0.x.x.x) 默认路由 / 无效/未指定地址
  • 基于51单片机的音乐盒键盘演奏proteus仿真
  • 安全帽目标检测
  • 【前端优化】使用speed-measure-webpack-plugin分析前端运行、打包耗时,优化项目
  • PyCharm接入DeepSeek,实现高效AI编程
  • php语言网站开发公司北京/列举常见的网络营销工具
  • 广州十大室内设计公司排名/抖音seo推荐算法
  • 网站建设目标/关键词排名优化易下拉软件
  • 香港特别行政区政府官网首页/windows优化大师会员兑换码
  • 网站大小多少合适/成都公司网站seo
  • 手机网站建站教育模板下载/百度助手app下载