操作系统--存储管理的任务

存储管理的任务

存储管理一共有三个存储管理任务:

--存储分配

--地址映射

--存储保护

--存储共享

--存储扩充

存储分配

  1. 分配基本内存空间

  2. 增加新的内存空间

  3. 回收内存空间

逻辑地址:表示相对地址,在外存中。

物理地址:绝对地址,标识内存中的每一个存储单元,在内存中

地址映射:

程序装入内存之后,由操作系统将逻辑地址改为逻辑地址+起始地址,得到的实际的物理地址。

映射的种类:

动态映射:在编译时候,对他进行映射。

静态映射:在程序装入内存时,一次性完成地址转换。(有专门的地址管理部件来进行地址的计算)

存储保护:

防止地址越界,防止操作越权。


存储共享:

为了进程通讯和节约内存空间,两个或者多个进程共用内存中相同的分区。为了节约存储空间。

存储扩充:

采用软件手段,在硬件的配合下,将部分外存空间虚拟为内存空间,并将内存和外存有机的结合起来,得到一个容量相当与外存,速度接近于内存,价格十分便宜的虚拟存储系统。


上面我们简单介绍了操作系统中存储器的使用功能。现在我们来对上面的这些功能处理中遇到的问题来做一些详细的介绍:


内存划分与分配技术

静态划分

划分预先进行的,创建新进程的时候,在内存中找到一个合适的分区分配给他们。一旦划分完毕,分区大小和数目将不再改变。静态划分分为分区和分页两个方式。

动态划分

创建新进程时,根据进程申请的空间大小,依照某种方式(下面的四个算法)在这个分区中动态的划分一部分空间。

动态划分涉及到一些动态划分的算法:

首次适应算法:

从一个内存的某一端开始查找,选择一个超过进程申请大小的空闲分区。如果找到的分区的大小恰好与申请的进程的存储空间的大小相同或者相差的很少的话,这个时候,我们就将这个分区全部分配给这个申请进程。否则,系统将这个分区划分为两个分区,一个分区的长度等于进程申请的空间大小,并将其分配给申请进程。然后,将另一个子分区链接到空闲分区链表中。

下次适应算法:

下次适应算法能记住上次分配分区的位置,下次实施分配时,从上次的分配位置之后开始查找,选择一个大小足够的空闲分区。

最佳适应算法:

最差适应算法:

伙伴系统:

就是将系统中的空间,不断二分。

注:在合并的时候,只有伙伴(刚刚之前拆分的存储空间),才可以合并。


程序装入技术

可执行程序的装入步骤:

程序装入

绝对装入:程序运行之前,按照程序的逻辑地址,将程序和数据装入内存指定的地方。(和绝对地址对应)

重定位装入:允许程序装入与逻辑地址不同的物理内存空间。即程序可以装入到内存的任何位置,其逻辑地址与装入内存后的物理地址无关。

运动时动态装入:程序的地址转换不是在装入时进行,而是在程序运行时动态运行。通过重定位寄存器内的起始物理地址和指令或者数据的逻辑地址逐条计算出物理地址。(和相对地址对应,需要重定位寄存器(硬件支持))

程序链接

静态链接:

静态链接效果图:
动态链接:

动态链接可以分为装入时动态链接和运行时动态链接。

 一、装入时动态链接(Load-Time Dynamic linking):是在目标模块装入内存时,边装入边链接。即在装入一个目标模块时,若发现一个外部模块调用,即引起装入程序去找出相应的外部模块,并将它装入内存以及修改目标模块中的相对地址。二、运行时动态链接(Run-Time Dynamic linking): 这种链接方式,可将某些目标模块的链接,推迟到执行时才进行。即在执行过程中,若发现一个被调用模块尚未装入内存时,由OS去找到该模块,将它装入内存,并把它链接到调用者模块上。

简单存储管理技术

为了实现的简单,操作系统必须要将待执行的程序全部装入内存。

连续存储

需要内存中的一块连续的足够大得分区。

非连续存储

允许进程的程序和数据分别装在内存的不同分区中。

非连续存储的存储方法:

简单分页存储管理:

页框:系统事先将物理内存划分成许多尺寸相等的页框,并将进程划分成许多大小相同的页面,页面与页框大小相等。

页面:装入内存时进程被分割成许多个页面,每一个页面的指令和数据是连续的,他们的地址相对于其所属页的第一条语句的地址,称为页内偏移量。就是说进程逻辑地址被分为两个部分:页号和页内偏移量。

页表:系统为每一个进程建立一张页面映射表。用于记载进程中的各个页面到物理内存中页框的映射信息。

页表寄存器:页表基地址寄存器用来指向页表的起始地址;页表长度寄存器用来指示页表的大小,即对于当前任务,它总共包含有多少个页面。

下面是一个页面存储管理的地址转换过程

(文字描述)

(图片描述)

简单分段存储管理:

段的概念:基于模块化的程序设计时,常常需要将一个大任务划分为若干相对独立的子任务,对应的子任务编写子程序,称为段。就是说一个段,就是一个大程序中的子程序。

处理:当一个进程被装入物理内存时,系统将为该进程的每一段独立的分配一个分区。同一个进程中的多段不必存放在连续的多个分区中。

段表:每一个进程建立一个,用于描述进程的分段情况,记载进程的各个段的物理内存中分区的映射情况。(其中包括段号,段长,段基址以及对本段的存取控制权限等信息)

段的操作:

简单段页式储存管理(上面两种技术的组合):

概述:采用分段方法组织用户程序,采用分页方法分配和管理内存。

逻辑地址

数据结构:

地址变换过程:

虚拟存储管理技术

虚拟存储:通过系统提供缺页/段中断功能和交换技术,动态装入进程的程序代码和数据,使得一个打得用户程序能在一个相对较小的内存空间中运行,也使得有限的内存能同时容量更多的进程。

虚拟存储的地址转换方式

虚拟存储管理的方式:

虚拟存储分页系统:

虚拟存储分段系统:

虚拟存储段页式系统:

虚拟存储系统的软件策略:

  • 驻留集管理:虚拟存储系统中,每个进程驻留在内存的页面集合,或进程分到的物理页框集合。

  • 页面放置策略:系统应当在内存的什么位置为活跃进程分配页框。可以考虑首次适应算法,下次适应算法,最佳适应算法,最差适应算法等等。

  • 页面获取策略:系统需要何时把一个页面装入内存

  • 页面置换策略:当发生缺页中断且无足够内存空间时,需要置换已有的某些(个)页面。

  • 页面置换算法:最佳置换算法,最近最少使用算法,先进先出算法,时钟算法。(与上面的页面置换策略相结合,是页面置换策略中的一部分。)

  • 页面清除策略:将由页面置换算法选择的被修改的置换页面保存到外存。如果是未修改的页面,则不保存到外存,也不需要保存到外存。

 驻留集管理中有固定分配策略和可变分配策略:

可变分配策略:

当进程的缺页率和高的时候,驻留集太小,需要增加页框;当缺页率一段时间内都保持很低时,可以在不会明显增加进程缺页录的前提下,回收其中一部分页框,减小进程的驻留集。

固定分配策略:

为每一个进程分配固定数量的页框。即在每一个活跃的驻留集尺寸在运行期间固定不变。

页面获取策略有下面两种:

请求调页方式:仅当进程执行过程中,通过检查页表发现相应页面不在内存中,才装入改页面。

预调页方式:当进程创建时,预先为进程装入多个页面。

页面置换策略有下面两种方式:

局部置换策略:系统在进程自身的驻留集中判断当前时候存在空闲页框,并在其中进行置换。

全局置换策略:​在整个内存空间内判断有无空闲页框,并允许从其他进程的驻留集中选择一个页面换出内存。

页面置换策略中的页面置换算法:

最佳置换算法:被置换的页面是将来不在访问,或者在最远的将来才会被访问的页面。(这个算法无法实现)

最近最少使用算法:根据页面装入内存以后的使用情况,选择淘汰最近最久未使用的一个页面,置换这个页面。

先进先出置换算法:淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。在实现时,只需把一个进程已调入内存的页面,按照先后次序链接成一个队列,并设置一个指针,使它总是指向最老的页面。

时钟算法:

时钟置换算法图解:

时钟置换算法的实际例子:

(星号表示U为1,没有表示U为0)

页面清除策略

主要用到一种页缓冲技术。

转载于:https://www.cnblogs.com/AbeDay/p/5026910.html

操作系统--存储管理的任务相关推荐

  1. 操作系统——存储管理:分区、分页、分段、请求式分页和虚拟内存

    操作系统--存储管理:分区.分页.分段.请求式分页和虚拟内存 1. 综述 突然把这么多概念弄到一起,让人有点儿困惑.自己的一些理解: 分区式管理:最简单直观的方式,在内存中分配一个区,将整个进程放入这 ...

  2. 2.3.1操作系统-存储管理:页式存储、逻辑地址、物理地址、物理地址逻辑地址之间的地址关系、页面大小与页内地址长度的关系、缺页中断、内存淘汰规则

    2.3.1操作系统-存储管理:页式存储.逻辑地址.物理地址.物理地址逻辑地址之间的地址关系.页面大小与页内地址长度的关系.缺页中断.内存淘汰规则 页式存储 逻辑地址.物理地址 如何判断物理地址和逻辑地 ...

  3. 操作系统存储管理实验课程设计报告

    操作系统报告 存储管理 姓名:郑兆涵 专业:计算机科学与技术(嵌入式方向) 一.设计目的.意义 本次实验针对:(1)存储管理实验,(2)主存储器空间的分配和回收实验,两个实验进行学习. (1)存储管理 ...

  4. 操作系统---存储管理

    存储管理 操作系统将外存的文件调入到内存中,以便CPU调用,如果调用的内容不在内存中,则会产生缺页中断: 产生缺页中断后,这事需要从外存调数据到内存中,然后CPU接着从断点继续调用内存中的数据: 在外 ...

  5. 操作系统——存储管理

    文章目录 1.存储管理概述 1.1存储层次结构 1.2存储器管理的功能 1.2.1内存分配 1.2.2地址映射 1.2.3存储保护 1.2.4内存扩充 1.3地址重定位 1.3.1名字空间.地址空间和 ...

  6. 计算机操作系统--存储管理

    基本概念 1. 存储器的结构 存储器顾名思义,就是用来保存数据的东西.随着科技的进步,存储器正朝着高速度.大容量.小体积方向发展.一般情况下,存储器的结构有如下两类: 寄存器-主存-外存 寄存器-缓存 ...

  7. 计算机操作系统存储管理实验报告,《操作系统》存储管理实验报告

    <操作系统>存储管理实验报告 ____大学____学院实验报告课程名称: 计算机操作系统 实验名称: 存储管理实验 实验日期: 班级: 姓名: 学号: 仪器编号: XX 实验报告要求:1. ...

  8. 操作系统存储管理练习题

    **这是笔者在whut操作系统课程存储管理章节的练习题.** 1.假定某请求页式存储管理系统中,为一进程分配了内存物理块3块,考虑以下的页面引用串: 4.3.2.1.4.3.5.4.3.2.1.5 问 ...

  9. 请求页式存储管理中页面置换算法的模拟设计_操作系统-存储管理与文件管理-笔记...

    存储管理 一.页式存储 将各进程的虚拟空间划分成若干个长度相等的页,页式管理把内存空间按页的大小划分成片或者页面,然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地 ...

  10. java 动态分区 链表_大二作业——操作系统实验——C语言用双向链表,模拟实现动态分区式存储管理...

    实验:动态分区式存储管理 实验内容: 编写程序模拟完成动态分区存储管理方式的内存分配和回收.实验具体包括:首先确定内存空闲分配表:然后采用最佳适应算法完成内存空间的分配和回收:最后编写主函数对所做工作 ...

最新文章

  1. java基础入门传智播客 源码_Java-_2020年版Java零基础视频教程(Java 0基础,Java初学入门)魔鬼讲师老杜出品...
  2. 关于Zookeeper
  3. python中if的效率_Python算法效率和增长量级,经典题目回顾
  4. 河南智游科技 超市管理系统
  5. 利用putty的pscp命令执行Linux服务器命令
  6. 安卓项目之微信公众好---初体验
  7. Linux系统学习:网络指令:如何查看一个域名有哪些 NS 记录
  8. Lambda表达式改方法引用和构造器引用
  9. 玩转Web之servlet(一)---怎样创建一个servlet
  10. maven setting文件_只用一招,让你Maven依赖下载速度快如闪电
  11. c++提取map key_写 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么?...
  12. 力扣题目系列:面试题57 - II. 和为s的连续正数序列
  13. 计算机端最好用的词典——GoldenDict
  14. python 报童模型
  15. pe系统测试软件,PE实测:测试环境及PE制作
  16. jq ui-selectable中click单击事件,dblclick双击事件无效
  17. 【优化模型】行遍性问题 — 中国邮递员问题
  18. 萤石云平台接入_萤石开放平台对接海康摄像头(一)
  19. python批量生成姓名_Python 批量生成中文姓名(百家姓)
  20. 前端js实现文字自动转拼音方法

热门文章

  1. laravel后台可修改配置自动加载
  2. 【C语言】break,continue的区别
  3. ubuntu 10.04 源
  4. Java thread 怎么用_Java Thread 的使用
  5. pc端签名 vue 生成图片_Vue Canvas 实现电子签名 手写板
  6. 在mybatis里面配置log4j配置文件
  7. git rebase和 merge的区别
  8. Java 8 新日期时间 API ( 上 ) – 本地日期时间
  9. linux关闭rac某一节点,实现多次不完全恢复(RAC环境需要将另一节点关闭)
  10. 【渝粤教育】电大中专电商运营实操 (2)作业 题库