操作系统的发展
单道批处理系统 | 多道批处理 | 分时 | 实时 | |
---|---|---|---|---|
说明 | 把一批作业已脱机方式输入到磁带上,由监督程序将磁带上的第一个作业装入内存,并把运行控制权交给该作业。当该作业处理完成时,又把控制权交还给监督程序,再由监督程序吧磁带上的第二个作业调入内存 | 用于提交的作业先存放在外存上并排成一个队列,然后又作乐调度程序按一定的算法从后备队列中选择若干个作业调入内存,使它们共享CPU和系统的各种资源 | 在一台主机上链接了多个带有显示器和键盘的终端,同时允许多个用户通过自己的终端,以交互方式使用计算机,共享主机中的资源 | 能及时响应外部事件的请求,并控制所有实时任务协调一致的运行 |
特性 | 自动性、顺序性、单道性 | 提高了 CPU的利用率、提高了内存和 I/O 设备利用率、增加系统的吞吐量 | 多路性、独立性、及时性、交互性 | |
优缺点 | 资源利用率高,系统吞吐量大;平均周转时间长,无交互能力 |
操作系统的基本特征
- 并发性
- 并行:指两个或多个事件同一时刻发生
- 并发:指两个或多个事件在同一时间间隔内发生
- 进程:是分配资源的基本单位
- 线程:作为独立调度的基本单位
- 共享性:指系统中的资源可供内存中多个并发进程共同使用
- 互斥共享方式
- 同时访问方式
- 虚拟技术
- 异步性
操作系统的主要功能
- 处理机管理功能(进程管理)
- 进程控制:创建、撤销
- 进程同步: 互斥、同步
- 进程通信: 信息交换
- 调度:
- 作业调度:从后备队列中选出作业,分配资源,调入内存,建立进程,插入就绪队列
- 进程调度:从进程的就绪队列中,选出进程,分配处理机
- 存储器管理功能
- 内存分配:静态/动态(可扩展)
- 内存保护:确保自己的内存空间
- 地址映射:将逻辑地址转换为内存空间中与之对应的物理地址
- 内存扩充(虚拟存储技术)
- 请求调入功能,需要的时候请求调入
- 置换功能:内存中的数据写入盘中,腾出空间
- 设备管理功能
- 缓冲管理
- 单缓冲机制
- 双向同时传送数据的双缓冲机制
- 多个设备同时使用的公共缓冲池机制
- 设备分配
- 设备处理
- 设备处理程序成为设备驱动程序:用于实现 CPU 和设备控制器之间的通信
- 缓冲管理
-
文件管理功能
- 文件存储空间的管理
- 目录管理
- 文件的读写管理和保护
进程管理
程序的顺序执行特征:顺序性、封闭性、可再现性
程序的并发执行特征:间断性、失去封闭性、不可再现性
为什么要引入进程
- 为了使程序能够并发执行(进程实体可并发执行,而程序不能),且为了对并发执行的程序加以描述和控制,便引入了进程。进程实体是由 程序段、相关的数据段 和 PCB(进程控制块) 三部分构成。
进程是什么
-
进程是资源分配和独立运行的基本单位。
1. 进程的特征
- 动态性:进程的实质是进程实体的一次执行过程
- 并发性:多个进程实体同存于内存中
- 独立性:独立运行、独立分配资源、独立接受调度的基本单位
- 异步性
2. 进程的状态
- 创建状态: 创建 PCB、把进程插入到就绪队列中
- 终止状态:PCB清零,并把PCB空间返还给系统
3.进程控制块
进程控制块
- 是进程能够并发执行,是进程存在的唯一标识。OS 是根据PCB来对并发执行的进程进行控制和管理的
为什么引入线程
- 为了提高系统内程序并发执行的程度,从而可进一步提高系统的吞吐量
线程是什么
- 是比进程更小的能独立运行的基本单位,其作为调度和分派的基本单位
线程间的同步和通信
- 互斥锁
- 条件变量
- 信号量机制
线程与进程的比较
调度:线程作为调度和分派的基本单位,而进程作为资源拥有的基本单位
并发性:线程相比进程更显著提高系统的吞吐量,因为如果进程被阻塞时,并没有其他同种服务的进程提供服务,但是可以在一个进程设置多个线程服务,当其中一个被阻塞时,可以用其他的线程代替
拥有资源:线程可以访问其隶属进程的资源
系统 开销:同步和通信比进程更容易,因为线程的切换仅需保存和设置少量的寄存器内容,不涉及存储器管理方面的操作
处理机调度和死锁
处理机调度的层次
- 高级调度
- 调度对象为作业,把外存上处于后备队列中的作业调入内存
- 低级调度
- 调度对象为进程,选择绪队列中的进程,然后分配处理机
- 进程调度方式:抢占式、非抢占式
- 中级调度
- 实际上是存储器管理中的对换功能
调度算法
- 先来先服务 FCFS
- 利于长作业、不利于短作业
- 短作业优先调度算法 SJF
- 不利于长作业
- 高优先权优先的调度算法:紧迫型作业
- 非抢占式优先权算法:直至一个进程完成才调度另外一个进程
- 高响应比优先调度算法:照顾了所有;优先权 = (等待时间 + 服务时间)/要求服务的时间,随着等待时间的增加,优先权越高
- 抢占式优先权调度算法
- 非抢占式优先权算法:直至一个进程完成才调度另外一个进程
- 基于时间片轮转调度算法:保证能及时响应用户的请求
- 当 当前进程执行完一个时间片后的时间 恰好 和 新来到的进程时间相同,则新进程 在 当前进程的前面
- 多级反馈队列调度算法:多个就绪队列,当队列的优先级越高,时间片的大小越小。当一个进程执行完一个时间片,但进程的任务还未执行完,则把进程放入到当前级别队列的下一级队列的就绪队列中
实时调度
- 最早截止时间优先 EDF 算法
- 优先级调度不能呢适用于实时系统
- 最低松弛优先 LLF 算法
- 根据任务紧急的程度,来确定任务的优先级
存储器管理
计算机系统存储层次
- 指令访问:
- CPU 寄存器:寄存器 — 加速存储器的访问速度
- 主存 :
- 高速缓存:缓存数据
- 主存:保存进程运行时的程序和数据
- 磁盘缓存:减少磁盘访问次数
- I/O :
- 辅存 :
- 磁盘
- 可移动存储介质
- 辅存 :
问题1:为什么访问主存的速率比访问磁盘快?
- 因为进程可以在很少的时钟周期内使用一条 load 或 store 指令对可执行存储器进行访问,但是对于辅存的访问需要通过 I/O设备来实现,其中会涉及到中断、设备驱动程序以及物理设备的运行
程序的装入和链接
-
源程序变为可执行程序的步骤
- 编译: 将用户源代码编译成若干目标模块
- 链接: 把目标模块 和库函数链接在一起,形成一个完整地装入模块
- 装入:将装入模块装入内存
-
程序的装入
- 绝对装入方式:只适合单道程序环境,逻辑地址与实际内存地址完全相同
- 可重定位装入方式:不允许程序运行时在内存中移动位置,装入时完成地址变更、以后不再改变
- 动态运行时装入方式:当程序执行时才变更地址
-
程序的链接
- 静态链接方式
- 装入时动态链接
- 运行时动态链接:用到时才进行装入,加快装入过程 并 节省了内存空间
连续分配方式
- 分配连续的内存空间
- 单一连续分配:单用户、单任务
- 固定分区分配:分区大小相等 或者不等,用户空间划区,每个区执行一道作业
- 动态分区分配:需要多少空间大小,一般就分配多少
- 分配算法
- 首次适应算法:每次都从空闲分区表的表头开始查找,知道找到可划分的分区,完后划分,剩余部分仍留在空闲链中。缺点:会留下很多难以利用的、很小的空闲分区,会增加查找空闲分区时的开销
- 循环首次适应算法:从上次找到的空闲分区的下一个空闲分区开始查找分区。特点:减少了查找空闲分区时的开销,但会缺乏大的空闲分区
- 最佳适应算法:把能满足要求、又是最小的空闲分区分配给作业,空闲分区需要按其容量大小的顺序排序
- 最坏适应算法:挑选一个最大的空闲分区进行分配。特点:产生碎片的几率小,但是会缺乏大的空闲分区
- 快速适应算法:把分区分类,每一类设立一个空闲分区链表。特点:查找效率高,不会对任何分区进行分割,也不会产生碎片。但是算法复杂,系统开销较大
- 回收内存:当回收区与插入点的相邻空闲分区相邻时,会合并为一个大的分区,如果没有相邻的分区,则单独建立一个新表项
- 分配算法
- 可重定位分区分配
当有一作业到达,但是没有可利用的分区,但是各个碎片分区的总和大小该作业需要的内存,则可以采用紧凑法,把分散的多个小分区拼接成一个大分区。每次紧凑后,都必须对移动的程序或数据进行重定位 - 对换
+ 对换是指把内存中暂时不能运行的进程或者暂时不用的程序和数据调出在外存上,一遍腾出足够的内存空间,再把已具备运行条件的进程或进程锁需要的程序和数据调入内存
基本分页存储管理方式
- 引入的目的:提高内存利用率—将一个进程直接分散的装入到许多不相邻的分区中,要求吧作业全部装入内存后才能运行
- 当也表太大是,可引入两级 或 多级也表
基本分段存储管理方式
- 引入目的:为了满足用户在编程上的使用,因为短是信息的逻辑结构
分页和分段的区别
- 页是物理信息的单位,分页是为了小贱内存的碎片,提高内存的利用率;段是信息的逻辑单位,含有一组意义相对完整地信息,目的是为了能更好的满足用户的需要
- 页的大小固定且由系统决定,而段的长度不固定
- 分页的走哟也地址空间是一维的,而分段的作业地址空间时二维的(段名 + 段长)
段页式存储管理方式
+ 是分页和分段的结合,把段再进行分页,需3次访问内存,第一次访问内存中的短标,获得页表始址,然后访问内存中的页表,从中取出该页所在的物理块号,第三次访问才是真正的数据
虚拟存储器的基本概念
- 从逻辑上扩充内存容量
- 特征:多次性、对换性、虚拟性
- 页面置换算法:
- 最佳置换算法 OPT: 换出的页面是以后永不使用,或者在最长时间捏不再被访问的页面。以为对未来不可知,所以是无法实现的
- 先进先出页面置换算法 FIFO:总是淘汰最先进入内存的页面
- 最近最久未使用置换算法 LRU:淘汰页为最久未使用的页面
- Clock置换算法: 循环的检查各页面的使用情况,如果访问位为true,则置为false如果访问位为false,则淘汰。相当于给一个页面两次机会
设备管理
设备管理的任务
- 完成用户提出的I/O请求,提高I/O速率 以及提高 I/O设备的利用率
I/O控制方式
- 程序 I/O 方式:CPU需要不断的测试 I/O设备的状态
- 中断驱动 I/O 控制方式:控制器向CPU发送一个中断信号,CPU可以同 I/O 设备并行操作,传输的数据以字节为单位
- 直接存储器访问控制方式:子啊传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完后的,传输的基本单位是数据块。
- I/O通道控制方式:把对一个数据块的读写为单位的干预减少为对一组数据块的读写及有关的控制和管理为单位的干预
缓冲管理
- 目的:为了缓和 CPU 与 I/O 设备速度不匹配的矛盾,提高 CPU 和 I/O 设备的并行性
- 分类:
- 单缓冲
- 双缓冲:可以双向发送数据
- 循环缓冲
- 缓冲池:公共缓冲池
I/O系统
- I/O 系统的层次
层次 | 功能 |
---|---|
用户层软件 | 产生 I/O请求、格式化I/O |
设备独立性软件 | 映射、保护、分块、缓冲;与设备驱动器的统一接口 |
设备驱动程序 | 设置设备 寄存器,检查寄存器的状态 ;I/O进程与设备控制器之间的通信程序 |
中断处理程序 | 保存 CPU 环境、唤醒阻塞进程 、中断处理、恢复中断进程 |
硬件 | 执行 I/O 操作 |
- 设备分配
- 分配设备:根据I/O请求中的物理设备名,查找设备表,从中找出设备控制表,可知该设备是否正忙,若忙,变将请求 I/O 进程的PCB挂在设备队列上
- 分配控制器:当把设备分配给进程后,从设备控制表中找出与该设备连接的控制器的控制器控制表,准备分配控制器
- 分配通道:在控制器中找到与该控制器连接的 通道的通道控制表,分配通道
磁盘存储器管理
-
磁盘调度
- 先来先服务
- 最短寻道时间优先 SSTF:只要 距离最近,不考虑方向,易出现饥饿现象:也就是新请求一直在磁头附近,导致其他进程的请求不能处理
- SCAN 算法磁头从外向里移动,从里到外,但是会出现刚越过一磁道恰好又有一进程请求该磁道
- 循环扫描算法 CSCAN : 磁头一道嘴歪访问后,立即返回到最里面
-
提高磁盘I/O速度的方法
- 提前读
- 延迟写
- 优化物理块的分布
- 虚拟盘