1.3 操作系统的特性:
1、并发性 宏观上,多个程序同时向前推进; 与并行:多处理器操作系统,多CPU,并行操作系统;
2、共享性 资源共享:在操作系统的控制下,操作系统与多个用户程序共用系统中的各种资源 的共享;
3、 异步性 宏观上有 同时运行多个程序,他们是交替执行的; 交替的切换点是中断; 中断使用户程序切换到操作系统,嵌套中断使一切操作系统切换到另一段操作系统,而中断的发生时刻不确定; 所以操作系统运行轨迹是异步的、不可预知的;
4、虚拟性 virtual 利用某种技术,把一个物理实体变为若干个逻辑实体;
中断切换程序:
2.2进程
定义:
- 一定独立的功能程序
- 关于一个数据集合
- 处理器运行;
组成: 进程控制块 和 程序; 程序包括代码和数据;
三个状态
进程上下文
进程的物理实体 和 支持进程运行的物理环境; 进程的切换就是进程上下文的切换; 系统为了实现并发而 付出的额外代价;
线程
进程是处理器调度的基本单位;
定义:又叫轻进程,是进程内的一个相对独立的执行流;
区别: 1、线程上下文切换速度快; 2、系统开销小; 创建线程 比 创建进程所需完成的工作小; 3、通信容易; 同一进程的多个线程 有共享内存;
第三章 中断和 处理器调度
3.1中断
中断是实现多道程序设计的必要条件; 定义: 程序运行中 出现某种紧急事件,必须终止当前正在运行的程序,转去处理该事件,然后再恢复原来运行的程序;
实现: 硬件:中断装置;软件:中断处理程序; 统称为中断系统;
- 中断装置(3)
1、识别中断源 2、保存现场:保存在系统栈, 保存(恢复)现场 之前 关中断,之后开中断; 3、引出中断处理程序(通过交换中断向量)
3.2 处理器调度(算法)
1、先到先服务 first come first service,FCFS 2、最短作业优先 shortest job first, SJF 3、最短剩余时间优先 shortest remaining time next,SRTN 4、最高相应比优先, highest response ratio next 5、最高优先数(优先级)算法 highest priority number first 6、循环轮转算法, 时间片; 7、分类排队算法 8、反馈队列算法
3.2.3 处理器调度过程
1、保存下井进程现场 2、选择将要运行的进程 3、恢复上升进程的现场;
第四章 互斥、同步、通信
4.1.6 与时间相关错:
多个进程访问变量时,因实际交叉次序不同而导致执行结果不同;竞争条件。
4.2 进程互斥
定义: 两个或两个以上的进程 不能 同时进入 关于同一段共享变量的 临界区;
- 不允许多个进程同时进入关于同一段共享变量的 相同临界区, 和 不同临界区;
访问共享变量的程序称为临界区,临界段;
一次制允许一个进程使用的资源称为 临界资源;
4.3 进程同步
定义: 一组进程,为了协调器推进速度,需要在某些点 相互等待或唤醒,进程之间的这种相互制约称为 进程同步;
4.4 进程间通信
定义: 进程之间的互斥、同步和信息交换统称为进程间通信;
两种模式:
- 1、共享内存模式
相互通信的进程之间 要有 共享内存; 两个细节:
- 1、为相互通信的进程之间提供 公共内存;
- 2、为访问 公共内存提供必要的同步机制;
- 2、消息传递模式
高级通信模式; 操作系统位用户进程之间 提供两个基本的系统调用命令: 发送命令 send 和 接受命令 receive;
消息传递模式的 两种实现方式
第五章 死锁和饥饿
定义:一组进程中的每个程序均等待此组进程中其他进程 所占有的、因而永远无法得到的资源;
三种死锁类型: 1、竞争资源引起的死锁; 2、进程间通信 引起的死锁 连环等待 相互间的消息; 3、其他原因: after you/afer you,设计程序不合理;
5.3 死锁的条件 4个
两个 资源, 两个 进程 1、 资源独占; 一个资源同时只能被分配给一个进程 2、不可剥夺; 资源申请者 不能从别人 已经申请了资源的 手中 剥夺资源; 3、保持申请; 进程在 占有资源后 ,如不满足需求,还可以继续申请资源 4、循环等待; 存在一个 进程组,互相等待 互相占有的资源;
5.4 处理方法
两大类:
- 1、 不让死锁发生
2种:
- 静态,死锁预防: 遵循某种协议,使得不可能发生死锁;
- 动态, 死锁避免: 实时检测, 拒绝不安全的资源申请命令;
- 2、让死锁发生,检测并消除
大致有四种: 1、静态死锁预防策略; 2、动态死锁避免策略; 3、动态思索检测策略; 4、动态死锁恢复策略;
资源分配图;
5.6 死锁的预防
1、 预先分配策略 进程在运行前,一次性申请所需的全部资源; 如果系统不满足,则不分配; 系统满足,才分配;
2、有序分配策略 将资源排序;有算法;
5.7 死锁的避免
实时检测; 银行家算法;
5.8 死锁的发现:算法
5.9 死锁的恢复
4种: 1、系统重新启动 2、终止进程 3、伯多资源 4、进程回退;
5.12 饥饿与饿死
第六章 主存储器管理
页式存储管理, 段式存储管理
6.3 单一连续区存储管理 界地址:动态异常存储,产生碎片
限制 一个进程在内存中只占有一个连续区域;
内存空间的地址: 进程起始地址 和 长度; 假设进程长度为 l, 那么 逻辑地址为 0 ~ l-1; 在内存中的起始地址为 b, 那么 物理地址范围: b ~ b + l - 1;
需要的表目:
- 内存分配表: 记录已经被分配的区域;
- 空闲区域表:记录内存中所有尚未分配的表;
需要的寄存器:
- 首地址寄存器: 保存正在运行的进程的起始地址;
- 限长寄存器: 保存正在运行的进程的 长度;
地址映射:
6.3.2 双对界
允许一个进程在内存中占有两个连续区域; 一个可用于保存代码,多个进程共享; 一个可用于保存数据, 进程独占;
6.4 页式存储
允许一个进程占有内存空间中多个连续区域,长度相同; 静态等长分配;不产生碎片;
内存划分为若干等长区域,每个区域成为一个 物理页框,通常由 2^i 个单元; 由0开始编址,称为页内地址; 设内存容量为 2^n B,则共有 2 ^n-i 个页框; 可得,第k个页框的起始地址为 k*2^i;
物理地址 = 物理页框首地址+页内地址 = 页框号*2^i + 页内地址;
逻辑页面是连续的,但逻辑页面所对应的物理页框 不一定连续;
地址映射
6.5 段式存储
内存动态的划分为若干个 长度各异的区域,每个区域称为物理段; 每个物理段 在内存中有一个 起始地址,段首址; 段内地址:物理段中的地址;
段表:
地址映射
过程
6.6 段页式
每一个段 分为 很多个 页
第八章 文件系统
第九章 输入输出设备管理
|