- 什么是操作系统
操作系统是一组控制和管理计算机软硬件资源、合理地对各类作业进行调度以及方便用户使用的程序集合。
- 操作系统要做什么?
- 管理所有硬件资源
- 向用户和应用软件提供使用接口
- 监控用户对计算机的使用
-
操作系统的目标
- 方便些
- 有效性
- 可拓展性
- 开放性
-
OS作为计算机系统资源的管理者(软硬件资源)
- 处理机管理,用于分配和控制处理机
- 存储器管理,主要负责内存的分配与回收
- IO设备管理,负责I/O设备的分配与操纵
- 文件管理,负责文件的存取、共享和保护
-
单道批处理系统
1、单道批处理系统主要特征:自动性、顺序性、单道性。
2、单道批处理系统主要优点:减少人工操作,解决了作业的自动接续。
3、单道批处理系统主要缺点:平均周转时间长,没有交互能力。
- 多道批处理系统
1、多道批处理系统主要特征:多道性、无序性、调度性(进程调度和作业调度)
2、多道批处理的主要优点:提高了资源利用率和吞吐能力
3、多道批处理的主要缺点:平均周转时间长,没有交互能力
- 分时操作系统
特点:
多路性:一个主机与多个终端相连;
独立性:彼此独立操作,互不干扰;
及时性:系统能在很短的时间得到回答;
交互性:能实现人机对话(区别于批处理系统)
- 实时系统
特点:
响应及时(prompt response)
可靠性高(high reliability)
1、多路性:能对多个对象进行控制。
2、独立性:独立运行,不混淆,不破坏。
3、交互性:仅限于访问系统中某些特定的专用服务程序。
4、可靠性:高可靠性,应具有多级容错防护能力。
5、及时性:不同的系统要求不一样,控制对象必须在截止时间内完成。
- 现代OS的四个基本特征:
1、并发性(最重要的特征)
2、共享性
3、虚拟性
4、异步性
- 进程 AND 线程
进程作为资源分配的基本单位
线程作为独立运行和调度的基本单位
- 虚拟
1、时分复用技术
虚拟处理机:分时实现
虚拟设备:SPOOLING技术(自学)
2、空分复用技术
虚拟磁盘技术:逻辑分区
虚拟存储器:虚拟存储管理实现
- 操作系统是一个大型系统软件,其结构已经历了四代的变革:
第一代的OS是无结构的;
第二代OS采用了模块式结构;
第三代是层次式结构
现代OS结构是微内核结构
- 微内核特点
足够小的内核。
基于客户/服务器模式
应用“机制与策略分离”原理
采用面向对象技术
微内核并非是一个完整的OS, 而只是为构建通用OS提供一个重要基础。由于在微内核OS结构中,通常都采用了客户/服务器模式,因此OS的大部分功能和服务,都是由若干服务器来提供的, 如文件服务器、作业服务器和网络服务器等。
- 导致一个进程去创建另一个进程的典型事件,可有以下四类:
(1)用户登录。
(2)作业调度。
(3)提供服务。例如:I/O请求
(4)应用请求。
信号量按照功能来分:互斥信号量和资源信号量。
互斥信号量:用于申请或释放资源的使用权,常初始化为1。
资源信号量:用于申请或归还资源,可以初始化为大于1的正整数,表示系统中某类资源的可用个数。按照信号量机制的发展分为:
整形信号量: 存在盲等现象
记录型信号量:不存在“忙等”现象, value的初始值>1时,称为资源信号量, value的初始值=1时,称为互斥信号量。wait先减一,在判断大于零或小于零。
AND型信号量:先判断所以资源大于还是小于零,在减一。
信号量集:在每次分配时,采用信号量集来控制,可以分配多个单位的资源。Swait ( S1, t1, d1; ... ; Sn, tn, dn )
Si—i 类资源现有数量;ti—i 类资源的分配下限值;di—申请i 类资源数量;
-
进程通信
-
低级通信:进程之间的互斥和同步,由于其所交换的信息量少而被归结为低级通信。
-
高级通信:是指用户可直接利用操作系统所提供的一组通信命令高效地传送大量数据的一种通信方式。如
- 共享存储器系统
- 管道通信
- 消息传递系统
- 客户机–服务器系统
-
消息传递系统
-
直接通信方式
- 对称寻址方式
Send(Receiver, message); 发送一个消息给接收进程; Receive(Sender, message); 接收Sender发来的消息;
- 非对称寻址方式
Send(P, message);发送一个消息给接收进程P; Receive(id, message); 接收来自任何进程的消息,进程id不固定。
-
间接通信方式 (信箱)
进程可利用信箱创建原语来建立一个新信箱。创建者进程应给出信箱名字、信箱属性(公用、私用或共享);对于共享信箱,还应给出共享者的名字。当进程不再需要读信箱时,可用信箱撤消原语将之撤消。
-
处理机调度与死锁
计算机完成作业是通过执行一系列有序的工作步骤进行的,每个步骤完成作业的一部分特定工作
编辑、编译或汇编、连接、装配、运行
- 高级调度:决定哪些程序可以进入系统
其主要功能是根据某种算法,把外存上处于后备队列中的那些作业调入内存。批处理系统需要有作业调度,分时和实时系统无需此调度。高级调度用于调入一批作业。
- 中级调度:决定内存中程序的位置和状态
为了提高内存利用率和系统吞吐量
-
低级调度:决定CPU资源在就绪进程间的分配
- 非抢占,引起调度的因素:
正在执行的进程执行完毕, 或因发生某事件而不能再继续执行
执行中的进程因提出I/O请求而暂停执行;
在进程通信或同步过程中执行了某种原语操作,如wait、Block、Wakeup原语- 抢占
它所调度的对象是进程。三种类型OS都必须配置这级调度。(最基本调度)
三个基本机制:排队器、分配器(调度程序)、上下文切换机制。
调度类型 | 运行频率 | 运行时间 | 算法复杂性 |
---|---|---|---|
进程调度 | 高 | 短 | 低 |
中程调度 | 中等 | 较短 | 中等 |
作业调度 | 低 | 长 | 高 |
进程调度的运行频率最高,在分时系统中通常是10~100 ms 便进行一次进程调度,因此把它称为短程调度。为避免进程调度占用太多的CPU时间,进程调度算法不宜太复杂。
作业调度往往是发生在一个(批)作业运行完毕,退出系统,而需要重新调入一个(批)作业进入内存时,故作业调度的周期较长,大约几分钟一次,因此把它称为长程调度。由于其运行频率较低,故允许作业调度算法花费较多的时间。
中级调度的运行频率基本上介于上述两种调度之间,因此把它称为中程调度。
三种调度队列模型
1、仅有进程调度
2、具有高级和低级调度
3、具有三级调度
1. **仅有进程调度的调度队列模型 **(分时系统)
分时系统中,通常仅设有进程调度
2. 具有高级和低级调度的调度队列模型 (批处理系统)
3. 同时具有三级调度的调度队列模型
系统选择调度方式和算法的准则分为两种
-
面向用户的准则: 周转时间短、响应时间快、截止时间的保证、优先权准则。
-
面向系统的准则:系统吞吐量高、处理机利用率高、各类资源的平衡使用。
调度算法
- 先来先服务 (适合于作业调度和进程调度)
优点:
有利于长作业(进程)
有利于CPU繁忙型作业(进程)
缺点:
不利用短作业(进程),特别是来的较晚的短作业(进程)。
不利于I/O繁忙型作业(进程)
-
短作业(进程)优先调度算法 SJ§F (用于作业调度和进程调度)
-
最短剩余时间优先调度算法SRT
-
优先权调度算法 PSA (适合于作业调度和进程调度)
-
非抢占式优先权算法(用于批处理、要求不严的实时)
-
抢占式优先权调度算法(用于要求严格的实时、性能要求较高的批处理和分时)
-
优先权类型:
- 静态优先权: 优点:简单易行、系统开销小。
缺点:不够精确,可能出现优先权低的作业或进程长期得不到调度的情况。- 动态优先权: 随进程的推进或随其等待时间的增加而改变,以获得更好的调度性能。
- 高响应比优先调度算法HRRN(动态优先权机制)
-
基于时间片的轮转调度算法 (进程调度)
-
更成熟的多级队列调度 ——多级反馈队列
最通用的调度算法,多数OS都使用该方法或其变形,如UNIX、Windows等。
算法:
- 设置多个就绪队列,并为各个队列赋予不同的优先级。
- 一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度。
- 仅当第一队列空闲时,调度程序才调度第二队列中的进程运行
实时调度
实现实时调度的基本条件:
- 提供必要的调度信息
- 系统处理能力强
- 采用抢占式调度机制
- 具有快速切换机制
- 具有快速响应外部中断的能力
- 快速的任务分派能力
实时调度算法的分类 :
-
非抢占式调度算法
- 非抢占式轮转调度算法,常用于要求不太严格的实时控制系统。
- 非抢占优先权调度算法,常用于有一定要求的实时控制系统。
-
抢占式调度算法
- 基于时钟中断的抢占式优先权调度算法 ,大部份实时系统采用
- 立即抢占(Immediate Preemption)的优先权调度算法 ,严格的实时系统采用
常用的几种实时调度算法 :
- 最早截止时间优先即EDF(Earliest Deadline First) 算法
截止时间愈早,其优先级愈高, 既可用于抢占式调度,也可用于非抢占式调度方式中。
- 最低松弛度优先即LLF(Least Laxity First)算法
松弛度=完成截止时间–剩余运行时间–当前时间
该算法按松弛度排序实时任务的就绪队列,松弛度值最小的任务排在队列最前面,调度程序总是选择就绪队列中的队首任务执行。
该算法主要用于可抢占调度方式中。当等待任务的松弛度值为0时才进行抢占,如果一个进程的松弛度(>0)小于正在运行进程的松弛度时,是不会抢占的!
产生死锁的必要条件
- 互斥条件
- 请求和保持条件
- 不剥夺条件
- 环路等待条件
处理死锁的基本方法
- 预防死锁:破坏死锁的四个条件
- 避免死锁
- 检测死锁
- 解除死锁
即LLF(Least Laxity First)算法
松弛度=完成截止时间–剩余运行时间–当前时间
该算法按松弛度排序实时任务的就绪队列,松弛度值最小的任务排在队列最前面,调度程序总是选择就绪队列中的队首任务执行。
该算法主要用于可抢占调度方式中。当等待任务的松弛度值为0时才进行抢占,如果一个进程的松弛度(>0)小于正在运行进程的松弛度时,是不会抢占的!
产生死锁的必要条件
- 互斥条件
- 请求和保持条件
- 不剥夺条件
- 环路等待条件
处理死锁的基本方法
- 预防死锁:破坏死锁的四个条件
- 避免死锁
- 检测死锁
- 解除死锁