操作系统基础
操作系统定义
- 用户:是计算机与用户之间的接口
- 管理:管理计算机硬件与软件资源
操作系统特征
- 并发
并发:同一时间范围 并行:同一时刻 - 共享
互斥共享(临界资源)
同时访问 - 虚拟
将一个物理实体变为多个逻辑上的对应物
时分复用:虚拟处理器
空分复用:虚拟储存器 - 异步
走走停停,不可预知的速度 - 最基础的特征:并发与共享
操作系统功能
- 管理
处理机,存储器,文件,设备管理 - 用户
命令接口:- 联机/交互式命令接口 : 适用于分时/实时系统的接口
- 脱机/批处理命令接口 : 适用于批处理系统
程序接口:系统调用
- 对计算机资源的扩充
操作系统发展与分类
- 手工阶段
- 批处理阶段
单道批:顺序 自动 单道
多道批:宏观上并行 微观上串行 多道
(中断的特点: CPU与外设并行) - 分时操作
将处理机运行时间划分为时间片,按时间片轮流将处理机分配给各联机作业使用
T=QN (Q时间片,N用户数) - 实时操作
硬实时:必须在时间范围内完成
软实时:偶尔犯错
优点:及时性.可靠性
微机(个人)操作系统
- 微型计算机使用的操作系统是微机操作系统
分时与批处理相结合 - 分类:
单用户单任务(dos)
单用户多任务(windows)
多用户多任务(uninx) - 优点:便宜,规模小;资源与功能有限
网络操作系统
基于计算机网络,在各种操作系统上按照网络体系结构协议标准开发的软件,
包括网络管理,通信,安全,资源恭喜昂和各种网络应用
目标是相互通信与资源共享
windos ,unix ,linix,nt
现代操作系统的新特征
多线程,微内核,网络化,多媒体
操作系统的结构
- 无结构os(整体系统结构)
整个操作系统是一组过程的集合
优点:接口简单直接,系统效率高
缺点:os庞大杂乱,调试困难
在内核模式下运行 - 模块化os
os按照功能划分为若干个模块,每个模块实现一个特定功能,模块之间的通信通过事先定义的接口进行
优点: 模块之间相互独立,减少了模块之间复杂的调用关系,结构清晰
缺点:模块之间依赖关系复杂,降低了模块之间的相对独立性,不利于修改 - 分层式os
os的功能模块按照功能调用次序分为若干层,各层之间只有单向调用关系(上层调用下层)
优点:每一层只使用其底层提供的功能与服务,使得系统易于调试与验证
缺点:不灵活效率低
运行模式:所有操作系统进程使用分层模式在内核模式下进行 - 宏内核
性能好 - 微内核结构
运行在核心态,常驻内存
进程管理,存储器管理,I/O设备管理,进程间通信
采用C/S模式,面向对象技术
os核心进程在内核模式下运行 - 混合内核结构
所有进程都在内核模式中运行,
关键操作系统运行在微内核,
其余使用C/S模式运行(操作系统服务是服务器,应用程序进程是客户端)
优点:灵活,可扩充,可靠,可以运行在分布式系统中 - 外核
为虚拟机分配资源
处理机的状态
计算机有两类程序在运行,用户程序与系统程序,对系统资源与机器指令有不同的使用权限
权限次序
: 核态(管态)>目态(用户态)
- 核态(cpu 0):允许cpu使用全部的资源与全部指令,包括特权指令
时钟管理,中断机制,原语,系统控制的数据结构以及处理(进程管理,存储器管理,设备管理) - 用户态(cpu 1):禁止使用特权指令,不能直接使用系统资源以及改变cpu状态
访管指令
特权指令
- 允许与禁止中断
- 在进程之间切换处理机
- 存取用于内存保护的寄存器
- 执行输入与输出
- 停止一个中央处理机的工作
I/O,关中断,内存清零,存取寄存器,送PSW
状态转换
目态 -> 核态 : 通过中断/异常机制,由硬件实现
核态 -> 目态 : 中断返回指令
中断与异常
中断处理过程中
- PC PSW 硬件自动保存
- 通用寄存器内容 os保存
- 块表,Cache 硬件机构保存
外中断:
可屏蔽中断:INTR线实现
不可屏蔽中断:NMI线,紧急断电,硬件故障
内中断(异常) - 故障
指令异常引起, - 自陷
用户态下调用操作系统内核程序引起 - 终止
使得CPU不能执行的硬件故障
操作系统引导
cpu - > BIOS -> MBR ->PBR
找硬盘 找硬盘分区 找硬盘分区的操作系统 启动操作系统
虚拟机
- 第一类
裸机+VMM - 第二类
宿主OS + VMM
进程与线程管理
进程并发执行的特点
- 并发:程序的执行在时间上可以重叠
- 共享:可以共享变量,通过引用共享变量交换信号
- 制约:程序并发执行获写作完成统一人任务,产生制约,需要对并发执行的次序进行协调
- 交互:程序在执行中共享某些变量,产生交换
进程的定义
- 程序:具有独立功能的一组指令或语句的集合,或是指出处理机执行操作的步骤
- 进程:程序在某个数据集上的一次
执行活动
- 进程=程序+数据+PCB
程序:表示该进程所要进行的操作
数据集合:程序加工的对象与场所,包括操作的数据和程序自己的变量单元
进程控制块PCB:用于刻画进程处于不同阶段的状态的数据块,进程存在的唯一标志
PCB
为了方便进程的调度与管理,将各个进程的PCB组织起来
常用的组织方式:
- 链接方式
- 索引方式
进程的特性
- 动态;进程最基本的特征
- 并发:若干进程可以同时执行,轮流占用处理器交替执行
- 独立:系统中独立获得资源与调度的基本单位
- 异步:进程按照各自的独立的不可预知的速度向前推进(
顺序不定
) - 结构特征:进程映像(程序段/正文段,数据段,堆,栈以及进程控制段)
进程与程序的区别
- 程序是静态,进程是动态的
- 进程是暂时的,程序是永久的
- 组成不同
- 通过多次执行,一个程序对应多个进程;通过调用,一个进程包括多个程序
- 进程是资源分配,处理机调度的基本单位,是一个独立的运行单位
进程状态
- 就绪:有了所有资源,除了cpu
- 阻塞:还需要其他资源
阻塞到就绪: 进程是被动的,需要中断处理程序的协助
运行到阻塞: 进程是主动的
进程控制
原语
: 一种特殊的系统调用,执行过程不允许被中断
进程控制原语
:创建,撤销,阻塞,唤醒原语
进程通信
低级通信
互斥与同步(只能传递控制信息)
pv操作
高级通信
共享存储
- 基于数据结构的共享----低级方式
- 基于存储区的共享—高级方式
消息传递
进程间的数据交换以格式化的消息
为单位
- 直接通信方式
发送进程直接将消息发送给接收进程 - 间接通信方式
发送进程将消息发给中间人,例如信箱
,接收进程在信箱中取得
管道通信
管道是一个特殊的共享文件,pipe文件,固定大小的缓冲区,只允许单向通信,数据在管道中先进先出
线程
共享进程的地址空间与全局变量,自己不拥有系统资源,是独立调度与分配的基本单位
TCB 线程控制块
线程终止后,不立即释放自己占用的资源
线程实现方式
- 用户级线程
ULT ,线程的创建,管理在用户态进行
优点: 没有模式切换的开销
缺点:当一个线程执行系统调用被阻塞,整个进程的线程都被阻塞;不能发挥多cpu的优势 - 内核级线程
KLT,线程管理的工作在内核态进行
缺点: 同一进程中的线程切换,需要从用户态转到核心态进行,系统开销大 - 组合方式
用户级线程通过时分多路复用实现
内核级线程对应多个用户级线程 - 线程库
为程序员提供线程管理的API
1)用户空间提供
2)操作系统直接支持
eg: Windows API 内核级线程库;Java线程API 宿主系统的API
多线程模型
- 多对一
多个用户级线程对应一个内核级线程
线程的管理在用户空间执行 - 一对一
每个用户级线程对应一个内核级线程
线程的切换由内核完成 - 多对多
n个用户级线程对应m个内核级线程,n>=m66
cpu调度
why: 提高cpu利用率
调度层次
高级调度 / 作业调度
从外存调入内存
中级调度 / 内存调度
将不能运行的进程挂起
调职外存等待
提高内存的利用率
低级调度 / 进程调度
从就绪队列中选取进程分配cpu
调度程序
排队器 ,分派器 ,上下文切换器
调度程序是操作系统内核程序
调度完成后,进行进程切换
调度方式
- 非抢占式
- 抢占式
闲逛进程
进程切换时,如果没有就绪进程,就会调度闲逛进程,此进程不需要cpu以外的资源
线程调度
- 内核级线程调度
- 用户级线程调度
调度目标
cpu利用率
系统吞吐量
周转时间 = 作业完成时间 - 作业提交时间
带权周转时间: 周转时间/作业实际运行时间
等待时间 = 等待cpu时间
响应时间
进程切换
进程在操作系统内核的支持下运行的,与内核紧密相关
先调度再切换
上下文切换
切换cpu 到另一个进程,需要保存当前进程状态,并恢复另一个进程的状态,进程改变了
模式切换
用户态与内核态的切换
调度算法
- 先来先服务 FCFS
- 短作业优先 SJF
- 高响应比优先 HRRN
响应比=(等待时间+要求服务时间)/要求服务时间 - 优先级调度算法
- 时间片轮转 RR
- 多级队列调度算法
实时操作系统: 优先级调度
分时操作系统: 高响应比优先,时间片轮转,多级反馈队列
同步互斥
同步: 进程之间的直接制约关系,协调次序
互斥: 进程之间的间接制约关系
临界资源:一次只允许一个进程使用的资源
临界区:访问临界资源的代码
实现临界区互斥的准则
- 空闲让进
- 忙则等待
- 有限等待
- 让权等待:当进程不能进入临界区,应该立即释放cpu
实现临界区互斥方法
软件方法
- 单标志法
两个进程必须交替进入临界区,如果一个进程不再进入,则另一个进程永远不能进入,违背空闲让进 - 双标志先检查法
你不想,我想
两个进程可能同时进入,违背忙则等待 - 双标志后检测法
我想,你不想
两个进程可能都进不去,违背空闲让进,有限等待,产生饥饿现象
- Peterson 算法
我想,我让给你
违背让权等待,一直执行while循环
硬件方法
- 中断屏蔽方法
只能在内核态执行,不适用于多处理机 - 硬件指令方法–TestAndSet
TS指令是原子操作,设置共享布尔变量lock,适用于多处理机系统,不能实现让权等待 - 硬件指令方法–Swap
每个临界资源设置共享变量lock,每个进程再设置局部布尔变量key
互斥锁
采用硬件机制实现,主要缺点忙等待
信号量
- 整型信号量: 表示资源数目
- 记录信号量: 整型变量+进程链表
p-,wait
v+,signal
经典同步问题
- 生产者-消费者
- 读者-写者
- 哲学家进餐
管程
管程:进程同步工具,保证进程互斥,提供条件变量实
- 管程的名称
- 共享数据结构说明
- 对该数据结构进行操作的一组过程/函数
- 对共享数据设置初始值的语句
死锁
多个进程竞争资源造成的僵局
竞争统一资源,等待对方资源
饥饿 VS 死锁
1. 发送饥饿的进程可能只有一个,可能处于阻塞态/就绪态
2. 发生死锁的进程>=2,只会处于阻塞态
死锁发生的必要条件
- 互斥
- 不可剥夺
- 请求并保持
- 循环等待条件
处理死锁的方法
- 死锁预防
破坏死锁的必要条件 - 死锁避免
在动态分配的时候,采取措施,防止系统进入不安全状态
发生死锁一定处于不安全状态,但是处于不安全状态不一定死锁
银行家算法 - 死锁检测
允许死锁发生,再消除
死锁定理:s为死锁,当且仅当s的资源分配图不可完全简化 - 死锁解除
取消/挂起发生死锁的进程- 撤销进程
- 资源剥夺:挂起死锁进程,抢占资源
- 进程回退:进程自愿释放资源,回退
死锁的检测与解除
内存管理
存储管理的功能
存储管理是对用户区域进行管理,其目标是方便用户,提高主存空间的利用率
存储管理的功能如下:
- 地址映射:将程序中使用到的逻辑地址变化成为主存中的地址
- 主存分配:按照算法将空闲的主存区分配给进程
- 存储保护:保证用户程序(进程映像)在各自的存储区域中操作,互不影响
- 主存扩充:提供
虚拟存储技术
,使用户程序的大小与结构不受主存容量与结构的限制
存储器的三级结构
- 高速缓存:SRAM组成,空间换时间的技术
- 主存(内存):DRAM组成
- 外存(辅存):时间换空间的技术
程序链接与装入
编译->链接->装入
os 通过内存管理部件MMU
,将逻辑地址转化为物理地址
链接
- 静态链接
在运行之前,链接成一个完整的装入模块 - 装入时动态链接
在装入内存时,边装入边链接 - 运行时动态链接
运行到需要某模块,才进行链接
装入
- 绝对装入
按照编译产生的绝对地址装入 - 可重定位装入
装入时对相对地址的修改过程称为重定位,是在进程装入时一次性完成的,称为静态重定位
运行期间不能在内存中移动 - 动态运行时装入
进程的内存映像
- 代码段
- 数据段
- 进程控制块
- 堆:存放动态分配的变量
- 栈:高地址向低地址方向生长
内存保护
- 设置上下限寄存器
- 设置重定位寄存器 和 界地址寄存器
内存共享
进程的内存空间中,只有可读的区域/才可以共享,可重入代码称为纯代码,不允许修改
内存的分配与回收
主存空间划分
- 系统区:操作系统与硬件的相关信息
- 用户区:存放用户的程序与数据
连续分配方式
单一连续分配
用户区内存中只有一道用户程序
会产生内部碎片
固定分区分配
将用户区内存分为若干大小固定的分区
每个分区装入一道作业
设置分区使用表
会产生内部碎片
动态分区分配
使用空闲分区表/链
动态分配分区,分区的大小数量可变
会产生外部碎片
---- 可以通过紧凑技术解决,需要使用动态重定位寄存器的支持
顺序分配
- 首次适应 FF 算法
空闲分区按地址递增
的顺序排列
性能最好,会让内存低地址部分出现碎片 - 邻近适应 NF 循环首次适应算法
分配内存从上次查找结束的位置开始 - 最佳适应 BF
空闲分区按照容量递增
的次序排列
产生最多的外部碎片 - 最坏适应
空闲分区按照容量递减
的次序排列
索引分配
在大中型系统中采取索引分配算法,根据大小对空闲分区分类
对于大小相同的空闲分区设置一个空闲分区链
- 快速适应
找到最小的能容纳进程的空闲分区链 - 伙伴系统
???没看懂 - 哈希算法
建立哈希函数,构建以空闲区大小为关键字的哈希表
非连续分配方式
页框,物理块,页帧: 将内存空间分为若干固定大小的分区
页/页面: 进程的逻辑空间分为与块大小相等的若干区域
os以页框为单位为各个进程分配内存空间
分页
进程的PCB中有页表
页表的页表项: 页号(不占存储空间)+块号
系统中有页表寄存器PTR,存放页表在内存中的始址和页表长度
快表 TLB / 相联存储器
存放页表的部分副本,其有效性在90%以上,基于局部性原理
分类
- 基本(简单)分页存储管理:在作业调入内存之前,先判断是否有足够多的块,没有就不调入
- 请求分页存储管理:作业中要允许的
部分分配内存块
,其余留在外部,需要执行的时候再分配内存块
分段
将用户逻辑地址空间,划分为大小不等的段
系统中存放段表寄存器
段页式
先分段再分页
可变式分区常用的数据结构
内存分为系统区与用户区
用户区可划分为多个区,每个区加载一个作业,根据划分方式不同有:固定分区,可变分区
可变分区常用的数据结构
- 空闲空间表
- 空闲分区链
- 请求表
虚拟内存
局部性原理
- 时间局部性:指令执行后,不久后会再次执行
- 空间局部性:某个存储单元被访问后,其附近位置不久后也会被访问
虚拟存储器引入
由于分区,分页,分段方式中,若进程过大,无法调入,进而无法运行
基于程序执行的局部性原理
, 操作系统把各级存储器统一管理,将需要执行的部分调入内存,其余部分放在磁盘上,需要的时候再换入
虚拟存储器的定义与特征
定义:
有请求调入与置换功能,逻辑上扩充内存容量
逻辑容量=内存+外存,速度接近内存,成本接近外存
实现所需要的物质基础
1. 有相当容量的辅存
2. 有一定容量的主存
3. 页表机制,缺页中断机构与地址变换机构
特征:
1. 多次性:一个作业分成多次调入内存运行
2. 对换性:作业运行中可以换进,换出
3. 虚拟性:逻辑上扩充内存容量
虚拟存储器的实现建立在离散分配的存储管理方式的基础上
- 请求分页
- 请求分段
- 请求段页式存储管理
页框分配
驻留集: 给一个进程分配的页框的集合
页面分配 与 置换策略
- 固定分配局部置换
为每个进程分配固定数量的物理块
进程如果缺页,从分配给进程的页面中选择一页淘汰再调入 - 可变分配全局置换
为每个进程分配一定数目的物理块
进程如果缺页 , 从空闲的物理块选择一个分配 - 可变分配局部置换
为每个进程分配一定数目的物理块
进程如果缺页,从分配给进程的页面中选择一页淘汰再调入
物理块调入算法
采用固定分配算法时,将物理块分配给进程时,可采取以下
- 平均分配
- 按比例分配
- 优先权分配
调入页面
- 预调页策略
- 请求调页策略
从哪里调入页面
外存= 文件区+对换区
页面置换算法
- 最佳置换算法
- 先进先出算法
- 最近最久未使用算法
将过去时间内最久没访问使用的页面淘汰 - 时钟置换算法
抖动 工作集
抖动: 刚换入又被马上换出等 频繁的页面调度行为,根本原因是分配的物理块太少
工作集: 进程要访问的页面集合
驻留集 >= 工作集
内存映射文件
将文件 映射 到虚拟内存中
属于系统调用
- 通过访问内存的方式实现读写文件
- 通过共享内存来进行进程通信
共享内存就是 通过映射相同文件到通信进程的虚拟地址空间
文件管理
文件
- 文件:逻辑上具有完整意义的信息集合,每个文件有文件名
- 分类
- 性质/用途:系统文件,库文件,用户文件
- 组织形式/处理方式:普通,目录,特别文件
- 使用/管理:临时,档案,永久文件
- 文件保护:只读,读/写,执行,不保护文件
- 文件信息流向:输入,输出,输入输出文件
文件控制块与索引节点
文件与FCB 一一对应,
FCB的集合叫做文件目录
文件目录中的每一项 ; 文件名 + 索引节点
- 磁盘索引节点
- 内存索引节点
完成文件打开 open系统调用后,其余的文件操作的系统调用使用索引节点不使用文件名
文件保护
- 口令保护
- 加密保护
- 访问控制
文件逻辑结构
- 无结构文件
流式文件,对文件的访问只能穷举搜索 - 有结构文件
记录式文件,分为定长记录,变长记录
有结构文件
- 顺序文件
串结构,顺序结构 - 索引文件
索引表 - 索引顺序文件
- 直接文件/散列文件
文件的物理结构
要关注文件大小,记录是否等长,返回的频繁程度与存取方法
磁带文件的组织
顺序结构,由文件头标,文件信息,文件尾标组成
- 连续分配
- 链接分配
隐式/显式链接 - 索引分配
单级索引
多级索引
混合索引
存储介质:
记录信息的磁盘,光盘,卡片等
单位:卷,一个磁带可以称为一个卷
存储设备:
可安装存储介质的设备:磁带机,磁盘机
块:
存储介质上连续信息组成的区域,是主存与存储设备进行信息交换的单位
文件目录
- 文件目录即文件说明,文件控制块(FCB),文件名址录
- 每个文件占一个目录项
- 对目录管理的要求
按名存取,允许重名,提高对目录的检索速度,文件共享
目录结构
- 单极目录结构
- 两级目录结构
- 树形目录结构
- 无环图目录结构
目录实现
- 线性列表
- 哈希表
文件共享
- 基于索引节点的共享方式(硬链接)
多个节点指向共享文件 - 利用符号链 实现共享(软链接)
多个节点指向的可能是共享文件的路径,没有真正指向共享文件
文件系统
- 定义:
- 系统:复杂文件存储空间管理的机构
- 用户:是用户在计算机上存储信息与使用信息的接口
- 目的
- 对文件统一管理
- 方便用户,保证文件可靠
- 实现
按名存取
- 组成
文件目录,组织,操作,管理,安全措施 - 文件操作
打开,关闭文件
建立,删除,写,读文件
文件系统层次结构
空闲文件项
将空闲区看作文件记录在文件目录中
增加了目录的尺寸,增加了目录管理的复杂性
适用:系统有少量的大空闲区
空闲文件目录
所有空闲的文件建立一个目录
适用:存在少量空白文件
空闲块链
将所有的空闲块链在一起
链接方法:
- 按照空闲区大小顺序链接—简单,效率低
- 按照释放先后顺序链接—简单,效率低
- 成组链接法
文件使用
读文件
打开->读->关闭
写文件
建立->写->关闭
删除文件
关闭->删除文件
使用文件要先打开
,在关闭前不允许非打开者使用
关闭后的文件不能使用,必须再次打开
文件共享与安全
保护:
建立副本,定时转储,允许同时使用但是限制文件使用权限
文件保护的三种方式
口令保护,加密保护---->文件保密
访问控制
访问控制方式:
访问控制矩阵,存储控制表,用户权限表,隐藏文件目录
输入输出管理
计算机中除了cpu与内存之外的设备,统称为外部设备,主要功能以输入输出为主
I/O设备
外部设备的分类
传输速度:
- 低速:鼠标键盘
- 中速:打印机
- 高速:磁盘机,光盘机
数据传输方式
- 块设备:以数据块为单位进行传输,效率较高如磁带,盘带
- 字符设备:以字节为单位传输数据,键盘,显示器等低速设备
设备使用特性:
- 存储设备
- 输入输出设备
设备的共享属性
- 独占设备 :
为了保证信息传输的连续性,此类设备仅供一个进程使用,该设备空闲期间其他设备也不能使用,如cpu,打印机等 - 共享设备
允许多个进程同时使用,如磁盘 - 虚拟设备
利用假脱机(Spooling
)技术,将独占设备改造可供多个进程使用的共享设备
I/O接口 设备控制器
设备控制器
- 设备控制器用来控制一个或者多个I/O设备,实现I/O设备与计算机之间的数据交换
- 是CPU与I/O设备之间的接口,接受从CPU发出的命令,控制I/O设备
- 可以编址的设备,当连接一个设备有唯一的设备地址,当连接多个设备,有多个地址
- 分类:
控制字符设备的控制器
控制块设备的控制器
微机与小型机的控制器,称为接口卡
cpu 与设备之间的接口,实现数据交换
接收cpu的命令,控制设备工作
组成
- 设备控制器与cpu之间的接口
- 设备控制器与设备之间的接口
- I/O逻辑
分类
- 按照数据传送方式
并行接口,串行接口 - 按主机访问i/o设备的控制方式
程序查询接口,中断接口,DMA接口 - 按功能选择的灵活性
可编程接口,不可编程接口
I/O端口
指的是设备控制器中可以被cpu直接访问的寄存器
- 数据寄存器
- 状态寄存器
- 控制寄存器
对I/0端口的编址方式 - 与存储器独立编址
I/O地址空间和内存是不同的空间
用户程序不能访问,只有os使用特殊的i/o指令才能访问 - 与存储器统一编址(内存映射I/O)
将内存空间分一部分给端口进行编址
无需另外的I/O指令,使用统一的访存指令
I/O 控制方式
指的是设备与主机之间的数据传送方式
- 程序直接控制
cpu对I/O设备的控制采取轮询的I/O方式,又称程序轮询方式
缺点:cpu与io设备只能串行工作 - 中断驱动
运行io设备主动打断cpu并请求服务,解放cpu,使得cpu向设备控制器发出一条i/o指令后就可以做其他工作 - DMA
直接存储器存取,在io设备与内存之间开辟直接的数据交换通路,彻底解放cpu
1)传送的数据单位是块
2)传送到数据直接从设备进入内存
3)仅在传送数据块的开始与结束需要cpu参与
需要在DMA控制器中设置以下寄存器
1)命令/状态寄存器 CR
2)内存地址寄存器 MAR
3)数据寄存器 DR
4)数据计数器 DC - 通道控制
是一种特殊的处理机 ,放在主机的内存中,与cpu共享内存
cpu只需要向通道发送I/O指令,之后由通道来完成任务,向cpu发送中断请求
I/O软件层次
- 用户层软件
- 设备独立性软件
将逻辑设备名映射为物理设备名 - 设备驱动程序
与硬件直接相关,具体执行设备发出的操作指令 - 中断处理程序
应用程序I/O接口
i/0系统与高层之间的接口
分类
- 字符设备接口
- 块设备接口
两种模式
- 阻塞I/O
当进程调用io操作,进程会阻塞,一道阻塞队列 - 非阻塞I/O
当进程调用i/o操作.进程不会被阻塞
输入输出操作
指的是 主存 与 外围设备之间的信息传送操作
- 存储性设备:信息传输单位是块
- 输入输出设备:信息传输单位是字节
设备度独立性软件
i/o系统中的最高层软件
包括执行所有设备公有性操作的软件
下层是设备驱动程序
磁盘高速缓存
利用内存空间,存储磁盘读出的信息
逻辑上属于磁盘,物理上是驻留在内存中的盘块
缓冲区 buffer
在内存中单独开辟一个空间
- 单缓冲
- 双缓冲
- 循环缓冲
缓冲池
使用未利用的内存空间作为缓冲池,大小固定
工作方式
- 收容输入
- 提取输入
- 收容输出
- 提取输出
设备分配
数据结构
- 设备控制表 DCT
- 控制器控制表 COCT
- 通道控制表CHCT
- 系统设备表 SDT
设备分配算法
- 先来先服务
- 优先级高者优先
分配步骤
- 分配设备
- 分配控制器
- 分配通道
逻辑设备 到 物理设备的映射
设置逻辑设备表 LUT
两种方式
- 整个系统中设置一张
- 每个用户设置 一张
SPOOLING 假脱机技术
为了缓解 cpu的高速 和 I/O 设备的低速,将独占设备改造为共享设备的技术
磁盘与硬盘
磁盘
磁盘管理
- 磁盘初始化
- 分区
- 引导块
- 坏块
磁盘调度算法
磁盘存取时间
- 寻道时间
找磁道 - 延迟时间
找扇区 - 传输时间
算法
- 先来先服务 FCFS
- 最短寻道时间优先 STTF
每次选择与当前磁头最短的磁道,会产生饥饿 - 扫描算法 SCAN
只有磁头移动到最外层磁道才能向内移动,如果最外层没有请求还是会移动 - 循环扫描 C-SCAN
返回时直接回到起始端,中途不处理请求
LOOK调度
:磁盘只需要到最远端的一个请求就返回,而不需要到达磁盘端点
减少延迟时间
- 同一个盘面的扇区交替编号
- 不同盘面错位命名
硬盘
基于闪存的存储器
读快,写慢
数据以页为单位读写
以块为单位擦除
磨碎均衡
闪存的擦写寿命有限
引入磨碎均衡技术
- 动态磨碎均衡
写入数据自动选择新的闪存块 - 静态磨碎均衡
让老的承担读任务.新的承担写任务
操作系统安全与防护
实现安全环境的目标与面临的威胁
目标:
- 数据机密性
- 数据完整性
- 系统可用性
威胁:
- 攻击者窃取信息
- 攻击者篡改信息
- 攻击者采用多种方法扰乱系统,使之瘫痪拒绝服务
系统安全的主要特征
- 多面性:物理安全,逻辑安全,安全管理
- 动态性:信息的时效性,攻击手段的不断翻新
- 层次性:通常采用层次-模块化结构方法
- 适度性:全面覆盖不可能实现,考虑全面覆盖的成本,系统安全的动态性
计算机安全的分类
- 1983 美国国防部颁布了历史上第一个计算机安全评价标准,最核心的文件是 TCSEC
- TCSEC将计算机系统的安全程度划分为4类D,C,B,A
分为7个等级D,C1,C2,B1,B2,B3,A1
操作系统安全性的主要内容
安全策略:描述一组授权使用计算机以及资源的规则
安全模型:描述系统的安全策略,如何设计与实现安全控制的一个全面的理解与描述
安全机制:实现安全策略描述的安全问题,关注如何实现系统的安全性,包括
- 认证机制
- 授权机制
- 加密机制
- 审计机制
- 最小特权机制
数据加密技术
分类:
- 数据传输加密
- 数据存储加密
数据加密,数据解密,数字签名,签名识别以及数字证明等
用户验证概述
- 用户验证又称为识别或认证
- 当用户登录一台多用户计算机的时候,os对该用户进行验证,目的在于确定被验证对象是否真实
- 保障网络安全的第一道防线:验证技术的应用
早期系统内部攻击方式
- 窃权尚未清除的有用信息
- 通过非法系统调用来搅乱系统
- 使系统自己封杀校验口令程序
- 尝试许多在铭文规定中不允许做的操作
- 在os中增添陷阱门
- 骗取口令
计算机病毒的特征
寄生,传染,隐蔽,破坏
计算机病毒的类型
- 文件性病毒
- 内存驻留病毒
- 引导扇区病毒
- 宏病毒
- 电子邮件病毒
操作系统的安全需求
指的是设计一个安全操作系统时期望得到的安全保障,一般要求系统无错误配置,无漏洞,无后门,无特洛伊木马等,能防止非法用户对计算机资源的非法夺取,包括:
- 机密性需求
- 完整性需求
- 可记账性需求
- 可用性需求
安全策略
即有关管理,保护,分配以及发布系统资源及敏感信息的规则与实施细则
一个系统可以有一个或多个安全策略,其目的使安全需求得到保障
分类:
- 军事安全策略:目的是机密性,完整性,可记账性和可用性
- 商业安全策略:目的是完整性,也涉及机密性,可记账性和可用性
安全模型
要建立一个可信系统,需要在os核心构建一个安全模型,模型要非常简单以确保自身的安全性
安全模型:用于精确描述系统的安全需求与策略
安全模型:首先应当是精确的,同时也应当是简单和容易理解的,而且不涉及安全功能的具体实现细节