目录
一、存储管理的功能
1.地址映射(地址重定位)
2.主存分配和回收
3.存储保护
4.主存扩充(虚拟存储)
二、程序的装入与链接
程序的装入:
程序的链接
三、连续分配方式
单一连续分配
固定分区分配
动态分区分配
1.分区分配的数据结构
2.分配及回收操作
3.分配算法——(重点掌握)
可重定位分区分配
一、存储管理的功能
1.地址映射(地址重定位)
逻辑地址:相对地址,虚拟地址,首地址为0,其他相对于首地址而编址。
物理地址:绝对地址,实地址,内存中储存单元的地址,可直接寻址。
为了CPU正确访问内存单元,需将用户中逻辑地址转换为物理地址,这一过程将地址重定位。
2.主存分配和回收
调入策略(何时调入内存),放置策略(放在何处),置换策略(内存不够,换出那个程序),分配结构(记录内存使用情况,如:空闲分区表
3.存储保护
保证内存中多道程序只能在给定的存储区域内活动并互不产生干扰。防止越界和防止越权。
界限寄存器(上下地址寄存器):如为越界按地址访问,否则产生中断。
4.主存扩充(虚拟存储)
为了使程序员在编程时不受内存的结构和容量的限制,系统为用户构造一种存储器,其结构可能与内存结构不同,容量可能远远超过内存的实际容量。这种面向编程的存储器称为虚拟存储器。由虚存构成的存储空间称为虚存空间,或称虚地址空间。
原理:将正在使用的部分放在内存,暂时不使用的放在外存。在需要时调入内存,不需要的部分调出内存。
二、程序的装入与链接
程序的装入:
把程序装入内存空间,有三种方式。
(1)绝对装入方式:在可执行文件中记录内存地址,装入时直接定位内存空间。
优点:装入过程简单。缺点:依赖硬件结构,不使用于多道程序系统。
(2)可重定位方式:在可执行文件中,列出需重定位的地址单位和相对地址值。当用户程序装入内存时,一次性实现逻辑地址到物理地址的转换。
说明:重定位表中列出所有修改的位置。如:重定位表的150表示相对地址150处的内容为相对地址(即100为从0起头的相对位置)。在装入时,要依据重定位后的首地值(2000)修改相对地址。
重定位修改:重定位表中的150->绝对地址2150
(=2000+150)
内容修改:内容100变成2100(=100+2000)
优点:不需要硬件支持,可以装入有限多道程序。缺点:一次性全部装入,通常需要连续占用空间,装入后内存不能移动。
(3)动态运行时装入:把装入模块装入主存后,并不立即将装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正执行时才进行。实现时需要重定位寄存器。
优点:VOS可以将一个程序分散存放于不连续的内存空间,可以移动程序。能够支持程序执行中产生的地址引用,如指针变量。/它是虚拟存储的基础。
缺点:需要硬件支持,OS实现较复杂。
程序的链接
静态链接,装入时动态链接,运行时动态链接。
三、连续分配方式
单一连续分配
内存分为两个区域:系统区、用户区。应用程序装入到用户区,可使用用户区全部空间。
每次只允许一个程序占用,用户区注意:不能分割,只适用于单用户、单任务的OS.
固定分区分配
固定分区就是把内存划分为个数固定、大小相等或不等的多个区域。分区的划分由计算机的操作员或者由操作系统给出,并给出分区说明表。注意:每个分区只装入一道作业。
优点:易于实现,开销小。
缺点:内存碎片(零头)造成浪费,分区总数固定,限制了并发执行的程序数目。
动态分区分配
一、原理
根据进程的需要,分配空间,作业装入内存时,把可用内存分出一个连续区域给作业,且分区大小正好适合作业大小的需要分区大小和个数依装入作业的需要而定。
二、实现
1.分区分配的数据结构
不同系统根据设计要求采用不同的结构。常用的有空闲分区表和空闲分区队列结构。
2.分配及回收操作
从空闲区的底部开始向上划出SIZE大小的空闲区给用户。只需要修改大小。
释放某存储区时,系统首先检查释放区是否与系统中的空闲区相邻,相邻就将释放区结合到空闲区当中去。
3.分配算法——(重点掌握)
1、首次(最先)适应法(FF):要求空闲分区按首址递增的次序组织空闲分区表(队列)。当分配内存时,按顺序从空闲分区表中获取内存。
2、下次(循环首次)适应法(NF):按分区的先后次序,从上次分配的分区起查找(到最后分区时再回到开头),找到符合要求的第一个分区。
3、最佳适应法(BF):要求按空闲区大小递增的次序组成空闲分区表(队列)。当分配内存时,优先从最接近他所要内存大小的分区开始申请。所谓最佳指选中的空闲区是满足要求的最小空闲区。
4、最坏适应法(WF):要求按空闲区大小递减的顺序组成空闲分区表(队列),当分配内存时,优先从最大的空闲区去申请所要内存。