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

存储管理的任务

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

--存储分配

--地址映射

--存储保护

--存储共享

--存储扩充

存储分配

  1. 分配基本内存空间
  2. 增加新的内存空间
  3. 回收内存空间

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

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

地址映射:

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

映射的种类:

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

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

存储保护:

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

 

存储共享:

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

存储扩充:

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



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



内存划分与分配技术

静态划分

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

动态划分

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

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

首次适应算法:

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

下次适应算法:

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

最佳适应算法:

最差适应算法:

伙伴系统:

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

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



程序装入技术

可执行程序的装入步骤:

程序装入

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

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

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

程序链接

静态链接:

静态链接效果图:

动态链接:

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

 一、装入时动态链接(Load-Time Dynamic linking):是在目标模块装入内存时,边装入边链接。即在装入一个目标模块时,若发现一个外部模块调用,即引起装入程序去找出相应的外部模块,并将它装入内存以及修改目标模块中的相对地址。

二、运行时动态链接(Run-Time Dynamic linking): 这种链接方式,可将某些目标模块的链接,推迟到执行时才进行。即在执行过程中,若发现一个被调用模块尚未装入内存时,由OS去找到该模块,将它装入内存,并把它链接到调用者模块上。


简单存储管理技术

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

连续存储

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

非连续存储

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

非连续存储的存储方法:

简单分页存储管理:

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

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

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

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

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

(文字描述)

(图片描述)

简单分段存储管理:

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

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

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

段的操作:

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

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

逻辑地址

数据结构:

地址变换过程:

虚拟存储管理技术

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

虚拟存储的地址转换方式

虚拟存储管理的方式:

虚拟存储分页系统:

虚拟存储分段系统:

虚拟存储段页式系统:

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

  • 驻留集管理:虚拟存储系统中,每个进程驻留在内存的页面集合,或进程分到的物理页框集合。
  • 页面放置策略:系统应当在内存的什么位置为活跃进程分配页框。可以考虑首次适应算法,下次适应算法,最佳适应算法,最差适应算法等等。
  • 页面获取策略:系统需要何时把一个页面装入内存
  • 页面置换策略:当发生缺页中断且无足够内存空间时,需要置换已有的某些(个)页面。
  • 页面置换算法:最佳置换算法,最近最少使用算法,先进先出算法,时钟算法。(与上面的页面置换策略相结合,是页面置换策略中的一部分。)
  • 页面清除策略:将由页面置换算法选择的被修改的置换页面保存到外存。如果是未修改的页面,则不保存到外存,也不需要保存到外存。

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

可变分配策略:

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

固定分配策略:

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

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

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

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

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

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

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

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

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

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

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

时钟算法:

时钟置换算法图解:

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

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

页面清除策略

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

时间: 2024-10-13 12:18:17

操作系统--存储管理的任务的相关文章

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

操作系统——存储管理:分区.分页.分段.请求式分页和虚拟内存 1. 综述 突然把这么多概念弄到一起,让人有点儿困惑.自己的一些理解: 分区式管理:最简单直观的方式,在内存中分配一个区,将整个进程放入这个区.缺点是会产生外碎片,即时间长了会在分区之间产生难以被利用的小空间. 分页式管理:将内存分成固定大小的页,分配若干页将整个进程载入.页面可以不连续是其重要优点,不会产生外碎片,更有效地利用了内存,不过会产生一些内碎片,即分配给进程的最后一个页往往不能正好用完,不过在页面大小不是很大的时候可以接受

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

操作系统报告 存储管理 姓名: 郑兆涵                                     专业: 计算机科学与技术(嵌入式方向) 一.设计目的.意义 本次实验针对:(1)存储管理实验,(2)主存储器空间的分配和回收实验,两个实验进行学习. (1)存储管理实验:本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法. (2)主存储器空间的分配和回收实验:本实验的目的是理解在不同的存储管理方式下应怎样实现主存空间

计算机操作系统

基于<计算机操作系统>(第四版)总结:OS引论.进程描述与控制.处理机调度与死锁.存储器管理.虚拟存储器.输入输出系统.文件系统 一.操作系统引论 1.目标:方便性.有效性.可扩充性.开放性 2.作用: 1.作为用户与计算机硬件系统之间的接口 2.作为计算机系统资源的管理者 3.实现对计算机资源的抽象 3.发展过程: 1.人工操作方式:用户独占全机,CPU等待人工操作--带(卡)装卸 2.脱机输入/输出方式:事先将装有用户程序和数据的纸带装入纸带输入机,外围机控制,把纸带内容输入到磁带上(类似

操作系统——内存管理

目录 一.存储器管理 1.1存储器的层次结构 1.2程序的装入和链接 1.2.1程序装入 1.2.2程序链接 1.3交换 1.4连续分配管理方式 1.4.1单一连续分配 1.4.2固定分区分配 1.4.3动态分区分配(含顺序和索引算法) 1.4.4动态可重定位分区分配 1.5非连续分配管理方式 1.5.1分页存储管理方式 1.5.2分段存储管理方式 1.5.3段页式存储管理方式 二.虚拟存储器 2.1基本概念 2.2请求分页存储管理方式 2.2.1请求分页中的硬件支持 2.2.2请求分页中的内存

【组成原理】概述

目录 计算机概述数据总线CPU存储器输入/输出设备计算机的时标系统 计算机概述 计算机的基本组成: 存储器: 实现记忆功能的部件用来存放计算程序及参与运算的各种数据 运算器: 负责数据的算术运算和逻辑运算即数据的加工处理 控制器: 负责对程序规定的控制信息进行分析,控制并协调输入,输出操作或内存访问 输入设备: 实现计算程序和原始数据的输入 输出设备: 实现计算结果输出 组成的联系: 图一 图二 计算机的工作过程: 用户打开程序 系统把程序代码段和数据段送入计算机的内存 控制器从存储器中取指令

程序的静态链接,动态链接和装载

一.程序编译链接的整体流程 通常我们使用gcc来生成可执行程序,命令为:gcc hello.c,默认生成可执行文件a.out 其实编译(包括链接)的命令:gcc hello.c 可分解为如下4个大的步骤: 预处理(Preprocessing) 编译(Compilation) 汇编(Assembly) 链接(Linking) gcc compilation 1.       预处理(Preproceessing) 预处理的过程主要处理包括以下过程: 将所有的#define删除,并且展开所有的宏定义

设备管理(含补交)

设备管理 P294页第5.7题. 5. 由柱面号可知调度顺序5,(1,2,3),4 由磁头号可知调度顺序5,3,(1,2),4 由扇区号可知调度顺序为5,3,2,1,4 综上所述 调度顺序为5,3,2,1,4 使磁盘旋转圈数最少 7. 先来先服务算法(FCFS): (143-86)+(147-86)+(177-91)+(177-94)+(150-94)+(150-102)+(175-102)+(175-130)=565 最短查找时间有限算法(SSTF): (147-143)+(150-147)+

计算机操作系统之存储管理

以下是本人大学学计算机操作系统的笔记.有版权的,转载请注明出处. 存储管理:就是对内存的管理. 内存管理提高存储器的利用率以及从逻辑上扩充存储器. 存储管理功能: 内存的回收与分配,地址变换(程序中的逻辑地址与内存中的物理地址之间的转换),内存扩充(借助虚拟技术或覆盖技术从逻辑上扩充内存容量),内存保护(保证进入内存的各道作业都在自己的存储空间运行,互不干扰) 虚拟内存 以往的存储管理技术必须将作业全部装入内存才能执行且作业常驻内存直到运行结束,难以满足较大作业或较多作业进入内存执行.所以为了能

《现代操作系统》笔记——存储管理1

转载请注明: TheViper http://www.cnblogs.com/TheViper 一种存储器抽象:地址空间 把物理地址暴露给进程会带来下面几个严重问题: 1.如果用户程序可以寻址内存的每个字节,它们就可以很容易的破坏操作系统. 2.使用这种模型,想要同时(如果只有一个cpu就轮流执行)运行多个程序是很困难的. 地址空间 地址空间是一个进程可用于寻址内存的一套地址集合.每个进程都有一个自己的地址空间,并且这个地址空间独立于其他进程的地址空间(除了在一些特殊情况下进程需要共享它们的地址