单道编程的内存管理

最简单的内存管理是单道程序下的内存管理

在单道编程环境下,整个内存里面只有两个程序:一个是用户程序,另一个是操作系统。

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

这种内存管理方式是如何达到内存管理的两个目的的呢?

首先看地址独立。固定地址的内存管理达到地址独立了吗?那就看看用户在编写程序时是否需要知道该程序将要运行的物理内存知识。显然不需要。因而用户在编程序时用的虚地址无须考虑具体的物理内存,即该管理模式达到了地址独立。那么它是如何达到的呢?办法就是将用户程序加载到同一个物理地址上。通过静态编译即可完成虚地址到物理地址的映射,而这个静态翻译工作可以由编译器或者加载器来实现。

那么内存管理的另一抽象,即地址保护,达到了吗?那要看该进程是否会访问到别的用户进程空间,或者别的用户进程是否会访问该进程地址。答案是不会。因为整个系统里面只有一个用户程序。因此,固定地址的内存管理因为只运行一个用户程序而达到地址保护

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值