内存管理的功能:
- 内存空间的分配与回收。由操作系统完成主存储器空间的分配与管理。
- 地址转换。存储管理必须提供地址变换功能,把逻辑地址转换成对应的物理地址。
- 内存空间的扩充。利用虚拟存储技术或自动覆盖技术,从逻辑上扩充内存。
- 存储保护。保证葛道程序在各自的存储空间内允许,互不干扰。
程序的执行过程
- 编译:由编译程序将用户源代码编译成若干目标模块。
- 链接:由链接程序将编译后形成的一组目标模块及所需库函数链接在一起,形成一个完整的装入模块。
-
装入:由装入程序将装入模块装入内存运行。
地址转换和物理存储器
地址重定位的方法:
- 绝对装入:
在可执行文件中记录内存地址,装入时直接定位在上述(即文件中记录的地址)内存地址。
优点:装入过程简单。
缺点:过于依赖于硬件结构,不适于多道程序系统。
- 可重定位装入:
程序在执行前集中一次性完成的地址变换方式,只完成一个首地址不同的连续地址转换。
优点:不需硬件支持,可装入有限多道程序
缺点:一个程序通常需要占用连续的内存空间,程序装入内存后不能移动。不易实现共享。
- 动态装入:
程序在执行过程中,当CPU访问指令或数据时进行的地址变换方式。
优点:
OS可以将一个程序分散存放于不连续的内存空间,可以移动程序,有利用实现共享。
能够支持程序执行中产生的地址引用,如指针变量(而不仅是生成可执行文件时的地址引用)。
缺点:需要硬件支持(通常是CPU) ,os实现较复杂。它是虚拟存储的基础。
逻辑地址、物理地址和地址映射
逻辑地址(相对地址,虚地址):用户的程序中相对于某个基准量(通常为0)编址所用的地址。
- 其首地址为0,其余指令中的地址都相对于首地址来编址。
- 不能用逻辑地址在内存中读取信息。
物理地址(绝对地址,实地址):内存中存储单元的地址。物理地址可直接寻址。
地址映射:将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址。当程序装入内存时,操作系统要为该程序分配一个合适的内存空间,由于程序的逻辑地址与分配到内存物理地址不一致,而CPU执行指令时,是按物理地址进行的,所以要进行地址转换。
虚拟存储技术的核心与形式
虚拟存储技术
其核心是把作业的地址空间和主存的存储空间看做两个不同的概念。
一个计算机为程序员提供了多大的地址空间,他就可以在这个地址空间内编制多大的程序,而完全不顾及实际内存的大小。
所谓虚拟存储器就是一个地址空间,正如主存对应于存储空间一样。
虚拟存储的形式
- 单段式虚存:是一个连续的线性空间,其地址顺序为:0,1,2,...n—1,n。
- 多段式虚存:把地址空间分成若干个段,而在每一个段内则是一个连续的线性空间。
引入虚拟存储的好处
- 大程序:可在较小的可用内存中执行较大的用户程序;
- 大的用户空间:提供给用户可用的虚拟内存空间通常大于物理内存;
- 并发:可在内存中容纳更多程序并发执行。
虚拟存储的特征
- 不连续性:物理内存分配的不连续,虚拟地址空间使用的不连续(数据段和栈段之间的空闲空间,共享段和动态链接库占用的空间)
- 部分交换:与交换技术相比较,虚拟存储的调入和调出是对部分虚拟地址空间进行的;
-
大空间:通过物理内存和快速外存相结合,提供大范围的虚拟地址空间
总容量不超过物理内存和外存交换区容量之和
分区存储管理
- 分区存储管理是能满足多道程序设计的最简单的存储管理技术,它运行多个作业共享内存。
- 在内存中为每个进程划分一个相应的存储区,以连续存储各进程的程序段和数据段,使得各进程得以并发执行。
固定分区法
①分区个数固定,分区大小固定
②不支持虚拟存储技术
优点 | 缺点 |
---|---|
简单,易行 | 内存空间极度浪费(内存碎片过多),大作业无法运行 |
地址重定位:在地址中加上起始地址
动态分区法
①选择分区分匹配中的数据结构
②分区分配算法(从若干个空闲分区中找到这个分区)
③不支持虚拟存储技术
①最先适应算法(First fit)
优点:优先利用内存低址部分的内存空间
缺点:内碎片产生的太多,低址部分不断划分,增加了查找开销。
②最佳适应算法(Best fit)
优点:使内存空间分布均匀,减少查找的开销。
缺点:缺乏大的空闲分区,不利于装入大作业
③最坏适应算法(Worst fit)
优点:易于实现,系统开销小
缺点:产生许多难以利用的小空闲区
覆盖技术(共用体就是覆盖技术)
缺点:增加了编程人员的负担
从外存装入覆盖文件,以时间换空间。
交换技术(牺牲了计算机的工作效率)
①将单位缩小
②实现非连续存储
通过部分装入,对程序进行分割。
页面管理
Unix中页面大小为1K,Linux中页面大小为4K。
①在装入内存时,做分页。
内存以页的大小分割,以存放个个程序的页。
页式管理的优点
①内存利用率最高(空间使用效率高)
②实现了非连续存储
静态页式分配算法
①把作业切割成多页,求出页数。
②查找存储页面表
③若满足:
- 1、页表构造过程
- 2、请求表
- 3、页表清空
优点:实现了非连续存储,一定程度上解决了内存碎片的问题。
缺点:不支持虚拟存储技术,作业要一次性全部装入。
网友评论