存储管理:地址空间、交换技术与虚拟内存

存储器抽象

无抽象

最简单的存储器抽象就是无抽象,即进程直接访问物理内存地址。主要有一下两个问题:

  • 如果一个进程可以访问内存中的每个字节,很容易破坏操作系统。
  • 难以同时运行多个进程。多个进程可能会同时修改同一个内存地址,造成进程的崩溃。

地址空间

地址空间是对内存的一种抽象,类似进程是对CPU的抽象。地址空间是一个进程可用于寻址内存的一套地址集合。每个进程都有一个自己的地址空间,并且这个地址空间独立于其他进程的地址空间(除了特殊情况下进程需要共享他们的地址空间)。

地址空间的一种简单实现方式

基于基址寄存器界限寄存器,可以实现地址空间。也就是使一个程序中的地址20和另一个程序的地址20指向不同的物理地址。
具体地,当一个进程运行时,程序的启示物理地址转载到基址寄存器,程序的长度装在到界限寄存器。每次进程访问内存时,例如取一条指令或者读或写一个数据字,cpu硬件会把地址发送到内存总线前,自动把基址值加到进程发出的地址上。同时会检查程序发出的值是不是大于等于界限寄存器的值,如果大于说明访问了其他地址,会产生错误并终止访问。
基于基址寄存器和界限寄存器的缺点为,每次访问内存都需要进行加法和比较运算。比较可以做得很快,但是加法由于进位传递的时间问题,在没有使用特殊电路的情况下会显得很慢。例如执行一条指令需要花费1ns,那计算内存地址的时间需要小于1ns,例如0.2ns。

解决内存不足的两种策略

进程所需的RAM数量总和通常远远超过存储器能够支持的范围,两种处理内存不够用的策略包括交换技术和虚拟内存。

交换技术-Swapping

交换技术,把一个进程完整调入内存(包括进程的代码段、数据段和堆栈),使该进程运行一段时间,然后把它换回磁盘。空闲进程主要存储在磁盘上,所以当他们不运行时就不会暂用内存。

主要问题:

  • 交换在内存中可能产生多个空闲区。
  • 由于进程可能在运行时可以分配内存,创建或者换入进程时需要分配多大的内存是不确定的。
  • 将进程换到磁盘的速度慢。例如SATA盘峰值传输速度为100MB/s,那么换出一个1GB的程序至少需要10s,并且还需要10s才能将另一个1GB的程序换入。

空闲内存管理的两种方式:

  • 基于位图进行存储管理
  • 基于链表进行存储管理

虚拟内存-Virtual Memory

ToBeContinued…

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值