第 3 章 内存管理

3.1 内存管理的概念

3.1.1 什么是内存?进程的基本原理,深入指令理解其过程

0.思维导图

在这里插入图片描述

1.什么是内存?有何作用?

在这里插入图片描述

(1)存储单元
  • 关于存储单元有关内容在我写的组成原理笔记中有提到:存储单元
    在这里插入图片描述
(2)几个常用数量单位&内存地址

在这里插入图片描述

2.进程运行的基本原理

(1)指令的工作原理—操作码+若干参数(可能包含地址参数)
  • 从X=X+1大致看一下指令的执行过程
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
(2)逻辑地址(相对地址)vs物理地址(绝对地址)

在这里插入图片描述

(3)从写程序到程序运行—编译、链接、装入

在这里插入图片描述

(4)装入模块装入内存

不修改装入模块中的指令地址就直接装入内存的话:
在这里插入图片描述
在这里插入图片描述

(5)装入的三种方式
①绝对装入

在这里插入图片描述

②静态重定位

在这里插入图片描述

③ 动态重定位

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(6)链接的三种方式
① 静态链接

在这里插入图片描述

②装入时动态链接

在这里插入图片描述

③运行时动态链接

在这里插入图片描述

3.1.2 内存管理管些什么?

0.思维导图

在这里插入图片描述

1.内存空间的分配与回收

在这里插入图片描述

2.内存空间的扩展(实现虚拟性)

在这里插入图片描述

3.地址转换

在这里插入图片描述

三种方式

在这里插入图片描述

4.内存保护

在这里插入图片描述

两种方式

在这里插入图片描述
在这里插入图片描述

3.1.3 覆盖技术与交换技术的思想

0.思维导图

在这里插入图片描述
在这里插入图片描述

1.覆盖技术

在这里插入图片描述
在这里插入图片描述

3.交换技术

在这里插入图片描述

  • 回忆复习一下进程调度
    在这里插入图片描述
    在这里插入图片描述

3.1.4 内存的分配与 回收

0.思维导图

在这里插入图片描述
在这里插入图片描述

1.单一连续分配

在这里插入图片描述

2.固定分区分配

在这里插入图片描述

(1)分区说明表

在这里插入图片描述

3.动态分区分配(可变分区分配)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(1)系统要用怎样的数据结构记录内存的使用情况呢?

在这里插入图片描述

(2)当多个空闲分区都能满足要求时,应该选择哪个分区进行分配?

在这里插入图片描述

(3)如何进行分区的分配和回收操作?

如何分配?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如何回收?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.内部碎片与外部碎片

在这里插入图片描述
在这里插入图片描述

3.1.5 动态分区分配的四种算法(首次适应算法、最佳适应算法、最坏适应算法、临近适应算法)

0.思维导图

在这里插入图片描述

1.首次适应算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.最佳适应算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.最坏(大)适应算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.临近适应算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.四种算法归纳比较

在这里插入图片描述

3.1.6 分页存储(页号、页偏移量等)

0.思维导图

在这里插入图片描述

在这里插入图片描述

1.为什么学习分页存储?

在这里插入图片描述

2.基本分页存储管理的思想

在这里插入图片描述

3.分页存储管理的重要概念

在这里插入图片描述

4.如何实现地址的转换

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

如何计算页号和页偏移量

在这里插入图片描述
为什么页面大小一般设为2的整数次幂?
在这里插入图片描述
在这里插入图片描述

分页存储的逻辑结构

在这里插入图片描述

如何知道页面在内存中的起始地址?
  • 这里引入一个新的概念:页表
    在这里插入图片描述
    在这里插入图片描述

3.1.7 分页存储管理的基本地址变换结构

0.思维导图

在这里插入图片描述

在这里插入图片描述

1.页表寄存器

在这里插入图片描述

地址变换过程

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
一道例题加深印象:
在这里插入图片描述

2.对页表项大小的进一步讨论

在这里插入图片描述

3.1.8 快表的地址变换结构

0.思维导图

1.局部性原理引入快表机制

在这里插入图片描述

2.快表(TLB)

在这里插入图片描述

一个例图了解基于快表的地址变换结构

在这里插入图片描述
引入快表后,地址变换的过程的文字描述:
在这里插入图片描述

3.基本地址变换与快表地址变换的比较

在这里插入图片描述

3.1.9 二级页表的原理和地址结构

0.思维导图

在这里插入图片描述

1.为什么引入二级页表?

因为单级页表存在一些问题,所以引入二级页表和多级页表,有两个问题:

在这里插入图片描述
在这里插入图片描述
上面提到了这两个问题,那么总结一下,并提出解决思想,引入二级页表的概念。
在这里插入图片描述

2.二级页表的原理和地址结构

  • 对页表再次分组
    在这里插入图片描述
  • 二级页表的地址结构及对应关系
    在这里插入图片描述

3.如何实现二级页表的地址变换?

在这里插入图片描述
上面的部分我们解决了问题一,接下来是问题二,这里简单叙述一下,后面的文章会继续深入剖析。
在这里插入图片描述

4.几个小细节

在这里插入图片描述

3.1.10 基本分段存储管理(段表、地址变换、信息共享)

0.思维导图

在这里插入图片描述

在这里插入图片描述

1.什么是分段?

在这里插入图片描述

分段的逻辑地址结构

在这里插入图片描述

2.段表

在这里插入图片描述

3.地址变换

在这里插入图片描述

在这里插入图片描述

4.分段、分页管理的对比

在这里插入图片描述
在这里插入图片描述

分段实现信息共享共享

在这里插入图片描述

为什么分页不方便实现信息共享和保护?

在这里插入图片描述

3.1.11 段页式存储管理(段表、页表、地址转换)

0.思维导图

在这里插入图片描述
在这里插入图片描述

1.分页、分段的优缺点分析

在这里插入图片描述
在这里插入图片描述

2.分段+分页=段页式管理

在这里插入图片描述

段页式管理的逻辑地址结构

在这里插入图片描述

段页式存储的段表、页表

在这里插入图片描述

3.段页式管理的地址转换过程

在这里插入图片描述

3.2 虚拟内存管理

3.2.1 虚拟内存的基本概念(局部性原理、高速缓存、虚拟内存的实现)

0.思维导图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.传统存储管理的特征、缺点

在这里插入图片描述

2.局部性原理

在这里插入图片描述

3.虚拟内存的定义和特征

在这里插入图片描述
在这里插入图片描述

4.如何实现虚拟内存技术

在这里插入图片描述

3.2.2 请求分页管理方式(请求页表、缺页中断机构、地址变换机构)

0.思维导图

在这里插入图片描述

1.知识总览

在这里插入图片描述

2.页表机制—请求页表与基本页表的区别

在这里插入图片描述

3.缺页中断机构

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.地址变换机构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.3 页面置换算法(最佳置换算法、先进先出置换算法、最近最久未使用置换算法、普通时钟置换算法、改造型时钟置换算法)

0.思维导图

在这里插入图片描述
在这里插入图片描述

1.最佳置换算法—OPT

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.先进先出置换算法—FIFO

在这里插入图片描述
在这里插入图片描述

3.最近最久未使用置换算法—LRU

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4.时钟置换算法—CLOCK

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.改造型时钟置换算法

只需一轮:
在这里插入图片描述
需要两轮:在这里插入图片描述
需要三轮:在这里插入图片描述
在这里插入图片描述
需要四轮:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.4 页面分配策略(驻留集、页面分配、置换策略、抖动现象、工作集)

0.思维导图

在这里插入图片描述

在这里插入图片描述

1.驻留集

在这里插入图片描述

2.页面分配、置换策略

固定分配局部置换、可变分配局部置换、可变分配全局置换

在这里插入图片描述
在这里插入图片描述

3.何时调入页面?

在这里插入图片描述

4.从何处调页?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.抖动(颠簸)现象

在这里插入图片描述

6.工作集

在这里插入图片描述

第 4 章 文件管理

4.1 文件系统

4.1.1 初识文件管理概念和功能

0.思维导图

在这里插入图片描述
在这里插入图片描述

1.文件的属性

在这里插入图片描述
在这里插入图片描述

2.文件内部的数据如何组织起来?

在这里插入图片描述
在这里插入图片描述

3.文件之间应该如何组织起来?

在这里插入图片描述

4.操作系统应该向上提供哪些功能?

在这里插入图片描述
在这里插入图片描述

5.从上往下看,文件应该如何存放在外存?

在这里插入图片描述
在这里插入图片描述

6.其他需要由操作系统实现的文件管理功能

在这里插入图片描述

4.1.2 文件逻辑结构(顺序文件、索引文件、索引顺序文件、多级索引顺序文件)关于数据库的索引如聚簇索引可以看一下索引文件例题的解析,感觉还是可以收获到东西的

0.思维导图

在这里插入图片描述
在这里插入图片描述

1.无结构文件

在这里插入图片描述

2.有结构文件

在这里插入图片描述
定长记录:
在这里插入图片描述
不定长记录:
在这里插入图片描述

有结构文件的逻辑结构

在这里插入图片描述

顺序文件

在这里插入图片描述
在这里插入图片描述

索引文件
  • 不经意间让我想起了数据库的索引,聚簇索引和唯一索引等,有了更进一步的理解,而且知道了它的时间空间效率。
    在这里插入图片描述
索引顺序文件

在这里插入图片描述
索引顺序文件的效率分析:
在这里插入图片描述

多级索引顺序文件

在这里插入图片描述

4.1.3 文件目录结构(单级-两级-多级-无环图)、索引节点FCB瘦身

0.思维导图

在这里插入图片描述
在这里插入图片描述

1.文件控制块

在这里插入图片描述
在这里插入图片描述

对目录的操作

在这里插入图片描述

2.单级目录结构

在这里插入图片描述

3.两级目录结构

在这里插入图片描述

4.多级目录结构(树形目录结构)

在这里插入图片描述
在这里插入图片描述
无环图目录结构解决文件共享
在这里插入图片描述

5.无环图目录结构

在这里插入图片描述
在这里插入图片描述

6.索引节点(FCB的改进)瘦身

在这里插入图片描述
在这里插入图片描述

4.1.4 文件的物理结构(连续分配、链接分配[隐式-显式]、索引分配[链接方案-多层索引-混合索引])

0.思维导图

在这里插入图片描述
在这里插入图片描述

1.文件块、磁盘块

在这里插入图片描述
在这里插入图片描述

2.连续分配

连续分配优点:
在这里插入图片描述
在这里插入图片描述
连续分配缺点:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.链接分配

在这里插入图片描述

隐式链接

在这里插入图片描述
在这里插入图片描述

显式链接

在这里插入图片描述
在这里插入图片描述

链接分配总结

在这里插入图片描述

4.索引分配

在这里插入图片描述
如何实现逻辑块号到物理块号的转换?
在这里插入图片描述
数据太大,一个索引表装不下那么多的映射怎么办?
在这里插入图片描述

链接方案

在这里插入图片描述

多层索引

在这里插入图片描述
在这里插入图片描述

混合索引

在这里插入图片描述

索引分配总结

在这里插入图片描述

5.文件物理结构分配总结

在这里插入图片描述

4.1.5 文件管理空闲磁盘块的几种算法(空闲表法、空闲链表法、位示图法、成组链接法)

0.思维导图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.存储空间的划分与初始化

在这里插入图片描述

2.空闲表法

如何分配?
在这里插入图片描述

在这里插入图片描述
如何回收?
在这里插入图片描述
在这里插入图片描述

3.空闲链表法

在这里插入图片描述

空闲盘块链

在这里插入图片描述

空闲盘区链

在这里插入图片描述

4.位示图法

在这里插入图片描述
如何分配与回收?

在这里插入图片描述

5.成组链接法

在这里插入图片描述
超级块的作用
在这里插入图片描述
如何分配?
需要1个空闲磁盘块
在这里插入图片描述
在这里插入图片描述
需要100个空心啊磁盘块
在这里插入图片描述
在这里插入图片描述
如何回收?
在这里插入图片描述
在这里插入图片描述
第二种情况,第一组已满
在这里插入图片描述
在这里插入图片描述

4.1.6 文件的基本操作原理(创建、删除、打开、关闭、读-写)

0.思维导图

在这里插入图片描述
在这里插入图片描述

1.创建文件

在这里插入图片描述

2.删除文件

在这里插入图片描述

3.打开文件

在这里插入图片描述
打开文件表有两种:
在这里插入图片描述

4.关闭文件

在这里插入图片描述

5.读文件

在这里插入图片描述

6.写文件

在这里插入图片描述

4.1.7 文件共享(索引节点-硬链接、符号链接-软链接)

0.思维导图

在这里插入图片描述
在这里插入图片描述

1.基于索引结点的共享方式(硬链接)

在这里插入图片描述

2.基于符号链的共享方式(软链接)

在这里插入图片描述
例子
在这里插入图片描述
在这里插入图片描述

共享的文件不存在时
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.1.8 文件保护(口令保护、加密保护、访问控制)

0.思维导图

在这里插入图片描述

1.口令保护

在这里插入图片描述

2.加密保护

在这里插入图片描述

3.访问控制

在这里插入图片描述
在这里插入图片描述

windows的访问控制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.1.9 文件系统的层次结构

0.知识总览

在这里插入图片描述

1.举个例子

用一个例子来辅助记忆文件系统的层次结构:
假设某用户请求删除文件“D:/工作目录/学生信息..xlsx”的最后100条记录。

  1. 用户需要通过操作系统提供的接口发出上述请求――用户接口

  2. 由于用户提供的是文件的存放路径,因此需要操作系统一层一层地查找目录,找到对应的目录项――文件目录系统

  3. 不同的用户对文件有不同的操作权限,因此为了保证安全,需要检查用户是否有访问权限―一存取控制模块(存取控制验证层)

  4. 验证了用户的访问权限之后,需要把用户提供的“记录号”转变为对应的逻辑地址――逻辑文件系统与文件信息缓冲区

  5. 知道了目标记录对应的逻辑地址后,还需要转换成实际的物理地址――物理文件系统

  6. 要删除这条记录,必定要对磁盘设备发出请求――设备管理程序模块

  7. 删除这些记录后,会有一些盘块空闲,因此要将这些空闲盘块回收――辅助分配模块

4.2 磁盘组织与管理

4.2.1 磁盘的结构(磁盘、磁道、扇区、盘面、柱面、磁头)

0.思维导图

在这里插入图片描述

1.磁盘、磁道、扇区

在这里插入图片描述

2.如何在磁盘中读/写数据

在这里插入图片描述

3.盘面、柱面

在这里插入图片描述

4.磁盘的分类

按磁头是否可移动分类

在这里插入图片描述

按盘片是否可更换分类

在这里插入图片描述

4.2.2 磁盘调度算法(FCFS、SSTF、SCAN、LOOK、S-SCAN、C-LOOK)

0.思维导图

在这里插入图片描述
在这里插入图片描述

1.一次磁盘读/写操作需要的时间

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.先来先服务(FCFS)

在这里插入图片描述

3.最短寻找时间优先算法(SSTF)

在这里插入图片描述

4.扫描算法(SCAN)

在这里插入图片描述

5.LOOK算法

在这里插入图片描述

6.循环扫描算法(S-SCAN)

在这里插入图片描述

7.C-LOOK算法

在这里插入图片描述

4.2.3 减少磁盘延迟时间的方法(交替编号、错位命名)

0.思维导图

在这里插入图片描述

1.前情回顾

在这里插入图片描述

2.交替编号

在这里插入图片描述

3.磁盘地址结构的设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.错位命名

在这里插入图片描述
在这里插入图片描述

4.2.4 磁盘管理(磁盘初始化、引导块、坏块的管理)

0.思维导图

在这里插入图片描述

1.磁盘初始化

在这里插入图片描述

2.引导块

在这里插入图片描述
在这里插入图片描述

3.坏块的管理

在这里插入图片描述