此文系博主阅读《操作系统原理与应用》(胡立栓 王育平等编著,清华大学出版社出版)的笔记总结
许多操作系统之间明显的区别就是所使用的存储管理方法不同,内存管理技术可以分为实存储管理和虚拟存储管理两大类
CPU 能直接访问的是内存。任何程序和数据必须装入内存中,CPU 才能对他们进行操作,所以一个作业必须必须将他的程序和数据放入内存中才能运行,同时,操作系统本身也要存放在内存中运行
内存主要分为操作系统空间和用户空间
在多道程序设计环境下,内存中同时放入多道程序,操作系统要提供保护机构管理,保护这些程序和数据,使他们不至于收到破坏、不互相影响和出现冲突
基本上可以分为两大类:读写型和只读型
读写型(RAM):可读可写,又称为随机访问存储器
只读型(ROM):只能读取,不能随意的用普通的方法写入
最小的单位:bit,称为二进制位
最小的编址单位:byte,1 byte = 8 bits
CPU 一次处理的字节数:word
将存储器分块,便于管理分配,在为用户分配内存空间时,以块为最小单位,这样的块有时称为物理页
块的大小随及其而异,512B、1kB、4kB、8kB 的都有
存储系统的设计主要考虑三个问题:容量、速度、成本
容量是存储系统的基础
存储系统的速度要能匹配 CPU 的速度
存储器的成本和其他部件相比应该在一个合适的范围之内
目前,大多计算机将存储系统分为三级:
高速缓存:距离 CPU 最近,容量最小,价格最高,存取速度最快
内存:距离 CPU 次近,容量比高速缓存大,价格比高速缓存低,存取速度比不上高速缓存
外存:距离 CPU 最远,容量最大,价格最低,存取速度最慢
存储管理的任务是充分利用内存,为多道程序设计提供基础,可自动装入程序,提供虚拟存储,程序长度可动态调整,内存存取速度快,可实现存储共享,受到安全保护,内存空间利用率高等
接下来是存储管理的五个主要功能
操作系统用两张表来记录内存占用和空闲的使用情况,根据作业的要求进行内存分配
在作业装入内存时,必须按照规定的方式向操作系统提出申请,由存储管理模块进行具体分配
内存分配方法:静态分配、动态分配
静态分配:进程进入内存时一次性分配一个或多个满足要求的区域,通常分配的比实际需要的区域长
动态分配:进程运行过程中才分配,何时申请何时分配,通常分配的恰好满足要求
内存空间的划分方法:等长和异长划分
等长划分:将存储空间划分为若干个长度相同的分区
异长划分:将存储空间划分为若干个长度不同的分区
通常:
静态分配与等长划分相结合
动态分配与异长划分相结合
内存分配的做法:
根据申请进程的要求,按照一定的策略分析存储空间的使用情况,找出足够的空闲区分配给申请进程,同时修改有关表格,若找不到足够的空闲区,则该申请进程进入等待状态。当作业完成或者主动归还内存时,操作系统要回收这部分存储空间,使其成为空闲区,同时修改内存分配表
存储共享:两个或以上的进程共享内存中相同的区域
存储共享的目的:
(1). 节省内存空间。如对可再入的纯代码程序进行代码共享
(2). 实现进程通信和数据共享
多个进程共享的区域中所保存的可能是程序的代码,也可能是数据
如果是共享代码,必须是可再入的,即:在运行过程中不修改自己。
数据共享用于通信
对只读型数据等的共享,也可以节省内存
为多个程序共享内存提供保障,使内存中的各道程序,只能访问自己的区域,避免各道程序之间相互干扰
通常由硬件完成保护功能,软件辅助实现
特权指令不能完成存储保护
存储保护分为:地址保护、操作保护
地址保护:
a. 界地址保护法
在 CPU 中设置一对界限寄存器用于存放该用户作业在内存中的上限和下限地址。当程序要访问某个内存单元时,由硬件检查是否能访问,若允许则访问,否则产生地址越界中断(属于存储器保护中断),由操作系统进行相应处理
b. 存储键保护法
系统给每个分区分配一个单独的保护键,将其存放在分区中,相当于锁。对于能使用该分区的作业,每个作业分配一个保护键,存放在该作业的 PSW 中,相当于钥匙。当一个作业运行时产生非法访问,系统产生保护性中断
操作保护:
是对进程共享存储区域的保护
每个进程都有自己的访问权限,如果进程对共享区域的访问,违反了访问权限,成为越权操作,因而对共享区域应防止越权的发生
内存扩充即虚拟存储
该技术可使用户在编制程序时,不受内存容量的限制,而采用一种”扩充“内存的技术,使用户得到比实际内存容量大得多的内存空间
具体实现:
在硬件支持下,软、硬件相互协作,把内存和外存结合起来统一使用。充分发挥内存读写速度快、外存容量大的优势,克服内存容量下、外存读取速度慢的不足
用户程序指令中出现的都是相对地址:都是相对于”0“的地址
当把一个程序装入内存后,如果不将其指令中的地址进行调整以反映当前所在的存储位置,那么执行时势必会引起混乱
地址重定位:操作系统把用户程序指令中的相对地址变换成为内存中的绝对地址的过程