操作系统之内存管理

在多道程序中,需要从磁盘中同时读入多个进程到内存,我们需要对内存进行管理,使得能够有条理地执行进程。
通常指令先要从内存中读入,进行解码,还要从内存中读取操作数,再将结果返回给内存。内存看到的只是地址。
一个进程占了一块内存,跨度是一串连续的地址,我们用base register和limit register来限定进程访问的范围。
CPU只能访问的存储器是内存和CPU的寄存器,所以如果有指令要访问数据,必须要提前导入到内存。下面会讲到交换方法,和动态载入。
Cache:因为访问CPU寄存器必访问内存速度快了很多,所以我们不能老是访问内存,所以要有Cache。访问内存可能会导致CPU暂停。
进程访问的地址的限定通过硬件实现:即通过base和limit寄存器的比较实现。
OS可以改limit和base的值。
磁盘有一个输入队列,存放准备导入内存的进程。
代码里我们通常用一个变量代表地址,我们可以将变量绑定到可重定位地址,加载程序再将重定位地址绑定成绝对地址。
绑定的情况:
1.编译时:如果在编译时就知道内存的地址,那么直接绑定绝对地址。
2.加载时:在编译时生成可重定位代码,在加载时才生成绝对代码。
3.执行时:如果执行时还要将进程从一个内存块移到另一个内存块,则只有执行时才绑定。
CPU生成的逻辑地址,内存的地址是物理地址。
程序生成的地址空间称为逻辑地址空间。
运行时虚拟地址到物理地址通过MMU映射。通过CPU的逻辑地址+base register就得到物理地址。用户是不知道物理地址的。

动态加载:如果一个程序必须全部加载入内存,那么必须限制程序的大小,所以动态加载是将一个大程序分成多个子程

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值