一,内存空间的分配和回收
二,内存空间的扩充(实现虚拟性)
三,地址转换(操作系统负责实现逻辑地址到物理地址的转换)
1,绝对装入:编译器负责地址转换(单道程序阶段,无操作系统)
2,可重定位装入:装入程序负责地址转换(早期多道批处理阶段)
3,动态重定位装入:运行时才进行地址转换(现代操作系统)
四,存储保护(保证各个进程在自己的内存空间内运行,不会越界访问)
两种方式:
1,设置上下限寄存器,一旦越界就抛出越界异常
2,利用重定位寄存器,界地址寄存器进行判断。
五,实现内存空间扩充的技术
1,覆盖技术:
思想:将查询分为多个模块,常用的模块常驻在内存,不常用的模块在需要时才从外存调入内存。内存中分为一个“固定区”和几个“覆盖区”,需要常驻内存的段放在“固定区”,调入后就不再调出(除非运行结束),不常用的模块,放在覆盖区中,需要用的时候调入内存,用不到时调出内存
一个固定区:存放最活跃的程序段,固定区的程序在运行过程中不会调入调出内存
诺干个覆盖区:不可能同时被访问的程序段可共享一个覆盖区,覆盖区中的程序段在运行过程中会根据需要调入调出内存
缺点:必须有程序员声明覆盖结构,操作系统完成自动覆盖,因此对用户不透明,增加了用户的编程负担
2,交换技术:
思想:内存紧张时,换出某些进程腾出内存空间,再换入某些进程,磁盘分为文件区和对换区,换出进程放在对换区。
- 磁盘区通常分为文件区和对换区两部分。文件区主要用于存放文件,蛀牙追求存储空间的利用率,因此对文件区空间管理采用离散分配方式;对换区空间占磁盘空间很小的部分,被换出的进程数据就存放在对换区。由于对换的速度直接影响到操作系统的整体速度,因此对换区空间管理主要追求换入换出速度,因此通常采用连续分配方式。总之,对换区的I/O速度比文件区的更快
- 交换通常在许多进程运行过程中并且内存还吃紧时进行,二系统负荷降低就暂停,例如在许多进程运行时经常发生缺页,就进行交换。
- 可以优先换出阻塞进程,优先级低的进程,为防止优先级低的进程在调入内存后很快被换出,优时还会考虑进程在内存的驻留时间。
3,两种技术的区别:
覆盖是在同一个程序或进程中的,交换是在不同进程或作业间的