内存管理笔记三、单道编程的内存管理

内存管理笔记三、单道编程的内存管理

引言:最简单的内存管理是单道程序下的内存管理。


1、基本概念

  在单道编程环境下,整个内存里面只有两个程序:一个是用户程序,另外一个是操作系统。由于只有一个用户程序,而操作系统所占用的内存空间是恒定的,我们可以将用户程序总是加载到同一个内存地址上。即用户程序永远从同一个地方开始执行
   在这种管理方式下,操作系统永远跳转到同一个地方来启动用户程序,这样用户程序里面的地址都可以事先计算出来,即在程序运行前就计算出所有的物理地址,这种在运行前即将物理地址计算好的方式叫静态地址翻译
内存管理笔记三、单道编程的内存管理
           图1、单道与多道处理系统内存

2、地址独立与地址保护实现

  在内存管理笔记一、内存管理的需求中,我们说过内存管理要达到重定位、保护、共享等五个需求,可以概括为地址独立和地址保护。地址独立即程序发出的内存地址与物理主存地址无关,地址保护即一个程序不能访问另一个程序的地址空间。
  在单道编程的内存管理方式下,将用户程序加载到同一个物理地址上,通过静态编译即可完成虚地址到物理地址的映射,而这个静态翻译工作由编译器或者加载器来实现。用户在编写程序时,无需知道此程序将要运行的物理主存,即达到了地址独立。另外由于系统中仅有一个用户程序,固定地址的内存管理因为只运行一个用户程序而达到地址保护。

3、固定地址的内存管理优缺点

3.1、优点
  固定地址的内存管理单元非常简单,实际上不需要任何的内存管理单元,因为程序发出的地址已经是物理地址,在执行过程中无需进行任何地址翻译,这种情况的直接结果就是程序运行速度快,因为越过了地址翻译这个步骤。

3.2、缺点
  固定地址的内存管理其缺点也非常明显:第一个缺点是整个程序要加载到内存空间中去,这样将导致比物理内存大的程序无法运行。第二个缺点是只运行一个程序造成资源浪费,如果一个程序很小,虽然占用内存空间小,但剩下的内存空间也无法使用。第三个缺点是可能无法在不同的操作系统下运行,因为不同操作系统所占用的内存空间大小可能不一样,使得用户程序的起始地址可能不一样,这样一个系统环境下编译出来的程序很可能无法在另一个系统下执行。

小疑问:
1、在固定地址内存管理的优点中,讲固定地址的管理模式不需要翻译的过程,假定操作系统由0xc0000000 至0xFFFFFFFF, 是指用户编写的程序直接映射至物理主存0x00000000 这样一个静态地址翻译吗?

是这样的,因为程序发出的地址已经是物理地址,在执行过程中无需进行任何地址翻译,这种情况的直接结果就是执行速度快,因为越过了地址翻译的步骤。

2、针对单道编程的第三个缺点,是不是有一点牵强,确实不同操作系统占用的内存空间大小不一,但是我为什么要拿A操作系统编译的程序,去B操作系统下运行呢?

可能会从一些网站直接下载可执行文件,是二进制的形式,即已经编译好的。

——————————————————————————————————————
参考资料:
《操作系统之哲学原理》 邹恒明著

纠错与建议
邮箱:[email protected]