存储管理的主要功能包括:1. 内存分配与回收;2. 地址重定位;3. 存储保护;4. 虚拟存储。其中,当有作业进入系统时,存储管理模块就会根据当前内存情况来分配内存给它;当作业完成后,就会回收作业占用的内存。
一、存储管理的主要功能
1. 内存分配与回收
当有作业进入系统时,存储管理模块就会根据当前内存情况来分配内存给它;当作业完成后,就会回收作业占用的内存,将这部分内存设置为可分配状态。
分配方式主要有两种:
静态分配:作业在运行之前,已经明确所需内存的大小,并且一次性分配;作业在运行的时候,不可以重新申请或移动内存。
动态分配:作业在运行期间,可以根据需要动态申请内存。比静态分配灵活,并且能够提高内存的利用率,避免因静态分配导致不必要的信息加载到内存中。
2. 地址重定位
实现程序的逻辑地址和物理地址转换,并根据物理地址重定位到物理空间。
程序中,基本都是用符号名来访问存储单元的。而符号名存储的是逻辑地址,而逻辑地址可以转化为物理地址,最后可以通过物理地址直接定位存储单元。
3. 存储保护
存储保护是为了防止程序越界访问、破坏其他程序或系统的存储区。较为普遍的存储保护方法是:硬件的界限存储器保护法,并且还分为两种实现方法。
4. 虚拟存储
程序的局部性分为:时间和空间的局部性。
时间局部性:某条指令被执行,那么在不久的将来也会被再次执行。
空间局部性:一旦程序访问某个存储单元的数据,那么不久的将来,这个存储单元附近的存储单元也可能会被访问。
由于程序的局部性原理,很多数据没有必要全部加载到内存。因此就将那些不必要的数据暂存在外存中,等到需要的时候再调入到内存中。这部分外存就充当虚拟内存,也叫虚拟存储。
延伸阅读:
二、存储管理功能
虚拟内存技术不仅仅可让我们可以使用更多的内存,它还提供了以下功能:
寻址空间
操作系统让系统看上去有比实际内存大得多的内存空间。虚拟内存可以是系统中实际物理空间的许多倍。每个进程运行在其独立的虚拟地址空间中。这些虚拟空间相互之间都完全隔离开来,所以进程间不会互相影响。同时,硬件虚拟内存机构可以将内存的某些区域设置成不可写。这样可以保护代码与数据不会受恶意程序的干扰。
内存映射
内存映射技术可以将映象文件和数据文件直接映射到进程的地址空间。在内存映射中,文件的内容被直接连接到进程虚拟地址空间上。
物理内存分配
内存管理子系统允许系统中每个运行的进程公平地共享系统中的物理内存。
共享虚拟内存
尽管虚拟内存允许进程有其独立的虚拟地址空间,但有时也需要在进程之间共享内存。 例如有可能系统中有几个进程同时运行BASH命令外壳程序。为了避免在每个进程的虚拟内存空间内都存在BASH程序的拷贝,较好的解决办法是系统物理内存中只存在一份BASH的拷贝并在多个进程间共享。动态库则是另外一种进程间共享执行代码的方式。共享内存可用来作为进程间通讯(IPC)的手段,多个进程通过共享内存来交换信息。 Linux支持SYSTEM V的共享内存IPC机制。
以上就是关于存储管理的内容希望对大家有帮助。