存储器抽象

无存储器抽象

最简单的存储器抽象是无存储器抽象,早期计算机没有存储器抽象,每个程序都直接访问物理内存。

无存储器抽象需要解决多道程序的问题

在这种情况下同时运行两个程序是不可能的。如果第一个程序在20000的位置写入一个新的值,将会擦掉第二个程序存放在相同位置上的所有内容,所以同时运行两个程序是行不通的两个程序会立刻崩溃掉。

在不使用内存抽象的情况下运行多道程序

1. 通过内存交换实现多道程序的运行: 即使没有内存抽象,同时运行多个程序也是有可能的。操作系统只需要把当前内存中所有内容保存到磁盘文件中,然后把下一个程序读入到内存中再运行即可。只要在某一个时间内存中只有一个程序,那么就不会发生冲突。
2. 特殊硬件:IBM360的早期模型这样解决的,内存被划分为2kb的块,每个块被分配一个4位的保护键,保护键存储在cpu特殊的寄存器中。

不使用存储器抽象的问题

1. 如果用户程序可以寻址内存的每个字节,它们就可以很容易的(故意或偶然的)破坏操作系统,从而使系统慢慢地停止运行。
2. 使用这种模型,想要同时(如果只有一个cpu就轮流执行)运行多个程序是很困难的。

需要解决上述问题,就引入了地址空间地址空间的概念。