【408&预推免复习】操作系统之存储器管理

文章目录
1 基础部分
2 分页存储管理
3 分段存储管理

1 基础部分


物理地址空间(或物理空间、绝对空间):由内存一系列存储单元所限定的地址范围;
逻辑地址空间(用户编程空间):由程序中逻辑地址组成的地址范围
相对地址(或逻辑地址):用户程序经编译之后的每个目标模块都从0开始顺序编址,这种用户编程所用的地址称为相对地址或逻辑地址
绝对地址(或物理地址、内存地址):内存是由若干存贮单元组成的,每个存贮单元有一个编号称为物理地址。
地址变换(重定位):把逻辑地址转换为相应物理地址的过程
运行时动态链接(Run-time Dynamic Linking)
将某些目标模块的链接,推迟到执行时才进行。在执行过程中,若发现一个被调用模块尚未装入内存时,由操作系统去找到该模块,将它装入内存,并把它链接到调用者模块上。

可重定位装入方式(Relocation Loading Mode)
根据内存的具体情况将装入模块装入到内存的适当位置
每道程序都从0开始编址,程序中的其他地址是相对于0号地址的,在将程序装入内存时,物理地址与逻辑地址不同,不仅要修改指令地址,而且要修改指令内容


动态运行时的装入方式(Dynamic Run-time Loading)
装入模块把程序装入内存后并不将逻辑地址转换为物理地址,而是在程序运行时进行地址变换
允许程序在内存中移动
装入模块中的所有地址在装入内存后仍然是相对地址
地址转换需要硬件(重定位寄存器)的支持



**动态地址重定位:**地址变换是在程序执行时进行的。在CPU访问内存之前将要访问的程序或数据地址转换为内存地址

交换技术
利用不同程序之间的空间覆盖,允许一个进程的地址空间全部放在外存上,需要时再把它放入内存。
虚拟存储器技术
先把程序的地址空间放在外存,只装入一部分就开始程序的运行,其它的内容需要时再装入。

连续分配方式是为一个用户程序分配一个连续的内存空间,即程序中代码或数据的逻辑地址相邻,体现在内存空间分配时武力地址的相邻。连续分配方式可分为四类:
1 单一连续分配
2 固定分区分配
3 动态分区分配
4 基于顺序搜索的动态分区分配算法

多道程序环境中,为了能在内存中装入多道程序,且使这些程序之间不会发生相互干扰,将整个用户空间划分为若干固定大小的区域,每个分区只装入一道作业,这便是早期的分区式存储管理方式。
分区的划分是在系统初启时规定的,在系统运行期间不发生变化(包括大小和边界)

固定分区存储管理方式下,作业执行过程中不可以在各个存储分区之间移动,采用静态重定位装入方式装入作业。即作业的逻辑地址与分区下限地址相加,得到相应的绝对物理地址。
作业运行时,作业所在分区的下限地址和上限地址分别送给CPU的下限寄存器和上限寄存器中,以便进行越界保护。


动态分区分配又称为可变分区分配,它是根据进程的实际需要,动态地为之分配内存空间

所谓顺序搜索,是指依次搜索空闲分区链上的空闲分区,去寻找一个其大小能满足要求的分区。基于顺序搜索的动态分区分配算法有如下四种:

  1. 首次适应(first fit,FF)算法
  2. 循环首次适应(next fit,NF)算法
  3. 最佳适应(best fit,BF)算法
  4. 最坏适应(worst fit,WF)算法

2 分页存储管理


所谓对换,是指把内存中暂时不能运行的进程或者暂时不用的程序和数据换出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需的程序和数据换入内存。


对换的类型
(1) 整体对换:以进程为单位进行对换,又称进程对换
(2) 页面(分段)对换:部分对换
连续存储管理:将作业一次性、连续地装入内存空间,对内存空间要求很高,容易在内存空间产生很多碎片
离散存储方式:把逻辑地址连续的作业离散地存储到内存上不连续的空间,以达到充分利用内存空间,减少内存碎片的产生。
分页存储管理方式
存储管理的需要
分段存储管理方式
用户编程的需要

实现过程:
内存空间分成若干个大小相等的存储块,这些存储块叫做物理块或者页框(Page Frame),系统对所有的块进行顺序编号,如第0块,第1块……
用户进程的逻辑地址空间划分为与块大小相等的若干页,同样对它们进行顺序编号,如第0页,第1页……
内存分配时,将用户进程的所有页分别装入到多个不连续的块中


访问内存的有效时间:从进程发出指定逻辑地址的访问请求,经过地址变换,到在内存中找到对应的实际物理地址单元并取出数据,所需要花费的总时间,称为内存的有效访问时间(Effective Access Time,EAT)。
假设访问一次内存的时间为t,在基本分页存储管理方式中,有效访问时间分为第一次访问内存时间(即查找页表对应的页表项所耗费的时间t)与第二次访问内存时间(即将页表项中的物理块号与页内地址拼接成实际物理地址所耗费的时间t)之和:

EAT = t + t = 2t

两级页表(Two-Level Page Table)
针对难于找到大的连续的内存空间来存放页表的问题,可利用将页表进行分页的方法,然后离散地将各个页面分别存放在不同的物理块中。同样,也要为离散分配的页表再建立一张页表,称为外层页表(Outer Page Table),在每个页表项中记录了页表页面的物理块号。
多级页表
对于32位的机器,采用两级页表结构是合适的,但对于64位的机器,采用两级页表是否仍然合适,须做以下简单分析。如果页面大小仍采用4 KB即212 B,那么还剩下52位,假定仍按物理块的大小(212位)来划分页表,则将余下的42位用于外层页号。此时在外层页表中可能有4096 G个页表项,要占用16 384 GB的连续内存空间。

3 分段存储管理

分段:在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义一组逻辑信息。
每个段都从0开始编址.采用一段连续的地址空间。段的长度由相应的逻辑信息组的长度决定,因而段长不等


根据所示段表,将逻辑地址(0,137),(1,4000),(2,3600),(5,230)转换成物理地址。


答:(1)段号0小于段表长5,故段号合法;由段表的第0项可获得段的内存始址为50K,段长为10K;由于段内地址137,小于段长10K,故段内地址也是合法的,因此可得出对应的物理地址为50K+137=5l337。
(2)段号l小于段表长,故段号合法;由段表的第l项可获得段的内存始址为60K,段长为3K:经检查,段内地址4000超过段长3K,因此产生越界中断。
(3)段号2小于段表长,故段号合法;由段表的第2项可获得段的内存始址为70K,段长为5K;故段内地址3600也合法。因此,可得出对应的物理地址为70K+3600=75280。
(4)段号5大于段表长,故段号不合法,产生越界中断。

●分页系统能有效地提高内存的利用率——解决外部碎片问题。
●分段系统则能更好地满足用户编程的需要——解决段的共享、动态连接等问题。
●将两者结合起来,汲取两着的优点,产生段页式存储管理

先将用户程序分成若干个段,并为每一个段赋予一个段名
再把每个段分成若干个页

【408预推免复习】操作系统之存储器管理相关推荐

  1. 【408预推免复习】操作系统之虚拟存储器

    [408&预推免复习]操作系统之虚拟存储器 文章目录 1 虚拟存储器概述 2 请求分页存储管理方式 3 页面置换算法3.1 最佳(Optimal)置换算法3.2 先进先出(FIFO)页面置换算 ...

  2. 【408预推免复习】操作系统之IO层次结构和IO控制方式

    [408&预推免复习]操作系统之IO层次结构和IO控制方式 文章目录 1 I/O设备 2 I/O系统的层次结构 3 I/O控制方式 4 IO设备分配与回收 文章目录 1 I/O设备 2 I/O ...

  3. 【408预推免复习】操作系统之处理机调度与死锁

    [408&预推免复习]操作系统之处理机调度与死锁 文章目录 1 作业调度和进程调度 2 实时调度和死锁概述 3 预防死锁和避免死锁 1 作业调度和进程调度 什么是处理机调度? 处理机调度:如何 ...

  4. 【408预推免复习】操作系统引论

    [408&预推免复习]操作系统引论 文章目录 1 操作系统的目标和作用 2 单道批处理系统 3 多道批处理系统 4 操作系统基本特性 1 操作系统的目标和作用 2 单道批处理系统 3 多道批处 ...

  5. 【408预推免复习】操作系统之文件管理

    文章目录 1 文件和文件系统 2 文件的逻辑结构 3 文件目录 4 文件共享 1 文件和文件系统 文件是具有文件名的一组相关信息的集合. 文件需要有文件名.基本内容和相关属性,如文件类型.文件长度.文 ...

  6. 【408预推免复习】计算机组成原理之存储器

    文章目录 1 概述 2 主存储器 3 高速缓冲存储器 4 Cache – 主存的地址映射 5 辅助存储器 1 概述 存取时间与物理地址无关(随机访问) • 随机存储器 在程序的执行过程中 可 读 可 ...

  7. 【408预推免复习】操作系统之进程的描述与控制

    文章目录 1 进程的基本概念 2 进程控制与进程同步 3 经典进程同步问题 4 进程通信与线程 1 进程的基本概念 前趋图(Precedence Graph),是指一个有向无循环图,可记为DAG(Di ...

  8. 【408预推免复习】计算机组成原理之系统总线

    文章目录 1 总线的基本概念 2 总线的分类 3 总线特性及性能指标 4 总线结构 5 总线控制 1 总线的基本概念 什么是总线 总线是连接各个部件的信息传输线, 是各个部件共享的传输介质 单总线结构 ...

  9. 【408预推免复习】计算机组成原理之控制单元的功能和控制单元的设计

    文章目录 1 微操作命令的分析 2 控制单元的功能 3 组合逻辑设计 4 微程序设计 1 微操作命令的分析 完成一条指令分 4 个工作周期 取指周期 间址周期 执行周期 中断周期 2 控制单元的功能 ...

最新文章

  1. 用Python进行机器学习(附代码、学习资源)
  2. HEOI2017游记
  3. H5 小代码(实时更新)
  4. OpenCV相机运动估计
  5. vue学习笔记(1)-组件通信
  6. The finally block does not always execute in try finally
  7. linux六个标准目录,Linux基本目录规范——XDG
  8. java索引丢失怎么解决_java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1解决办法...
  9. ListView高度
  10. SqlServer中如何按姓氏笔画排序
  11. 转帖:MySql日期格式化
  12. 《Android框架揭秘》读书笔记--在Java中调用C库函数
  13. android 长截图拼接,Android拼接合并图片生成长图
  14. 里恩药物警戒系统(RH-PV)介绍
  15. 有限元方法入门:有限元方法简单的一维算例
  16. 浅层砂过滤器(浅层介质过滤器)介绍及现场案例反馈图(多图)
  17. UNITY性能优化✨MeshBaker在Unity中的使用教程
  18. 2022.11.11 英语背诵
  19. 基于Java的电影售票网站
  20. Express 报错:Failed to lookup view error in views directory 处理

热门文章

  1. 眨眼检测 疲劳检测,分享代码
  2. python 画log曲线
  3. 安卓摄像头 data 转bitmap
  4. Program type already present: android.support.v4.app.BackStackRecord$Op
  5. 应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序
  6. has invalid type class 'numpy.ndarray', must be a string or Tensor
  7. python-字符串前面f的作用
  8. 二进制包 mysql_二进制包;mysql
  9. c bool 类型检查_C语言和C+的区别是什么?8个点通俗易懂的告诉你!
  10. linux编译部署,linux下编译并部署Apache Apollo