当前位置:首页 > 内存 > 正文

什么是内存管理单元(内存管理的功能有哪些)

  • 内存
  • 2024-07-02 17:14:10
  • 9031

一、现代操作系统中,一般采用()和()两种存储管理方法。—交换和虚拟内存有何不同?目前的操作系统中,一般采用较为简单的两组交换的管理方式,区分交换和虚拟内容,根据不同的需求满足交换和模拟的要求。


二、内存管理的基本问题内存管理
操作系统对内存的动态划分和分配就是内存管理的概念。有效的内存管理在多道程序设计中非常重要。它不仅方便用户的内存使用,提高内存利用率,还可以通过虚拟技术实现逻辑内存扩展。内存管理功能包括:
内存空间分配和回收
地址转换:在多道程序环境中,程序中的逻辑地址和内存中的物理地址不能保持一致,因此存储管理必须提供地址转换功能,将逻辑地址转换为相应的物理地址。内存空间扩展:利用虚拟存储技术或自动叠加技术,对内存进行逻辑扩展。
存储空间保护:保证每个作业在自己的存储空间中运行,互不干扰。
加载并连接程序
要创建进程,必须首先将程序和数据加载到内存中。将用户源程序转换为可以在内存中运行的程序通常需要以下步骤:
编译:编译器将用户源代码编译成多个目标模块。
链接:链接器将一组已编译的目标模块和所需的库函数链接在一起,形成一个完整的加载器模块。
加载:加载器将加载器模块加载到内存中并执行。
程序的链接有以下三种方式:
静态链接:在程序运行之前,将各个目标模块和所需的库函数链接在一个可执行文件中,完成程序后将今后不得拆除。
加载时动态链接:将用户源程序编译后得到的一组目标模块通过加载链接的方式加载到内存中。
运行时动态链接:链接到某些目标模块是在程序执行过程中需要时才链接到目标模块。优点是易于编辑和更新,并且易于共享目标表单。
模块加载到内存时,也存在以下三种方法:
绝对加载。在编译时,如果知道程序将驻留在某个内存位置,编译器将生成具有绝对地址的目标代码。绝对加载器根据加载模块中的地址将程序和数据加载到内存中。由于程序中的逻辑地址与实际内存地址完全相同,因此无需更改程序和数据地址。
可重新定位负载。在多道程序设计环境中,多个目标模块的起始地址通常从0开始,程序中的其他地址都是相对于起始地址而言的。在这种情况下,应该使用可重定位加载方法。根据当前内存情况将加载模块加载到适当的内存位置。在加载过程中改变目标程序中的指令和数据的过程称为重定位。地址转换通常在加载时完成一次,因此也称为静态重定位。静态重定位的特点是,当一个作业加载到内存中时,必须分配所有需要的内存空间。如果内存不足,则无法加载作业。此外,工作一旦进入内存,在整个执行过程中就不能移入内存,也不能占用内存空间。
运行时的动态加载也称为动态重新定位。如果程序在内存中移动,就必须使用动态加载。将加载模块加载到内存后,加载器并不会立即将加载模块中的相对地址转换为绝对地址,而是将这种地址转换推迟到程序实际执行时。因此,加载到内存后的所有地址都是相对地址,这种方法需要重定位寄存器的支持。动态重定位的特点是在程序执行之前可以将程序分配到不连续的内存区域,只加载其中的一部分代码并投入运行,然后在程序执行过程中分配内存动态地;如所须;方便程序共享段可以为用户提供远大于存储空间的地址空间。