分区存储管理
分区存储管理是把主存储器中的用户区作为一个连续区或分成若干个连续区进行管理,每个连续区中可装入一个作业。
多道程序系统一般都采用多个分区的存储管理,具体可分为固定分区和可变分区两种方式。
一、固定分区存储管理
把主存中可分配的用户区域预先划分成若干个连续的分区,每个连续区的大小可以相同,也可以不同。但是,一旦划分好分区之后,主存中分区的个数就固定了,且每个分区的大小也固定不变。这是一种静态分区法。
在固定分区方式管理下,每个分区用来装入一个作业。由于主存中有多个分区,就可同时在每个分区中装入一个作业。所以,这种存储管理方式适用于多道程序系统。
- 分区大小相等:缺乏灵活性,但是很适合用于用一台计算机控制多个相同对象的场合(比如:钢铁厂有n个相同的炼钢炉,就可把内存分为n个大小相等的区域存放n个炼钢炉控制程序)
- 分区大小不等:增加了灵活性,可以满足不同大小的进程需求。根据常在系统中运行的作业大小情况进行划分(比如:划分多个小分区、适量中等分区、少量大分区)
1、主存空间的分配与释放
为了管理主存空间的使用,必须设置一张“主存分配表”(分区说明表),以说明各分区的分配情况。主存分配表中应指出各分区的起始地址和长度,并为每个分区设一个标志位。当标志位为“0”时,表示对应的分区是空闲分区,当标志位为非“0”时,表示对应的分区已被某作业占用。空闲分区可以用来装作业。
| 区号 | 分区大小 | 起始地址 | 标志位 |
|---|---|---|---|
| 0 | 32k | 0k | 1 |
| 1 | 16k | 32k | 0 |
| 2 | 8k | 48k | 0 |
当作业队列中有作业要装入主存时,存储管理可采用“顺序分配算法”进行主存空间的分配。 顺序查看主存分配表,找到一个标志为“0”的并且长度大于或等于欲装入作业的地址空间长度的分区,则把此分区分配给该作业,相应表目的标志位改成作业名的标识;若找不到一个这样的空闲分区,则该作业暂时不能装入主存。
主存空间的释放很简单。某作业执行结束后必须归还所占的分区,这时存储管理根据作业名查看主存分配表,找到相应的表目后,把其中的标志位重新置成“0”即可。
2、地址转换
固定分区管理方式下作业的地址转换常采用静态重定位技术。
3、存储保护
固定分区管理方式下只考虑判断其物理地址即可。常采用“界限寄存器对”法。
If 下限地址<=物理地址<=上限地址 Then 继续
Else 产生“越界中断” ,转越界中断的处理子程序
4.内存扩充
采用覆盖技术
5.固定分区的优缺点
-
优点:实现简单,无外部碎片
-
缺点:
a.当用户程序太大时,可能所有的分区都不能满足需求,此时不得不采用覆盖技术解决,但这又会降低性能
b.会产生内部碎片,碎片大,存在小分区占用大作业的情况,内存利用率低。
解决办法:采用可变分区存储管理
二、可变分区存储管理
内存管理的可变分区模式,又称变长分区模式、动态分区分配模式。这种分配方式不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态地建立分区,并使分区的大小正好适合进程的需要。因此系统分区的大小和数目是可变的。
与固定分区的区别就是:动态的划分分区。克服固定分区管理的“内碎片”问题。
- 可变分区模式下,刚开始,OS就绪,但任何用户程序未进入内存前整个用户内存区是一大空间。已占用区和空闲分区并不是绝对的。
- 必须有表来记录分区的情况。
- 程序进入内存时的例行工作就是分配空闲区和装入程序,并修改相应的空闲表和已分配区表。
- 一旦一个内存分区被分配给一个进程,该进程可以被装入该块中执行,装入时需重定位。
静态重定位和动态重定位
重定位,通常来说把在装入时对目标程序中指令和数据地址修改的过程称为重定位。
静态重定位就是,在逻辑地址转换为物理地址的过程中,地址变换是在进程装入时一次完成的,以后不再改变。
-
优点:是无需增加硬件地址转换机构,便于实现程序的静态连接。在早期计算机系统中大多采用这种方案。
-
缺点:内存空间不能移动;各个用户进程很难共享内存中同一程序的副本
动态重定位:动态运行的装入程序把转入模块装入内存之后,并不立即把装入模块的逻辑地址进行转换,而是把这种地址转换推迟到程序执行时才进行,装入内存后的所有地址都仍是逻辑地址。这种方式需要寄存器的支持,其中放有当前正在执行的程序在内存空间中的起始地址。
-
优点:内存空间可以移动;各个用户进程可以共享内存中同一程序的副本。
-
缺点:增加了机器成本,而且实现存储管理的软件算法比较复杂。
分页机制
1、分页概述
大部分虚拟内存系统中都使用一种称为分页的技术。
在任何一台计算机上,程序引用了一组内存地址,由程序产生的这些地址称为虚拟地址,他们构成了一个虚拟地址空间。在没有虚拟内存的计算机上,系统直接将虚拟地址送到内存总线上,读写操作使用具有同样地址的物理内存字;而在使用虚拟内存的情况下,虚拟地址不是直接被送到内存总线上,而是被送到内存管理单元(Memeory Management Unit,MMU),MMU把虚拟地址映射为物理内存地址。
虚拟地址空间按照固定大小划分成称为页面的若干单元。在物理内存中对应的单元称为页框。页面和页框大小是一样的,这里假设都为4KB。他们之间的映射关系如下图:
分别转载于:
https://www.cnblogs.com/wkfvawl/p/11687619.html
https://blog.csdn.net/sunjinbat/article/details/80571241