CSNotesCSNotes
TODO
LeetCode
数据结构
计算机组成原理
操作系统
计算机网络
数据库
Java
SSM
React
实用工具
GitHub
TODO
LeetCode
数据结构
计算机组成原理
操作系统
计算机网络
数据库
Java
SSM
React
实用工具
GitHub
  • 第一章 计算机系统概述

    • 1.1 操作系统的基本概念
    • 1.2 操作系统的发展历程
    • 1.3 操作系统运行环境
    • 1.4 操作系统结构
  • 第二章 进程与线程

    • 2.1 进程与线程
    • 2.2 处理机调度
    • 2.3 同步与互斥
    • 2.4 死锁
  • 第三章 内存管理

    • 3.1 内存管理概念
    • 3.2 虚拟内存管理
  • 第四章 文件管理

    • 4.1 文件系统基础
    • 4.2 文件目录
    • 4.3 文件系统
  • 第五章 输入/输出(I/O)管理

    • 5.1 I/O 管理概述
    • 5.2 设备独立性软件
    • 5.3 磁盘和固态硬盘

3.2 虚拟内存管理

3.2.1 虚拟内存的基本概念

缺页中断是访存指令引起的,说明要访问的页面不在内存中,进行缺页中断处理并调入所要访问的页后,访存指令显然应该重新执行。

4.虚拟内存技术的实现

虚拟内存技术是补充内存逻辑空间的技术。

虚拟内存允许将一个作业分多次调入内存。采用连续分配方式时,会使相当一部分内存空间处于空闲状态,造成资源浪费。虚拟内存只能基于非连续分配技术。

实现方式

  • 请求分页存储管理
  • 请求分段存储管理
  • 请求段页式存储管理

3.2.2 请求分页管理方式

页式虚拟存储管理的主要特点是,不要求将作业同时全部装入主存的连续区域,一般只装入 10%~30%。

分页 + 请求调页 + 页面置换

未被修改的页直接从文件区读入,被置换时不需要调出。已经被修改的页,被置换时需要调出到交换区,以后从交换区调入。

页号物理块号状态位访问字段修改位外存地址
是否在内存中记录本页一段时间内被访问次数换出时是否需要写回外存

CPU 看是否在飞机,飞机没有。不在飞机,在火车上没有。不在火车上,火车没满就上火车。火车满了就拉一个人下来。如果他被修改过,就要他去汽车上。上火车,修改页表,修改快表。

3.2.3 页框分配

1.驻留集大小

给一个进程分配的物理页框的集合就是这个进程的驻留集。

驻留集:请求分页存储管理中给进程分配的物理块的集合。

在采用了虚拟存储技术的系统中,驻留集大小一般小于进程的总大小。

固定分配:驻留集大小不变

可变分配:驻留集大小可变

局部置换:发生缺页时,只能选进程自己的物理块进行置换。

全局置换:可以将操作系统保留的空闲物理块置换出去。

2.内存分配策略

(1)固定分配局部置换

(2)可变分配全局置换

灵活

(3)可变分配局部置换

3.2.4 页面置换算法

好的页面置换算法应该有较低的页面更换频率。

最佳置换算法:淘汰最长时间不再访问的页面,无法实现。

先进先出页面置换算法:先进内存的先出去。可能出现 Belady 异常。队列型算法可能出现 Belady 异常。

只有 FIFO 算法才会导致 Belady 异常。

最近最久未使用置换算法:和最佳置换算法相反。

时钟置换算法:每帧有访问位(剩余访问次数),首次装入时,访问位置为 1,如果是 1,就变 0,如果是 0 就换出。

装入后,指针后移一位。顺序淘汰。

CLOCK 算法选择将最近未使用的页面置换出去,因此又称 NRU 算法。

改进型 CLOCK 置换算法:增加修改位,如果一个页面换出时,该页面修改了,就要写回磁盘。

(访问位,修改位)=(0,0):最近未被访问且未被修改,是最佳淘汰页。

(访问位,修改位)=(0,1):最近未被访问,但已被修改,不是很好的淘汰页。

(访问位,修改位)=(1,0):最近已被访问,但未被修改,可能再被访问。

(访问位,修改位)=(1,1):最近已被访问且已被修改,可能再被访问。

淘汰策略:

  1. 第一轮找(0,0)
  2. 第二轮找(0,1),并把所有页设为(0,x)
  3. 重复 1,2

3.2.5 抖动和工作集

抖动:刚换出的页面马上要换入内存,刚换入的页面马上要换出内存

驻留集:分配给进程的物理块数。

工作集:在某段时间间隔内,进程实际访问页面的集合。

驻留集大小大于工作集大小。

3.2.6 内存映射文件

3.2.7 虚拟存储器性能影响因素

编辑此页
上次更新:
Prev
3.1 内存管理概念