第九章-Memory Management
背景
基本硬件
- 基地址寄存器
- 界限地址寄存器
地址绑定
按照不同的时段进行绑定分为以下三种:
- 编译时:生成绝对地址
- 加载时:生成可重定位代码,静态重定位
- 执行时:需要特定的硬件完成,动态重定位。
逻辑/物理地址空间
MMC:内存管理单元,一个硬件设备,完成逻辑地址到物理地址的映射。
基地址寄存器:重定位寄存器
动态加载
即,一个子程序只有再调用的时候才被加载。
动态链接与共享库
可以看到动态链接在图的左下角,即二进制镜像对每一个库程序的引用都有一个存根。
第一次使用时,无论在或不在,最后都会留下一个子程序地址。当下次在执行,可通过子程序代码直接执行。
交换
如图所示:
有时候也称滚入和滚出。
连续内存分配
内存映射和保护
前面已经讲过,简单来说就是通过基地址寄存器和界限寄存器。
内存分配
方法一:
多分区方法:将内存分为固定的大小的分区,一个进程一个分区(不再使用)
方法二:
可变分区:
孔:一大块可用内存
动态分配方法(掌握,会应用):
- 首次适应
- 最好适应
- 最差适应
碎片问题:会产生外部碎片问题
解决外碎片方法:紧缩;允许分配空间非连续(引出分页和分段)。
分页
基本方法
这一部分就是计组的知识...
物理内存分块,叫帧;逻辑内存分块,叫页;
p称为页号;d称为偏移
For given logical address space 2^m and page size 2^n
p=m-n;d=n
为了提升查找效率,增加了TLB(联想寄存器)
硬件支持
硬件的工作原理如下:
不再赘述。PCB(program control block)
有关逻辑地址到物理地址的转化要学会,就是计组作业那些东西,不再赘述
保护
Valid-invalid bit(有效-无效位)来表明页是否在进程的逻辑地址空间内,即是不是合法的页。这样子进行了保护。
可以注意到一件事情,即最后一个页存在内碎片
两级页表机制
这一部分完全就是计组的知识了,简单给个图激活一下记忆即可
同理,可以推至多级页表。
Hashed Page Tables
Inverted Page Table
按照物理内存建表,增加了查找表的时间。
Shared Pages
特点
n 没有外碎片,每个内碎片不超过页大小。n 一个程序不必连续存放。n 程序全部装入内存。
分段
基本方法
一图胜前言!!
硬件实现
特点
没有内碎片,外碎片可以通过内存紧缩来消除。
便于改变进程占用空间的大小。
进程全部装入内存
分页VS分段
第十章-Virtual Memory
背景
常规存储器特征:一次性;驻留性;
局部性原理:时间局部性,空间局部性
按需调页
页面调入策略:预调页(准确率低),请求调页
性能评价
假设p为页错误的概率,有效访问时间为
有效访问时间 = (1-p)*内存访问时间 + p*页错误时间
页面置换算法
为什么需要页面置换?发生了缺页,但内存中没用空闲的块,则需要将一个页面置换出来,把需要的页面调入。
算法:
算法都要掌握,但我不再给出算法的具体步骤!
- 最佳算法(OPT)
- 先进先出算法(FIFO):可能产生Belady异常(更多的页框会产生更多的缺页)
- 最近最久未使用算法(LRU)
- LRU近似算法
LRU近似算法有:
- 附加引用位算法
- 二次机会算法
- 增强型二次机会算法
基于计数的页置换算法:
- 最不经常使用页置换算法
- 最常使用页置换算法
帧分配
最少数量
n Each process needs minimum number of pages ( 每个进程所需要的最少的页的数目).n 保证进程正常运行所需的最小物理块数n 若系统为某进程所分配的物理块数少于此值时,进程将无法正常运行 ( 频繁发生缺页 )n 这个数目取决于指令的格式、功能和寻址方式。
分配算法
- 平均分配
- 比例分配
- 优先级分配
全局置换vs局部置换
全局置换:在所有帧中选择一个置换
局部置换:只能在被分配的帧中选择一个置换。
全局置换不能控制页错误率,但是可以使得系统有更好的吞吐量。
局部置换可以控制调页的执行时间,但是无法使用别的进度不常用的内存。
颠簸-Trashing
调入又调出:刚被换出的页很快又被访问,需重新调入,导致系统频繁地交换页面,以致大部分CPU时间花费在完成页面置换的工作上。
为了防止颠簸,应该给进程提供足够多的帧
Why does thrashing occur ?( 为什么颠簸会发生)
size of locality > total memory size
使用工作集合窗口
D = S WSS i º total demand frames (总需求)i f D > m (可用帧的数量)=> ThrashingPolicy if D > m, then suspend one of the processes.
第十一章-File-System
基本概念
文件系统
用户角度:实现按名存取
系统角度:文件系统是对文件存储器的存储空间进行组织、分配和回收,负责文件的存储、检索、共享和保护。
作用:
- 提供对文件的各种操作,实现按名存取
- 提供合适的访问方式
- 提供目录管理和操作
- 实现文件的共享、保护
- 统一管理文件的存储空间,实现存储空间的分配和回收
- 实现逻辑文件与物理文件间的转换
文件
文件:记录在外存上的具有名字的相关信息的集合
文件属性:
文件名、类型、大小、位置、保护(读取、改写权限)、时间…
属性信息放在目录中存储在硬盘里
文件系统结构
文件控制块FCB:由一个文件的相关信息组成的存储结构
文件结构与存储设备
角度
对于文件而言,用户和文件系统角度不一样:
用户:使用角度
文件系统:存储、检索的角度。
文件逻辑/物理结构
逻辑结构:用户对文件的组织结构
物理结构:文件在外存储器上的存储结构
文件的逻辑结构存储
- 无结构的流式文件
- 有结构的记录式文件。
记录文件的结构有:
- 顺序
- 索引
- 索引顺序
访问文件的方式有:
- 顺序访问
- 随机存取
文件的物理结构
1、顺序分配:产生外碎片。
从逻辑地址映射到物理地址:
逻辑地址/块大小=块号 逻辑地址%块大小=偏移
2、链式分配:无外碎片,但查询效率慢、易出错等。
改进措施:使用文件分配表FAT。
3、索引结构
引出了多级索引结构。
学会计算多级索引的最大文件容量
目录结构
目录概念
目录:一个包含着所有文件信息的节点的集合
目录中的信息:名称、类型、地址、当前长度、最大长度、最后访问时间、数据最后更新时间、所有者ID、保护信息
文件控制块FCB
用于描述和控制文件的数据结构,它至少要包括文件名和存放文件的盘物理地址
文件控制块的有序集合称为文件目录,即一个文件控制块FCB就是一个文件目录项。
FCB包含:
- 文件基本信息:文件名,用户名,文件地址,文件长度,文件逻辑结构,物理结构
- 存取控制信息:文件存取权限
- 管理信息:共享计数,文件的建立日期,保存期限,最后修改日期,最后访问日期
文件目录VS目录文件
- 文件目录:文件控制块的有序集合
- 目录文件:为了实现对文件目录的管理,将文件目录以文件的形式保存在外存,这个文件就叫目录文件
目录的逻辑结构
- 单级目录
- 二级目录
- 无环图结构目录
- 有环图结构目录
文件操作
建立文件:
建立文件的FCB
分配必要的外存空间
在文件目录中为之建立一个目录项,目录项中记录新文件的文件名及其在外存的地址等属性,返回一个文件描述符。
删除文件:
从目录中找到要删除文件的目录项
使之成为空闲目录项
回收该文件所占用的存储空间
读文件 :
查找目录,找到指定文件的目录项,从中得到被读文件在外存的地址
从外存将数据读入内存
写文件 :
查找目录,找到指定文件的目录项
利用目录中的文件指针将信息写入文件
打开文件: 为了避免每次访问文件时都要从外存中查找文件目录,系统提供了打开文件命令。
将待访问文件的目录信息读入内存活动文件表中,建立起用户和文件的联系。
在有些系统中,也可以通过读命令隐含地向系统提出打开文件的要求。若在读写命令中不包含打开文件功能,则在使用文件之前,必须先打开文件。
关闭文件:
撤消主存中有关该文件的目录信息,切断用户与该文件的联系;
若在文件打开期间,该文件作过某种修改,则应将其写回辅存。
Free-Space Management
位图法
用一串二进制位反映磁盘空间中分配使用情况, 每个物理块对应一位, 分配物理块为0,否则为1。 申请物理块时,可以在位示图中查找为1的位,返回对应物理块号; 归还时;将对应位置1。
位图的大小由磁盘空间的大小缺点,保存在主存中
空闲块表
将所有空闲块记录在一个表中,即空闲块表,有两项:该空闲区的第一个盘块号、该区的空闲盘块总数
空闲块链表
把所有空闲块链成一个链. 扩展:成组链接法
成组链接法
文件系统实现
第十二章-Secondary-Storage
磁盘结构(略)
计组的知识点
磁盘访问速度(略)
计组的知识点
磁盘调度
- 先来先服务FCFS
-
最短寻道时间优先SSTF
- SCAN
- C-SCAN
- LOOK
- C-LOOK
磁盘高速缓存
就是在内存开了一块存储空间,用来充当缓冲,提升磁盘的读取效率。
交换空间管理
交换空间管理 交换空间管理追求的是访问速度,而不是存储效率。
磁盘可靠性
RAID技术:将多个物理磁盘通过一定的逻辑关系集合起来,成为一个大容量的虚拟磁盘。
练习
练习一
105-110-170-180-195-68-45-35-12
练习二
第十三章-I/O Systems
我觉得这章不管是PPT还是MOOC讲的就是依托..非常不清楚明了,让我猜谜语
I/O Devices
按信息交换的单位分类
块设备
用于存储信息。 由于信息的存取总是以数据块为单位,故而得名。 典型的块设备是磁盘,每个盘块的大小 为 512 B~4 KB 。磁盘设备的基本特征是其传输速率较高,通常每秒钟为几兆位;另一特征是可寻址 ,即对它可随机地读 / 写任一块;此外,磁盘设备的 I/O 常采用DMA 方式。字符设备
用于数据的输入和输出。 其基本单位是字符, 故称为字符设备。
时钟:既不是块设备也不是字符设备
按设备的共享属性分类
独占设备:在一段时间内只能有一个进程使用的设备,一般为低速I/O设备(如打印机,磁带等)共享设备:在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用率高(如硬盘)
虚拟设备:通过虚拟技术把一台独占设备变换为若干台逻辑设备,可供多个用户使用
Controller
每个 I/O 设备通过设备控制器与计算机的数据总线和地址总线相连接。
设备控制器是 CPU 与 I/O 设备间的接口,它接收从 CPU 发来的命令,并去控制 I/O 设备工作。接收和识别命令数据交换设备状态的了解和报告地址识别数据缓冲差错控制
I/O通道
定义:通道是独立于CPU的专门负责数据I/O传输工作的处理机,对外部设备实现统一管理,代替CPU对I/O操作进行控制,从而使I/O操作可与CPU并行操作。 通道可以执行通道程序.
目的:建立独立的I/O操作,不仅使数据的传送独立于CPU,而且使有关对I/O操作的组织、管理及其结束处理也尽量独立,即把CPU从繁杂的I/O任务中解脱出来,提高CPU与设备,设备与设备之间的并行工作能力.
Bus
公用的信号或数据传输通道
I/O控制方式
- 程序I/O方式(轮询Polling)
- 中断驱动I/O
- DMA控制方式
- I/O通道控制方式
缓冲技术
缓冲技术的目的:
- 缓和CPU与I/O设备间速度不匹配的矛盾
- 减少对CPU的中断频率,放宽对中断响应时间的限制
- 提高CPU和I/O设备之间的并行性
缓冲形式:
- 单缓冲
- 双缓冲
- 循环缓冲
缓冲池
I/O软件
设备独立软件
设备分配的数据结构
设备控制表DCT
控制器控制表COCT
通道控制表CHCT
系统设备表 SDT
设备分配需考虑:
独占设备:静态分配(运行前完成分配)、动态分配(运行时进行分配)
分时式共享设备:同时分配多个进程使用。
把独占设备改造成虚拟设备=>设备独立性
设备独立性
目的:为了提高OS的可适应性和可扩展性。
基本含义: 应用程序独立于具体使用的物理设备。
为了实现设备独立性而引入了逻辑设备和物理设备这两个概念
应用程序使用逻辑设备名称来请求使用设备
系统使用物理设备名
系统需将逻辑设备名称转换为某物理设备
Spooling技术
用于将一台独占设备改造成共享设备的一种行之有效的技术
利用多道程序中的一道程序来模拟脱机输入时的外围控制机的功能,把低速I/O设备上的数据传送到高速磁盘上;
用另一道程序来模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上
这样,便在主机的直接控制下,实现脱机输入、输出功能。
此时的外围操作与CPU对数据的处理同时进行,这种在联机情况下实现的同时外围操作称为SPOOLing (Simultaneous Peripheral Operations On-Line),或称假脱机操作。
组成
SPOOLing系统是对脱机输入、输出工作的模拟,它必须有高速随机外存的支持,这通常是采用磁盘。
SPOOLing系统组成如下图:
输入井和输出井;
输入缓冲和输出缓冲;
输入进程和输出进程。
特点
提高了I/O速度
将独占设备改造为共享设备
实现了虚拟设备功能
设备驱动程序
操作系统能够以统一的方式对待不同的I/O设备,因为具体的差别被称为设备驱动程序 的内核模块所封装。与设备相关的代码放在设备驱动程序中。应为每一类设备配置一种驱动程序
设备驱动程序实际是处理或操作硬件控制器的软件
中断处理程序
在 I/O 时,设备控制器如果准备好服务会向CPU发出一中断请求。
这些中断表示输入数据已有,或输出已完成,或已检测到错误。
CPU响应后便转向中断处理程序
无论是哪种I/O设备,其中断处理程序的处理过程都包含了以下几个步骤
唤醒被阻塞的驱动程序进程;
保护被中断进程的CPU环境;
分析中断原因、转入相应的设备中断处理程序;
进行中断处理;
恢复被中断进程的现场。