操作系统-存储器管理

连续分配方式

单一连续分配
固定分区分配
  1. 分区大小相等
  2. 大小以此逐渐等差数列递增
动态分区分配
分配中配置的数据结构:
  1. 空闲分区表:在系统中设置一张空闲分区表,用来记录每个空闲分区的情况
  2. 空闲分区连:每个空闲起始部分都使用了前后指针.链式存储;
分区分配算法;
  1. 首次适应算法:从链首开始查找,出现第一个合适的空间为止;
  2. 循环首次适应算法:从上次插入位置开始查找,找到第一个合适的空间为止;
  3. 最佳适应算法:既能满足要求,又是最小的空闲空间
  4. 最坏适应算法:挑选最大的空间,然后分割出合适的空间,剩余的插入为分配空间中.
  5. 快速适应算法:将空闲的空间分类,等大的单独设置一个空闲的分区链表,系统中出现一个统一管理这个分区链表的表,使用的时候选择最合适的.
伙伴算法

固态分区和动态分区方式都有不足之处,所以就出现的下面要说的伙伴算法

伙伴算法规定:无论是分配分区或者是空闲分区,其大小都是2的k次幂,k为整数,2^m为可分配的最大分区大小,所以 1<=k<=m;

初始化整个分区大小为:2^m的空闲分区;
当需要一个长度为n的存储空间时,首先计算一个i的值,2^i-1

可重定位分区分配

动态重定位算法就是动态分区算法上添加了一个紧凑功能(就是将未分区和分区的空间整理);

基于页存储的分配方式

连续分配方式是会出现好多空间碎片的,尽管伙伴算的提出也是会出现好多碎片,并且分分合合也是特别消耗系统资源的.总之就是不好现在的操作系统中肯定是不会使用那种了.

页面与页表
  • 页面:页面存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,这个页面成为页面.
  • 页表:由于各个页离散的分布在物理块中,所以我们要使用一个数据结构来统计那些离散的页面,那么这个统计记录页面的表就是页表.
两级和多级页表

现代的大多数计算机都支持特别大的逻辑地址空间.所以一张表去存储就比较空难,先不说查找速度,就需要的空间就是特别大的.所以就出现了多级表结构.

主要的思路是:一个表节点存储着外存中的一个表的起始地址,这个表的节点的下一个节点也是另一个表的起始地址,然后外存中存储这具体的物理块中的页的地址.

基于段存储的分配方式

段的引入是为了满足用户和我们程序员的:

便利点:
  1. 方便编程
  2. 信息共享
  3. 信息保护
  4. 动态增长
  5. 动态链接
基本原理:

分页是根据进程的存储将数据分为了各种页的方式离散的存储,而段是通过作业的逻辑将空间划分为好几段,例如:主程序段,子程序段,数据段,栈段等.

段表

前面介绍的动态分区分配方式中,系统为整个进程分配一个连续的内存空间,而在分段式存储管理系统中,则是为每一段分配一个连续的分区,而各段可以离散的分布在内存的任何位置,这样就有一个问题,需要找出位置的问题,那么段表就是这么诞生的,和页表的理解相同.

页和段的主要区别:

1.页是物理单位,分页是实现了离散的分布方式,提高内存的利用率,但是分页只是操作系统需求而管理的,没有我们用户什么事.段则是信息的逻辑单位.分段是为了更好的满足用户的需求
2. 页的大小是固定的,段的是根据程序决定的
3. 分页是一维的,分段是二维的,用户需要给出段名,和段内地址.

段页式管理方式

顾名思义:页+段

先将用户程序分为若干段,然后把每个段分成若干页,然后去寻找...

虚拟存储器

由于以下两个原因,需要引入虚拟存储:

  • 作业特别大,有可能超出内存.
  • 有大量的作业需要运行.内存不能容纳这些作业.

  • 一次性,作业需要一次全部装入内存在可以使用

  • 驻留性,装入内存后的作业一直在内存中,

局部性原理
  1. 程序执行时,除了少部分的转移和过程调用指令外,大多数情况下任然是顺序执行的,
  2. 过程调用将会使程序的执行轨迹由一部分区域转换至另一部分区域
  3. 程序中存在许多的循环结构,这样其实就是少部分的程序在执行.
  4. 程序中还有对数据结构的处理,局限在一部分程序中.
  5. 时间局限性
  6. 空间局限性

基于局部局限性的原理,其实程序是没必要全部装入内存中的,只要将需要执行的那一部分装入内存中就好了.所谓虚拟存储器,其实就是指具有请求调入功能和置换功能,能从内存上对内存容量扩容的一种存储系统.

置换算法

  • lru置换算法
  • clock置换算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值