内存保护
需要保护操作系统不受用户进程的影响,同时保护用户进程不受其他用户进程的影响。两种方法
- CPU中设置上、下限寄存器。
存放用户作业在主存中的下限和上限地址,每当CPU要访问一个地址时,分别和两个寄存器的值对比,判断有无越界 - 采用 重定位寄存器(或基址寄存器) 和 界地址寄存器(限长寄存器) 来实现保护。
重定位寄存器中含最小的物理地址值,界地址寄存器含逻辑地址的最大值。
每个逻辑地址值必须小于界地址寄存器;若比较后未越界则加上重定位寄存器的值后映射成物理地址,再送内存单元。
覆盖(Overlay)
早期用的。
基本思想:由于程序运行时并非任何时候都要访问程序及数据的各个部分(尤其是大程序),因此可把用户空间分成一个固定区和若干覆盖区。将经常活跃的部分放在固定区,其他部分按调用关系分段。首先将那些即将要访问的段放入覆盖区,其他段放在外存中,在需要调用前,系统再将其调入覆盖区,替换覆盖区中原有的段。
实现:
- 将程序的必要部分代码和数据常驻内存;
- 可选部分在其他程序模块中实现,平时存放在外存中(覆盖文件),需
要用到时才装入到内存; - 不存在调用关系的模块不必同时装入到内存,可相互覆盖。
特点:打破了必须将一个进程全部信息装入主存后才能运行的限制;但当同时运行代码大于主存时仍不能运行;内存中能