- 对主存储器的访问,以字或者字节为单位
不可能将所有用户进程和系统所需要的全部程序和数据放入贮存,因此操作系统必须对内存空间进行合理的划分和有效的动态分配
内存管理的主要功能:
- 内存可以存放数据。程序在执行前需要先放到内存中才能被CPU处理(缓和CPU和硬盘之间的速度矛盾
- 内存中有很多存储单元,内存地址从0开始,每个地址对应一个存储单元,一个存储单元能存储多少比特位取决于计算机
- 讨论内存时, 1 K = 2 10 = 1024 1K = 2^{10} = 1024 1K=210=1024、 1 M = 2 20 1M = 2^{20} 1M=220、 1 G = 2 30 1G = 2^{30} 1G=230
创建进程首先要将程序和数据装入内存,将用户源程序变为可在内存中执行的程序,通常需要以下几个步骤
静态重定位的特点是:
编译链接后的装入模块的地址都从0开始。装入程序将模块装入内存后,并不会立即把逻辑地址转换为物理地址,而是在真正执行时才进行。这种方法需要一个重定位寄存器支持
特点:
逻辑地址
- (11 408) 虚拟内存管理中,形成逻辑地址的阶段:编译
物理地址
一个程序调入内存运行时,就构成了进程的内存映像。一个进程的内存映像一般包括以下要素:
malloc
函数动态地向高地址分配空间确保每个进程都有一个单独的内存空间。内存分配前,需要保护操作系统不受用户进程的影响,同时保护用户进程不受其他用户进程的影响
内存保护可以采取两种方法:
加载重定位寄存器和界地址寄存器需要使用特权指令。因此只要操作系统内核才可以修改这两个寄存器的值,不允许用户程序修改
连续分配方式主要包括:单一连续分配、固定分区分配和动态分区分配
优点:实现简单;无外部碎片
缺点:只能单用户、单任务;有内部碎片,存储器利用率极低
划分分区时的方法:
**操作系统需要建立一个数据结构,实现各个分区的分配和回收。**每个表项需要包括分区的大小、起始地址、状态
缺点:用户程序过大时可能分区不能满足需求,需要覆盖技术,这会降低性能;会产生内部碎片
又称可变分区分配。不会预先划分内存区,而是进程装入内存时,根据进程大小动态建立分区,使得分区的大小正好适合进程的需要
思想:每次都从低地址开始查找,找到第一个能满足大小的空闲分区
实现:空闲分区按地址递增次序排列,每次分配内存时顺序查找空闲分区链/表,找到第一个满足要求的空闲分区
思想:在首次适应算法基础上,查找时不从头查找,而是从上次查找结束的位置开始
思想:优先使用小的空闲区,留下大片连续空间
实现:空闲分区按照容量递增次序链接,找到第一个能满足要求且最小的空闲分区分配给作业
缺点:会产生很多的外部碎片
思想:为了解决最佳适应算法的问题,优先使用最大的空闲分区
实现:空闲分区按照容量递减次序链接,找到第一个满足要求的,即最大的分区
缺点:导致容量较大的空闲内存被迅速用完,之后如果有大进程到达,就没有空闲分区可用了
为了方便地址转换,页面大小应该为2的整数幂。同时页面大小应该适中
页表项连续存放,因此页号可以是隐含的,不占存储空间(类比数组
页表记录的是内存块号而不是内存块起始地址,J号内存块起始地址=J*内存块大小(从0开始
- 每个进程拥有一张页表,进程的页表驻留在内存中
例题
页面大小 L=1KB,页号2对应物理块号b=8,计算逻辑地址2500的物理地址
2500对应的页号:2500/1024 = 2,对应的页内偏移量:2500%1024 = 452
b=8,所以 物理地址=1024*8+452
- 页式存储管理中,页表的起始地址存放在寄存器中
- 影响磁盘访问时间的主要因素通常不是页面大小,使用时优先考虑较大的页面
若页表全部放在内存中,则存取一个数据或一条指令至少需要访问两次内存
为了提高指令执行速度,在地址变换机构中增加一个具有并行查找能力的告诉缓冲存储器——快表,又称相联存储器(TLB),用于存放当前访问的若干快表项
- 多级页表优点:减少页表所占连续内存空间
- 已知系统32位实地址,48位虚拟地址,页面大小4KB,页表项8B,系统采用纯页式存储,则需要?级页表,页内偏移?位
页面大小4KB,则页内偏移12位
一页可以存4KB/8B=2^9个页目录
剩余36位,需要4级页表
与分页最大的区别就是:离散分配时所分配的地址空间的基本单位不同
页式系统中,逻辑地址的页号和页内偏移量对用户是透明的;而段式系统中,段号和段内偏移量必须用户显式提供
目的:从物理内存中找到各个逻辑段的存放位置,所以为每个进程建立一张段映射表
同样可以引入快表,加快访问
指的是上面一系列存储管理方式
广义上讲,快表、页高速缓存、虚拟内存技术都属于高速缓存技术,依赖的原理就是局部性原理
虚拟内存技术实际上建立了“内存-外存”的两级存储器结构,利用局部性原理实现高速缓存
虚拟内存三个主要特征
需要建立在离散分配的内存管理方式基础上,分为以下三种方式
均需要一定的硬件支持,一般包括
- 虚拟存储器系统页表项中,决定是否发生页故障的是:合法位
驻留集:给一个进程分配的物理页框的集合
内存分配:固定、可变分配策略
页面置换:全局、局部置换
组合出三种策略
采用固定分配策略,将系统中的空闲物理块分配给各个进程,可采用以下几种算法
页面的换入换出需要磁盘IO,开销较大,因此好的页面置换算法需要追求更少的缺页率
`1. 导致LRU算法实现起来耗费高的原因:需要对所有页进行排序
(10 408)
(12 408)
(17 408)