计算机操作系统笔记(三)

第三章 存储管理

3-1 存储器管理的主要模式

M 用户编程的逻辑地址
U 段式程序设计
M 进程执行的物理地址
K 主存的划分方式
U 存储管理的主要模式

逻辑地址,又称相对地址,即用户编程所使用的地址空间。逻辑地址从0开始编号,有两种形式,一维和二维。二维包括短号和段内地址。

段式程序设计
把一个程序设计分成多个段CS DS SS等
用户可以自己应用段覆盖技术扩充内存空间使用,这是一种程序设计技术不是OS存储管理功能。

物理地址,即实际地址。
多道程序设计利用的是 主存储器的复用。可以按照分区复用,业架复用

存储管理的基本模式:
1.单连续存储管理:一维逻辑地址空间的程序占用一个主存固定分区和可变分区
2.段式存储管理:段二维逻辑地址空间的程序占用多个主存可变分区
3.页式存储管理:一维逻辑地址空间的程序占用多个主存页架区
4.段页式管理:二维程序占用多个主存页架区

存储管理模式示意图
计算机操作系统笔记(三)_第1张图片

3-2 存储管理功能

U 地址转换
U 存储保护
U 主存分配
U 主存共享
K 虚拟存储

地址转换:重定位,逻辑地址->物理地址。
静态重定位:在程序装入内存时进行地址转换,由装入程序执行,早起小型OS使用。

动态重定位:CPU在执行程序时进行地址转换。

主存空间分配与去配
分配:进程转入主存时,存储管理软件进行具体主存分配操作并设表记录分配情况。
去配:进程归还主存资源,存储管理软件收回存储空间,调整主存分配表。

主存空间共享:多个进程共享主存;多进程共享主存的某些区域

存储保护:避免多个进程相互干扰,必须对主存的程序和数据进行保护

私有主存区的信息,可读,可写。
公共区中的共享信息,根据授权读写。
非本进程信息,不可读写。

存储保护需要软硬件协同完成
主存空间的扩充:把磁盘作为存储扩充
1.对换技术:把部分不运行的进程调出
2.虚拟技术:只调入进程的部分内容。

3-3 虚拟存储器的概念

K 程序执行的局部性原理
M 虚拟存储的概念
U 虚拟存储实现的基本思路
M 实际地址与虚拟地址

虚拟存储的提出:1.主存容量限制,2.程序执行的局部性原理

程序执行的局部性原理:全面考虑各种情况下,程序执行时有互斥性、顺序性和循环性等空间局部性的行为,以及某一阶段时间局部性的行为。
虚拟存储的基本思想:存储管理把进程的全部信息放在辅中,执行时先将其中一部分装入主存,以后根据执行情况随用随调。如果主存没有足够的空间,存储管理暂时把不用的信息调入到辅存。

虚拟存储的实现思路:
建立与自主管理两个地址空间,其中
虚存空间:容纳进程装入
主存实际空间:承载进程执行

对于用户,计算机系统具有一个容量大得多的主存空间,即虚存空间,虚拟存储技术是一种地址空间扩展技术,通常对用户编程时透明的,除非用户需要进行高性能程序设计才考虑虚拟存储技术。

3-4 存储管理的硬件支持

U 存储器的组织层次
U 存储管理设计的存储对象
U Cache及其组织
U 地址转换/存储保护的硬件支持
U 虚拟存储的硬件支持

存储器的组织层次
计算机操作系统笔记(三)_第2张图片

存储管理涉及的对象
存储管理是OS管理主存的软件部分,
存储管理需对Cache管理,为了获得更好的性能,部分主存数据和代码调入Cache。为了获得更大的虚拟存储空间,存储管理对存放在硬盘、甚至网络硬盘上的虚拟文件进行管理。

Cache
介于CPU主存和主存之间的高速小容量存储器,由SRAM组成,容量较小,但比主

存DRAM技术更加昂贵而快速,接近CPU速度。

CPU往往需要重复读取同样的数据块,Cache的引入与缓存容量的增大,可以大幅

提升CPU的内部读写命中率。

Cache的构成:高速存储器、联想存储器、地址转换部件、替换逻辑

联想存储器:根据内容进行寻址的存储器。
地址转换部件:通过联想存储器建立目录以实现快速地址转换,命中时直接访问

Cache;未命中时从内存读取放入Cache

替换部件:在缓存已满时按一定的策略进行数据的替换,并修改地址转换部件。

Cache的组织:由于CPU芯片面积和成本,Cache很小
计算机操作系统笔记(三)_第3张图片

L1 Cache{数据缓存和指令缓存};内置;成本最高,对CPU性能影响最大。
L2 Cache 分为内置和外置2种,外置性能低 512KB~8MB
L3 Cache 多为外置,在游戏和服务器领域比较有效;对于更多应用来说,总线

的改善比设置L3 Cache更有利于提升系统性能。

地址转换/存储保护的硬件支撑
基址寄存器->进程i

监狱程序执行与data访问局部性原理,存储管理软件使用cache可大幅提高程序

的执行效率。

动态重定位、存储保护若无硬件支撑在效率上无意义。

无虚拟地址中断,虚拟存储无法实现。
无页面替换等硬件支撑机制,虚拟存储在效率上无意义。

3-5 单连续分区存储管理

M 单连续分区存储管理
M 单用户连续分区存储管理
M 固定分区存储管理
K 可变分区存储管理

单连续分区存储管理
每个进程占用一个物理上完全连续的存储空间,分为单用户连续分区,固定分区和可变分区。

单用户连续分区存储管理
适用于单用户,单任务操作系统如DOS
主存区域划分为系统区和用户区

设置一个栅栏寄存器界分两个区域,硬件用它在执行时进行存储保护,一般采用静态重定位进行地址转换,硬件实现代价低。
计算机操作系统笔记(三)_第4张图片
静态重定位: 在装入一个作业时,把该作业中程序的指令地址和data地址全部

转换为绝对地址。

固定分区存储管理的基本思想:
支持多分区,分区数量、大小固定。可用静态重定位,硬件实现代价低,早期OS使用。
计算机操作系统笔记(三)_第5张图片
固定分区的主存分配:
主存分配表
主存分配与去配
固定方式的地址转换
硬件实现机制与动态重定位
计算机操作系统笔记(三)_第6张图片

可变分区技术概述:
固定分区不适合大尺寸程序,内存内零头浪费

3-6 可变分区存储管理

M 基本思想
M 主存分配表
M 内存分配与去配
M 地址转换/存储保护
M 分区移动技术

可变分区存储管理->按内存需求来动态划分分区
创建一个进程时,根据进程所需主存量,查看主存中是否有足够连续空间,若有
则按需量分割一个分区,若无,则令该进程等待主存资源。

分区个数随机变化
分配示例
计算机操作系统笔记(三)_第7张图片

分配表:已分配区、未分配区、地址、长度、标志
内存分配算法
最先适应分配算法,最前面找
邻近适应分配算法,空闲区表组织成循环队列
最优适应分配算法,最小空闲区分配
最坏适应分配算法

内存回收

内存区重新调整
地址转换与存储保护
计算机操作系统笔记(三)_第8张图片
内存外零头不可避免,最优适配算法最容易产生。解决之道:移动技术(程序浮动技术)
需要动态重定位支撑。
计算机操作系统笔记(三)_第9张图片

3-7 页式存储管理的基本原理

M 页式存储管理的基本思想
U 地址转换思路
M 页式存储管理的空间分配
K 页式存储管理的页共享

基本思想:把主存划分为多个大小相等的页架,受页架尺寸限制,
程序逻辑地址也分不同的页,不同的页可以放在不同的页架中。

页表用于维系进程主存的完整性
页式存储管理的逻辑地址由页号和页单元组成
在这里插入图片描述
页式存储管理的物理地址由页架号和单元号组成
在这里插入图片描述
地址转换可通过查阅页表完成
计算机操作系统笔记(三)_第10张图片
页式存储管理的内存分配与去配
可用一张位示图记录主存分配情况
计算机操作系统笔记(三)_第11张图片
归还的时候把页架1置零

页式存储管理的页共享
Data共享:不同进程可以使用不同页号共享数据页。
Code共享:不同进程必须使用相同的页号共享Code

3-8 页式存储管理的地址转换

K 转换代价
M 块表的概念
U 联想存储器
M 页式存储器基于块表的地址转换

转换代价:页表存放主存,每次地址转换需要访问两次主存。
1.查页表,读出页表中的相应页架号
2.按计算出来的绝对地址读写

存在的问题:降低了存取速度。

解决之道:
设置一个专用的高速存储器,用来存放页表的一部分。
快表:存放在高速缓存器中的页表部分。
快表表项:页号、页架号

基于快表的地址转换流程
按逻辑地址中的页号查快表
若该页在快表中,则由页架号和单元号形成绝对地址
若不在快表中,则再查找主存页表形成绝对地址,同时将该页登记到快表中,
快表登记满,则淘汰部分。

多道程序设计下的进程表
进程表中登记了每个进程的页表
进程占有处理器运行时,其页表起始地址和长度送入页表控制寄存器。
计算机操作系统笔记(三)_第12张图片

3-9 页式虚拟存储管理

M 基本思想
M 页式存储管理的时表
M 地址转换
M 缺页中断的处理流程

基本思想:当装入一个进程时,把全部页面装入虚拟存储器,执行时,把
部分页面装入实际内存,然后根据执行行为,动态调入不在内存中的页,
同时进行必要的页面调出。

现代OS的主流存储管理技术

首次只把进程第一页信息装入主存,称为请求页式存储管理。

页表
每页的实际地址和虚拟地址、
标志:主存驻留标志、写回标志、保护标志、引用标志、可移动标志
计算机操作系统笔记(三)_第13张图片

页式虚拟存储管理的实现
CPU处理地址
若页面驻留,则获得该块号形成绝对地址,若页不在,则CPU发出缺页中断

OS处理缺页中断
若有空闲页架,则根据辅存地址调入页,
更新页表与快表。
若无空闲页架,则决定淘汰页,调出已修改页,调入页,更新页表与快表。

地址转换
计算机操作系统笔记(三)_第14张图片

3-10页面调度

M 基本概念
M 缺页中断率
M 各类页面调度算法
U 部分页面调度算法的实现

页面调度->当主存空间已满,又需装入新页时,页式虚存管理必须按照一定的
算法,把已在主存中断一些页调出区。

淘汰页的工作->页面调度
相应的算法->页面调度算法

如果设计不当,频繁调入调出,这种现象称为抖动,颠簸

缺页中断频率f=F/A A=S+F
f是衡量存储管理性能和用户编程水平的重要依据。

可用页架数越多A越小
页面大小128
用户编程方式 int a[128][128]
会产生128*128-1次缺页中断

先进先出FIFO页面调度算法
总是淘汰最先调入的那一页,或者驻留时间最长的页,模拟程序执行的顺序
性,有合理性。

最近最少用算法LRU,页面调度算法
淘汰最近一段时间较久未访问的那一页,即那些刚被使用过的页面可能会马上再
次被使用。
模拟了程序执行的局部性,即考虑了循环性又考虑了顺序性。
实现代价大,需维持特殊队列。

LRU算法的模拟实现
每页创建一个引用标志,供硬件使用。
设置一个时间间隔中断,中断时页引用标志置零。
地址转换时,页引用标志值1.
淘汰页面时,从页面引用标志为0的页面中间随机选择
时间间隔多长是一个难点。

最不常用LFU页面调度算法

基于时间间隔中断,给每个页面设置一个计数器。
成本高,硬件大,把页面调度变成了若干序列,并且可以刻画重复性,重复得多,一对循环模拟好。

时钟调度算法
页面调入主存时,其引用标志位置1
访问主存页面时,其引用标志位置1
淘汰页面时,从指针当前指向的页面并开始扫描循环队列,
把所遇到的引用标志是1的清零,并跳过
把所遇到的引用标志是0的页面淘汰掉,指针向前推进。

代价不大,模拟性比LRU好得多。

3-11 反置页表

K 了解MMU Memory Management Unit
U 反置页表及其组成
U 基于反置页表的地址转换

反表的提出:页表在相关硬件机制在地址转换、存储保护、虚拟地址访问
中发挥了关键作用。

为页式存储管理设置专门硬件机构
MMU:CPU管理虚拟存储、物理存储的控制线路,把虚拟存储地址映射为物理地址
,并提供存储保护,必要时确定淘汰页。

反置页表 IPT Inverse Page Table MMU的Data Structure

反置页表的基本设计思想
针对内存中的每个页架建立一个页表,按照块号排序。
表项:正在访问该页架的进程标识、页号、特征位、哈希链指针

原来页表->按页号做索引,记页架号
反置页表->按页架号做索引,记进程号、页号

反置页表的作用:完成内存页架到访问进程的对应,即物理地址到逻辑地址的转换。

反置页表的页表项:
页号:虚拟地址页号
进程标志号:使用该页的进程号

页号+进程号 共同标志一个进程的虚拟地址空间中的一页
标志位:有效、引用、修改、保护、锁定等
链指针:哈希链

基于反置页表的地址转换过程:
MMU通过哈希表把进程标识和虚拟页号转换成一个哈希值,指向一个IPT的一个表
目,MMU遍历哈希链找到所需进程的虚页号,该项的索引就是页架号,通过拼接便可生成物理地址。
若遍历整个IPT中未能找到匹配表项,说明该页不在内存、产生缺页中断,请求操作系统调入。

反置页表的地址转换:
计算机操作系统笔记(三)_第15张图片

3-12 段式存储管理

U 理解段式程序设计
M 基本思想
M 段式存储管理的地址转换
U 理解段式存储管理的段共享

段式程序设计:每个程序由若干个段组成,每一段都可以从“0”开始编址,段内地址连续。

分段存储器的逻辑地由两部分组成:段号、单元号

基本思想:基于可变分区存储管理实现,一个进程占有多个分区。硬件需增加一组用户可见的段地址寄存区。CS、DS、SS、ES供地址转换使用。

存储管理需要增设一个段表,每个段占用一个段表项,包括:段始址、段限长、存储保护标志、可移动标志、可扩充标志

段式存储管理地址转换流程
计算机操作系统笔记(三)_第16张图片
段的共享:通过不同进程段表的项指向同一个段基址。对共享段信息必须保护。
规定只读,不满足条件OS保护中断。

3-13 段式虚拟存储管理

M 基本思想
M 段表扩充
M 地址转换

基本思想:把进程所有分段都装进辅存中,进程运行时,先把当前所需要的一段
或几段装入内存,在执行过程中,访问到不在主存的段时,在动态掉进调出。
段式虚拟存储管理中,段的掉进调出是由操作系统自动实现的,对用户透明。
与段覆盖不同,它是用户控制的主存扩充,OS不感知。

段表扩充
主存始址+限长 存取权限
辅存始址+限长 扩充位
特征位 00(不在内存)01(在内存) 11(共享段)

段式虚拟存储管理的地址转换
计算机操作系统笔记(三)_第17张图片

3-14 段页式存储管理

M 基本思想
U 段表与页表
U 地址转换
U 段页式虚拟存储管理的地址转换

基本思想:
段式虚存管理基于页式存储管理,
每一段不必占用连续的存储空间,可存放在不连续的主存页架中,能够扩充
为虚拟存储管理。
装入进程的部分段或者装入段中的部分页面。

段表和页表
记录的不再是基址+限长,而是页表始址+限长

地址转换:
计算机操作系统笔记(三)_第18张图片
计算机操作系统笔记(三)_第19张图片

你可能感兴趣的:(MOOC南大COS,NOTE)