第八章 内存管理
-
程序执行步骤:
- 编译--从C到汇编
- 链接--从汇编到可执行程序
- 编译--从C到汇编
-
重定位:为执行程序而对其中出现的地址所做的修改,重定向可以执行的时间有:
- 在编译链接时
- 载入时
-
可执行程序经过编译产生了逻辑地址,逻辑地址和运行物理地址间要地址转换
-
虚拟地址由用户编写程序时定义的全局地址,逻辑地址是用户定义的局部地址,是虚拟地址的组成部分
-
逻辑地址空间:在实际应用中,将虚拟地址和逻辑地址经常不加区分,统称为逻辑地址。逻辑地址的集合称为逻辑地址空间
-
线性地址空间:CPU地址总线可以访问的所有地址集合称为线性地址空间
-
物理地址空间:实际存在的可访问的物理内存地址集合称为物理地址空间
-
MMU:实现将用户程序的虚拟地址(逻辑地址)->物理地址映射的CPU中的硬件电路
-
基地址:在进行地址映射时,经常以段或页为单位并以其最小地址(即起始地址)为基值进行计算
-
偏移量:在以段或页为单位进行地址映射时,相对于基地址的地址值
-
程序请求的空间=code+data+stack+heap,前面2个固定不变,后面的动态变化,需要预留空间
-
页面尺寸通常为4K,32位机器,有$2^{20}$个页面
-
页表项(PTE)是页基本数据结构,页代表的地址,包含对应的页框号,32位地址空间+4K大小页面+页面连续=>$2^{20}$个页表项,每个4字节则要4M内存
-
多级页表时的地址翻译
进程切换时段表和页表跟着切换
-
段页式
-
Intel x86的内存管理
- 实模式,内存地址20位,1M,段寄存器(CS,DS,ES,SS)中存储段基址,
- 保护模式(CS,DE,ES,FS,GS,SS),地址32位,4G,开启分页机制,段选择器存储段描述符表中的索引
- CR0.PE位=1进入实模式
- GDT为全局段表,记录OS使用的内存区域的段信息,对所有进程均可用,LDT为局部段表,每个进程的局部空间的所有段描述符集中存放在这张表中,GDTR和LDTR为32位段表基址(线性地址)+16位段表长度,分别指出GDT和LDT的位置
-
当TI=0表示段描述符在GDT中
-
为1时表示在LDT中
第九章 虚拟内存
-
调页,也称惰性交换,以页为单位在内外存之间交换
-
请求调页,也称按需调页,即对不在内存中的“页”,当进程执行时要用时才调入,否则有可能到程序结束时也不会调入
-
系统内进程增多=>每个进程缺页率增大=>缺页率增到到一定程度,进程总等待调页完成=>CPU利用率降低=>进程进一步增多=>颠簸现象,解决的根本手段是给进程分配足够多的帧
-
Belady异常现象:对有的页面置换算法,页错误率可能会随着分配帧数增加而增加,栈式算法无这个现象,LRU算法属于此
第十章 I/O设备管理
..
第十一章 磁盘与文件
-
基本概念:
- 扇区:物理盘存储空间基本编址单位,一般为512字节
- 主引导记录MBR:硬盘的第一个扇区的内容,含引导代码和主分区表
- 分区:磁盘中可以作为逻辑盘管理的一组扇区集合
- 可拓展分区:可以继续划分成“分区”的硬盘分区
- 引导分区:标记有引导标记的硬盘分区,这种分区有引导扇区和引导文件
- 引导扇区:引导分区的第一个扇区
- 可拓展分区引导记录:可引导分区中第二个扇区中的内容
-
磁盘访问延迟 = 队列时间 + 控制时间 + 寻道时间 + 旋转时间 + 传输时间,前两项可以忽略不计,关键在于最小化寻道时间和旋转延迟
-
FCFS磁盘调度,花费时间较长,磁头在长途奔袭
-
SSTF,以最短寻道时间先后移动磁头
-
SCAN磁盘调度,扫描/电梯算法,即SSTF+中途不回折
-
C-SCAN磁盘调度,SCAN+直接移到另一端
-
C-LOOK磁盘调度,CSCAN+看一看:前面没有就回移
新来的磁道请求,C[i+1] < x < C[i]或者x > C[i+1] > C[i]
-
扇区 = 头+数据区+尾,头尾中包含只有磁盘控制器能识别的扇区号码和纠错码等信息
-
磁盘寻址:盘面+磁道+扇区,为了花最少的时间访问最多的扇区:磁臂不动,磁盘旋转一周,访问磁头所遇到的所有扇区,让这些扇区的编制邻近:
- CHS(Cylinder/Head/Sector),外圈磁道比内圈磁道多,故采用线性寻址,即以扇区为单位进行寻址
- 扇区编号(Logical Block Addressing LBA):按照(C,H,S)将扇区形成一维数组,数组索引就是扇区编号
-
有一组命令寄存器组,I/O的端口地址为1F0H~1F7H:
- 1F2H 扇区计数寄存器
- 1F3H 扇区号,或LBA块地址0~7
- 1F4H 柱面数低8位,或LBA块地址8~15
- 1F5H 柱面数高8位,或LBA块地址16~23
- 1F6H 驱动器/磁头,或LBA块地址24~27
- 1F7H 状态寄存器 命令寄存器
- CHS或LBA在磁头寄存器中指定
-
文件的实现:
- 物理盘块连续分配,File Header或FCB存放起始盘块和盘块个数,权限等信息
- 链式分配
- 索引分配
第十二章 文件系统
-
文件系统是“抽象盘块”的一层软件,将盘块“变”成文件集
-
典型分区结构:UNIX分区的基本结构
-
提高文件系统的效率
- 磁盘缓存
- 将某些目录文件的FCB常驻内存
- 同一目录中的文件inode在一个柱面
- ...
-
分区空闲盘块的管理
- 方法1:空闲位图
- 方法2:空闲链表
-
RAID的基本思想是冗余,发现错误时拷贝整个磁盘(恢复),每次写两个磁盘,发现错误转向另一个磁盘
MINIX文件系统V1.0的实现
-
逻辑结构布局示意图
-
根据文件名访问文件内容的过程示意图