现代操作系统学习(3)——存储管理

上周学习的进程搞的我头皮发麻,太多概念了,这周的存储管理就相对轻松很多了
博客写到一半。。。我忘了保存了。。。只有刚开始写的一点点的初稿。很难受= =!

无存储器抽象

最简单的存储器抽象就是根本没有抽象,每一个程序都直接访问物理内存。
即使存储器模型就是物理内存,还是存在一些可行项的。图3-1展示了三种变体。
第一种是操作系统位于RAM底部,用在以前的大型机和小型计算机中,现在很少使用
第二种是操作系统位于内存顶端的ROM中,用于一些掌上电脑和嵌入式系统中
第三种是设备驱动程序位于顶端的ROM中,操作系统的其他部分在RAM底部,用于早期的个人计算机。
第一种和第三种的缺点是用户程序出现的错误可能摧毁整个系统。这三种通常情况下,同一时刻只能运行一个程序。
这里写图片描述
不使用抽象的情况下运行多道程序
IBM360的解决方案是内存被划分为2KB的块,每个块被分配一个四位的保护键。这种的缺陷是使用绝对地址寻址,会产生覆盖
这里写图片描述

存储器抽象:地址空间

把物理内存直接暴露给程序会带来以下两个问题:第一,如果用户程序可以寻址内存的每个字节。它们就可以很容易地破坏操作系统,即使只有一个用户进程运行的情况下,这个问题也是存在的。第二,如果使用这种模型,想同时运行多个程序是很困难的。
地址空间的概念
要保证多个应用程序在内存中并且不相互影响,需要解决两个问题:保护和重定位。一个解决方案是创造一个新的内存抽象——地址空间。就像进程的概念创造了一类抽象的CPU以运行程序一样,地址空间为内存创造了一种抽象的内存。地址空间是一个进程可用于寻址内存的一套地址集合。每个进程都有一个自己的地址空间,并且这个地址空间独立于其他程序的地址空间(除了在一些特殊情况下内存需要共享他们的地址空间外)
比较难的是给每个程序一个地址空间,使得一个程序的地址28所对应的物理地址和另一个程序中地址28对应的物理地址不同,下面是一个简单的解决方案。
基址寄存器和界限寄存器
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
交换技术
内存并不足以将所有的程序都置入内存,有两种处理内存超载的通用方法,最简单的策略是交换(swapping)技术,即把一个进程完整调入内存,使该程序运行一段时间再把它存回磁盘。
这里写图片描述
这里写图片描述
这里写图片描述
空闲内存管理
有两种方式跟踪内存的使用情况:位图和空闲链表
使用位图的存储管理
这里写图片描述
这里写图片描述
使用链表的存储管理
使用链表时有几种为进程分配内存的算法,还是挺重要的
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

虚拟内存

尽管基址寄存器和界限寄存器可以用于创建地址空间的抽象,但还是有另一个问题需要解决——管理软件的膨胀。
也就是需要运行的程序往往大到内存无法容纳,而且必然要支持多个程序同时运行,即使内存可以支持单独一个程序的需求,但是从总体来看,它们仍然超出了内存大小,如果采用交换技术,一个典型的SATA磁盘的峰值传输率最高达到100M/S,这意味着需要10S才能换出一个1GB的程序以及再花10S把它放进去。
这里写图片描述
这里写图片描述
这里写图片描述
分页
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
页表
这里写图片描述
这里写图片描述
这里写图片描述
加速分页
在任何分页式系统中都需要考虑两个问题:
1:虚拟地址到物理地址的映射必须快
2:虚拟空间很大,页表也会很大
这里写图片描述
转换检测缓冲区
有了分页后,执行指令时,因为要访问页表要访问多次内存,这种情况下效率很低。而计算机设计者已经意识到这个问题,并找到了一种解决方案,这种方案基于下面这种现象:大多数程序总是对少量页面进行多次访问,因此只有很少的页表项会被反复读取,而其他的页表项很少被读取。
这里写图片描述
这里写图片描述

针对大内存的页表

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
上面的散列的概念我还没有搞清楚- -、
这里写图片描述

页面置换算法

算法比较多,最下面有我参考书里面的一个小结,需要的可以去看看
最优置换算法

这里写图片描述

最近未使用页面置换算法
这里写图片描述
这里写图片描述

先进先出页面置换算法
这里写图片描述

第二次机会页面置换算法
这里写图片描述
时钟页面置换算法
这里写图片描述
最近最少使用算法
这里写图片描述
这里写图片描述
这里写图片描述
软件模拟LRU
这里写图片描述
这里写图片描述
工作集页面置换算法
这里写图片描述
这里写图片描述
这里写图片描述
0
这里写图片描述
这里写图片描述
工作集时钟页面置换算法
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

页面置换算法小结
这里写图片描述
这里写图片描述

分页系统的设计问题

全局分配和局部分配
本节讨论的问题是如何在相互竞争的可执行程序间分配内存
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

重点部分

页面大小

这里写图片描述
这里写图片描述
分离指令空间和数据空间
这里写图片描述
共享页面
这里写图片描述
这里写图片描述
这里写图片描述
共享库
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

内存映射文件
这里写图片描述
这里写图片描述

清除策略
这里写图片描述
虚拟内存接口
这里写图片描述

缺页中断处理

这里写图片描述
这里写图片描述
指令备份
这里写图片描述
锁定内存中的页面
这里写图片描述
后备存储
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
策略与机制分离
这里写图片描述

分段

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

MULTICS——分段分页的结合

这里写图片描述
这里写图片描述
这里写图片描述

Intel Pentium——分段分页的结合

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_21747841/article/details/78740182