OS - 4. 第一部分 虚拟化内存 第八章抽象:地址空间

一、地址空间

  1. 地址空间:操作系统需要提供一个易用的物理内存抽象,该抽象即为地址空间。
  2. 地址空间包含:一个进程的地址空间包含运行的程序的所有内存状态。

例如:程序的代码、栈(保存当前的函数调用信息,分配空间给局部变量,传递参数与函数返回值)、堆(管理动态分配的、用户管理的内存)....

  

堆在顶部(向下扩展),栈在底部(向上扩展)。放在地址空间的俩端,向中间扩展

3、进程描述:当我们描述地址空间时,描述的是操作系统提供给运行程序的抽象,程序不在物理地址0-16kb中,而是在任意的其他物理内存。

例如:进程A尝试在地址0(虚拟地址)执行加载操作,然而操作系统在硬件的支持下,确保程序没有加载到物理地址0,而是320KB(A的载入内存地址)

二、虚拟内存目标

  1. 透明(看不到):程序不应当感知到内存被虚拟化的事实,程序的行为好像它拥有一个私有的物理内存。在幕后,操作系统和硬件完成所有的工作,让不同的工作复用内存,从而实现假象。
  2. 效率:时间上(不会使程序变得更慢)和空间上(不需要太多额外的内存支持虚拟化)。
  3. 保护:进程不会影响到其他进程,同时操作系统本身也不会受到影响。当进程执行加载、存储、指令提取时,不应该已任何方式影响 该进程地址空间以外的任何内容。

三、小结

1、用户级程序,所看到的的任何地址都是虚拟地址。

关键问题:操作系统如何在单一的物理内存上为多个运行的进程(所有进程共享内存)构建一个私有的、可能很大的地址空间的抽象?

虚拟内存系统负责为程序提供一个巨大的、稀疏的、私有的地址空间(假象),保存了程序的所有指令和数据。操作系统在专门硬件的帮助下,通过每一个虚拟内存的索引,将其转换为物理地址,物理内存根据获得的物理地址去获取所需的信息。

操作系统同时对许多进程执行此操作,确保程序间互不干扰,也不影响操作系统。

需要大量的机制和关键策略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值