绪论
概要
资源的管理者,对用户提供服务,对硬件机器的扩展
操作系统的概念
作为系统资源的管理者
作为用户和计算机硬件之间的接口
四大特征
并发 共享 虚拟 异步
并发
共享
虚拟
异步
总结
操作系统的发展
手工操作
单道批处理系统
脱机输入输出技术
多道批处理系统
单道多道对比
分时系统
时间片轮询,用户可以与计算机进行交互
实时操作系统
响应紧急任务,及时性和可靠性
其他操作系统
网络操作系统
总结
)
操作系统的运行机制和体系结构
什么是指令
两种指令,两种处理器状态,两种程序
用psw来标记是否在核心态,1为核心态
两种指令,两种处理器状态,两种程序
操作系统的内核
原语是一种特殊的程序,这种程序具有原子性
大内核和微内核
两种内核对比
总结
中断和异常
概要
中断机制的诞生
中断的概念和作用
中断的分类
中断的处理过程
总结
外中断的处理过程,与内中断处理区别
系统调用
总览
系统调用的概念
系统调用的作用,对各个请求进行协调管理
系统调用的相关处理需要在核心态下面进行,保证系统的稳定性和安全性
设备管理,文件管理,进程控制,进程通信,内存管理
系统调用和库函数的区别
系统调用的背后过程
将参数放入寄存器,执行陷入指令
陷入指令是唯一一个只能在用户态执行而不能在核心态执行的指令
总结
进程管理
概要
进程的定义 组成 组织方式 特征
进程的定义
程序段 数据段 PCB组成了进程实体(进程映象)
进程的组成
PCB
进程的组织
进程的组成讨论的事进程内部的组成部分,进程的组织讨论的事进程之间的组织结构
链接方式
索引方式
队列 索引
进程的特征
动态性(最基本 ) 并发性 独立性 异步性 结构性
进程的状态和转换
总览
三种基本状态
运行 就绪 阻塞
另外两种状态
创建态 终止态
进程状态的转换
总结
进程控制
总览
什么是进程控制
控制进程的状态转换
如何实现进程控制
利用原语实现,原语运行在核心态
进程控制相关的原语
进程的终止
总结
进程通信
总览
共享存储 消息传递 管道通信
什么是进程通信
各进程的内地址相对独立,为了保证安全,一个进程不能直接访问另一个进程的地址空间
共享存储
互斥访问
基于数据结构的共享 基于存储区的共享
管道通信
互斥访问
消息传递
通过发送/接收原语实现
总结
线程模型
总览
为什么要引入线程
引入线程后,进程成为资源分配单位,线程成为处理机的分配单位
线程的属性
线程的实现方式
用户级线程
内核级线程
实现方式
内核级线程才是处理机分配的单位
多线程模型
多对一
一对一
多对多
总结
处理机调度概念 层次
总览
作业调度 内存调度 进程调度
调度的基本概念
高级调度
中级调度
挂起模型
低级调度
三种调度对比
总结
进程调度的时机 切换与过程 调度方式
总览
进程调度的时机
不能进行调度的三种情况
内核程序临界区和普通临界区的区别
调度方式
进程的切换与过程
总结
调度算法的评价指标
总览
CPU利用率
系统吞吐量
周转时间
等待时间
响应时间
总结
调度算法
总览
先来先服务
短作业优先
非抢占式
抢占式短作业优先
注意
总结
高响应比优先
非抢占式
对比
时间片轮转调度算法
时间片不能过大或者过小
优先级调度算法
非抢占式
抢占式
静态优先级 动态优先级
系统偏好IO型进程
多级反馈队列调度算法
各种算法优缺点
多级反馈队列调度是抢占式算法
总结
进程同步 进程互斥
总览
什么是进程同步
什么是进程互斥
访问临界资源遵循的规则
总结
进程互斥的软件实现方法
总览
单标志法
违背空闲让进规则
双标志先检查法
违背忙则等待原则
双标志后检查法
解决了忙则等待,违背空闲让进和有限等待
Peterson算法
解决了互斥。满足了忙则等待 空闲让进 有限等待 没有满足让权等待原则
进程互斥的硬件实现方法
总览
中断屏蔽方法
只能用在核心态 不能用在用户态
TestAndSet指令
简单,没有满足让权等待
Swap指令
总结
信号量机制
总览
信号量机制
P、V操作
整型信号量
记录型信号量
满足让权等待原则
总结
用信号量机制实现进程同步互斥 前驱关系
总览
实现互斥
实现同步
实现前驱关系
在前操作V,在后操作P
总结
生产者消费者问题
问题描述
问题分析
实现
互斥的P操作一定要在同步的P操作之后
总结
多生产者多消费者
问题描述
问题分析
实现
多个缓冲区,可能出现数据覆盖的情况
总结
吸烟者问题
问题描述
问题分析
实现
总结
写一个随机数
读者写者问题
问题描述
问题分析
让第一个读者上锁,最后一个读者解锁,用count计数读者个数
实现
会饿死写者,用mutex实现对count的互斥访问
实现读写公平,实际上是相对公平的先来先服务
总结
哲学家进餐问题
问题描述
问题分析
如何实现
避免死锁
奇数拿左边的筷子,偶数拿右边的筷子
互斥地取筷子
总结
管程
概览
为什么要引入管程
管程的定义和基本特征
管程解决生产者消费者问题
定义共享数据结构,提供访问入口,通过入口访问,每次只能有一个线程进入
互斥特性由编译器实现,设置等待唤醒条件,封装的思想
Java中例子
总结
死锁
死锁的概念
例子
庸俗的例子
死锁 饥饿 死循环区别
死锁的条件
互斥 不剥夺 请求和保持 循环等待
什么时候发生死锁
总结
死锁的处理策略 预防死锁
总览
破坏互斥性
破坏不剥夺条件
破坏请求和保持条件
破坏循环等待条件
总结
死锁的处理策略 避免死锁
总览
什么事安全序列
死锁和不安全序列的关系
银行家算法
总结
死锁的处理策略 检测和解除
总览
死锁的检测
总结
内存管理
内存的基础知识
内存的编址
数量单位
进程的运行原理
逻辑地址 VS 物理地址
编译 链接 装入
装入模块装入内存
绝对装入
静态重定位
动态重定位
再理解进程运行的基本原理
三种链接方式的比较
总结
内存管理的概念
总览
内存空间的分配与回收
地址转换
内存保护
设置上下限寄存器
重定位寄存器 界地址寄存器
总结
覆盖与交换
总览
覆盖技术
交换技术
内存调度,进程在内存与磁盘间的动态调度
文件系统分为对换区和文件区
PCB不会被换出外存
总结
连续分配的管理方式
总览
连续分配:指为用户进程分配的空间必须是一个连续的内存空间
单一连续分配
固定分区分配
分区大小相等,分区大小不等
使用分区说明表记录分区信息
动态分区分配
空闲分区表 空闲分区链
使用动态分区分配算法
分配和回收方法
合并相邻的空闲区
处理外部碎片,紧凑 时间代价比较大
总结
动态分区分配算法
总览
首次适应算法
最佳适应算法
说自己是最佳的都不是什么好东西
最坏适应算法
邻近适应算法
总结
基本分页存储的基本概念
总览
连续分配的缺点
非连续分配思想
分页存储的基本概念
页框 页帧 内存块 物理块
页框号 页帧号 内存块号 物理块号
地址转换
采用分页技术,如何实现地址转换
先算页号,在内存就直接用,不在就缺页中断,越界就产生异常
逻辑地址结构
页表
页号是隐含的
可以按顺序算出页表项的位置
总结
基本地址变换机构
总览
基本地址变换机构
基本地址变换机构
页表项的大小
总结
具有快表的地址变换机构
总览
局部性原理
时间局部性 空间局部性
快表
引入快表的地址转换
总结
两级页表
总览
单级页表存在的问题
页表项占用太多内存
解决
问题一
两级页表的结构
问题二
注意
总结
基本分段存储方式
总览
分段
段表
地址变换
分页分段对比
分页对用户不可见,分段对用户可见
分段更容易实现共享和保护
页是信息的物理单位 段是信息的逻辑单位
总结
段页式管理方式
总览
段页式逻辑地址结构
段表页表
总结
虚拟内存的基本概念
总览
传统管理方式的特点缺点
一次性 驻留性
局部性原理
时间局部性 空间局部性
虚拟内存的定义和特征
多次性 对换性 虚拟性
虚拟内存的实现
请求分页 请求分段 请求段页式
总结
请求分页管理方式
总览
页表机制
缺页中断机构
页面不在内存,产生缺页中断
缺页中断属于内中断,属于故障fault一类
地址变换机构
缺页中断处理
总结
页面置换算法
总览
最佳置换算法
不真实,难以实现
先进先出置换算法
会产生Belady异常,只有先进先出会产生这个异常
最近最久未使用算法
时钟置换算法
改进型时钟置换算法
调出顺序,00 01 10 11
重点,四种优先级
总结
页面分配策略
总览
页面分配置换策略
何时调页面
预调页 请求调页
从何处调入页面
对换区 文件区 Unix方式
抖动
工作集
工作集和驻留集的区别
总结
文件管理
概览
初识文件管理
总览
文件属性
文件的组织
各个记录之间应该怎么组织?链式 顺序?
目录
操作系统提供的功能
create open write delete
文件在外存中的存放方式
操作系统怎么管理磁盘
总结
文件的逻辑结构
总览
无结构文件
记录式文件
定长记录和可变长记录
有结构文件的逻辑结构
顺序文件
顺序文件的存储结构
索引文件
索引顺序文件
检索效率
多级索引顺序文件
每组(N1/(K+1) )个记录
((N1/(K+1) )/2) * (K+1)
总结
文件目录
总览
文件控制块FCB
基本信息 控制信息 使用信息
对目录的操作 搜索 创建 删除 显示 修改
单级目录
两级目录结构
多级目录结构
无环图目录结构
指向的是同一个文件,如果一个用户修改其他的用户都可以看到变化
删除节点只是引用值减一,引用值为0才删除节点
索引结点 FCB的改进
总结
文件的物理结构
总览
文件块 磁盘块
连续分配
连续分配的文件不利于扩展
产生大量的碎片
链接分配
隐式链接
显式链接
总结
索引分配
链接方案
多层索引
混合索引
总结
注意
文件存储空间管理
总览
存储空间的划分和初始化
空闲链表法
要注意合并空闲区
空闲盘块链 空闲盘区链
空闲盘块链分配空间
空闲盘区链分配空间
位视图法
分配方式
成组链接法
总结
文件的基本操作
总览
创建文件
create系统调用
删除文件
delete系统调用
打开文件
open系统调用
系统的打开文件表只有一个,每一个进程都有一个自己的打开文件表
关闭文件
close系统调用
把进程的打开文件表对应表项删除,系统的文件打开表count减一,为零则删除相应表项
读文件
read系统调用
写文件
write系统调用
总结
文件共享
总览
索引结点硬链接 符号链接软链接
基于索引结点的共享方式
基于符号链的共享方式
总结
文件保护
总览
口令保护 加密保护 访问控制
口令保护
不太安全
加密保护
加密解密耗费一定的时间
密码正确
解密出错
访问控制
在FCB或者索引结点中增加一个访问控制列表
分组管理
总结
文件的层次结构
总览
文件系统的层次
总结
磁盘的结构
总览
磁盘 磁道 扇区
如何读数据
盘面 柱面
磁盘的物理地址
磁盘的分类
磁头是否可以移动
盘片是否可以更换