速通
操作系统的基本特征包括:
- 并发: 两个或多个事件在同一时间间隔内发生
- 共享: 资源共享
- 虚拟: 让每个进程感觉拥有自己独立的 CPU/内存空间/外设
- 异步: 操作系统以不可预知的速度执行着
操作系统的功能:
- 处理机管理
- 存储管理
- 文件管理
- 设备管理
中断和系统调用
- 中断
- 硬件中断, 外部设备产生
- 软件中断, 程序性故障或特殊指令
- 系统调用时软件中断的一种
绪论
操作系统的功能:
- 处理机管理
- 存储器管理
- 设备管理
- 文件管理
- 用户接口
操作系统的发展
-
串行处理
无操作系统
-
简单批处理系统
内存保护, 定时器, 中断; 用户模式, 内核模式
-
多道批处理系统
平均周转时间长; 多道性, 调度性, 无序性, 无交互能力
-
分时系统
-
实时系统
操作系统基本特征
-
并发性
最重要的特征
-
共享性
-
异步性
-
虚拟性
进程和线程
-
进程是资源分配的基本单位
进程是程序的一次执行, PCB 是进程存在的唯一标志
-
线程是 CPU 调度的基本单位, 同一进程下所有线程共享该进程的资源
-
进程间的通信方式
- 低级通信方式: PV 操作
- 高级通信方式:
- 共享存储
- 消息传递
- 管道通信
进程由哪几种状态:
- 就绪态: 获得了除了处理机以外的一切资源
- 运行态: 进程正在运行, 只有就绪状态的进程才能被调度程序选中
- 阻塞态: 等待. 一个进程从运行态变为阻塞态是主动的行为, 从阻塞态变成就绪态是被动的行为
处理机的调度策略
- 高级调度: 将外存作业调入内存, 排在就绪队列中
- 中级调度: 将就绪的程序挂起
- 低级调度: 决定执行哪个就绪进程
调度算法
- FCFS: 先到先服务调度算法, 不可剥夺
- SJF: 最短作业有限调度算法
- 优先级调度算法
- 时间片轮转调度算法
- 多级反馈队列调度算法
文件系统是如何组织的?
- 文件控制块 FCB
- 知道一个文件的 FCB, 就知道文件存放在哪
- 文件的逻辑组织
- 无结构文件 (流式文件)
- 有结构文件 (记录式文件)
- 卒
死锁的定义: 进程 A 需要进程 B 正在使用的资源, 进程 B 需要进程 A 正在使用的资源.
死锁的条件
- 互斥
- 不可剥夺
- 请求并保持
- 循环等待
进程
进程: 具有独立功能的程序在一个数据集合上的一次动态执行过程
- 动态性
- 并发性
- 独立性
- 异步性
- 结构化
进程是资源申请和系统调度的基本单位
进程的组成
- 程序
- 数据
- PCB(进程控制块)
进程状态图
操作系统的功能
-
资源管理
进程管理, 存储管理, I/O 设备管理
-
支撑功能
中断处理, 时钟管理, 记账功能
进程控制块
模式切换: 系统模式和用户模式间的相互转换
- 模式切换的原因: 系统调用或中断
- 模式切换是否必然导致进程切换? 不一定, 如 I/O 中断不一定伴随进程切换
- 进程切换一定伴随模式切换
进程的创建
- 申请空白 PCB
- 为新进程分配资源 (内存, 文件)
- 初始化 PCB 数据结构
- 将新进程插入就绪队列
何时发生进程切换
- 时钟中断
- IO 中断
- 内存失效
- 陷阱
- 系统调用
fork
- 父进程返回子进程的 pid, 子进程返回 0, 失败返回-1
- 父子进程间的运行顺序不一定
线程
- 两个基本属性
- 拥有资源的基本单位
- 调度 / 执行的基本单位
- 进程是拥有资源和独立运行的基本单位; 线程是系统独立调度和分派的基本单位
调度
-
长程调度
将外存作业调入内存, 新创建的进程排在就绪队列上
-
中程调度
进程挂起, 挂起进程就绪
-
短程调度
决定就绪队列中哪个获得处理器
IO 管理与磁盘调度
虚拟内存技术
讲作业分多次调入内存, 可以使用分页式, 分段式, 段页式存储管理
页表的三种形式
分页式
内存分为若干个物理块, 由一个页表来维护映射关系
- 优点
- 解决了碎片问题
- 便于管理
- 缺点
- 页表的开销大
- 共享不便, 保护不便
分段式
地址空间被分为若干个段, 每个段的长度不同, 可以动态改变
- 优点
- 分段对程序员可见, 方便组织程序和数据, 便于模块化程序设计
- 便于保护和共享
- 缺点
- 进程全部装入内存
段页式
作业地址空间先分为几个几个逻辑段, 每个段有自己的段号, 每段分成若干固定大小的页
高级语言的源代码转化为进程的 3 个基本步骤
- 编译: 程序被编译为多个目标模块
- 链接: 链接程序将编译后的目标模块链接一起形成装入模块
- 装入: 装入程序将装入模块装入物理内存
页面置换算法
- OPT 最优置换算法:理想情况, 换出未来最长时间不再用的页面
- FIFO 先进先出算法
- LRU 最近最久未使用算法: 换出历史最长时间不再用的页面
- 简单 Clock 算法
内存分配技术
- 单一连续分配
- 固定分区分配
- 动态分区分配
- 可重定位分区分配
单一连续分配
内存空间分成系统区和用户区, 用户区分配给一个进程
分区管理
将内存微分大小相等或不等的分区, 每个应用进程占用一个分区
固定分区
动态分区
内存分配算法
最先适配算法 (FF)
按分区地址排序, 从头查找, 找到符合要求的第一个分区
循环最先适配法
从上次分配的分区起中查找
最佳适配算法
找能放下的最小分区
最差适配算法
找能放下的最大分区