操作系统基础2
第 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条记录。
用户需要通过操作系统提供的接口发出上述请求――用户接口
由于用户提供的是文件的存放路径,因此需要操作系统一层一层地查找目录,找到对应的目录项――文件目录系统
不同的用户对文件有不同的操作权限,因此为了保证安全,需要检查用户是否有访问权限―一存取控制模块(存取控制验证层)
验证了用户的访问权限之后,需要把用户提供的“记录号”转变为对应的逻辑地址――逻辑文件系统与文件信息缓冲区
知道了目标记录对应的逻辑地址后,还需要转换成实际的物理地址――物理文件系统
要删除这条记录,必定要对磁盘设备发出请求――设备管理程序模块
删除这些记录后,会有一些盘块空闲,因此要将这些空闲盘块回收――辅助分配模块
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.坏块的管理
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 吕小医's BLOG!