1
0
mirror of https://github.com/Didnelpsun/CS408.git synced 2026-02-13 07:36:07 +08:00

Update 2-memory-management.md

This commit is contained in:
Didnelpsun
2022-07-21 23:16:49 +08:00
parent 9f903ffce5
commit 088f65a64f

View File

@@ -390,7 +390,7 @@
## 虚拟内存管理
虚拟存储技术使用局部性原理,用于对内存空间进行扩充。
虚拟存储技术使用局部性原理,用于对内存空间进行扩充,基于覆盖和交换技术
传统存储管理特性:
@@ -412,7 +412,7 @@
#### 虚拟内存容量
+ 虚拟内存的最大容量是由计算机的**地址结构**$CPU$寻址范围)确定的。
+ 虚拟内存的最大容量是由计算机的**地址结构**$CPU$寻址范围)确定的=$CPU$寻址范围
+ 虚拟内存的实际容量=$\min$(内存和外存容量之和,$CPU$寻址范围)。
+ 某计算机地址结构为$32$位,按字节编址,内存大小为$512MB$,外存大小为$2GB$。则虚拟内存的最大容量为$2^{32}B=4GB$,而实际内存是$2GB+512MB$。
@@ -518,7 +518,9 @@
缺页了$15$次,置换了$12$次,所以缺页率为$15\div20=75\%$。
如给定一串页面号:$3,2,1,0,3,2,4,3,2,1,0,4$,使用$FIFO$算法进行置换,会发现分配三个内存块缺页次数为$9$次,而分配四个内存块缺页次数为$10$次。这种当为进程分配的物理块数增大时,缺页次数不减反增的异常现象就是**Belady异常**。
如给定一串页面号:$3,2,1,0,3,2,4,3,2,1,0,4$,使用$FIFO$算法进行置换,会发现分配三个内存块缺页次数为$9$次,而分配四个内存块缺页次数为$10$次。
这种当为进程分配的**物理块数**增大时,缺页次数不减反增的异常现象就是**Belady异常**。但是如果物理块尺寸增大一倍而块数不变,则在程序顺序执行时缺页中断次数会减少。
只有$FIFO$算法会产生$Belady$异常,使用队列实现,是队列类算法。另外,$FIFO$算法虽然实现简单,但是该算法与进程实际运行时的规律不适应,因为先进入的页面也有可能最经常被访问。因此该算法性能差。
@@ -541,7 +543,7 @@
在手动做题时,若需要淘汰页面,可以逆向检查此时在内存中的几个页面号。在逆向扫描过程中最后一个出现的页号就是要淘汰的页面。
该算法的实现需要专门的硬件支持,如寄存器和栈,虽然算法性能好,最接近$OPT$算法,但是实现困难,开销大。
该算法的实现要对所有页面进行排序,所以需要专门的硬件支持,如寄存器和栈,虽然算法性能好,最接近$OPT$算法,但是实现困难,开销大。
#### 时钟置换算法
@@ -643,6 +645,8 @@
+ 刚刚换出的页面马上又要换入内存,刚刚换入的页面马上又要换出外存,这种频繁的页面调度行为称为抖动,或颠簸。
+ 产生抖动的主要原因是进程频繁访问的页面数目高于可用的物理块数(分配给进程的物理块不够)。所以需要合适的物理块数量。
+ 工作集:指在某段时间间隔里,进程实际访问页面的集合。
+ 所有的页面置换算法都可能存在抖动。
+ 可以撤销部分进程来减缓抖动。
### 工作集