auto commit
This commit is contained in:
@ -1,20 +1,22 @@
|
||||
# 计算机操作系统 - 内存管理
|
||||
<!-- GFM-TOC -->
|
||||
* [虚拟内存](#虚拟内存)
|
||||
* [分页系统地址映射](#分页系统地址映射)
|
||||
* [页面置换算法](#页面置换算法)
|
||||
* [1. 最佳](#1-最佳)
|
||||
* [2. 最近最久未使用](#2-最近最久未使用)
|
||||
* [3. 最近未使用](#3-最近未使用)
|
||||
* [4. 先进先出](#4-先进先出)
|
||||
* [5. 第二次机会算法](#5-第二次机会算法)
|
||||
* [6. 时钟](#6-时钟)
|
||||
* [分段](#分段)
|
||||
* [段页式](#段页式)
|
||||
* [分页与分段的比较](#分页与分段的比较)
|
||||
* [计算机操作系统 - 内存管理](#计算机操作系统---内存管理)
|
||||
* [虚拟内存](#虚拟内存)
|
||||
* [分页系统地址映射](#分页系统地址映射)
|
||||
* [页面置换算法](#页面置换算法)
|
||||
* [1. 最佳](#1-最佳)
|
||||
* [2. 最近最久未使用](#2-最近最久未使用)
|
||||
* [3. 最近未使用](#3-最近未使用)
|
||||
* [4. 先进先出](#4-先进先出)
|
||||
* [5. 第二次机会算法](#5-第二次机会算法)
|
||||
* [6. 时钟](#6-时钟)
|
||||
* [分段](#分段)
|
||||
* [段页式](#段页式)
|
||||
* [分页与分段的比较](#分页与分段的比较)
|
||||
<!-- GFM-TOC -->
|
||||
|
||||
|
||||
# 虚拟内存
|
||||
## 虚拟内存
|
||||
|
||||
虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。
|
||||
|
||||
@ -24,7 +26,7 @@
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/7b281b1e-0595-402b-ae35-8c91084c33c1.png"/> </div><br>
|
||||
|
||||
# 分页系统地址映射
|
||||
## 分页系统地址映射
|
||||
|
||||
内存管理单元(MMU)管理着地址空间和物理内存的转换,其中的页表(Page table)存储着页(程序地址空间)和页框(物理内存空间)的映射表。
|
||||
|
||||
@ -34,7 +36,7 @@
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/cf4386a1-58c9-4eca-a17f-e12b1e9770eb.png" width="500"/> </div><br>
|
||||
|
||||
# 页面置换算法
|
||||
## 页面置换算法
|
||||
|
||||
在程序运行过程中,如果要访问的页面不在内存中,就发生缺页中断从而将该页调入内存中。此时如果内存已无空闲空间,系统必须从内存中调出一个页面到磁盘对换区中来腾出空间。
|
||||
|
||||
@ -42,9 +44,9 @@
|
||||
|
||||
页面置换算法的主要目标是使页面置换频率最低(也可以说缺页率最低)。
|
||||
|
||||
## 1. 最佳
|
||||
### 1. 最佳
|
||||
|
||||
> OPT, Optimal replacement algorithm
|
||||
\> OPT, Optimal replacement algorithm
|
||||
|
||||
所选择的被换出的页面将是最长时间内不再被访问,通常可以保证获得最低的缺页率。
|
||||
|
||||
@ -58,9 +60,9 @@
|
||||
|
||||
开始运行时,先将 7, 0, 1 三个页面装入内存。当进程要访问页面 2 时,产生缺页中断,会将页面 7 换出,因为页面 7 再次被访问的时间最长。
|
||||
|
||||
## 2. 最近最久未使用
|
||||
### 2. 最近最久未使用
|
||||
|
||||
> LRU, Least Recently Used
|
||||
\> LRU, Least Recently Used
|
||||
|
||||
虽然无法知道将来要使用的页面情况,但是可以知道过去使用页面的情况。LRU 将最近最久未使用的页面换出。
|
||||
|
||||
@ -73,9 +75,9 @@
|
||||
```
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/eb859228-c0f2-4bce-910d-d9f76929352b.png"/> </div><br>
|
||||
## 3. 最近未使用
|
||||
### 3. 最近未使用
|
||||
|
||||
> NRU, Not Recently Used
|
||||
\> NRU, Not Recently Used
|
||||
|
||||
每个页面都有两个状态位:R 与 M,当页面被访问时设置页面的 R=1,当页面被修改时设置 M=1。其中 R 位会定时被清零。可以将页面分成以下四类:
|
||||
|
||||
@ -88,15 +90,15 @@
|
||||
|
||||
NRU 优先换出已经被修改的脏页面(R=0,M=1),而不是被频繁使用的干净页面(R=1,M=0)。
|
||||
|
||||
## 4. 先进先出
|
||||
### 4. 先进先出
|
||||
|
||||
> FIFO, First In First Out
|
||||
\> FIFO, First In First Out
|
||||
|
||||
选择换出的页面是最先进入的页面。
|
||||
|
||||
该算法会将那些经常被访问的页面换出,导致缺页率升高。
|
||||
|
||||
## 5. 第二次机会算法
|
||||
### 5. 第二次机会算法
|
||||
|
||||
FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问题,对该算法做一个简单的修改:
|
||||
|
||||
@ -104,15 +106,15 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/ecf8ad5d-5403-48b9-b6e7-f2e20ffe8fca.png"/> </div><br>
|
||||
|
||||
## 6. 时钟
|
||||
### 6. 时钟
|
||||
|
||||
> Clock
|
||||
\> Clock
|
||||
|
||||
第二次机会算法需要在链表中移动页面,降低了效率。时钟算法使用环形链表将页面连接起来,再使用一个指针指向最老的页面。
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/5f5ef0b6-98ea-497c-a007-f6c55288eab1.png"/> </div><br>
|
||||
|
||||
# 分段
|
||||
## 分段
|
||||
|
||||
虚拟内存采用的是分页技术,也就是将地址空间划分成固定大小的页,每一页再与内存进行映射。
|
||||
|
||||
@ -124,11 +126,11 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/e0900bb2-220a-43b7-9aa9-1d5cd55ff56e.png"/> </div><br>
|
||||
|
||||
# 段页式
|
||||
## 段页式
|
||||
|
||||
程序的地址空间划分成多个拥有独立地址空间的段,每个段上的地址空间划分成大小相同的页。这样既拥有分段系统的共享和保护,又拥有分页系统的虚拟内存功能。
|
||||
|
||||
# 分页与分段的比较
|
||||
## 分页与分段的比较
|
||||
|
||||
- 对程序员的透明性:分页透明,但是分段需要程序员显式划分每个段。
|
||||
|
||||
@ -137,10 +139,3 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问
|
||||
- 大小是否可以改变:页的大小不可变,段的大小可以动态改变。
|
||||
|
||||
- 出现的原因:分页主要用于实现虚拟内存,从而获得更大的地址空间;分段主要是为了使程序和数据可以被划分为逻辑上独立的地址空间并且有助于共享和保护。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div align="center"><img width="320px" src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/githubio/公众号二维码-2.png"></img></div>
|
||||
|
Reference in New Issue
Block a user