第 3 章 内存管理
3.1 内存管理的概念
3.1.1 什么是内存
参考链接:https://blog.csdn.net/weixin_43914604/article/details/105662331
(1)什么是内存?有何作用?
(2)常用数量单位&内存地址
(3)逻辑地址(相对地址)vs物理地址(绝对地址)
(4)从写程序到程序运行:编译、链接、装入
编译:将高级语言翻译成机器语言
链接:将编译后形成的一组目标模块与所需库函数链接在一起,形成一个完整的装入模块
装入:将装入模块装入内存运行
(5)装入的三种方式
绝对装入、静态重定位、 动态重定位
①绝对装入
②静态重定位
③ 动态重定位
允许程序在内存中移动
需要重定位寄存器的支持
(6)链接的三种方式
静态链接、装入时动态链接、运行时动态链接
① 静态链接
在程序运行之前,将各目标模块和所需的库函数就打包成一个完整的可执行文件
②装入时动态链接
将各目标模块装入内存时,边装入边链接的方式
③运行时动态链接
在程序执行中需要该目标模块时,才对它进行链接。
3.1.2 内存管理的四个内容
参考链接:https://blog.csdn.net/weixin_43914604/article/details/105667165
主要负责四种管理:
- 内存空间的分配与回收
- 内存空间的扩充
- 地址转换
- 存储保护
(1)内存空间的分配与回收
(2)内存空间的扩展(实现虚拟性)
(3)地址转换
逻辑地址与物理地址的转换,也称为地址重定位
有三种地址重定位方式,即三种装入方式
(4)内存保护
保证各进程在各自内存空间内运行,互不干扰
两种内存保护方式:
- 在CPU中设置一对上、下限寄存器
- 采用重定位寄存器和界地址寄存器进行越界检查
3.1.3 覆盖技术与交换技术的思想
参考链接:https://blog.csdn.net/weixin_43914604/article/details/105713460
感觉不太重要
3.1.4 内存的分配与回收
参考链接:https://blog.csdn.net/weixin_43914604/article/details/105714392
内存的分配与回收是内存管理的内容之一
分配分 :连续分配和非连续分配
连续分配:指为用户进程分配的必须是一个连续的内存空间
连续分配又包含三种:单一连续分配、固定分区分配、动态分区分配
(1)单一连续分配
(2)固定分区分配
(3)动态分区分配(可变分区分配)
(1)系统要用怎样的数据结构记录内存的使用情况呢?
空闲分区表和空闲分区链
(2)当多个空闲分区都能满足要求时,应该选择哪个分区进行分配?
(4)外部碎片和内部碎片
3.1.5 动态分区分配的四种算法
参考链接:https://blog.csdn.net/weixin_43914604/article/details/105718027
首次适应算法、最佳适应算法、最坏适应算法、临近适应算法
(1)首次适应算法
(2)最佳适应算法
(3)最坏(大)适应算法
(4)临近适应算法
(5)四种算法归纳比较
3.1.6 分页存储
参考链接:https://blog.csdn.net/weixin_43914604/article/details/105907291
前面说内存分配分连续分配和非连续分配;连续分配又有三种方法:单一连续分配、固定分区分配和动态分区分配。其中动态分区分配又有四种算法。
这里讲非连续分配;非连续分配又分三种,这里讲第一种分页存储
(1)为什么学习分页存储?
(2)基本分页存储管理的思想
(3)分页存储的重要概念
(4)如何实现地址的转换
地址转换即逻辑地址到物理地址
(5)如何计算页号和页偏移量
(6)如何知道页面在内存中的起始地址?
3.1.7 分页存储管理:1.基本地址变换结构
参考链接:https://blog.csdn.net/weixin_43914604/article/details/105909842
(1)页表寄存器
(2)地址变换过程
一道例题加深印象:
3.1.8 分页存储管理:2.快表的地址变换结构
参考链接:https://blog.csdn.net/weixin_43914604/article/details/105929440
基本地址变换的改进版
(1)局部性原理
(2)快表(TLB)
引入快表后,地址变换的过程的文字描述:
(3)基本地址变换与块表地址变换的比较
3.2 虚拟内存管理
内存管理的第二个内容,内存空间的扩展,即虚拟内存
3.2.1 虚拟内存的基本概念
参考链接:https://blog.csdn.net/weixin_43914604/article/details/105977595
(1)传统存储管理的特征、缺点
(2)局部性原理
(3)虚拟内存的定义和特征
虚拟内存的三大主要特征:
- 多次性:无需在作业运行时一次性全部装入内存,而是允许被分成多次调入内存。
- 对换性:在作业运行时无需一直常驻内存,而是允许在作业运行过程中,将作业换入、换出。
- 虚拟性:从逻辑上扩充了内存的容量,使用户看到的内存容量远大于实际的容量。
(4)如何实现虚拟内存技术
需要建立在离散分配的内存管理方式基础上
第 4 章 文件管理
4.1 文件系统
4.1.1 文件管理的概念和功能
参考链接:https://blog.csdn.net/weixin_43914604/article/details/106276876
作为系统资源的管理者是操作系统的三大功能之一;
文件管理又是作为系统资源的管理者提供四大功能之一。
操作系统应该向上提供哪些功能
从上往下看,文件应该如何存放在外存?
4.1.2 文件逻辑结构
参考链接:https://blog.csdn.net/weixin_43914604/article/details/106277412
1.无结构文件
又称流式文件
2.有结构文件
又称记录式文件
根据每条记录的长度是否相等,又分定长记录和可变长记录两种
(1)顺序文件
(2)索引文件
(3)索引顺序文件
(4)多级索引顺序文件
将10^6个记录的文件分成100* 100* 10000
4.1.3 文件目录结构
参考链接:https://blog.csdn.net/weixin_43914604/article/details/106298565
文件控制块
可对目录的操作
(1)单级目录
(2)两级目录结构
(3)多级目录结构(树形目录结构)
绝对路径和相对路径
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2wntd4vg-1637133554643)(C:\Users\14051\AppData\Roaming\Typora\typora-user-images\image-20211117113610770.png)]
树形目录结构可以很方便地对文件进行分类,但是不便于实现文件的共享,于是提出了无环图目录结构。
(4)无环图目录结构
索引节点(FCB的改进)瘦身
4.1.4 文件物理结构
参考链接:https://blog.csdn.net/weixin_43914604/article/details/106303759
文件块、磁盘块
(1)连续分配
连续分配缺点:
(2)链接分配:隐式和显式
链接分配采取离散分配的方式,可以为文件分配离散的磁盘块,分为隐式链接和显式链接两种。
隐式链接
磁盘利用率高,不会有碎片问题。
显式链接
链接分配总结
(3)索引分配
下面的不总结了;文件管理好像面试不问
第5章 I/O管理
5.1 I/O管理概述
5.1.1 I/O设备简介
参考链接:https://blog.csdn.net/weixin_43914604/article/details/106136127
(1)什么是I/O设备?
将数据输入到计算机的设备,或者可以接收计算机输出的外部设备。属于计算机中的硬件部分。
(2)I/O设备分类
按使用特性分
- 人机交互类外部设备:鼠标、键盘
- 存储设备:移动硬盘,光盘
- 网络通信设备:调制解调器
按传输速率分
- 低速设备:鼠标,键盘
- 中速设备:激光打印机
- 高速设备:磁盘
按信息交换单位分
- 块设备:传输速率较高,可寻址,即对它可随机读写任一块。如磁盘传输数据的基本单位:磁盘块
- 字符设备:传输速率较慢,不可寻址,在输入输出时常采用中断驱动方式。如鼠标键盘输入字符
(3)I/O设备组成
I/O设备由**机械部件和电子部件(I/O控制器、设备控制器)**组成。
下面细讲I/O控制器。
5.1.2 I/O控制器
参考链接:https://blog.csdn.net/weixin_43914604/article/details/106136990
(1)四大功能
- 接收和识别CPU发出的命令
- 向CPU报告设备的状态
- 数据交换
- 地址识别
(2)三大组成
- CPU与控制器之间的接口:实现控制器与CPU之间的通信
- I/O逻辑:负责识别CPU发出的命令,并向设备发出命令
- 控制器与设备之间的接口:实现控制器与设备之间的通信
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZJOIV57y-1637133554645)(C:\Users\14051\AppData\Roaming\Typora\typora-user-images\image-20211117144409457.png)]
(3)两种寄存器编址方式
- 物理映像
- 独立编址
5.1.3 OS控制I/O设备的四种方式
参考链接:https://blog.csdn.net/weixin_43914604/article/details/106144829
- 程序直接控制方式
- 中断驱动方式
- DMA方式
- 通道控制方式
每种方式需要注意的问题:
1.完成一次读写操作的流程
2.CPU干预的频率
3.数据传送的单位
4.数据的流向
5.主要缺点和主要优点
5.1.4 I/O软件的层次结构
参考链接:https://blog.csdn.net/weixin_43914604/article/details/106147270
(1)I/O软件层次总览
5.2 I/O核心子系统
什么是I/O核心子系统?
I/O核心子系统 = 设备独立性软件 + 设备驱动程序 + 中断处理程序
5.2.4 缓冲区管理
参考链接:https://blog.csdn.net/weixin_43914604/article/details/106274269
[外链图片转存中…(img-1zYOKj9p-1637133554646)]
- 程序直接控制方式
- 中断驱动方式
- DMA方式
- 通道控制方式
每种方式需要注意的问题:
1.完成一次读写操作的流程
2.CPU干预的频率
3.数据传送的单位
4.数据的流向
5.主要缺点和主要优点