逻辑地址:又称相对地址,即用户编程所使用的地址空间,逻辑地址从0开始编号,有两种形式:一维逻辑地址(地址),二维逻辑地址(段号:段内陆址)
段式程序设计:把一个程序设计成多个段,代码段、数据段、堆栈段、等等,用户可以自己应用段覆盖技术扩充内存空间使用量这一技术是程序设计技术,不是OS存储管理的功能
物理地址:又称绝对地址,即程序执行所使用的地址空间,处理器执行指令时按照物理地址进行
多道程序设计需要复用主存
按照分区复用:
按照页架复用
地址转换:又称重定位,即把逻辑地址转换成绝对地址
静态重定位:在程序装入内存时进行地址转换,由装入程序执行,早期小型OS使用
动态重地位:在CPU执行程序时进行地址转换·从效率出发,依赖硬件地址转换机构
分配:进程装入主存时,存储管理软件进行具体的主存分配操作,并设置一个表格记录主存空间的分配情况
去配:当某个进程撤离或主动归还主存资源时,存储管理软件要收回它所占用的全部或者部分存储空间,调整主存分配表信息
多个进程共享主存储器资源:多道程序设计技术使若干个程序同时进入主存储器,各自占用一定数量的存储空间,共同使用一个主存储器
多个进程共享主存储器的某些区域:若干个协作进程有共同的主存程序块或者主存数据块
为避免主存中的多个进程相互干扰,必须对主存中的程序和数据进行保护,私有主存区中的信息:可读可写,公共区中的共享信息:根据授权,非本进程信息:不可读写,这一功能需要软硬件协同完成,CPU检查是否允许访问,不允许则产生地址保护异常,由OS进行相应处理
存储扩充:把磁盘作为主存扩充,只把部分进程或进程的部分内容装入内存,1.对换技术:把部分不运行的进程调出,2.虚拟技术:只调入进程的部分内容
这一工作需要软硬件协作完成,1.对换进程决定对换,硬件机构调入,2.CPU处理到不在主存的地址,发出虚拟地址异常,OS将其调入,重执指令
主存容量限制带来诸多不便,用户编写程序必须考虑主存容量限制,多道程序设计的道数受到限制
用户编程行为分析:
因此可以考虑部分调入进程内容
存储管理把进程全部信息放在辅存中,执行时先将其中一部分装入主存,以后根据执行行为随用随调入,如主存中没有足够的空闲空间,存储管理需要根据执行行为把主存中暂时不用的信息调出到辅存上去
需要建立与自动管理两个地址空间:(辅存)虚拟地址空间:容纳进程装入,(主存)实际地址空间:承载进程执行;对于用户,计算机系统具有一个容量大得多的主存空间,即虚拟存储器,虚拟存储器是一种地址空间扩展技术,通常意义上对用户编程是透明的,除非用户需要进行高性能的程序设计
存储器的组织层次
存储管理是OS管理主存储器的软件部分,为获得更好的处理性能,部分主存程序与数据(特别是关键性能数据)被调入Cache,存储管理需要对其进行管理,甚至包括对联想存储器的管理,为获得更大的虚拟地址空间,存储管理需要对存放在硬盘、固态硬盘、甚至网络硬盘上的虚拟存储器文件进行管理
Cache是介于CPU和主存储器间的高速小容量存储器,由静态存储芯片SRAM组成,容量较小但比主存DRAM技术更加昂贵而快速,接近于CPU的速度,CPU往往需要重复读取同样的数据块,Cache的引入与缓存容量的增大,可以大幅提升CPU内部读取数据的命中率,从而提高系统性能
高速缓冲存储器通常由高速存储器、联想存储器、地址转换部件、替换逻辑等组成
地址转换/存储保护的硬件支撑
主存区域划分为系统区与用户区,设置一个栅栏寄存器界分两个区域,硬件用它在执行时进行存储保护,一般采用静态重定位进行地址转换,硬件实现代价低,适用于单用户单任务操作系统,如DOS
静态重定位:在装入一个作业时,把该作业中程序的指令地址和数据地址全部转换成绝对地址
固定分区存储管理不够灵活,既不适应大尺寸程序,又存在内存内零头,有浪费,能否按照进程实际内存需求动态划分分区,并允许分区个数可变,这就是可变分区存储管理
可变分区存储管理
按进程的内存需求来动态划分分区,创建一个进程时,根据进程所需主存量查看主存中是否有足够的空闲空间,若有,则按需要量分割一个分区,若无,则令该进程等待主存资源,由于分区大小按照进程实际需要量来确定,因此分区个数是随机变化的
固定分区方式会产生内存内零头,可变分区方式也会随着进程的内存分配产生一些小的不可用的内存分区,称为内存外零头,最优适配算法最容易产生外零头,任何适配算法都不能避免产生外零头
移动分区以解决内存外零头,需要动态重定位支撑
联系客服