抽象:地址空间

抽象:地址空间

1. 早期系统

早期的操作系统是内存中的一组函数。正在运行的程序使用剩下的物理内存。
操作系统:早期

2. 多道程序和时分共享

多道程序系统(multiprogramming):
多个进程在给定时间准备运行,比如当有一个进程在等待 I/O 操作的时候,操作系统会切换这些进程,这样增加了 CPU 的有效利用率(utilization)

分时系统:
重视 交互性(interactivity) ,因为许多用户可能同时在使用机器,每个人都在等待(或希望)他们执行的任务及时响应。

内存共享:
共享内存
每个进程拥有从物理内存中切出来给它们的一小部分内存。假定只有一个 CPU,操作系统选择运行其中一个进程,同时其他进程则在队列中等待运行。

保护(protection)
一个进程不允许读取或者修改其他进程的内存。

3. 地址空间

地址空间(address space)
地址空间是操作系统提供的一个易用(easy to use)物理内存抽象,它是运行的程序看到的系统中的内存。

一个进程的地址空间包含运行的程序的所有内存状态。
包括:

  • 代码(code,指令)
  • 栈(stack)
    保存当前的函数调用信息,分配空间给局部变量,传递参数和函数返回值。
  • 堆(heap)
    管理动态分配的、用户管理的内存。
    地址空间的例子

虚拟化内存
操作系统在单一的物理内存上为多个运行的进程(所有进程共享内存)构建一个私有的、很大的地址空间的抽象,并且程序认为它被加载到特定的地址。

4. 目标

透明(transparency)
操作系统实现虚拟内存的方式,应该让运行的程序看不见。因此,程序不应该感知到内存被虚拟化的事实,相反,程序的行为就好像它拥有自己的私有物理内存。

效率(efficiency)
操作系统应该追求虚拟化尽可能高效(efficient),包括时间上(即不会使程序运行得更慢)和空间上(即不需要太多额外的内存来支持虚拟化)。

保护(protection)
操作系统应确保进程受到保护(protect),不会受其他进程影响,操作系统本身也不会受进程影响。
保护让我们能够在进程之间提供 隔离(isolation) 的特性,每个进程都应该在自己的独立环境中运行,避免其他出错或恶意进程的影响。

5. 小结

  1. 虚拟内存系统负责为程序提供一个巨大的、稀疏的、私有的地址空间的假象,其中保存了程序的所有指令和数据。

  2. 操作系统在专门硬件的帮助下,通过每一个虚拟内存的索引,将其转换为物理地址,物理内存根据获得的物理地址但获取所需的信息。

  3. 操作系统会同时对许多进程执行此操作,并且确保程序之间互相不会受到影响,也不会影响操作系统。

猜你喜欢

转载自blog.csdn.net/qq_39389123/article/details/113163471