操作系统
2024-03-23 09:19:14 2 举报
AI智能生成
操作系统
作者其他创作
大纲/内容
1章 操作系统概念
计算机系统
定义
是一种可以按用户的要求 "接收 "和 "存储" 信息, 自动进行"数据处理"并 "输出结果信息" 的系统
广义的计算机 包括
机械式系统
电子式系统
模拟式计算机 系统
数字式计算机 系统
简称 计算机系统
组成
硬件(子)系统
是计算机系统赖以工作的"实体"
软件(子)系统
保证计算机系统按 "用户指定的要求" 协调工作
资源
硬件资源
软件资源
硬件系统
中央处理器
CPU
运算器
控制器
内存储器 (主存)
外存储器
磁盘
磁带
光盘
输入输出设备
键盘
鼠标
显示器
打印机
分层关系
CPU与内存 在最里层, 通过"总线" 和第二层的 "接口"(适配器)部件相连, 第三层 是 各种"外围设备控制器" , 最外层 是 "外围设备"
软件系统
程序
应用软件
文字处理,图片处理, 图像处理, 科学计算机 MIS
支撑软件
数据库系统,网络,多媒体
系统软件
操作系统, 编译程序
数据
操作系统
定义
是计算机系统中的 一个 系统软件,是一些程序模块的集合
是计算机 资源 (软件资源+硬件资源) 的管理者
组织
组织工作流程
控制程序的执行
管理
管理硬件资源
管理软件资源
通过接口 为用户提供各种服务
是用户使用计算机
灵活
方便
有效
作用
能有效的组织 和 管理 计算机中的硬件 和软件资源, 合理的 组织计算机工作流程, 控制程序的 执行,
并向用户提供各种服务功能,让用户能够灵活的 方便,有效的使用计算机, 使整个计算机系统高效的运行
特征 (并共随虚)
并发性
指的是系统中同时存在若干个运行的程序, 从宏观上看, 这些程序 同时向前推进
体现
用户程序与用户程序之间并发执行
用户程序和系统程序之间并发执行
分类
并行性
指两个 或者多个事件 在同一时刻发生, 这是一个具有微观 意义的概念, 在物理上这些事件是同时发生的
同时运行
并发性
指两个或多个事件在同一时间间隔内发生, 是一个宏观的概念, 所使用的时间间隔,相对应, 有某种程度上统计意义
一定时间内,发生
共享性
指的是 操作系统程序与多个用户程序共用系统中的各种资源,这种共享 是在操作系统控制下 实现的
共享资源
中央处理器
内存储器
外存储器
外部设备
形式
互斥共享
同时共享
随机性
定义
指的是 操作系统的运行 是在一种随机的环境下进行的
随机性, 指的 操作系统 不能对所运行的程序的行为和硬件设备做出任何事先的假定
随机性,不是 操作系统不能很好的控制资源和程序的运行, 随机性 突出强调 了 在进行操作系统的设计和实现的时候 要充分的考虑各种各样的可能性
操作系统 本身 应该稳定, 安全,高效, 实现程序的并发和资源共享的目的
虚拟性
研究操作系统的观点
从软件观点来看
操作系统是一个大型软件系统, 是多种功能程序的集合
作为大型软件系统, 操作有 软件的
外部特性
指的是软件的外部表现形式
内在特性
既然是软件, 就具有软件的结构特点
从资源管理的观点来看
计算机系统中的软件和硬件资源可分为
中央处理器
存储器
外部设备和信息
从进程的观点
操作系统是由多个同时独立运行的程序和一个对这些程序进行协调的核心 所组成
从虚拟机的观点
在操作系统的支持下,用户不需要直接使用硬件机器, 而是通过操作系统提供的各种手段来控制和使用计算机
从系统的功能出发, 考虑操作系统的结构
从服务提供者的观点
操作系统提供一系列的功能和遍历为用户服务, 所以可以操作系统看做是 服务提供者
从用户角度,观察操作系统, 认为 该服务提供者为用户提供了比裸机功能更强,服务质量更高,更方便灵活的 虚拟机器
为用户使用提供一组强大,方便,易用的广义指令 (称为 系统调用)
功能 (简记: 作文存进设备)
进程管理
含义
实质是对 中央处理器进行管理, "进程管理" 也称为 "处理器管理"
任务(同步,控制, 通信,调度)
进程同步
处理进程之间的关系,包括同步和互斥
互斥
给资源加锁,并提供操作 锁变量的原语
进程控制
主要处理进程的 创建,转换, 撤销资源的分配和回收
进程间通信
处理相互协作的进程之间信息的交换问题
进程调度
按照一定的算法从队列中挑选一个进程在处理器中执行
名词
原语
具有某种功能, 运行时 有 原子性的小段程序
存储管理
任务
多个程序共享有限的内存资源, 要考虑如何为多个程序分配有限的内存空间.
存储在内存中的多个程序和数据应该彼此隔离,互补侵扰
解决内存扩充问题, 即将内存和外存结合起来管理, 为用户提供一个容量比实际内存大的多的虚拟存储器
简述任务
内存的分配和回收
存储保护
内存扩充
文件管理
计算机系统中的信息资源以文件的形式存储在外存设备中, 需要的时候在装入内存
作业管理
设备管理
负责外部设备的分配,启动, 故障的处理
用户接口
操作系统需要向用户提供使用自己的手段, 也就是 用户与计算机系统之间的接口
操作系统体系结构
window 操作系统
体系结构
包含
内核
内核执行 是操作系统中最基本的操作
主要功能
线程调度
陷入处理
异常调度
中断处理
多处理器同步
供执行体使用的基本内核对象
特点
Window 操作系统的内容始终运行在核心状态,代码 短小紧凑,可移植性好
硬件抽象层 HAL
多种硬件平台 可移植性, HAL 使可移植性称为可能的关键部分
执行体 (NTOSKRNL EXE)
内核是他的下层,执行体从用户态导出并且可以调用函数, 这些函数接口在 NTDLL.DLL,通过Win32API 可进行访问
子系统集合
系统进程
是一种特殊的,只运行在 核心态 的 系统进程的宿主
系统线程
只能从内核态调用
图解
Unix 操作系统
体系结构
包含
内核层
是操作系统管理和控制中心,常驻内存
具有两方面接口
内核与硬件的接口
通常由一组驱动程序和一些基本的例程所组成
内核与Shell的接口
由两组系统调用及其 命令解释程序所组成
内核组成
进程控制子系统
文件子系统
系统调用层
界于 内核层和 应用层之间, 是供程序员设计,开发应用程序调用的
Unix系统调用 包括进程管理, 文件管理, 终端状态
应用层
包括 各种开发工具, 高级语言编译器, 网络通信处理程序
所有应用层 都是在Shell的管理和控制下为用户服务的 , 是面向用户操作的界面
图解
Linux 操作系统
体系结构
图解
包含
Linux内核
内核是操作系统的核心, 负责管理系统的进程, 内存,设备驱动程序,文件和网络系统, 决定这系统性能和稳定性
组成
系统调用
内存管理
进程管理
设备驱动程序
文件系统
网络管理
Android操作系统
安卓应用程序
日历,地图,sms短消息,浏览器, 联系人管理, 所有应用程序都是用Java编写的
图解
操作系统的发展
发展阶段
手工操作
监控程序
早期批处理
多道批处理
分时与实时系统
unix 通用操作系统
个人计算机操作系统
安卓操作系统
分类
按照用户界面的使用 环境和功能特征不同
批处理操作系统
工作方式
用户将作业交个系统操作员,然后系统操作员收集到一定数量的用户作业后, 组成一批作业, 再把这批作业输入到计算机中.
然后这批作业 可在系统中形成一个 连续,自动转接的作业流, 然后系统操作员 启动操作系统, 系统自动的依次执行每个作业, 最后由操作员将执行完毕的结果交给用户
特点
成批处理
系统资源利用率高, 作业吞吐率高
优点
作业流程自动化较高
资源利用率较高
提高整个系统的效率
作业吞吐量大
目标
提高资源利用率,提高作业吞吐率
缺点
用户不能直接与计算机进行交互, 不适合调试程序
分时系统
一台计算机主机连接若干个终端,每个终端可有一个用户使用,用户通过终端交互地向系统提出命令请求, 系统接受用户命令之后,,采用时间片轮转的方式处理服务器请求, 通过交互方式在终端上向用户显示结果,
特点
具有 多路性, 交互性, 独占性 和 及时性
计较堵路
目标
及时响应用户输入的交互命令
实时操作系统 (RTOS)
计算机能在规定的时间内, 及时响应外部事件的请求, 同时完成对该事件的处理, 并能控制所有实时设备和实时任务 协调一致的工作.
主要目标
在严格时间范围内,对外部请求做出反应, 系统具有高度可靠性
分类
硬实时系统
软实时系统
能力
实时时钟管理
过载防护
高可靠性
个人计算机操作系统
是一种单用户多任务的操作系统
特点
在某一时间内为单个用户服务
采用图形界面人机交互工作方式, 界面友好
使用方便, 用户无需具备专业知识, 也能熟练的操作系统
网络操作系统
为计算机网络配置的操作系统 称为 网络操作系统, 基于计算机网络的,在各种计算机操作系统之上 按网络体系结构协议标准设计开发软件, 包括 网络管理, 通信, 安全, 资源共享, 和各种网络应用
模式
集中式模式
分布式模式
目标
相互通信,资源共享
分布式操作系统
将大量的计算机通过网络连接在一起, 可以获得极高的运算能力及其广泛的 数据共享. 这样一种系统称为 分布式系统, 为分布式系统配置的操作系统 称为 分布式操作系统
特点
是一个统一的操作系统, 系统中所有主机使用的是同一个操作系统.
实现资源的深度共享
透明性
自治性
优点
以较低的成本 获取较高的运算性能
可靠性, 对高的可靠性, 如核电站, 分布式系统是其用武之地
机群, 是分布式系统的一种(补充)
嵌入式操作系统
运行在嵌入式芯片环境中, 对整个芯片以及他所操作的,控制的各种部件装置等资源进行统一协调, 调度,指挥和控制的系统软件
特点
高可靠性,实时性, 占有资源少,智能化能源管理, 易于链接,低成本
使用场景
嵌入式操作系统在 工业监控, 智能化生活空间(信息家电,智能大厦), 通信系统,导航系统中 应用非常广泛, 也极为重要
操作系统设计
特点 (难复长)
设计复杂程度高
正确性难以保证
研制周期长
设计过程 (结算功)
功能设计
确定设计的操作系统应该具备的功能以及操作系统的类型
算法设计
根据系统的功能和性能,来选择和设计满足系统功能的算法和策略
结构设计
定义
根据系统的功能和特性,使用相应 的结构设计,将系统逐步的分解,抽象和综合, 是系统结构清晰,简明,可靠,易读,易修改,使用方便,适应性强
结构研究目标
系统模块化
模块标准化
通信规范化
分类 (整层微)
整体式结构
在早期操作系统设计中所采用的方法, 首先确定好操作系统的总体功能,然后将总体工分解为若干子功能,实现每个子功能的程序
优点
结构紧密
接口简单直接
系统效率较高
组成方式
模块组合法
缺点
模块间转接随便, 个模块互相牵连, 独立性差, 系统结构不清晰
数据基本上作为全程量处理, 相当复杂
可适应性比较差
无序模块法
模块接口法
层次式结构
将操作系统的所有功能模块,按功能流程图的调用次序, 分别将这些模块排成若干层, 各层之间的模块只能是 单向依赖 和单向调用. (典型 Linux 操作系统结构)
优点
结构清晰
不构成循环
很容易对操作系统增加或替换掉一层而不影响其他层次
易于调试, 易于修改, 易于扩充,易于维护, 易于保证正确性
微内核(客户/服务器)结构
将操作系统分成 实现操作系统最基本功能的内核 和提供各种服务的 服务进程两部分
特点
运行在核心态的内核: 内核提供所有操作系统基本具有的操作
运行在用户态的并以 客户/服务器方式运行的进程层:除内核部分外, 操作系统所有的其他部分被分成若干个相对独立的进程, 每个进程实现一组服务, 称为 服务进程
优点
可靠
灵活
适宜于分布式处理的计算环境
缺点
效率低
因为所有的用户进程只能通过微内核相互通信, 微内核 本身就是系统的瓶颈,因此在通信频繁的系统中, 微内核不能提供很好的 效率
设计目标 (高可可易安简)
可靠性
高效性
易维护
可移植性
安全性
简明性
2章 操作系统运行环境
处理器
构成 (运控寄高)
运算器
实现指令中的 算术 和 逻辑运算, 是计算机计算的核心
控制器
负责控制程序运行的流程, 包括 取指令, 维护处理器状态, 处理器与内存的交互
寄存器
是一种暂时存储器,用于处理器执行指令的过程中暂存数据, 地址,以及指令信息.
类型
程序计数器 (PC)
记录要取出指令的地址
指令寄存器 (IR)
包含了最近取出的指令
程序状态字 (PSW)
它记录了处理器的运行模式信息
状态码
CPU 的工作状态 代码
指明当前处理器的工作状态是管态 还是目态 用来说明当前在处理器上执行的是 操作系统 还是一般用户, 从而觉得是否可以使用特权指令 或 拥有其他特殊权利
条件码
反映指令执行后的结果特征
中断屏幕码
指出是否允许中断
高速缓存
指令
执行过程
取指令
指令寄存器
程序计数器+1
分类
访问存储器指令
负责处理器和存储器之间的数据传送
I/O 指令
负责处理器 和 I/O 模块之前的数据传送和命令传送
算术逻辑指令
又称为 数据处理指令, 执行有关数据的 算术和 逻辑操作
控制转移指令
可以指定一个新的指令的执行起点
处理器控制指令
修改处理器状态,改变处理器的工作方式
类型
特权指令
只能由操作系统使用的指令
非特权指令
操作系统和普通用户都能使用的指令
工作状态
管态
指操作系统管理程序运行的状态, 具有较高的 特权级别 又称为 内核态, 特权态(特态, 系统态)
目态
一般指用户程序运行的状态,具有较低的特权级别, 又称为 用户态, 普通态(普态)
其他分类
核心态
管理态
用户程序状态(目标状态)
状态转换
目态到 管态 转换
唯一途径就是 通过中断, 中断响应时 交换中断向量, 新的中断向量中 PSW的处理器状态位 标志位 管态
管态到目态转换
可以通过设置PSW指令 (修改程序状态字) , 实现从操作系统向用户程序的装换
存储器
中央处理器能直接访问的唯一存储空间是内存储器(主存)
类型
读写型存储器
也称为 随机访问存储器, RAM, 主要用作存储器随机存取的程序和数据
可以把地址存入 任一单元, 并可以在以后可的任何时候把数据读取出来, 或者重新存入新的数据的一种存储器
只读型存储器
也称为 ROM, PROM 是一种可编程的只读存储器, 可由用户使用特殊PROM 写入器向其中写入数据,
EPROM, 是可用特殊的紫外线光照射此芯片, 以擦去 其中的信息位, 使之恢复原来的状态, 然后使用特殊的EPROM 写入器写入数据
存储分块
存储的最小(存储)单位是 二进制, bit 包含(0,1), 存储器最小编址单位是 字节 byte, 2个字节一般称为 一个字, 4个字节称为 双字
内存空间最小分配单元 为 块, 也被称为 物理页 page, 块的大小 随机器各异, 有 512B, 1KB ,4Kb, 8KB
层次结构
设计考虑的问题
容量
是存储系统的基础
速度
速度要能匹配处理器的速度
成本
和其他硬件相比要在一个合适的范围内
保护
界地址寄存器
保护键方式
提供存储系统的效能的关键
存储访问局部性原理
访问局限性
寄存器
用户可见寄存器
数据寄存器
又称为 通用寄存器
包含
算术指令
访存指令
地址寄存器
用于存储数据
存储指令的物理地址
线性地址
有效地址
特定方式的寻址
条件码寄存器
保存处理器操作结果的各种标记位
最常见控制,状态寄存器 (用户不可见) (程指程)
程序计数器
记录将要取出的指令地址
指令寄存器
包含最近取出的指令
程序状态字
记录处理器的运行模式信息
高速缓存
内存储器
硬盘存储器
磁带机, 光盘存储器,云存储
I/O 部件
I/O 结构
每台外部设备中都有控制IO 设备的控制器, 由IO 设备控制器分别控制外设的运行
通道
独立于处理器,专门负责数据I/O传输工作的处理单元
DMA 技术 (Direct Memory Access)
直接存储器访问技术: 通过系统总线的一个独立控制单元, 自动的控制成块数据的在内存和IO单元之间传送
缓存技术
用在外部设备和 其他硬件之间的一种数据暂存技术, 利用存储器在外部设备中设置了数据的一个存储区域
时钟部件
作用
1. 做多道程序运行的环境中 时钟可以为系统发现一个陷入死循环的作业, 从而防止 机时的浪费
2.在分时系统中个, 用 时钟间隔 来实现各个作业按时间片轮转运行
3.在实时系统中, 按要求的时间间隔 输出 正确的 时间信号给相关的 实时控制设备
4. 定时唤醒, 要求按照事先给定的时间执行各个外部事件
5. 记录用户使用各种设备的时间和记录某外部事件发生的时间间隔
分类
硬件时钟
电路中的晶体振荡器,每隔一定时间固定的脉冲频率, 电路中的时钟寄存器,根据产生的 脉冲数, 对时钟寄存器进行+1
软件时钟
利用内存单元模式 时钟寄存器, 并采用程序来计算相应的脉冲数, 然后对内存寄存器进行加1 或者减1 的工作
绝对时钟
北京时间
不受外界干扰,独立运行的一种时钟
相对时钟
间隔时钟
只从某一个时间初始值开始的一段时间间隔
中断机制
中断概念
指处理器对系统中或系统外发生的异步事件的响应.
中断是所有要打断处理器的正常工作次序, 并要求其去处理某一事件的一种常用手段.
一个系统中提供的中断源的有序集合 被称为 中断字
Intel x86 处理器提供了 256中不同的中断.
中断过程
中断源
引起中断系统事件 称为中断事件 和中断源
中断请求
中断源向处理器发出的请求信号
中断断点
发生中断时正在执行的程序的暂停点
中断响应
处理器中断当前的程序 转而处理中断的过程
中断字
中断源的有序集合(中断源的字典库)
这是一个逻辑结构,在不同的处理器中有不同的实现方式
中断位
在中断逻辑线路中专门接收中断信号的触发器
中断机制
能充分发挥处理器的使用效率
提高系统的实时能力
中断技术解决了 主机和外设并行工作的问题, 消除了因外设慢而使得主机等待现象, 为多机操作和实时处理提供了硬件基础
相似概念: 是异常 . 中断 是由外部事件引起的, 异常 是有正在执行的指令引发的.
中断类型
时钟中断
维护软件中断
处理器调度
控制系统定时任务
实时处理
I/O 中断
I/O 操作正常结束 以及 I /O 异常
控制台中断
系统操作人员通过控制台发出的命令
硬件故障
一般由 硬件的问题引起, 排除此类故障通信 需要人工的干预, 例如 ,复位硬件 或者 更换设备
需要做好保存现场, 使用一定的手段 警告管理员并提供一些辅助的诊断信息
自愿性中断
系统服务请求(自愿性中断) 一般由处理器提供专用的 (访管指令) 来触发
异常类型
程序性中断
第一类 只能由 操作系统完成 第二类 可由程序自己完成
在某些条件下由指令执行结果产生
算术溢出
目态程序视图执行非法指令
访问不被允许的存储位置
虚拟存储中的缺页
访管指令异常
目的是要求操作系统提供系统服务
中断系统
中断系统
是现代计算机系统的核心机制之一, 他不是单纯的 硬件 或者软件的 概念, 而是 硬件和软件的 互相配合, 相互渗透 而使得计算机系统得以充分发挥能力的计算机模式
组成
硬件中断装置
负责捕获中断源发出的中断请求, 并以一定的方式响应中断源, 然后将中断处理的控制权转移给特定的中断处理程序
软件中断处理程序
针对中断事件的性质而执行相应的一系列操作
请求的接收
通过计算机硬件的中断逻辑线路和中断寄存器实现的
请求的响应过程
处理器接受中断信号
保护现场, 将中断断点的程序状态字PSW 和程序计数器PC 值存储系统堆栈
分析中断向量, 取得中断处理程序的入口地址
将处理器的PC值置为中断处理程序入口地址
调用中断处理程序
中断的处理
其中包括检查 I/O 相关状态信息, 操作I/O设备 或者内存之间的数据传送
步骤
处理器会检测到第一条中断放回指令
处理器会把原先被中断的程序的上下文环境从系统堆栈中恢复
处理器状态也从 管态 恢复成倍终端是的目态
整个中断处理结束
处理器开始一个新的指令周期, 继续执行原来被中断的程序
过程
接受和响应中断
保护中断断点现场
分析中断向量
调用中断处理程序
中断处理结束恢复现场
原有程序继续执行
中断屏蔽
PWS 中的中断屏蔽位决定这些屏蔽位标识了被屏蔽的中断类
机器中断不可屏蔽, 比如内存奇偶校验错, 掉电故障, 这一类不可屏蔽的故障, 不管程序状态字中的屏蔽是否建立, 处理器都要立即响应这类中断, 并进行处理.
中断嵌套
禁止其他中断.
这种处理方法 可以用软件简单的实现
允许优先级高的中断打断优先级低的中断处理过程
多级中断 和中断优先级
现代微处理器 都提供了多级中断系统,在多级中断系统中,硬件决定了中断的优先级.
作用
对各类中断信号依据其 紧急程度 和重要性进行级别划分
对于多个重要程度相同的 中断信号同时到达
固定优先数
轮转法
调用
相关概念
系统调用
系统调用是 操作系统 提供给 编程人员的唯一接口,编程人员利用系统调用, 动态请求和释放系统资源,调用系统中已有的系统功能, 来完成与计算机硬件部分相关的 工作 以及控制程序的执行速度
库函数
在C语言设计中, 所有匹配标准头文件的集合, 以及常用函数库实现程序
应用程序接口API
又称为应用程序接口, 就是软件系统不同组成部分,衔接的约定,踏实提供给应用程序调用使用的代码
系统调用
概念
用户在程序中调用操作系统所提供的一些子功能.
这种调用通常采用特殊的机器指令实现, 并且将系统转入特权方式 (管态) , 系统调用程序 是一种低级的过程, 只能由 汇编语言自己访问
系统调用是 操作系统 提供给 编程人员的唯一接口, 编程人员利用系统调用, 动态请求和释放系统资源, 调用系统中已有的系统功能, 来完成与计算机硬件部分相关的 工作 以及控制程序的执行速度
分类 (进进问设信 静静闻色性)
进程控制类系统调用
对进程的控制 ,负责进程的创建, 和终止
文件操作类系统调用
创建,打开,关闭, 读,写,删除,复制,建立目录
进程通信类系统调用
调用和被用进程之间传递信号和消息
设备管理类系统调用
释放有关设备, 启动设备操作
信息维护类系统调用
获取当前时间,日期, 设置文件的访问和修改时间, 了解当前用户数,操作系统版本,空闲内存, 磁盘空间大小
命令分类
系统调用命令
又称为 扩充机器指令
增强系统功能, 方便用户使用而提供的
广义指令
系统调用指令
由操作系统提供的一个 或多个 子程序模块, 即软件实现的
机器指令
由硬件线路直接实现
函数调用
两者区别
运行在不同的系统状态
一般函数调用
调用程序和被调用程序都运行在相同的状态
管态 或者目态
系统调用
调用程序在目态,被调用程序在 管态
状态的转换
一般函数调用
不设计到 系统状态的转换, 可直接由调用过程转向 被调用过程
系统调用
不允许由调用过程 转向被调用过程
返回问题
嵌套调用
用户程序 和 系统程序之间的参数传递
由陷入指令自带参数
通过有关通用寄存器来传递参数
Unix 通常采用通用寄存器来传递参数
在内存内开辟专用堆栈区来传递参数
3章 进程 与 线程
程序
概念
是一个在时间上按严格次序前后相继的操作序列 这些操作是 机器指令 或者 高级语言编写的语句
处理器一次执行一条指令, 对内存一次访问一个字节 或字, 对外部设备一次传送一个数据块
顺序执行
一个具有独立功能的程序 独占处理器 直到得到 最终结果的过程 称为 程序段 顺序执行
特点
顺序性
封闭性
程序执行结果的确定性
程序执行结果的可再现性
并发执行
指的是两个 或两个以上的程序 在计算机系统中, 同时处于 已开始执行 且 尚未结束的 状态 (同一时刻 OR 同一 时段)
特征
执行期间 并发程序 相互制约
程序与计算 不在 一一对应
并发程序的执行结果 不可再现
程序的并行执行 与程序 并发执行
多道程序设计
概念
为了提高系统中 各种 资源的利用率, 缩短程序执行的 周转时间, 广泛采用 多道程序技术, 使硬件资源能并行工作
是操作系统所采用的最基本, 最重要的技术, 根本目的是 提高整个系统的效率
特点 (随独子)
随机性
独立性
资源共享性
缺陷
可能延长程序的执行时间
系统的效率提高程度有限
进程
具有一定功能的程序在某个数据集合上的一次运行活动, 是操作系统进行资源 分配 和 调度 的一个独立单位.
分类(从操作系统角度)
系统进程
执行操作系统程序, 完成操作系统的某些功能,系统进程优先级 高于一般用户进程的优先级
用户进程
直接为用户服务
程序和进程的区别
程序是构成进程的组成部分之一, 一个进程的运行目标是执行它所对应的程序, 如果没有程序, 进程就失去了其存在的意义.
程序是 静态的, 进程是 动态的
程序是永久的
进程 是 暂时存在的, 有生命周期, 有诞生和消亡
组成
程序
数据
进程控制块 (PCB)
是进程的 "灵魂"
特征(并动,独交,异结)
并发性
动态性
独立性
交往性
异步性
结构性
状态
3种状态模型
分类 (就等运)
运行状态
就绪状态
等待状态( 阻塞状态, 封锁状态)
状态转换
就绪---运行
运行--就绪
运行---等待
等待--就绪
5种状态模型
模型分类 (祖创就结运)
运行状态 Running
就绪状态 ready
进程在内存 且 可立即进入运行状态
阻塞状态 blocked
进程在内存内, 并等待某时间的出现
创建状态 New
结束状态 Exit
状态装换
创建新进场
提交 Admit
调度运行 dispatch
释放 Release
超时 或 被抢占 (Time out)
事件等待 (Event Wait)
事件出现 (Event Occurs)
状态解释
就绪状态 ready
进程在内存 且 可立即进入运行状态
阻塞状态 blocked
进程在内存内, 并等待某事件的出现
事件出现
进程等待的事件出现, 如操作完成, 申请成功
出现的情况
阻塞到就绪
针对内存进程的事件出现
阻塞挂起 到 就绪挂起
针对外存进程的事件出现
提交
完成一个新进程的创建过程,新进程进入就绪状态 或 就绪挂起状态, 进入就绪挂起状态 是因为系统希望保持一个大的就绪进程表 ( 挂起 和非挂起)
7中状态模型
模型分类 (创就运等退)
创建状态
就绪挂起状态
就绪状态
运行状态
结束(退出)状态
阻塞(等待)状态
阻塞(等待)挂起状态
状态解释
挂起
把一个进程从内存转到外存
转换
阻塞 到 阻塞挂起
就绪 到 就绪挂起
运行 到 就绪挂起
激活
把一个进程从外存 转到 内存
转换
就绪挂起 到 就绪
阻塞挂起 到 阻塞
阻塞挂起状态
进程在外存 并等待某事件的出现
就绪挂起状态
进程在外存, 但只要进入内存,就可以运行
好处
提高处理效率
就绪进程表为空时, 有空闲内存空间 用于提交新进程, 可提高处理器效率
为运行进程提供足够内存
资源紧张时候, 可以把某些进程 换到 外存
有利于调试
在调试时, 挂起被调试进程, 可方便对其地址空间进行读写
进程控制块 PCB
为了便于系统控制 和描述进程的活动过程, 在操作系统核心中定义了一个专门的数据结构, 称为 进程控制块 PCB
内容包含
调度信息
进程名
进程号
地址空间信息
优先级
当前状态
资源清单
家族关系
消息队列指针
进程队列指针
当前打开文件
现场信息
组织方式
线性方式
索引方式
链接方式
进程的队列
队列分类
就绪队列
等待队列
运行队列
队列组成方式
单向链接
双向链接
位置分类
队首进程出队
非队首(队尾) 进程出队
队尾进程出队
入队位置
从队首入队 成为 新的队首进程
从队尾入队, 称为 新的队尾进程
插入到队列中某连个进程之间
进程控制
原语
由 若干指令所组成的一个指令序列, 来实现某个特定的 操作功能.
原语是操作系统核心的一个组成部分 ,原语 必须在管态下执行,并且常驻内存.
原语和系统调用都可以被进程所调用, 两者的差别在于 原语 有不可中断性, 他是通过 在执行过程中关闭中断实现的, 而且原语往往 是被系统进程所调用
进程控制原语分类 (改唤阻创挂激撤)
创建进程
先申请一空闲PCB,让后将有关信息 填入 PCB, 设置改进程进入就绪状态, 最后把它插入就绪队列中
撤销进程
找到要被撤销的进程的PCB, 将它从队列中消去, 撤销属于改进程的一切 "子孙进程" 释放被撤销进程所占用的全部资源, 并消去被撤销进程的PCB
挂起进程
激活进程
阻塞进程
进程处于运行状态, 首先应中断处理器的执行, 把处理器的当前状态保存在PCB的现场信息中, 然后把进程的状态设置为等待状态, 并把它插入到事件的等待队列中
唤醒进程
在等待队列中找到该进程, 将进程的当前状态设置为 就绪状态, 让后将它从等待状态中撤出, 并加入到就绪队列中排队, 等待调度执行
改变进程优先级
UNIX 操作系统进程创建操作fork
为子进程分配一个空闲的 proc结构(即进程描述符)
赋予子进程惟一的表示PID
以一次一页的方式复制父进程用户地址空间
获取子进程继承的共享资源的指针, 如打开的文件和当前工作目录等
子进程进入就绪, 加入调度队列
对子进程返回标识符0 , 向父进程放回子进程的PID
fork函数
特点
只调用一次, 却会返回两次
exec 函数
步骤
在原进程空间转入新程序的代码, 数据,堆,栈.
保持进程ID和父进程ID等
继承控制终端
保留所有文件信息, 如目录,文件模式, 文件锁
signal 信号函数
是UNIX 处理异步事件的经典方法, 信号可以说是进程控制的一部分, 信号的产生如下
产生
当用户按某些终端键时
硬件异常产生信号, 除数为0 , 无效的存储访问
进程用kill 函数可将信号发送给另一个进程或者进程组
用户可用kill 函数将信号发送给其他进程
当检测到某种软件条件已经发生, 并将其通知有关进程.
进程调度
概念
进程调度 即 处理器调度
进度调度的任务是 控制, 协调进程对处理器的竞争, 按照一定的调度算法,使某一就绪进程获得 CPU的控制权, 转换成 运行状态
主要功能
记录系统中所有进程的 执行状况
根据一定的调度算法, 从就绪队列中选出一个进程, 准备把处理器分配给他
把处理器分配给进程
调度的时机
正在执行的进程运行完毕
正在执行的进程由于某种错误而终止
时间片用完, 既有一个进程从运行状态 变为 就绪状态
正在执行的进程调用阻塞原语将自己阻塞起来, 即一个进程从运行状态进入阻塞状态.
创建一个新的进程, 既有一个新的进程进入就绪队列
正在执行的进程调用 唤醒原语 操作激活 了等待资源的进程, 即一个等待状态的进程 变为 就绪状态.
进程的分类
计算密集型 Compute-bound
该进程具较长时间的处理器集中使用 和较小频度的 I/O 等待
IO (密集型) IO-Bound
在IO请求之间较少进行计算, 并不是因为他们有特别长的I/O请求
调度方式
抢占式
非抢占式
系统分类
批处理
用来处理 薪水册, 存货清单, 账目收入,账目支出,利息计算, 索赔处理和其他的周期性的进程
非抢占式, 抢占式都可以接受
交互式系统
抢占是必须的
实时系统
非抢占式
调度算法设计
原则
设计调度算法的目标取决于 环境
保持系统的所有部分尽可能的忙碌
目标
批处理进程
吞吐量,周转时间 以及处理器利用率
交互式系统
特别是分时系统和服务器, 最重要的是最小响应时间
实时系统
必须满足截止时间
算法分类
先来先服务(FCFS)
最简单的非抢占式, 单链表方式
优点
易于理解,便于在程序中运用
缺点
等待很长时间,不利于用户的交互体验
最高响应比优先算法 HRRF
概念
性能 介于 先来先服务(FCFS) 和最短进程优先算法(SJF) 之间的 这种算法
该算法 适合 长短进程混合的系统, 是的调度的性能指标 趋于合理
响应比 Rp= (等待时间+ 预计运行时间) / 预计运行时间 = 周转时间/ 预计运行时间
Rp=1+等待时间/运行时间
优点
在一定程度上改善了调度的公平性和调度的效率
缺点
计算需要消耗系统资源, 存在一定的系统开销
最短进程优先算法(SJF)
可以预知的,非抢占式算法
是批处理调度算法
最短剩余时间优先算法 SRTN
最短进程优先算法的抢占式 版本
轮转算法 RR
概念
算法最早来自分时系统, 该算法中, 时间片Q长度 选取非常重要, 将直接影响系统的开销和 响应时间
如果时间片长度小, 则调度程序剥夺处理器的次数频繁, 加重系统开销
如果时间片长度大, 算法就退化成先来先服务
影响时间片因素
系统响应时间
就绪进程的数目
计算机的处理能力
最高优先级算法 HPF
概念
进程调度 每次将处理器分配给优先级最高的就绪线程
进程的优先级 由 进程优先数决定
进程优先数 的设置 可以是静态的, 也可以是动态的
特点
最高优先级算法可以不同的处理器调度方式结合起来, 从而形成 可抢占式 最高优先级算法 和不可抢占式最高优先级算法
多级反馈队列算法
概念
综合了 先进先出调度算法, 时间片轮转算法 和可抢占式最高优先级算法 的一种调度算法
基本思想
被调度队列的设置
在同一个队列之内的调度原则
在不同队列之间的调度原则
进程优先级的调度原则
计算
周转时间
完成时间-等待时间
线程
基本属性
是一个可拥有资源的独立单位
是进程中的一个实体 , 是处理器调度和分配的基本单位
基本概念
线程基本上不拥有系统资源, 只拥有少量在运行中必不可少的资源, 但他与同属于一个进程的其他线程共享进程所拥有的的 全部资源
一个线程 可以创建和销毁 另一个线程
同一个进程之间的多个线程 可以并发执行
属性
一个线程被创建后 便开始他的生命周期, 直至 终止.
每个线程有一个唯一的标识符 和一张线程描述表, 线程描述表 记录了 线程执行的寄存器 以及栈等现场状态
不同的线程可以执行相同的程序, 即 同一个程序被不同用户调用时 ,系统为他们创建不同的线程
线程是处理器的独立调度单位, 多个线程可以并发执行, 在单处理器的计算机系统中, 个线程可以交替的占用处理器
引入的好处
创建线程花费时间少,不需要另行分配资源, 比创建进程快, 而且系统开销也少
线程切换时间少
同一个进程内的线程共享 主存地址空间 (内存和文件), 所以线程之间相互通信无序调用内核, 故不需要额外的通信机制, 通信简单, 信息传输速度快
线程能独立执行, 能充分利用和发挥处理器与外部设备并行的工作能力
线程和进程比较
线程具有传统进程具有的特征, 称为 轻量级 进程. 或 进程元;
传统进程 称为 重量级进程. 它相当于只有一个线程任务
引入线程的操作系统中, 一个进程都有若干个线程, 至少也需要有一个线程
实现方式分类
用户级线程
这种线程不依赖内核,
只存在于 用户态中, 它的创建, 撤销和切换 不会通过系统调用来实现, 因此和内核无关, 内核也不知道有用户线程的存在, 从内核角度 就是 单线程进程
优点
可以在不支持线程的操作系统上实现
内核级线程
依赖于内核
无论是在用户进程中的线程, 和系统进程中的线程, 它的创建,撤销和切换 都由 内核实现
内核中 保留一块线程控制块, 系统根据 控制块的 感知该线程的存在, 并对其进行控制
两者对比
调度和切换
内核级线程的调度和切换 与进程的调度切换 十分相识
用户级线程的切换 通常发生在 一个应用进程的诸多线程之间,同样无需内核支持
系统调用
用户进程调用系统调用, 从用户状态 ---> 核心状态, 用户进程封锁, 返回系统调用时唤醒
内核级线程: 调度以线程为单位, 只封锁该线程, 调度其他线程执行.
执行时间
用户级线程的系统, 调度是以 进程为单位进行的
内核级线程, 调度是以线程为单位进行的
混合实现方式
同时实现了
用户级线程
内核级线程
线程实现机制
Pthread包
函数调用
Pthread_create
创建一个新线程
Pthread_exit
结束调用的线程
Pthread_join
等待一个特定的线程退出
Pthread_yield
释放处理器来执行另一个线程
Pthread_attr_init
创建并初始化一个线程的属性结构
Pthread_attr_destory
删除一个线程的属性结构
数据
1个标识符
n个寄存器
m属性
(栈大小,调度参数, 其他项目)
系统内核
概念
为了提高 系统的运行效率 保护系统的关键部分不被破坏, 把系统中 提供 支持系统运行的 基本操作 和基础功能 的一组程序模块集中安排 ,形成一个操作系统的核心, 或 操作系统内核, 简称 内核 Kernel
特点
内核只占操作系统代码中一小部分, 内核是操作系统中 最接近裸机的部分
内核本身不是进程, 是系统进程和用户进程赖以活动的基础
功能
功能列表 (进进中控,存,时)
中断处理程序
进程同步和互斥
进程调度
控制和通信
存储管理的基本操作
时钟管理
功能实现
对内核的各种功能通过调用 执行原语 操作来实现.
4章 进程同步与互斥
并发进程
在一个多道程序中同时运行的进程
进程的执行速度不能由进程自身控制
分类
相关进程
在逻辑上具有某种联系的进程
一个进程的执行依赖其他进程的进展情况, 或者一个进程 可能影响其他进程的执行结果 ,则表示相关
无关进程
在逻辑上没有任何联系的进程
一个进程的执行 不影响其他进的执行, 与其他进程的进展情况无关, 他们是各自独立 , 则表示无关
进程同步
进程之间一种 直接协同 工作关系, 一些进程相互合作共同完成一项任务
也是进程之间的一种 直接制约关系,一个进程的执行 依赖另一个进程的消息
进程互斥
资源要求排他性的使用, 一次只能为一个进程服务, 因此各个进程之间只能互斥使用这些资源, 那么进程间的关系 就是 进程互斥
临界
临界资源
某些资源 只允许一个进程使用, 则这类资源为 临界资源 或 共享变量
临界区
进程中访问临界资源的 程序段
相关临界区
若干进程共享一临界区, 则临界区 为 相关 临界区, 此时若干进程为 互斥关系
调度原则 (让有有无多)
有空让进
无空等待
多种择一
有限等待
造成 忙等待 或 死锁
让权等待
同步机制
基本要求
描述能力强, 能够解决个进程间同步互斥,问题
容易实现且效率高
使用方便
类型
硬件同步机制
软件同步机制, 信号量 及 P,V 操作, 管程, 条件临界
用于集中式系统的 路径表达式
用于分布式系统的 远程过程调用
信号量
是一种特殊的变量, 他表面形式是一个整形变量,附加一个队列, 而且他只能被特殊的操作使用, P 操作, Vc操作
设信号量为 S ,S 可以取不同的整数值, 对信号量S 实施的P(S) 等待 和 V(S) 发信号
P 和V信号
P(等待) 和V(发信号) 操作必须是成对 出现, 有一个P 操作 就一定有一个V 操作.
当互斥的时候
他们处于同一个进程
当同步的时候
他们在不同的进程中
P(S) 当S<0 该进程状态为等待状态, 然后将该进程 PCB 插入响应的S信号等待队列末尾, 直到有其他进程在S上执行V操作为止
V(S) 当 S <=0 ,释放在S信号量队列中 等待的一个进程, 将状态改为就绪状态, 并将其 插入就绪队列, 然后执行本操作的进程继续执行,
P(s): 标识 请求的进程 获得的资源
V(s):标识请求的进程 释放了资源
S :可以标识临界资源的的 数量
缺点
增加程序的复杂性
降低通信效率
相互等待很长的时间
有可能导致死锁的发生
优点
操作简单
表达能力强, 用PV可解决任何进程同步互斥问题
管程
P,V 缺点
由于采用 信号量 P, V 同步机制编写并发程序, 对共享变量的操作分散 于各个进程中,其缺点如下
缺点
程序易读性差
程序不利于修改 和维护
正确性难以保护
概念
一个管程 是一个有过程, 变量, 数据结构等组成的一个集合, 他们组成一个特殊的 模块和 软件包
组成
管程名称
共享数据的说明
对数据进行操作的一组过程
对共享数据赋初值的语句
作用
保证共享资源的互斥执行, 即一次只能有一个进程可以在管程内活动.
性能由管程本身实现的 , 因此, 程序员可以不必显示的 编写程序代码去实现这样的同步制约
特性
主要特性
模块化
抽象数据类型
信息隐蔽
任何时刻管程中只有一个活跃进程
管程是编程语言的组成组成部分
管程是半透明的
一个管程可以单独编译
特性说明
管程中的共享变量 管程外部不可见, 外部只能通过调用管程提供外部过程(函数)来间接的访问管程中的共享变量
为了保证共享变量的数据完整性, 规定管程互斥进入
管程通常用来管理资源, 因此管程中有 进程等待队列 以及相应的等待唤醒等操作
相关操作
wait
一个管程发现自己无法继续运行时候, 执行 wait操作,使自己阻塞, 将另一个进程调入管程
signal
唤醒正在睡眠的进程,可执行 singal
多个进程的处理方式
P等待Q继续,直到Q退出或等待
Q等待P继续, 知道P等待或退出
规定唤醒管程中最后一个可执行的进程
进程通信
解决方案
共享内存
操作系统只提供要共享的内存
程序员负责公共内存的 互斥关系
消息机制
消息缓冲通信
根据生产者-消费者原理, 利用内存中公用消息缓冲区实现进程之间的消息交换
一个进程可以给若干进程发送消息, 也可以接受若干进程发来的消息.
消息队列采用的是临界区, 发送进程向队列中添加消息时候,接受进程不能从队列取出消息,反之一样
操作步骤
1. 消息缓冲区, (消息的长度, 消息正文, 发送者, 消息队列指针
2.消息队列首指针 m_q , 一般保存在PCB 中
3.互斥信号m_mutex 初始值为1, 用于互斥访问消息队列, 在PCB中设置
4.同步信号为 m_syn ,初始值为0, 用于消息计数, 在PCB中设置
5.为实现消息原语 send (receiver,a)
6.接收消息原语 receive(a)
信箱通信
信箱 是一种通信机构,用于链接两个进程, 发送进程把信件投入信箱, 接受进程可以任意时候取走信件.
信箱 结构
信箱说明
可存信件数
表明信箱的容量大小
已有信件数
信箱体
信箱原语
创建信箱原语
撤销信箱原语
发送信件原语
接收信件原语
信箱原则
已满
发送进程 被置为 "等信箱" 状态, 直到信箱有空才被释放
无信
接受进程被置为 "等信件" 状态, 直到有信件时才被释放
管道通信
概念
首先从出现在UNIX操作系统中,管道, 就是连接两个进程之间的一个打开的共享文件, 专用于进程之间数据通信
发送进程可以不断的从管道一端写入数据流, 每次写入的信息长度可变
接收端在需要的时候从管道另一端读出数据, 读出单位长度也是可变的
通信的基础: 文件系统. 发送和接受进程的同步和互斥由操作系统自动进行, 对用户透明
优点
传送数据量大
缺点
通信速度较慢
通过共享文件通信
管道通信
5章 死锁
原因
详细原因
资源有限,有些资源是独占型, 进程对资源的占用是互斥的
进程使用多个资源 有先后顺序
异步前进的各种进程会因为申请与释放资源顺序安排不当, 造成这僵局
在进程使用某种同步或 通信工具时,发送,接收的次序安排不当, 也会造成类似现象
主要原因
竞争资源
系统资源在分配的时候出现失误, 进程间对资源的相互争夺 造成僵局
资源
永久性资源(可重复用资源)
指系统中可供进程重复使用 长期存在的资源
临时性资源(消耗性资源)
由某个进程产生, 只为一个进程使用一次或经过短暂时间后便不再使用的资源
推进顺序不合理
多程序运行时, 进程推进顺序不合理
概念
是一种现象, 一组进程中的每个进程 无限期 的等待被该组进程的另一个进程所占有且 永远不会释放的 资源, 处于死锁状态的 进程 称为死锁进程.
死锁的进程 至少为两个. 并且其中至少有两个进程 已占有资源
产生的必要条件
互斥条件
不可剥夺条件, 有称为 不可抢占 或不可强占
请求和保持条件, 又称为 部分分配 或占有申请
循环等待条件, 又称 环路等待
解决死锁
不让死锁发生 (预防)
预防死锁
设置严格的限制, 破坏死锁的必要条件以防止死锁发生, 这一方法可能会让系统资源利用率过低
避免死锁
在资源的动态分配过程中, 采用某种方法 防止系统进入不安全的状态, 从而避免死锁的发生
这种方法 只需 以 较弱的限制条件为代价, 就可获得较高的资源利用
检错死锁是否发生, 在加以解决(解决)
检测与解除死锁
通过系统检测设置检测机构, 定时运行一个 "死锁检测程序" 检测 死锁是否真的发生, 并能精确的确定和死锁相关的进程和资源, 然后采取 措施 解除死锁, 将进程从死锁状态解脱出来. 本质上 确定 是否存在 "循环等待" 条件
检测方法时机
死锁检测 在资源分配后, 在每次调度后, 或者利用定时器,定时运行检测
当系统中的某个进程长时间阻塞 或者 阻塞进程过多时, 启动死锁检测程序
检测算法
为每个进程和每个资源 指定唯一编号
设置一张 资源分配表 有向图 (资源号, 进程号) ,表中记录每个资源被哪个进程所占用
设置一张 进程等待分配表 (进程号,等待资源号)
解除方法
剥夺资源
考虑的问题
选择一个牺牲进程
重新运行或 回退到某一点开始继续运行
怎样保证不发生饥饿的现象
不能总是剥夺同一进程的资源,是该进程饥饿
最小代价 ,即 最经济合算的算法, 使得进程回退带来的开销最小.
进程重新运行的因素
进程的优先级
进程已运行了多长时间, 该进程的其他任务还需要多长时间
该进程使用的资源的种类和数量, 这种资源能简单的剥夺吗?
为完成起任务,进程还需要多少资源
有多少进程要被撤销
该进程被重新启动运行的次数
原理
使用挂起/激活机制 挂起一些进程, 剥夺他们占用的资源给死锁进程, 以解除死锁,待条件满足后, 在激活被挂起的进程
方法
还原算法,即恢复计算结果和状态
建立检查点, 主要是用来恢复分配前的状态
撤销进程
概念
撤销死锁进程, 将他们占有的 资源分配给一些死锁进程, 直到死锁解除为止
撤销 衡量标准
进程优先级, 被撤销的进程的优先数
进程类的外部代价
运行代价
优点
简单明了
缺点
有可能撤销不影响死锁的进程, 当死锁进程包含操作系统的进程单元时候, 死锁变的复杂,
可能会造成系统重启, 从而付出较高代价
可能会造成系统重启, 从而付出较高代价
忽略死锁
对于死锁发生几率极低, 或者 解决死锁代价太大 或暂时没有办法解决的死锁, 问题暂时不予理睬
安全状态与安全序列
安全状态
如果操作系统能够保证所有的进程在有限的时间内得到需要的全部资源, 则称为 安全状态, 否则说明系统 不安全
安全状态 指的是, 系统中给所有的进程构成的安全序列 ,安全状态下 系统不会发生死锁
系统如果处于不安全状态 则可能会发生死锁
算法
死锁避免算法
Dijkstra 等人提出的 银行家算法
死锁检测算法
为进程和每个资源指定一个唯一的编码
设置一张 资源分配状态表, 记录每个资源正在被哪个进程所占用
设置一张 进程等待分配表
算法规则: 当任一进程PJ申请一个已被其他进程占用的资源时, 进行死锁检测
资源分配图 (有向表)
死锁定理
如果资源分配图中没有环路, 折系统没有死锁
如果资源分配图中出现了环路, 则系统中可能存在死锁
如果环路中,每个资源类中均只包含一个资源实例, 则环路是死锁的 充分必要条件
如果环路中每个资源类的实例数 不全为1,则环路是产生死锁的 必要条件, 不是充分条件
化简法: 来检测系统是否存在死锁
如果一个进程的所有资源请求都能满足, 可以设想该进程得到其所需的全部资源, 最终完成 任务, 运行完毕, 并释放所有的资源
原理
1 : 在资源分配图中找出 非等待和非孤立的 进程节点Pi, 由于Pi 能获取到所需要的全部资源, 且运行 后释放它所占有的全部资源, 故可在资源分配中小区Pi 所有的申请边和分配边, 使之成为无申请和无分配的边的孤立结点
2: 将Pi释放的资源分配给申请他们的进程, 即在资源分配图中将这些进程对资源的申请边 改成 分配边.
3: 重复1,2 两个步骤, 知道找到不符合条件的进程结点.
6 章 存储
存储概念
存储器是计算机系统 处理器 处理的信息的 来源 与 归宿,由 存储单元, 组成的 一维连续的地址空间
快速存储设备和 大容量设备必须构成统一整体, 由操作系统协这些存储器的使用
对内存的速度要求是 尽量与处理器的存储速度相匹配 能装下当前运行的程序与数据
存储体系
寄存器
高速缓存(cache)
内存 (主存)
分类
系统区
用以存储操作系统常驻内存部分, 用户不能占用这部分空间
用户区
分配给用户使用, 用于转入并存储用户程序和数据, 这部分的信息随时间都在发生变化
管理的问题
内存管理方法
内存分配和释放算法
虚拟存储器的管理
控制内存和外存之间的数据流动方法
地址变换技术
内存数据保护与共享技术等
用户对内存管理的要求
充分利用内存, 为多道程序并发执行提供存储基础
尽可能方便用户使用.
操作系统自动装入用户程序
用户程序中不考虑硬件细节
系统能够解决程序空间比实际内存大的问题
程序的长度在执行时,可以动态伸缩
内存存取速度快
存储保护与安全
共享与通信
及时了解有关资源的使用状况
实现的 性能和代价合理
存储管理任务
内存的分配和回收
任务
记住每个存储器区域的状态
实施分配
回收
算法
内存分配表
位示图表示法
用一位bit 来表示一个空闲页面( 0 表示空闲, 1 表示占用)
空闲页面表
包括首页面号 和空闲页面数, 连续若干页面作为一组登记在表中
空闲块表
空闲块首地址 和空闲块长度, 没有记录的区域为进程 所占用
分配方式
静态分配
程序要求的内存空间 是在装入内存前确定和分配的,程序运行过程中不允许在申请和搬家, 分配工作是在程序运行前一次性完成
动态分配
具有较大的灵活性
有利用 提高内存 利用率
反应了程序的动态性, 比静态分配更合理
内存空间
由存储单元组成的一堆连续的地址空间
存储共享
概念
指两个或多个进程共用内存中相同区域 多道程序动态共享内存, 提高内存利用率, 能共享内存中某个区域的信息
分类
代码共享
节省内存空间, 提高内存利用率
要求代码必须是纯代码
数据共享
实现进程间的通信
存储保护
保护类型
地址越界保护
权限保护
对属于自己区域的信息, 可读可写
对公共区域中允许共享的信息 或 获得授权可使用的信息, 可读而不可修改
对未获授权使用的信息, 不可读,不可写
通常需要有硬件支持,并由软件配合实现
主要内容是
保护系统程序区域不被用户有意无意的侵犯
不允许用户程序读写不属于自己地址空间的数据
扩容
具体实现 实在硬件支持下, 软件,硬件相互协作, 将内存和外存结合起来统一使用.
借助虚拟存储技术 或 其他交换技术, 达到 逻辑上的扩充容量的目的
本地外存(磁盘)
远程存储(云存储)
存储器的分类
内存存储器
存储器能直接访问
外存储器
处理器通过 相应的输入/输出设备 才能使用 外存和内存交换信息
存储管理器的任务
存储当前正在运行的代码及数据, 是程序中指令本身地址所指的就是程序计数器所指的存储器
地址转换
地址分类
存储器 以 字节为单位(每个字节为8个二进制位) 为编制单位, 每个字节都有一个地址与其对应.
由 绝对地址 对应的内存空间 称为 物理地址空间
由 逻辑地址 对应的存储空间称为 逻辑地址空间
用户程序中使用
地址转换
地址重定位
将逻辑地址 转换成绝对地址的 工作 称为 地址重定位 或者 地址转换, 地址映射
静态重定位
在程序开始执行前, 集中的完成地址转换, 在程序执行中 无须在进行地址转换工作
采用 静态重定位的 不支持 程序浮动
动态重定位
在程序执行中,每执行一条指令都由硬件的地址转换机构 进行地址转换, 在程序执行时,完成地址转换
采用动态重定位的 系统 支持 程序浮动
分区管理
目的
能满足多道程序运行的最简单的存储管理方案
基本思想
把内存划分成若干个连续区域, 称为 分区, 每个分区装入一个运行程序
分区方案
固定分区
把系统内存分成若干 大小固定的分区, 一旦划分好, 在系统运行期间不在重新划分. 分区大小可以不同
内存分区表
包含
序号
分区大小
分区起始地址
使用状态
占用 空闲
缺点
不能充分利用内存, 因为一个程序的大小,不可能刚好等于某个分区的大小
分区方案灵活性差, 可接纳程序的大小受到了分区大小的严格限制
可变分区
系统不预先划分固定分区, 在转入程序时划分内存区域, 使得 为程序分配的大小 正好 等于该程序的 需求量, 且 分区的个数 是可变的
优点
灵活性强
较固定分区 能获得较高的 内存利用率
紧缩技术 (压缩技术)
内存经过一段时间的分配回收后, 会存在很多小空闲块, 也称为碎片,
通过移动内存中的程序, 把所有空闲碎片合并成一个连续的大空闲且放在内存的一端, 吧所有程序占用的区域放在内存的另一端, 这一技术 称为 紧缩技术 或者 压缩技术
优点
集中分散的空闲区
提供内存的 利用率
便于进程动态扩充内存
缺点
增加系统的开销
移动是有条件的
尽量减少需要移动的进程数 和信息量
如何实现
硬件外部支持
限长寄存器
用来存储程序所占分区的长途
当逻辑地址 大于限长寄存器中的限长值时, 表示访问的内容超过分区范围, 这是就不允许访问, 形成一个 地址越界 的 "程序性中断 "事件
基址寄存器
用来存储程序所占分区的起始地址
内存分配表
已分配区表
记录装入程序在内存中占用分区的起始地址和长度, 用标志位 指出 占用分区的程序名
空闲区表
记录内存中可供分配的空闲起始地址和长度, 用标志位指出该分区 是未分配的空闲区
分配策略
最先适应算法
顺序分配算法
接到内存分配时, 顺序查找分区说明表, 找到第一个满足申请长度的空闲区, 将其分割 并 分配
简单,快速
最优适应算法
接到内存申请时, 查找分区说明表, 找到第一个能满足申请长度的 最小空闲区, 将其分割并分配
最节约空间, 可能会形成碎片
最坏适应算法
接到内存申请, 查找分区说明表, 找到能满足申请空间的 最大空闲区, 在大空闲区装入信息 , 分割剩下的 空闲区 相对也很大, 还可以装入其他程序
可以避免形成碎片
分割大的空闲区后, 在遇到交大的内存申请的时候,可能出现 无法满足申请空间的空闲区.
分区回收
当用户程序 执行结束后, 系统要回收已使用完毕的分区, 将其记录在空闲区表中
步骤
1. 先检查是否有与 归还区相邻的 空闲区, 即检查相邻的空闲区中 标志位 未分配的 栏目
2. 确定 是否有相邻空闲区 (上邻, 下邻)
3.应合并成一个空闲区
4.登记
分区保护
1.设置界限寄存器
上界寄存器
下界寄存器
基址寄存器
限长寄存器
2. 保护键方法
为每个区分配一个 保护键, 相当于 一把锁
同时为每个进程分配一个相应的 保护键, 相当于一把钥匙, 存放在程序状态字 中 , 每当访问内存时, 都要检查钥匙和锁是否匹配, 如果不匹配, 则发出 保护性中断
优点
算法比较简单
实现起来容易
内存额外开销较小
存储保护措施也很简单
内存利用率上,可变分区利用率比固定分区高
缺点
内存使用仍不充分, 存在严重的碎片问题
浪费了处理器的时间
不能为用户提供 "虚存" 即不能实现对内存的扩充, 受物理存储实际容量限制
内存中可能包含一些实际不使用的信息
扩充内存方法
覆盖技术
OverLay
主要用早早期的系统中
采用简单的扩充内存技术
主要用在系统程序的内存管理
打破了需要将一个程序全部信息装入内存后程序才能运行的限制
特点
指的是一个程序的若干程序段, 或几个程序的某些部分共享一个存储空间
覆盖技术可由编译程序提供支持, 覆盖技术可以从用户级彻底解决内存小装不下程序的问题
覆盖技术不需要操作系统的支持, 可以完成由用户实现, , 即覆盖技术是用户程序自己附加的控制
覆盖发生在同一进程或程序内部
使用场景
用于系统程序的内存管理上
交换技术
Swapping
主要用于小型分时系统
又称为 对换技术, 进程从内存移到磁盘, 并在移回内存 称为 交换
特点
是进程在内存和外存之间的动态调度, 是由操作系统控制的
交换技术 是虚拟技术基础
打破 一个程序一旦进入内存便一直运行到结束的限制
相比覆盖技术, 交换技术不要求用户给出程序之间的逻辑覆盖结构, 对用户而言是透明的
交换可以发生在不同的进程或程序之间的, 因此引用比较广泛
使用的时候需要考虑的问题
换出进程的选择
交换时间的确定
交换空间的分配
换入进程换回内存时的位置的确定
缺点
影响对用户的响应时间
减少交换的信息 是交换技术的关键问题
主要区别
控制交换的方式不同
覆盖技术发生在统一进程和程序内部
交换程序发生在不同进程和不同程序之间
虚拟页式存储管理方案
概念
将 虚拟存储技术和页式存储管理方案, 结合后的一种典型的,大多数操作系统采用的 虚拟页式存储管理方案
组成
虚拟存储技术
基本思想
利用大容量的外存来扩充内存, 产生一个比有限的内存大的多的逻辑虚拟内存空间, 简称 虚存, 以便于 有效的支持多道程序系统的实现和大型程序运行的需要, 从而增强系统的处理能力.
概念
把一个逻辑地址连续的程序分散存储到 几个不连续的内存区域中, 并且保证程序的正确运行, 既可以 充分利用内存空间, 有可以减少移动所花费的开销
硬件支持
系统有容量足够大的外存
系统有一定容量的内存
最主要的是, 硬件提供虚实地址映射的机制
优点
是一种有效的管理方式
支持的硬件
- 支持页式存储管理的硬件部件通常为 "存储管理部件" MMU
MMU 把内存分成大小相等的许多区域, 每个区域 称为 物理页面
物理页面 是进行内存空间分配的物理单元
- 要求程序中的逻辑地址也进行分页, 页的大小与物理页面的大小一致 逻辑地址 也被称为 虚拟地址
虚页地址
虚拟页号
页内地址
内存分配表
标志
已分配
未分配
剩余空闲物理页面数
标识方法
位示图
分配步骤
查看空闲物理页面数 是否满足程序要求
若能满足, 则根据需求从位示图 中找出 一些为0 的位, 把位置标志位1
从空闲的页面数中减去 本次分配的页面数
按照找到的位 计算出 对应的物理页面号
物理页面号= 字号* 字长 +位号
装入程序到上面的物理页面号中,并为程序建立页表
内存的回收
根据归还的物理页面号 计算出物理页面对应 位示图对应的位置
将占用标志修改成0
再把回收的物理页面数加入到 空闲物理页面数中
字号= i/ 字长
位号= i mod 字长
页式存储管理的地址转换
硬件支持
页表控制寄存器
组成
页表始址寄存器
用于保存正在运行进程的页表在内存的首地址
页表长度寄存器
用于保存正在运行的程序的页表的长度
作用
页表
作用
标志出 程序虚拟地址中的页号 与 所占用的 物理页号 之间的对应关系
是硬件进行 地址转换的依据, 每执行一条指令 按虚拟地址中的页号查页表
物理地址计算公式
物理地址= 物理页面号* 块长+页内地址
物理页面号 称为 页帧 和 页框号
分类
多级页表
大多数操作系统采用 二级页表
第一级 页目录
保存 页表页的地址
第二级 页表页
保存物理页面号
散列页表
地址空间大于32位时,一种常见的方法是使用以页号为散列值的散列页表, 其中每个表象都包含一个链表,该链表中元素散列值都指向同一个位置
散列页表
虚拟页号
所映射的页框号
指向链表中下一个元素的指针
反置页表
每个物理页框对应一个表项, 每个表项 包含于该页框 对应的虚拟页面地址, 以及拥有该页面进程的信息
特点
整个系统只有一个页表, 并且每个页框对应其中一个表项
需要在反置页表中存放 地址空间标识符
页表项
设计如下
物理页面号
页面在物理内存中 对应的物理页面号
有效位
有称为 驻留位, 存在位, 表示该页 是否在内存还是在磁盘
访问位
表示该页在内存期间是否被访问过
修改位
表示该页在内存中是否被修改过
保护位
是否能读写
虚拟页式存储地址转换过程
转换检测缓冲区 TLB
按给定的虚拟地址进行读写, 必须访问两次内存, 因此,延长了访问周期,降低了执行速度
第一次 按页号读出页表中对应的块号
第二次 按计算出来的绝对地址进行读写
为了提高执行速度
方法一 在地址映射机制中 增加一组 高速寄存器保存页表
方法二 在地址映射机制中 增加一个小容量的联想寄存器(相联存储器), 由 高速缓冲存储器组成)
缺页异常处理
若在页表中发现所要访问的页面不在内存中, 则产生缺页异常
处理
根据当前执行指令中的逻辑地址来查页表的有效位, 判断该页是否在内存
该页标志为 0 ,形成缺页异常, 保留现场
操作系统处理缺页异常, 寻找一个空闲的页面
若有空闲页, 则把此片上读出的信息 转入到该页面中
修改页表及内存分配表, 表示该页已存在内存
如果内存中无空闲页, 则按某种算法选择一个 已在内存的页面, 把它暂时调出内存
恢复现场, 重新执行中断的指令
调度策略
调入策略
概念
在进程转入时, 将其全部页面复制到交换区, 以后总是从交换区调入
凡是未被修改的页面, 都直接从文件去读入, 而被置换时不需要调出, 已被修改的页面, 被置换是需要调出交换区, 以后从交换区调入
分类
请求调页
只调入发生缺页时所需的页面
优点
实现简单
缺点
容易产生较多的缺页,形成 颠簸现象
预调页
发生缺页时,一次调入该页以及相邻的几个页
置页策略
线程出现 缺页时, 内存管理器还必须确定将调入的虚页存放在物理内存的何处, 用于确定 最佳位置的一组规则 称为 置页策略
置换策略
如果发送 缺页, 而且物理内存 已满, 置换策略 被用于 确定 哪个虚页必须从内存中移出为新的页面腾出空位.
置换策略
全局置换
局部置换
出现的问题
颠簸
如果刚被调出的页面有立即被调入, 因而又要把他装入, 而转入不就又要被调出, 调出后又要调入, 如此反复, 称为 抖动 或者 颠簸
主要原因
缺页率高引起的
分配个一个进程的内存物理页面数太少
解决
工作集模型
统计工作集大小一般由硬件完成,系统开销较大。
与分配策略组合
固定分配局部置换
可变分配全局置换
可变分配局部置换
页面置换算法
理想页面置换算法 (OPT)
淘汰以后不再需要活着 长时间以后不再会用的页面, 这一算法一般不可能是实现, 当他可以作为 衡量其他页面淘汰算法 优劣的一个标准
先进先出算法 FIFO
优点
简单,容易实现
缺点
最先转入内存的一页,不等于这一页是不常使用的. 很少使用纯 FIFO 算法
第二次机会页面置换算法
检查进入内存时间最久页面R位, 如果是0 , 那么这个页面即老又没有使用, 可以立即进行置换
如果是1, 将R进行清理0 , 并把页面放到链表的末尾, 修改其进入时间,然后继续搜索.
时钟页面置换算法 Clock
最近最少使用页面置换算法 LRU
发生缺页时, 首先淘汰掉 最长时间未被使用过的页面. 最近最少使用页面置换算法 总是选择 距离现在最长时间内未被访问过的页面先调出.
必须 对每一页 访问情况进行时刻记录和更新, 开销大, 效果接近OPT算法
缺页率
f=F/A
F 次访问的 页面 未被调入内存
A 程序执行页面访问的总次数
影响的因素
分配给程序的物理页面数M
分配的越多, 同时转入的内存页数 就越多, 因此,减少了缺页异常次数, 也就降低了 缺页率, 反正 越高
页面的大小
页面越大, 缺页异常就少, 缺页率 越低, 反之 越高
程序编制方法
怎么样编制程序也值得探讨, 程序编制的方法不同, 对缺页异常的次数影响很大
页面调度算法
调度算法好, 就不会出现 颠簸, 理想的算法OPT 能使最低采用FIFO调度算法产生的缺页率 为最佳算法的3倍
高速缓冲存储器的支持
优点
有效解决了碎片问题
提高了内存利用率
利于组织多道程序执行
缺点
存在页面空间的浪费问题
7章节 文件系统
文件
解释为一组带标识的, 逻辑上有完整意义的信息项的序列 ,标志指的 文件名, 是一个抽象机制
文件建立在 存储器空间里, 以便 文件能够长期保存, 文件建立并存储在外存中, 就一直存在, 直到被删除
文件项
文件的长度
文件内容的意义
有文的建立在和使用者解释
文件名
用户在创建文件时候确定, 并在以后访问文件时使用
信息项
是构成文件的基本单位, 这些信息项 是一组有序序列, 他们之间具有一定顺序关系
读写指针
读指针用来记录文件当前的读取位置,指向下一个要读取的信息项
写指针, 用来记录文件当前的写入位置, 下一个将要下写入的信息被写到该出
文件系统
是操作系统中统一管理信息资源的一种软件, 管理 文件的
存储
更新
检索
共享
保护
从用户角度看文件系统
建立文件
读写文件
修改文件
复制文件
撤销文件
按名存取
存储控制
功能
管理文件 存储空间 , 实施 分配和回收
按名存储, 实现文件从名字空间到外存地址空间的映射,管理名字空间
实现文件的共享, 提供文件的保护和保密措施
向用户提供一个方便使用的接口
系统维护和向用户提供有关信息
保持文件系统的执行效率
提供与IO统一接口
文件存储介质和设备
外存设备
特点
容量大
断点后任何保存信息
速度较慢
成本较低
组成
驱动部分
驱动器 使用是使 计算机能实现 读写( 保存,控制,测试) 存储介质上的内容
存储介质
称为 卷, 把存储介质看做 信息容器的 比喻
分类
移动存储实体
存储实体 可以同驱动器分离
闪存
Flash盘
U盘
存储介质
磁带
最早使用一种存储介质, 是一种顺序存储设备, 只有前面的物理块被访问后, 才能存储后序的物理块
优点
存储容量大
缺点
存取速度慢
只能顺序存取, 不适合随机存储
一般用于后备存储,保存不经常使用的信息
或不同操作系统之间传递信息的一种介质
磁盘
磁盘空间 组成
柱面
柱面号
磁道
扇区
扇区号
分类
软盘
容量小, 易损坏,保存不便被淘汰
组成
软盘驱动器
软盘片
磁盘
容量大,成本低,被广泛使用
允许随机存储设备,
时间
寻找时间
磁头在移动臂带动下移动指定柱面所花的时间;
应尽可能的减少这个时间
延迟时间
指定扇区旋转到磁头下需要的时间
旋转调度
传送时间
由磁头进行读写完成信息传送的时间
移动臂
调度算法
先来先服务算法
最短寻找时间算法
电梯调度算法
简单实用高效
单向扫描算法
总是从0号柱面向里道扫描
容量计算
存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数
图3中磁盘是一个 3个圆盘6个磁头,7个柱面(每个盘片7个磁道) 的磁盘,图3中每条磁道有12个扇区,所以此磁盘的容量为:
存储容量 6 * 7 * 12 * 512 = 258048
图3中磁盘是一个 3个圆盘6个磁头,7个柱面(每个盘片7个磁道) 的磁盘,图3中每条磁道有12个扇区,所以此磁盘的容量为:
存储容量 6 * 7 * 12 * 512 = 258048
光盘
在激光的作用 特性发生变化的一些材料所制成的非磁记录介质
只读式
容量大
速度快
价格便宜
闪存
不易丢失存储器的一种
优点
可擦除
可随机存储
寿命和可靠性高
读写速度比磁盘块且方便
在擦除和重新编程时不需要额外的电源
存储方式
要求
读写外存储设备时候,不涉及到硬件的细节, 用户直接使用逻辑地址和逻辑操作
外存设备存储设备尽可能快, 容量大且空间利用率高
外存储设备上存放的信息安全可靠, 防止来自硬件的故障和他人的侵权
可以方便共享, 存储空间可以动态扩容,缩小,携带,卸载便捷,可随时设备和使用情况
以尽可能小的代价完成上面要求
存取方式
顺序存取
按从前往后的次序依次访问文件的各项信息项
随机存取
称为:"直接存取"
UNIX系统采用了 顺序存取和 随机存取两种方法
MS-DOS 系统也采用了顺序存取 和 随机存取
文件分类
用途
系统文件
库函数文件
用户文件
组织形式
普通文件
内部无结构的一串平滑的字符组成的文件
目录文件
由文件目录项所构成的文件
用来检索文件
特殊文件
IO设备也是一种文件
保护方式
只读文件
读写文件
可执行文件
无保护文件
信息流向分类
输出文件
输入文件
输入输出文件
存放的时限
临时文件
永久文件
档案文件
介质类型
磁盘文件
磁带文件
卡片文件
打印文件
文件共享
含义
一个文件允许多个用户同时使用
好处
节省文件所占用的存储空间
免除系统复制文件的工作
减少用户大量重复性劳动
减少实际输入输出文件的次数
利用文件共享可以实现 进程间的相互通信
使用方式
文件可以同时使用
允许多个用户使用同一个共享文件, 当系统必须对该共享文件实施同步控制.
文件不允许同时使用
任何时刻只允许一个用户使用共享文件
共享的三种形式
文件被多个用户使用,
由存储权限控制
文件被多个程序使用
但是分别用自己的读写指针
文件被多个程序使用
但共享读写指针
文件存储
建立副本
定时转储
规定文件的存取权限
方法
采用树形目录结构
存储控制表
验证的步骤
审定用户的存储权限
比较用户权限的本次存储要去是否和用户的存储权限一致
将用户存储要求和被访问文件的存储控制表进行比较,看是否有冲突
unix的文件传使用权限管理方案
存储控制矩阵
配套模块
存储控制验证模块
优点
概念比较简单
实现容易
缺点
占用太多内存
花费时间开销
二级存储控制
第一级
把用户按某种关系划分为若干用户组, 进行对访问者的识别
第二级
进行对操作权限的识别
文件保护
隐藏文件目录
设置口令
使用密码
病毒防范
8章节 I/O设备管理
概念
广义IO设备
输入输出设备 也称 外部设备 外设
包括 除 CPU 和内存外的 所有设备和装置
狭义的IO设备
不包括 外存设备
IO硬件组成
物理设备
电子部件
任务
解决 IO 设备 同 CPU 性能不匹配
操作系统主要通过
缓冲技术(单缓冲技术), 中断技术,虚拟技术 来解决
实现统一管理, 方便用户使用, IO设备
操作系统通过
提供简单易用的接口, 这个接口对所有设备都相同, "设备独立性"
用户对IO设备的使用必须是安全的
对使用者来说,
设备传输和管理的数据 是安全和保密的, 不能破坏和泄露
对设备拥有者来说
多用户多任务的环境中, 设备应该通过协调来避免冲突, 设备不能破坏
分类
使用特性
输入设备
输出设备
交互式设备
特点:用户命令信息通过各种输入设备进入计算机系统,系统同步地在显示器上显示用户的
命令信息以及执行命令后所得到的处理结果
命令信息以及执行命令后所得到的处理结果
存储设备
存储设备特性
可写入性
可读出性
可保存性
信息组织方式
字符设备
键盘、终端、打印机
块设备
磁盘、磁带,千兆网,光纤网
可共享性
独占设备
在一个程序(作业、用户)的整个运行期间都必须由单个程序(作业、用户)独占直至该程
序(作业)完成的设备;
序(作业)完成的设备;
缺点
低效率的,有可能造成死锁。
分配 和释放
使用 分配表
设备类表
记录系统中各类设备,每类设备 占一个登记栏
设备表
虚拟设备技术 (SPOOLing) 假脱机技术
让独占性设备 变为 共享设备
包含
输入程序模块
预输入
输出程序模块
缓输出
作业调度程序
分类
输出SPOOLing
输入SPOOLing
优点
提高设备利用率
缩短用户程序执行时间
共享设备
能够同时让许多程序(作业、用户)使用的设备
广义的设备共享
非并发共享 , 几乎所有的共享设备,都是 独占设备解
释为只能顺序共享
释为只能顺序共享
狭义的共享设备
并发共享 ,即操作系统中的共享设备的真正定义
虚拟设备
在一类设备上模拟另一类设备,被模拟的设备称为虚拟设备
通常用共享设备模拟独占设备,
用高速设备模拟低速设
备
备
共享使用方法
申请设备
如果设备被占用,进入等待队列, 否则分配设备
启动设备
IO 传输
释放设备
设备结束时候,发出中断信号, 系统唤醒一个等待设备的进程
信息交互方式
PIO
程序直接控制方式
用户进程直接控制处理器或者内存和外围设备之间进行信息传送方式
优点
硬件结构比较简单
缺点
处理器效率低
传输在处理器的控制下完成,对外部出现的异常事件无实时响应能力
别称
忙-等 方式
轮询方式
循环测试方式
DMA
硬件控制方式
由硬件执行IO数据交换的工作方式
直接存储器访问技术: 通过系统总线的一个独立控制单元
自动的控制成块数据的在内存和IO单元之间传送
自动的控制成块数据的在内存和IO单元之间传送
优点
高速传输成组的数据
有硬件电路完成,传输速度块
处理器仅仅在 开始和结束的时参与, 对数据的传输不干预, 可以减少大批量数据传输时 处理器的开销
处理器和外设并行效率高
数据块 传送过程
传送前预处理
由IO指令对DMAC进行初始化和启动
数据传送
有DMAC控制总线进行数据传送
传送后处理
传送结束有DMAC向处理器发送中断请求, 报告DMA操作结束
通道控制方式
选择通道
用于链接高速外围设备, 如磁盘, 磁带, 信息以成组方式高速传输
优点
以块为单位进行传输, 传输效率高
缺点
通道利用率低
数组多路通道
是对选择通道的一种改进
优点
以块为单位进行传输, 传输效率高
具备多路并行操作能力, 通道利用率高
缺点
控制复杂
字节多路通道
是一种简单的共享通道, 在分时的基础上为多台低俗和中速设备服务
设备分配方式
静态分配
在用户作业开始前, 由系统一次分配该作业所需要的全部设备,控制器,通道
优点
安全的分配方式, 不会出现死锁
缺点
设备利用率低
动态分配
子主题
优点
缺点
如果分配算法不当,有可能造成进程死锁
分配算法
采用4张表
系统设备表
设备控制表
控制器控制表
通道控制表
具备的功能
具备寄存外设中断请求的能力
具备可屏蔽本级中断请求的能力
和文件管理的关系
unix 中将所有的IO设备都当做 文件对象来管理
IO管理, 是对系统中的IO设备硬件进行管理, 也是对资源的管理 , 更多的是为用户提供 标准的接口来使用设备
总结
3章
进程调度算法计算(周转时间)
FCFS
最短进程有限算法SJF
子主题
最高响应比HRRF
子主题
子主题
4章
PV 操作互斥填空
PV 操作执行结果
PV 读-写者问题
子主题
多个生产者-消费者问题
子主题
简单生产者消费者问题
子主题
进程通信
子主题
5章
资源分配表 (有向图)
6章
缺页次数 和缺页率 计算
0 条评论
下一页