今天在家能呆大半天,当然要抓紧时间学习啦!结束了处理器管理部分的内容(还差实验没做,之后也会有一些实验内容的笔记的),今天开始存储管理。
存储管理
逻辑地址
相对地址,用户变成使用的地址空间。
逻辑地址从0开始编号,有两种形式:
- 一维逻辑地址
- 二维逻辑地址(段号:段内地址)
段式程序设计
把一个程序设计成多个段:代码段,数据段,堆栈段等。
用户可以自己应用段覆盖技术扩充内存空间使用量。这一技术是程序设计技术,不是OS存储管理的功能。
物理地址
绝对地址,是程序执行所使用的地址空间。
处理器执行指令时按照物理地址进行。
主存储器的复用
多道程序设计需要复用主存
按照分区服用:一个程序/程序段占用一个分区
按照页架复用:一个程序/程序段占用多个页架
存储管理的基本模式
- 单连续存储管理:一维逻辑地址空间的程序占用一个主存固定分区或可变分区
- 段式存储管理:段式二维逻辑地址
空间的程序占用多个主存可变分区 - 页式存储管理:一维逻辑地址空间的程序占用多个主存页架区
-
段页式存储管理:段式二维逻辑地址空间的程序占用多个主存页架区
地址转换
又称重定位,把逻辑地址转换成绝对地址
静态重定位:在程序装入内存时进行地址转换,由装入程序执行,早期小型OS使用。
动态重定位:在CPU执行程序时进行地址转换(从效率触发,依赖硬件地址转换机构)
主存储器空间的分配与去配
分配:进程装入主存时,存储管理软件进行具体的主存分配操作,并设置一个表格记录主存空间的分配情况
去配:当某个进程撤离或主动归还主存资源时,存储管理软件要收回它所占用的全部或者部分存储空间,调整主存分配表信息。
主存储器空间的共享
多个进程共享主存储器资源:多道程序设计技术使若干个程序同时进入主存储器,各自占用一定数量的存储空间,共同使用一个主存储器。
多个进程共享主存储器的某些区域:若干个协作进程有共同的主存程序块或者主存数据块。
存储保护
为避免主存中的多个进程相互干扰,必须对主存中的程序和数据进行保护。
- 私有主存区中的信息:可读可写
- 公共区中的共享信息:根据授权
- 非本进程信息:不可读写
需要软硬件协同
CPU检查是否允许访问,不允许则产生地址保护异常,由OS进行相应处理。
主存储器空间的扩充
存储扩充:把磁盘作为主存扩充,只把部分进程或进程的部分内容装入内存。
- 对换技术:把部分不运行的进程从内存调出
- 虚拟技术:只调入进程的部分内容
需要软硬件协同 - 对换进程决定对换,硬件机构调入
- CPU处理到不在主存的地址,发出虚拟地址异常,OS将其调入,重新执行指令。
虚拟存储器思想的提出
主存容量有限制,带来了很多不便
- 用户编写程序必须考虑主存容量限制
- 多道程序设计的道数受到限制
用户编程行为分析:
- 全面考虑各种情况,故程序执行时有互斥性
- 顺序性和循环性等空间局部性行为
- 某一阶段执行的时间局部性行为
因此可以考虑只把进程部分调入主存之中。
虚拟存储器的基本思想
存储管理把进程全部信息放在辅存中,执行时先将其中一部分装入主存,以后根据执行行为随用随调入。
如果主存中没有足够的空闲空间,存储管理需要根据执行行为把主存中暂时不用的信息调出到辅存上去。
虚拟存储器的实现思路
需要建立与自动管理两个地址空间
- (辅存)虚拟地址空间:容纳进程装入
- (主存)实际地址空间:承载进程执行
对于用户,计算机系统具有一个容量大得多的主存空间,即虚拟存储器。
虚拟存储器是一种地址空间拓展技术,通常意义上对用户编程是透明的,除非用户需要进行高性能的程序设计。
存储器的组织层次
存储管理涉及的存储对象
存储管理是OS管理主存储器的软件部分。
为了获得更好的处理性能,部分主存程序与数据(关键性能数据)被调入Cache,存储管理需要对其进行管理,甚至包括对联想存储器的管理。
为了获得更大的虚拟地址空间,存储管理需要对存放在硬盘,固态硬盘,甚至网络硬盘上的虚拟存储器文件进行管理。
高速缓存存储器(Cache)
Cache是介于CPU和主存储器间的高速小容量存储器,由静态存储芯片SRAM组成,容量较小但比主存DRAM技术更加昂贵而快速, 接近于CPU的速度。
CPU往往需要重复读取同样的数据块,Cache的引入与缓存容量的增大,可以大幅度提升CPU内部读取数据的命中率,从而提高系统性能。
Cache的构成
高速缓冲存储器通常由高速存储器、联想存储器、地址转换部件、替换逻辑等组成
联想存储器:根据内容进行寻址的存储器
地址转换部件:通过联想存储器建立目录表
以实现快速地址转换。命中时直接访问Cache;未命中时从内存读取放入Cache。
替换部件:在缓存已满时按一定策略进行数据块替换,并修改地址转换部件。
高速缓存存储器的组织
L1 Cache:分为数据缓存和指令缓存;内置;其成本最高,对CPU的性能影响最大;通常在32KB-256KB之间
L2 Cache:分内置和外置两种,后者性能低一些;通常在512KB-8MB之间
L3 Cache:多为外置,在游戏和服务器领域有效;但对很多应用来说,总线改善比设置L3更加有利于提升系统性能。
存储管理与硬件支撑
动态重定位和存储保护需要硬件支撑。
由于程序执行和数据访问的局部性原理,使用Cache可以大幅度提升程序执行效率。
若无虚拟地址中断,虚存无法实现。
若无页面替换等硬件支撑机制,虚拟存储器在效率上无意义。
单连续分区存储管理
每个进程占用一个物理上完全连续的存储空间。
- 单用户连续存储管理
- 固定分区存储管理
- 可变分区存储管理
单用户连续分区存储管理
主存区域划分为系统区和用户区。
设置一个栅栏寄存器界分两个区域,硬件用它在执行时进行存储保护。
一般采用静态重定位进行地址转换。
硬件实现代价低。
适用于单用户单任务操作系统,如DOS
单用户连续分区存储管理示意
静态重定位: 在装入一个作业时,把该作业中的程序的指令地址和数据地址全部转换成绝对地址。
固定分区存储管理的基本思想
支持多个分区
分区数量和大小固定
可用静态重定位
硬件实现代价低
早期OS采用
固定分区的地址转换
动态重定位可变分区存储管理概述
由于固定分区存储管理不够灵活,不适应大尺寸程序,存在内存内零头,有空间浪费,故而采取动态划分。
动态划分按照进程实际内存需求划分分区,分区的大小和数目可变。
后面的内容待续。