操作系统存储器管理笔记
一操作系统装入程序到内存中几种方法:
1:绝对装入方式(Absolute Loading Mode):
即程序在编译时就产生物理地址的目标代码,编译完成后,不在需要对程序和数据进行修改,程序员也可以在程序中赋值物理地址。
缺点:不灵活,要求程序员对内存相当熟悉,只适用于单道程序环境。
2:静态重定位装入方式(Relocation Loading Mode):
即程序在编译时使用的是逻辑地址,在装入的时候,临时将逻辑地址转换成物理地址。到内存中后的地址为物理地址。这种方法叫做静态重定位装入。
缺点:不灵活,当进程有需要动态改变地址时则无法改变。
3:动态重定位装入方式(Dynamic Run-time Loading)
即程序在装入内存之后,在内存中仍然使用逻辑地址,只有在取该数据时,才转换成物理地址。这样做会影响到程序的执行速度。因此,一般将转换成物理地址的过程做成硬件来完成转换,需要添加一个地址转换寄存器来支持。
二 程序的链接过程
1:静态链接(Static Linking)
程序在编译之后形成目标模块,然后将目标模块和库函数组合成一个模块,不再分开的链接。
缺点:消耗内存的资源很大,往往有的库函数或模块在程序的运行过程中没有使用,极大的浪费了内存空间。
2:装入是动态链接(Load-time Dynamic Linking)
程序在编译时形成目标模块代码,在需要调入内存时,链接成一个模块装入内存。
缺点:和静态链接一样,对内存消耗大。
3:运行时动态链接(Runtime Dynamic Linking)
程序在编译时形成目标模块,在调入内存时调入需要执行的代码模块,当用到某个库函数或模块式时,由操作系统动态的调入内存执行。
三 内存连续分配方式
1:单一连续内存分配
把内存区域中划分OS分区和应用进程区域两大块,互不干涉。在应用进程区域的内存按照单一的连续分配原则分配给各个进程。
使用范围:单用户,单任务的操作系统中。如CP/M,MS-DOS操作系统。
2:固定分区分配
a.固定分区大小一致分配
将内存划分为大小一致的多个分区,这种分配方式缺乏灵活性,当进程太小造成空间浪费,太大则无法分配空间,导致装入失败。
b.固定分区大小不一致分配
将内存划分为大小不一致的多个分区。这样可根据进程大小适当分配区域。
分配具体操作:将各个分区按照大小排队,用一张分区表存储,该表中包含分区的大小,起始地址,和使用情况
使用范围:IBM360的MFT