auto commit

This commit is contained in:
CyC2018
2020-11-17 00:32:18 +08:00
parent f5ad47b470
commit 7e61fc1360
380 changed files with 2371 additions and 46715 deletions

View File

@ -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=0M=1而不是被频繁使用的干净页面R=1M=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>