~操作系统定义
- 操作系统是指控制和管理整个计算机系统的硬件和软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。操作系统是计算机系统中最基本的系统软件,Windows,Linux,MacOS
~操作系统特征
并发
并发是指两个或多个事件在同一时间间隔内发生。操作系统的并发性是指计算机系统中同时存在多个运行的程序
并发:同一时间间隔 并行:同一时刻
共享
共享是指系统中的资源可供内存中多个并发执行的进程共同使用
互斥共享方式
- 打印机、磁带机
同时访问方式
虚拟
- 虚拟是指把一个物理上的实体变为若干逻辑上的对应物,没有并发性就没有虚拟性
异步
- 多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行并不是一贯到底的,而是走走停停的,它以不可预知的速度向前推进,这就是进程的异步性
~操作系统的目标和功能
对内/对底层硬件
操作系统作为计算机系统资源的管理者
处理机管理
存储器管理
文件管理
设备管理
对外提供服务
操作系统作为用户与计算机硬件系统之间的接口
命令接口
程序接口
*中断和异常的概念
中断
中断也称外中断,指来自CPU执行指令以外的事件的发生,有外设请求和人的干预
时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等
设备发出I/O结束中断,表示已经完成输入/输出,希望处理器能够向设备发出下一个输入/输出请求,同时让输入/输出之后的程序继续执行。
异常
异常也称内中断,指源自CPU执行指令内部的事件。对异常的处理一般要依赖于当前程序的运行现场,而且异常不能被屏蔽,一旦出现应立即处理
常见的异常有自愿中断【指令中断】,强迫中断【硬件故障、软件干预】
~举例系统调用
设备管理
- 完成设备的请求或释放,以及设备启动等功能
文件管理
- 完成文件的读写、创建以及删除等功能
内存管理
- 完成内存分配、回收以及获取作业占用内存区大小及始址等功能
进程通信
- 完成进程之间的消息传递或者信号传递等功能
进程控制
- 完成进程的创建、撤销、阻塞以及唤醒等功能
*操作系统的运行环境
- 用户通过操作系统运行上层程序,而这个上层程序的运行依赖于操作系统的底层管理程序提供服务支持,当需要管理程序服务时,系统则通过硬件中断机制进入核心态,运行管理程序;也可能是程序运行出现异常情况,被动地需要管理程序的服务,这时就通过异常处理来进入核心态。管理程序运行结束时,用户程序需要继续运行,此时通过相应的保存的程序现场退出中断处理程序或异常处理程序,返回断点处继续执行
~进程的概念
- 由程序段、相关数据段和进程控制块三部分构成了进程实体,进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
~进程的特征
动态性
结构性
异步性
并发性
~进程的状态与转换/进程是如何解决问题的
进程状态
创建态:进程正在被创建,尚未转到就绪状态
就绪态:进程已获得了除处理机之外的一切所需资源
运行态:进程正在处理机上运行
阻塞态:进程正在等待某一事件而暂停运行
结束态:进程正从系统中消失,分为正常结束和异常退出
状态变化
就绪态->运行态:经过处理机调度,就绪进程得到处理机资源
运行态->就绪态:时间片用完或在可剥夺系统中有更高优先级进程进入
运行态->阻塞态:进程需要的某一资源还没有准备好
阻塞态->就绪态:进程需要的资源已准备好
~进程控制有哪些
创建:终端用户登陆系统、作业调度、系统提供服务、用户程序的应用请求等
终止:正常结束、发生异常、外界干预
阻塞:等待资源
唤醒:资源到达
切换:时间片用完、主动放弃处理机、被更高优选级的进程剥夺处理机
~进程的通信
消息传递
共享存储
管道通信
~线程定义
- 为了更好的使多道程序并发执行,以提高资源利用率和系统吞吐量,增加程序的并发性。线程是一个基本的CPU执行单元,也是程序执行流的最小单元,线程自己不拥有系统资源。实现方式有:用户级线程和系统级线程
线程与进程的比较(多看)
调度
- 线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
并发性
- 不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行
拥有资源
- 进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.
系统开销
- 在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
地址空间和其他资源
- 进程的地址空间之间相互独立,同一进程的各线程间共享进程的资源,某进程内的线程对于其他进程不可见
通信方面
- 进程间通信需要进层同步和互斥手段的辅助,以保证数据的一致性,而线程间可以直接读/写进程数据段来进行通信
~进程调度方式
剥夺调度方式
- 有更为重要或紧迫的进程需要使用处理机,立即分配
非剥夺调度方式
- 有更为重要或紧迫的进程需要使用处理机,仍让当前进程继续执行
~典型的调度算法
先来先服务调度算法 FCFS
- 选择最先进入队列的
短作业优先调度算法 SJF
- 选择完成时间最短的
优先级调度算法
选择优先级别最高的
非剥夺式优先级调度算法
剥夺式优先级调度算法
高响应比优先调度算法
- 选择响应比最高的
时间片轮转调度算法
- 总是选择就绪队列中第一个进程,但仅能运行一个时间片
多级反馈队列调度算法
- 时间片轮转调度算法和优先级调度算法的综合和发展
~临界资源定义及思想
- 一次仅允许一个进程使用的资源称为临界资源
~同步定义
- 同步是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系
~互斥定义
- 互斥是指当一个进程进入临界区使用临界资源时,另一个进程必须等待,当占用临界资源的进程退出临界区后,另一个进程才允许取访问此临界资源
~临界区互斥的基本原则
- 空闲让进、忙则等待、有限等待、让权等待
实现临界区互斥的基本方法
软件实现方法
单标志法
- 违背“空闲让进”原则
双标志法先检查
- 违背“忙则等待”原则
双标志法后检查
- 会导致“饥饿”现象
皮特森算法
- 单标志法和双标志法后检查的结合
硬件实现方法
中断屏蔽方法
- 进区关中断,出区开中断
硬件指令方法
- 设立原子操作指令
信息量
- 利用pv操作实现互斥
~经典同步问题(重点是思想)
生产者-消费者问题
读者-写者问题
哲学家进餐问题
吸烟者问题
~死锁定义
- 死锁是指多个进程因竞争资源而造成的一种互相等待的僵局,若无外力作用,这些进程都将无法向前推进
~死锁产生的原因
系统资源的竞争
进程推进顺序非法
死锁产生的必要条件
互斥条件
- 一段时间内某资源仅为一个进程所占有
不剥夺条件
- 进程所获得的资源在未使用完之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放(只能是主动释放)
请求并保持条件
- 进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放
循环等待条件
- 存在一种进程资源的循环等待链,链中每个进程已获得的资源同时被链中下一个进程所请求
死锁的处理策略/解决方案
死锁预防
设置某些限制条件,破环产生死锁的4个必要条件中的一个或几个,以防止发生死锁
破坏互斥条件:有些资源必须互斥作用,无法破环互斥条件
破坏不剥夺条件:增加系统开销,降低吞吐量
破坏请求和保持条件:严重浪费系统资源,还可能导致饥饿现象
破环循环等待条件:浪费系统资源,并造成编程不便
避免死锁
在资源的动态分配过程中,用某种方法防止系统进入不安全状态,从而避免死锁
安全状态:能找到一个分配资源的序列能让所有进程都顺序完成
银行家算法:采用预分配策略检查分配完成时系统是否处在安全状态
死锁检测
- 利用死锁原理化简资源分配图以检测死锁的存在
死锁解除
资源剥夺法:挂起某些死锁进程并抢夺它的资源,以便让其他进程继续推进
撤销进程法:强制撤销部分、甚至全部思索进程并剥夺这些进程的资源
进程回退法:让一个或多个进程回退到足以回避死锁的地步
~内存管理程序的装入
绝对装入:适合单道程序环境
静态重定位:适合装入之后不再移动的情况
动态重定位:适合装入时还会移动的情况
~内存管理程序的链接
静态链接:在程序运行之前链接
装入时动态链接:在装入内存时,采用边装入边链接的链接方式
运行时动态链接:在程序执行中需要该目标模块时,才对它进行的链接
~*内存管理的管理方式
连续分配管理方式
单一连续分配:分配到内存固定区域,只适合单任务系统
固定分区分配:分配到内存中不同的固定区域,分区可以相等也可以不等
动态分区分配:按照程序的需要仅从动态的划分
首次适应算法:按照地址从小到大为序,分配第一个符合条件的分区
最佳适应算法:按照空间从小到大为序,分配第一个符合条件的分区
最坏适应算法:按照空间从大到小为序,分配第一个符合条件的分区
邻近适应算法:与首次适应相似,从上次查完的结果位置开始查找
非连续分配管理方式
基本分页存储管理方式:内存分为固定的块,按物理结构划分,会有内部碎片
基本分段存储管理方式:内部块的大小不固定,按逻辑结构划分,会有外部碎片
段页式管理方式:基本分段和基本分页的结合,会有内部碎片
~请求分页管理方式
- 为了实现请求分页,系统必须提供一定的硬件支持。除了需要一定容量的内存以及外存的计算机系统,还需要有页表机制、缺页中断机构和地址变换机构
请求分段管理方式
- 段表机制,缺段中断机制,地址变换机构,分段共享与保护
~页面置换算法(决定应该换人哪页,换出哪页)
最佳置换算法 OPT:选择以后不用的页面
先进先出页面置换算法 FIFO:选择最先装入的页面
最近最久未使用置换算法 LRU:选择最近最久未用的页面
时钟置换算法 CLOCK:选择最近未用的页面
~磁盘管理读写时间
寻道时间:将磁头移动到指定磁道所需要的时间
延迟时间:磁头定位到某一磁道的扇区所需要的时间
传输时间:从磁盘读出或向磁盘写入数据所经历的时间
启动时间:控制器的启动时间
磁盘管理调度算法
先来先服务算法 FCFS:根据进程请求访问磁盘的先后顺序进行调度
优点:公平,简单
缺点:平均寻道距离大,仅应用在磁盘I/O较少的场合
最短寻找时间优先算法 SSTF:选择当前磁头所在磁道距离最近的磁道
优点:性能比“先来先服务”好
缺点:不能保证平均寻道时间最短,可能出现“饥饿”现象
扫描算法 SCAN:在磁头当前移动方向上选择与当前磁头所在磁道距离最近的请求
优点:寻道性能较好,可避免“饥饿”现象
优点:不利于远离磁头一端的访问请求
循环扫描算法 C-SCAN:在扫描算法的基础上规定磁头单向移动来提供服务
- 优点:消除了对两端磁道请求的不公平
~I/O控制方式
程序直接控制方式:程序直接对设备循环测试
中断驱动方式:引入中断机制,当设备准备完成时发生中断
DMA方式:在I/O设备与内存之间开辟直接数据通路
通道控制方式:引入专门的I/O处理机进行管理
SPOOLing 技术(假脱机技术)