我今天晚上看书解决以上问题。我看的是《现代操作系统 第四版》的第三章内存管理。
register:登记
BIOS:基本输入输出系统 basic input output system
静态重定位:加一个地址常数使得每一个地址都加一个常数不与其他进程地址相同,某些程序运行行不通,例如register 28
动态重定位:把进程的地址空间映射到物理内存上,利用基址寄存器和界限寄存器,当一个进程运行时,程序的起始物理地址装载到基址寄存器,长度装载到界限寄存器。(提供独立的地址空间)每次一个进程访问内存,取一条指令,读写一个数据字,CPU硬件会在地址放松到内存总线前,自动把基址值加到进程发出的地址值上。同时,它检查程序提供的地址是否等于或大于界限寄存器里的值。如果访问的地址超过了仅限,会产生错误并终止访问。缺点:每次访问都需要进行加法和比较运算,主要加法慢。
空闲内存管理:1.使用位图 2.使用链表
处理内存超载的通用方法:
1.交换:把一个进程完整调入内存,使该进程运行一段时间,然后把它存辉磁盘。空闲进程主要存储在键盘上,所以当他们不运行时就不会占用内存。交换在内存中产生了多个空闲区(hole),通过把所有的进程尽可能向下移动,有可能将这些小的空闲区合成一大块。称为内存紧缩,会消耗大量CPU时间。如果进程内存是动态分配的,那么就会出现问题&#x