1. 引论
计算机运行模式:内核态与用户态,操作系统作为软件中最根底的局部,运行在内核态(管态、外围态)
操作系统由硬件爱护,避免用户试图对其进行批改,但在嵌入式零碎(无内核态)或解释零碎(解释形式而非硬件形式辨别组件)中并非如此。
操作系统的定义
运行在内核态的软件
运行两个根本独立的工作:
1. 为应用程序提供一个资源汇合的清晰形象
2. 治理硬件资源
概念:形象
形象是治理复杂性的一个要害,形象能够将简直不可能治理的工作划分为可治理的两个局部,第一局部是无关形象的定义和实现,第二局部是随时用该形象解决问题,形象是了解操作系统的要害
从不同的角度了解操作系统
自顶向下:操作系统向应用程序提供根本形象
自低向上:操作系统用来治理一个简单零碎的各个局部
硬件组成:操作系统在相互竞争的程序之间有序地管制对处理器、存储器以及相干 I / O 接口设施等硬件资源的调度与调配
资源管理
工夫复用:不同程序或用户轮流应用
空间复用:每个程序都取得资源的一部分
计算机硬件
处理器(CPU):从内存中取出指令并执行,每个 CPU 都有一套可执行的专门指令集,蕴含通用寄存器、程序计数器、堆栈指针、程序状态字寄存器
程序计数器:指向下一条指令的内存地址
堆栈指针:指向内存中以后栈的顶端
程序状态字寄存器:蕴含条件码位、CPU 优先级等各种管制位,例如能够管制 CPU 处于内核态或是用户态,当处于内核态时能够执行指令集中的每一条指令,而处于用户态时仅能执行整个指令集的一个子集
存储器
磁盘
磁带
I/ O 设施
总线
2. 过程
创立过程的 4 种形式
1. 零碎初始化
2. 正在运行的过程调用零碎调用创立过程
3. 用户申请创立新的过程
4. 一个批处理作业的初始化
过程终止的 4 种状况
1. 失常退出
2. 出错退出
3. 严重错误
4. 被其它过程杀死
过程的层次结构
父过程与子过程以某种模式放弃关联,子过程能够创立更多的过程,组成过程的层次结构
而 Windows 中没有过程档次的概念,所有过程的位置雷同,惟一相似过程档次的暗示为父过程领有一个句柄,可用于管制子过程,其有权将句柄交予某个其它过程
过程的状态
- 运行态(过程占用 CPU)
- 阻塞态(除非某种内部事件产生,否则过程不能运行)
- 就绪态(可运行,因其它过程正在运行而临时进行)
stateDiagram-v2
运行态
运行态 --> 阻塞态
运行态 --> 就绪态
阻塞态 --> 就绪态
就绪态 --> 运行态
就绪态与运行态的转换由过程调度程序引起,过程调度程序是操作系统的一部分,过程甚至感觉不到调度程序的存在,如何调度由具体的调度算法决定
过程的实现
过程表(process table),每个过程占用一个过程表项(过程管制块)
中断
过程间通信
防止竞争条件:
1. 任何两个过程不能同时处于其临界区
2. 不对 CPU 的速度和数量做任何假如
3. 临界区外运行的过程不得阻塞其它过程
4. 不得使过程无限期期待进入临界区
忙期待的互斥:
1. 屏蔽中断
2. 锁变量
3. 严格轮换
4.Peterson 解法