导图社区 操作系统
这是一篇关于操作系统的思维导图
编辑于2021-12-10 15:51:49第一章
操作系统的概念
操作系统是控制和管理计算机系统的硬件和软件资源, 合理的组织计算机工作流程及方便用户使用的程序和 数据的集合。
操作系统的作用
作为最基本的系统软件
操作系统属于计算机软件,物质基础是系统硬件
是硬件层的第一次扩充
作为资源管理器
(1)跟踪资源状态
(2)分配资源
(3)回收资源
(4)保护资源
作为虚拟机
为用户使用计算机提供方便
操作系统的功能
处理机管理
进程控制;进程调度;进程同步;进程通信
存储管理
地址重定位;存储分配;存储保护;存储扩充
设备管理
缓冲管理;设备分配;设备处理;设备独立性和虚拟设备
文件管理
目录管理;文件读写管理;文件存取控制;文件存储空间的管理
用户接口
命令接口;程序接口;图形接口
操作系统的结构
内核
地位
在系统保护状态下运行的那部分程序 称为内核, 作为系统的基本工作单位提供了良好的运行环境
功能模块
进程、线程及其管理
存储管理
I/O管理
文件系统
强内核
采用强内核,是基于传统的集中式操作系统的内核结构 。 系统在调用时通过陷入内核实现 ,在内核中完成后 ,再返回给 用户程序 。
微内核
是一种新的结构组织形式体现了操作系统结构设计的新思想
提供的服务
进程间通信机制
某些存储管理
有限的低级进程管理和调度
低级I/O
与强内核相比优点
灵活性,开放性,可扩充性
操作系统主要特征
并发性;共享性;虚拟性;不确定性
传统结构设计模式
整体式结构设计模式
将系统所提供的特性、服务以及系统所执行的 任务统一成一体的一个概括性的框架 。
特点:不强调信息的屏蔽
缺点:扩充这类程序是困难的 ,修改一个过程可能导致多个过程都要修改
层次式结构设计模式
把系统划分成若干个层,每一层有若干模块,每一层提供一组可以被 其他模块调用的功能,在任一特定层上的代码只能调用较低层上的代码
优点:模块间复杂的依赖关系转化为单向依赖关系
以管理为工具的结构设计模式
现代结构设计模式
客户/服务器模式
基本思想:把系统划分为若干个进程 ,每个进程实现单独的一套服务
优点
简化了基本操作系统
提高了可靠性
适合分布式计算环境
对象模式
就是把系统中的所有资源都看成是对象。
对称多处理模式
支持多处理机操作系统的结构设计
第一章
多道程序设计的概念
在主存中同时存放多道程序作业,使它们都处于执行的开始点 和结束点之间。
多道程序设计的硬件基础
中断系统
定义
对异步或例外事件的一种响应; 自动保存CPU状态以便将来重新启动; 自动转入中断处理程序
类型
I/O中断;程序中断;硬件故障中断;外中断;访管中断
通道技术
计算机系统中主存、通道、控制器和设备之间采用四级连接,实现三级控制。
多道程序设计原理
在多道程序运行的过程当中,充分利用系统所有的资源,并尽可能的让他们并行操作。例如:在通道进行数据传输时,CPU去执行另外一个已经准备好的程序,在第一个程序的I/O操作完成后,CPU停止执行当前程序,返回到前一个程序中执行 。
多道程序设计目的
充分利用系统的所有资源且尽可能的让他们并行操作 。
多道程序设计要解决的问题
存储保护和地址重定位
处理机管理和调度
资源的管理和分配
多道程序设计的特点
多道 ,主存中有两道或两道以上的程序他们都处处执行于开始点和结束点之间。 他们任意时刻比处于就绪、运行阻塞三种状态之一。
宏观上他们在同时运行 。
微观上串行,交替穿插的执行 ,在任一时刻,一台处理机上只能执行一道程序的一条指令 。
操作系统的分类
单用户操作系统
是针对一个处理机、一个用户的操作系统
批处理系统
经历阶段
作业提交;作业的收容;作业的执行;作业的完成
状态转换时用到的程序
SPOOLing程序;作业调度程序; 进程调度程序;交通控制程序
分时系统
多个用户分时使用计算机
特点
同时性;独立性;及时性;交互性
调进/调出实现分时系统的主要方式
响应时间时衡量分时系统性能的一项重要指标。 是用户在发出命令后系统处理命令并回应的时间。
实时系统
分类
实时控制系统
实时处理系统
特点
实时时钟管理;连续人机对话; 过载的防护;高可靠性
网络操作系统
计算机网络环境下具有网络功能的操作系统
特点
实现网洛中各节点之间的通信
实现网络中硬、软件资源的共享
提供多种网络服务软件
提供网络用户的应用程序接口
分布式操作系统
分布式计算机系统
由多台计算机组成的系统
满足的条件
任意两台计算机之间可以利用通信交换信息
各台计算机之间无主次之分
系统中的资源为所有用户共享
系统中的多台计算机可以共同合作完成一个任务
特点
各节点自治性;资源共享透明性; 各节点的协同性;系统的坚定性
分布式操作系统
特点
系统状态的不精确性
控制机构的复杂性
通信开销引起性能的下降
多处理机操作系统
由多台处理器组成的计算机系统,也称并行计算机系统
分为两类
基于共享存储(紧耦合)
基于分布存储(松耦合)
第二章
作业控制级接口
作业
用户请求一次计算机系统为他完成任务所做的工作总和
类型
脱机作业
用户不能直接与计算机交互,中间通过操作员干预作业
联机作业
用户和计算机系统之间直接交互,用户通过键盘,菜单图标控制作业运行。
作业步
处理作业的各个独立的子任务
作业流
由若干个作业组成
脱机用户接口
由一组作业控制命令,或作业控制语言组成。
优点:交付之后直接运行,用户不需要继续操作
缺点:一旦把作业提交给系统之后,便失去与作业交互的能力
形式
作业控制卡
使用作业控制语言将信息以编码的形式穿孔在卡片上送入系统中, 由系统解释控制卡内容并控制作业运行
使用不便,且容易出错,现在一般很少使用
作业说明书
使用某些作业控制命令将用户对作业控制的意图写成作业说明书, 从而实现对作业的控制
内容
作业情况
作业资源
常用命令类型
输入输出,编译,操作,条件
联机用户接口
由一组操作系统命令组成
方式
命令驱动方式
类型
系统访问,编辑和文件管理,编译、汇编和连接, 调试,维护管理
窗口系统与菜单驱动方式
命令文件方式
将键盘命令按照用户要求的执行顺序组成一个命令文件,执行此文件 就可以自动执行作业运行。
程序级接口
管态与算态
管态
将系统工作的状态
算态
用户工作的状态
为什么
为了使计算机有条不紊的工作保证系统,保证系统的安全,在运行过程中对这两种不同程序进行区分。
特权与访管指令
特权指令
只允许管态下使用是指令
类型
外设使用指令
访问程序指令
存取特殊寄存器指令
其他指令
访管指令
本身不是特权指令,使处理机从算态转换到管态,在管态下由操作系统协助完成,之后再返回到用户程序。
功能
实现从管态到算态的转变
在管态下由操作系统代替用户完成其请求
操作系统工作完成后有管态返回到算态
系统调用
用户在程序中能用访管指令或软中断指令调用的,由操作系统提供的子功能集合,其中每一个子功能就是一个系统调用命令。
每一个系统调用都至少包括一个访管指令。
与过程调用的区别
运行在不同的系统状态
通过软中断进入
类型
进程控制:wait()
进程通讯:signal()
文件管理:close(int fd)
目录及文件系统管理:rmdir(name)
维护信息:getuid()
时间管理:time()
网络通讯服务:close(socket)
使用步骤
(1)将系统调用所需的参数和参数的首地址送到规定的通用寄存器
(2)设置一条调用指令。
执行过程
(1)做准备。保存用户程序,同时将系统调用编号、参数等放入约定的存储单元
(2)根据系统调用命令号,检查是否为合法的系统调用。如果是根据调用表和调用号,转入相应的系统调用函数
(3)完成系统调用后,恢复,同时将相关信息送到系统约定的寄存器中供用户使用
设计原则
简单性,完备性
第三章
程序
程序最大的特性是顺序执行
顺序执行特性
封闭性
程序一旦开始执行,他的计算结果就只取决于程序,除非人为改变机器状态或者机器出现故障。
可再现性
程序重复执行时,所得到的的结果是相同的,给程序调试带来了很多便利。
并发执行
两个程序在执行时间上是重叠的,即使这个重叠的时间很短。
特性
失去了程序的封闭性,因为具有共享资源
程序和机器执行程序的活动不在一一对应
并发程序间的相互制约(直接或间接)
共享资源
系统中的硬件和软件资源不再为单个程序所独占,而是由几个程序共同使用。
程序的并发执行和共享资源之间是相互依赖的关系
进程
定义:程序的一次执行,该程序可与其他程序并发执行
进程的组成
程序
进程所要完成的功能,是进程执行时不可修改的部分
数据集合
包括程序在执行过程当中所需要的数据和工作区,只能被一个进程专用,可修改部分
进程控制块
是进程存在的唯一标志
包含信息
进程标识名或标识数,位置信息,状态信息,优先级,进程现场保护区,资源清单,队列指针或链接字
调度状态
进程基本调度状态
运行
就绪
阻塞
细分进程调度状态(1)
运行
就绪
高,中,低
阻塞
因等待页面
因等待终端
因等待盘、带
细分进程调度状态(2)
运行
就绪
静止,
活跃
阻塞
静止
活跃
进程控制
原语
由若干条机器指令构成的并用以完成特定的功能的一段程序,在执行期间是不可分割的。
进程控制原语
包含有创建原语,撤消原语,挂起原语等。
进程的建立
方法
在系统生成时就建立起一些进程
利用创建原语来建立一些新进程
树形结构优点
资源分配严格
进程控制灵活
进程层次清晰,关系明确
状态转换原语
挂起原语
激活原语
阻塞和唤醒原语
进程的撤销
进程在完成任务后将其撤销
方法
仅撤销掉一个具有指定标识名的进程
撤销掉该进程和其所有子孙
撤消原语
仅撤销掉标识名会使该进程的子孙与进程家族隔离,成为不可控的,因此撤消原语采用第二种方式进行撤销
第三章
作业,进程,程序 之间的区别和联系
三者之间的联系
作业就是用户在一次工作中要求计算机所做工作的总和,一个作业由若干个进程组成,每个进程由其实体--程序和数据集合
进程和程序的区别
进程是程序的一次执行,是动态概念;程序是一组有序指令,是静态概念。
进程可以一次执行几个程序,一个程序可以同时被几个进程同时执行。
程序可以被长期保留,而进程是程序一次执行的过程,是暂时的
进程具有并发性,可与其他进程一同执行;而程序不具有这种性质。
进程是一个独立的运行单位,也是系统进行资源调度和分配的独立单位。
调度算法
要考虑的问题
引入进程调度的时机
进程正常或异常结束
因某些原因出现阻塞
执行原语操作进入阻塞
有更高优先级的进程
分配个该进程的时间片已经用完
进程调度方式
非剥夺方式
让原来在处理机中的进程完成相关操作后,再把处理机让给重要或紧迫的进程
剥夺方式
有进程正在处理机中运行,有更高优先级的进程要使用处理机,就将处理机让给更高优先级的进程。
进程调度算法的选择
优先数法
时间片轮转法
进程对列的组织
实际上是对PCB(进程控制块)进行排列
方式
线性表
优点:实现简单
缺点管理不够方便
链接表或进程队列
根据不同的状态将将进程放入不同的队列或表中
优点:管理方便
缺点:动态分配算法复杂,占用更大的空间,花费操作时间
常用的进程调度算法
静态优先级法
按进程类型确定
按作业的资源要求确定,这种方式有利于短作业
按作业到达时间确定--先来先服务算法
按用户类型和要求确定
动态优先级法
按照进程在运行过程当中所发生的变化,对进程的优先级进行调整
简单时间片轮转法
在此方法中时间片是一个重要的参数,响应时间=时间片*进程数量。在使用过程当中时间片大小一般为100ms。时间片过小会使系统开销增加,过大对于短作业和I/O操作多的作业不利。
长短决定因素
系统响应时间
就绪队列中进程数
进程转换时间
计算机的处理能力,越高时间片就越短。
改进原因:由于使用固定时间片所以仅有一个就绪队列,服务质量不理想
改进方向
将固定时间片改为可变时间片
将单就绪队列改为多就绪队列
可变时间片轮转法
固定周期轮转法:系统响应时间固定,每次计算就绪队列中的进程数Nmax,时间片=响应时间/Nmax。
时间片的长短取决于优先级,优先级高分得的时间片长
短作业的时间片短,长作业的时间片长
多队列轮转法
时间片+优先级
响应比高者优先算法
响应比=响应时间/执行时间
线程
为什么引入?
使用进程时空开销过大,且效率不高
定义:进程内的一个执行单位或进程中可调度是实体
与进程的关系
线程是进程的基本单位
进程的多线程都在这个进程的地址空间活动
资源是分给进程的,不是分给线程的
处理机调度的基本单位是线程,线程之间竞争处理机,真正在处理机上运行的是线程
线程在执行过程中需要同步
第三章
制约关系
直接制约:某一进程若收不到另一进程给他的信息就不能继续运行下去。进程--进程
间接制约:某进程要使用另一进程正在使用的资源,且该资源不允许两个进程同时使用,所表现的关系进程--资源--进程。
进程的同步
定义:一个进程在运行的过程当中必须等待另一进程完成某种操作才可以进行接下来的操作,这两者之间的关系称为同步。
进程的互斥
定义:两个及以上进程由于不能使用同一临界资源,只能一个进程使用完,另一个进程采取,这种进程之间的关系称为同步。
临界资源:一次仅允许一个进程使用的资源。
临界区:各进程对于临界资源操作的程序段是互斥的,这些程序段就成为临界区
实现临界区互斥
原则
有若干进程要求进入临界区,要在一定的时间内使一进程计入临界区
每次进入临界区的进程最多有一个
进程在临界区内逗留应在有限的时间内
方法
使用物理实体,称为锁,用W表示。W=0锁打开,W=1锁关闭。
加锁原语LOCK(W):L:if W=1 then go to L else W:=1;
开锁原语UNLOCK(W):W=0;
在使用时将临界区程序放在加锁原语和开锁原语之间
缺点:使用这种方法效率很低,不断测试W造成处理机时间浪费
PV操作
公有信号量通常用于实现进程之间的互斥,初值为1,他所联系的一组并发进程都可对其进行PV操作。 私有信号量一般用于实现进程间的同步,初值为0或某个正整数n,仅允许拥有它的进程对其进行P操作
P操作
S=S-1
S>=0,调用P(S)的进程继续运行
S<0,调用P(S)的进程被阻塞,并把它插入到等待信号量S的阻塞队列当中
V操作
S=S+1
S>0,则调用V(S)的进程继续运行
S<=0,从等待信号量S的队列中唤醒头一个进程,然后调用V(S)的进程继续运行
实现互斥
设置S为两进程的公有信号量,初值为1,将临界程序段放在P(S)和V(S)之间即可实现两进程的互斥。
实现同步
设置两个私有信号量S1,S2。对于进程P1来说在需要等待的地方执行P(S1)操作,对于P2进程来说在需要唤醒P1进程时执行V(S1)操作,同理对于信号量S2相同。
PV操作的缺点
增加了编程的复杂性,不利于对程序的直观理解
虽然可以交换一些信息,但是效率太低
生产者-消费者问题
问题描述:生产者需要将产品送入缓冲区,消费者需要从缓冲区中取出产品
设置信号量
公有信号量S,初值为1,表示没有进入临界区,用于实现进程的互斥
私用信号量S0,用以表示产品的数目,初值为0
私用信号量Sn, 用以表示可用缓冲区,初值为n
信号量操作描述:消费者在取产品之前需要等待生产者将产品放入缓冲区中,同时要判断缓冲区的数量。生产者在放入产品之前需要等待消费者取完产品,同时要判断缓冲区数量。
出现的问题:如果有多个消费者和多个生产者之间,就要考虑到生产者和生产者以及消费者和消费者之间的互斥关系。每次只能有一个生产者或者消费者去访问缓冲区。
读者-写者问题
读者优先
设置信号量
公有信号量S,实现读者和写者,写者和写者之间的互斥
公有信号量Sr,用于实现互斥修改rc,初值为1
私有信号量rc,正在读的读者的个数,初值为0
读者在读之前判断修改正在读的读者个数,之后判断有没有和写者相撞,没有才 可以读,并在读之后,再次修改rc的值,并告诉写者可以写了,和与之相撞的读者,可以修改rc的值了。 写者只用判断有没有人和他相撞,没有就写,写完后唤醒被阻塞的读者或写者
写者优先
设置信号量
公有信号量S,实现读者和写者,写者和写者之间的互斥
私有信号量Sn,表示系统中最多有n个读者,初值为n
读者进程中的P(S),V(S)保证在有写者请求工作时,不让新的读者去读。 写者进程中利用两个循环语句保证正在读的读者读完后立即写,以及恢复Sn的初值 让写完后可以有新的读者去读,V(S)唤醒阻塞的读、写进程。
第三章
高级通讯原语
可以在进程之间传递大量的数据信息。
消息缓冲通讯
邮箱通讯
死锁
定义:当某一进程提出资源使用要求之后,使得系统中的一些进程处于无休止的阻塞状态,再无外力的作用下,这些进程无法继续前进。
产生原因:死锁是一种与时间有关的错误,当系统竞争资源的时候,有可能会发生死锁,但不一定。它取决于每一个进程的推进速度和对资源请求的顺序,不当的资源请求序列与申请时刻,都有可能引起资源要求在时间上的冲突。
产生必要条件:
互斥控制(一个资源仅能被一个进程独占)
非剥夺请求(进程获得的资源在其未释放之前,不能被其他进程剥夺)
逐次请求(以零星的方式逐次取得资源,而不是集中请求,有利于提高资源利用率)
环路请求(发生死锁时,其有向图必构成环路)
采取对策
鸵鸟策略
预防策略(破坏四个必要条件之一)
避免策略(分配资源时用算法判定)
检测和解除(进程资源图、删除;剥夺)
预防
破坏互斥:允许一个资源可以由多个进程共同使用
破坏非剥夺:(1)采用剥夺控制,只适用于处理机和存储器资源。(2)当进程申请某一资源被拒绝时,释放他所占有的全部资源,并且和原本要申请的加在一起重新申请。但是第二种方法实现较困难,且付出高昂代价。
破坏逐次请求:资源静态分配法,进程在运行之前一次申请他所需的全部资源,在资源需求未被满足之前,不投入运行。在运行之后,不再提出资源请求。 这种方法简单安全,但是资源利用率低。
破坏环路:资源顺序分配法,对系统的全部资源加以全局编号。进程任何时候都可以申请资源,但是必须按照编号增加顺序进行。 缺点:编号增加顺序可能与实际使用资源的顺序不同。
避免
单项资源银行家算法:进程在申请资源时,首先判断现有现有资源能否满足需求,如果可以,判断剩余进程能否以此进行,如果可以输出安全序列,那么就同意进程的请求
多项资源银行家算法:判断方法相似,但是要考虑多种资源,以防漏掉。
系统模型
系统状态图
系统状态图是一组系统状态σ={S1, S2, …)和一组进程π={P1, P2, …)构成的一个数对(σ, π)。
进程-资源图
由进程结点子集和资源结点子集组成,(P,R)代表进程P申请资源R,(R,P)代表资源R 分配给进程P。
死锁检测
死锁状态的推断思想
任由一部分进程处于阻塞状态,过程的初始状态必定是死锁。
全部进程都运行到了重点,过程的初始状态一定不是死锁。
进程-资源图的化简
从进程—资源图中找到既非阻塞又非孤立的进程结点Pi。由于Pi是非阻塞进程,它对某类资源Rj的请求,应满足申请的资源和该资源已经分配出去的数量不大于该资源总数。
死锁解除
重新启动,实现简单,但是会造成很大程度上的浪费和损失
撤销进程(删除法),在死锁状态下,撤销造成死锁的进程
剥夺资源,保留造成死锁的进程,但是剥夺其占有的资源
进程回退,在死锁状态下,根据历史信息,退回之前的状态,直至解除死锁
第四章
存储基本概念
研究课题
存储分配问题、地址再定位问题、存储保护问题、存储扩充问题
地址再定位
一个逻辑物理空间的程序装入到物理空间当中,因为空间不同所造成的的地址变换,称为地址再定位。
静态再定位
程序在执行之前进行地址再定位,通常由装配程序完成。
优点:实现简单无需硬件支持,但是程序本身是要可在定位的
缺点
定位之后不可再次移动,不利于内存的有效利用
分配的空间只能是连续的,不可以在内存中的不同位置
不同用户之间很难共享同一程序,若要实现共享,就要求用户使用自己的副本
动态再定位
在程序执行期间,在每次存储访问之前进行的。通常采用基地址寄存器和变址寄存器可计算有效地址,再利用硬件进行地址变化。
优点
执行过程当中,程序可以在内存中移动,提高了内存利用率
可以将程序放在不同的区域
不同的用户可以共享同一程序
缺点
需要硬件的支持,实现存储管理的软件算法较复杂
虚拟存储器
实际上是不存在的。基本思想是将作业地址空间和主存地址空间视为两个不同的概念。
一般理解为系统提供的地址空间,有一个存储器与之相对应,这个存储器相当于一个地址空间
形式
单段式虚存:一个线性的地址空间
多段式虚存:把地址空间划分成多个段,每个段是一个线性空间
早期存储管理
单一连续
基本思想:存储器在概念上被分成了三个连续的区域,一部分给操作系统,剩下的个用户作业。但是实际作业所占的空间较小,因此有较大的空间被浪费
本方案在实现的过程当中,并不需要硬件的支持,但是在实现存储保护是需要使用到界限寄存器,以防用户侵犯到操作系统
优点:方法简单,便于实现
缺点:仅适用于单道程序,不能是处理机和主存得到充分利用
分区
类型
固定式分区
系统生成时将主存划分为若干个分区,每个分区的大小可以不等,但是必须实现国定,以后不能改变。会使大量的有效主存被浪费。
可变式分区
动态划分存储器的分区方法。在作业装入和处理的过程当中进行分区,为了管理 分区设置两个表登记已分配区和未分配区的分区容量、位置和状态信息。
申请时根据作业的大小选择大于等于他的空白区,并将空白区分成新的作业区和空白区; 释放时将作业的分区变成空白区,并将给空白区和他邻接的空白区合成新的空白区。
分配分区算法
最佳适应
空白区按照其容量从小到大排列。从第一个空白区开始找,直至找到合适的空白区,将新生成的空白区放入合适的位置。
优点:平均而言,查找一般就可找到合适的空白区;容易剩下更多较大的空白区;如果一个空白区恰好合适,一定会被选中。
缺点:一般情况下,空白区不会恰好符合,因此会剩余很多过小而无法使用的空白区
最差适应
按空白区容量从大到小排列。从第一个空白区开始找,直到找到合适的空白区,将新生成的空白区放入合适位置。
优点:只要比较第一个空白区就能判断;第一个空白区分配后剩下的空白区较大,仍能满足大多需求。
缺点:各空白区均匀减小,工作一段时间后对于较大的作业无法满足
最先适应
空白区按照地址大小递增排列,从头开始比较,直至找到合适的空白区,取出作业大小的区域,剩下的部分仍放在原来的位置。
优点:释放内存分区,相邻的空白区进行合并,使之合并成一个较大的空白区;实质是尽可能利用存储区的低地址部分,高地址保留较多的较大空白区。
缺点:在低地址部分很快就集中很多小的空白区,因此增加了搜索次数,影响力工作效率
前两个方法优缺点
优点
有助于多道程序设计
不受过多的硬件限制,只需要界地址寄存器,用于存储保护
采用的算法大都比较简单,易于实现
缺点
会产生一些碎片,及极小的空白区,不能集中使用,降低了存储器的有效利用
分区的大小受到主存容量的限制,且无法扩充主存容量
可再定位式分区
解决碎片问题最简单的算法
基本思想:移动所有的分区,使之形成一个连续的空白区域。这个移动的过程称之为靠拢或紧凑。但是作业的移动是复杂的,且不保证在新的位置上作业可以正常运行。所以需要解决程序可再定位的问题。
多重分区
给一个作业分配一个以上分区的方法,作业可以在执行期间申请附加的分区。
优点:使空间的利用率增高
缺点:分区过多会使存储器分的过碎,以至于没有较大的空白区,这种方法要求更多的硬件支持,管理也比较复杂。
保护措施
为了防止各作业之间相互影响,要对各分区采取保护措施,通常采用界地址寄存器的方法。
具体措施:使用上下界地址寄存器存储地址范围,作业在运行时要计算存储地址,改存储地址要在给定的地址范围之内,否则就发生中断,停止作业,并输出错误信息
上界地址寄存器可用限长寄存器替换,其中存储的是地址空间的长度 下界地址寄存器可用基址寄存器替换,其中存储的是地址空间的下界
在日常使用过程当中,不需要将每一种方式使用一对硬件寄存器,在不同分区共同运行时,在硬件寄存器中存入相应分区的界地址,在运行结束后,将各种信息放入现场保护区,以便下次使用。
第四章
分区分配评价
优点
实现了主存的共享,有利于多道程序设计,更有效的利用了处理机和I/O设备,使主存的吞吐量和作业周转时间得到了改善。可在定位式,可变式,固定式的主存利用率以此降低。
和其他的存储管理方式相比,本方案所使用的存储容量较小,算法也相对简单
实现存储保护的措施也简单
多重分配方案可以实现对于子程序、数据段的共享
缺点
主存仍不能充分利用,除了可再定位方法外,都存在严重的碎片问题。即使不把存储器分碎,整个空白区也会因为容纳不下一个作业而造成浪费。
不能实现对主存的扩充。所以作业的大小受到限制
要求在执行之前全部装入主存,主存中可能包含从未使用过的信息
采用靠拢的方法,虽然解决了碎片的问题,但是有时需要移动大量的信息,因此损失了处理机时间
除多重分区之外,几个共行作业之间不能共享存入主存的单一信息副本
分页存储管理
分页原理
把逻辑地址空间划分为相等的偏,称之为页面;把物理地址划分成同样大小的片,称之为块。
将逻辑空间的页和物理空间的块一一对应,这种对应关系可由页面变换表PMT指出。
这种方法可以解决碎片问题,同时不会影响作业的正常进行
地址变换机构
动态地址变换机构(DAT)
该机构自动将地址划分成页号和页内地址,并利用PMT表用页号代替块号
每一个作业都有一个页面变换表,这些表放在操作系统的一个工作区中,由页面变换地址寄存器(PMTAR)指出页面变换表的起始地址需要更改作业时,只需要变换PMTAR中的内容就可以实现页面的变换。
高速页面变换寄存器
使用高速寄存器实现作业地址空间到物理地址空间的转换,寄存器的位数由主存的最大存储块号确定,由作业的大小确定寄存器的个数。
联想存储器
为了解决DAT和高速寄存器的问题而出现的,即在DAT中加入一组高速寄存器, 这些寄存器连同管理他们的硬件组成了一个容量较小的存储器,称之为联想存储器。
联想存储器中,存放正在运行的当前最常用的页号和相应的块号,具有并行查询的能力。
采用联想存储器的系统中,既按给出的页号搜索联想存储器,又按PMT表查找块号。
分页存储管理算法
作业表(JT)
整个系统一张表,每个作业在表中对应一个表目,包括作业的页表始址、页表长度和状态信息。
存储分块表(MBT)
整个系统对应一张表,该表中每一表目对应一个存储块,记录了该块的状态。
页面变换表
每个作业一张表,用于该作业的地址变换,作业有多少个页面就有多少个表目,表目内记录对应的存储块号。
三个表之 间的关系
作业进入系统时,首先在作业表上登记相关信息,并为PMT表分配存储区,同时将PMT表的起始地址写入作业表当中,将作业号填入MBT表的空白存储块中,再将存储块号填入PMT表中。最后系统按照PMT表对作业进行处理。
评价
优点
消除了碎片,便于多道程序设计,从而提高了处理机和主存的利用率
缺点
采用动态地址变换会增加计算机的成本和降低处理机的速度
各种表格会占用一定的主存空间,同时花费处理机的时间去建立和管理这些表格
虽然消除了碎片,但是作业的最后一页一般都有不能充分利用的空白区
存储扩充问题仍未得到解决
请求分页存储管理
原理
定义:分页存储管理系统根据请求装入所需页面的方法。
要解决的问题
(1)一个作业的地址空间不同时装入主存中,作业也可以开始运行,并运行一段时间。 原因:作业在运行时,常常只用到全部地址中的一部分;程序的局部性。
(2)作业在运行时访问到没有装入实存的页面,系统如何发现。 方法:在PMT表中设置一个状态位,为0已经装入,为1没有装入,当检测到该位为1时,由硬件产生中断,转入中断处理程序,这是程序中断。
(3)已经发现没有在主存当中应该如何放入,如果主存已满怎么办。 方法:引起缺页中断,利用中断处理程序完成页面装入,在装入后,修改PMT的状态位,然后重新执行该指令。
所需页面从何处装
在本系统中,作业完成编辑后,以文件的形式放入辅存的磁盘中,当页面需要装入主存中时,再从磁盘中调出来。因此要建立一个作业的辅助页表,也称外页表,包含虚页号、辅存地址、保护信息。作业被调入主存开始运行时,系统建立一张PMT表,并将辅助页表中的内容复制过来。
新调入的页面放在哪里
主存中有空闲的,就直接放入,如果没有就淘汰其中的一页,依据的原则是页面置换算法。
缺页中断
发生
处理机在执行指令时,先形成操作数的有效地址,计算页号,查看该页是否在主存中,在进行地址变换,取出操作数,完成指令。不在引起缺页中断,进入缺页中断程序
处理
利用MBT检查主存中有无空闲页面,有则根据辅存页表提供的磁盘地址调入页面,修改MBT和PMT,然后执行被中断的指令;没有则依据页面置换算法淘汰一页,并修改MBT和PMT表,若页面被修改,还需修改辅存。
出页:从主存移入辅存; 入页:从辅存移入主存; 分页:入页和出页操作。 在请求分页系统中,从主存中移走某个页面,又马上根据请求调入新的页面,这种反复进行入页和出页的操作称为"抖动"。这种抖动浪费了大量处理机时间,应尽可能避免。
第四章
请求分页存储管理
页面置换算法
先进先出(FIFO)
基本思想:总是先淘汰那些驻留在主存时间最长的页面,即先进入主存的页面先被淘汰
只有在顺序访问时才是理想的,否则效率不高
最近最久未用(LRU)
基本思想:如果某一页被访问了,那么它很可能马上又被访问;反之,如果某一页很久没有被访问,那么最近也不会再被访问
实质:当需要置换一页时, 选择在最近一段时间最久未用的页予以淘汰。
实现方法:周期性的对"引用位"进行检查,并利用它来记录上一次被访问以来所经历的时间,淘汰时间最大的页。
思想来源:程序设计的局部化程度
这种算法可以较普遍的用于各种类型的程序,但是实现起来较困难,且会增大成本。
LRU近似算法
在MBT或PMT中设置一个引用位,当页面被访问时,该位被设置成"1",使用页面管理软件周期的将引用位置"0"
简单,易于实现,但是周期的大小不易确定,周期过大,会使所有的引用位为1,无法确定哪一页是最近最久未用;周期过小,会使很多引用位为0,选择的页面未必会是最近最久未用的。
性能分析
程序设计质量
指的是程序的局部化程度
时间
一旦某个位置被访问,它常常又要被访问,可以通过 循环、常用的变量和子程序等程序结构来实现。
空间
一旦某个位置被访问到,它附近的位置很快也要用到, 可以通过顺序的指令序列,线性的数据结构来实现。
局部化程度随程序而异,一般情况下,程序的局部化程度越高,程序的执行就集中在几个页面上,减少缺页中断的次数。
页面大小
页面大时,页表小,占用空间小,查表快,缺页中断次数少;页面调度时,换页时间长,页面锁片可能较大,浪费空间。页面小时相反。
在日常使用时,页面大小根据实际情况进行调整,和计算机性能和用户要求都有关系。常用0.5KB 1KB 2KB 4KB
主存容量
一个作业的执行所产生的的缺页中断次数是存放页面的实际存储容量的函数。
在此函数中,随着主存容量增加,缺页中断次数减少,但是当主存增加到一定的程度,减少的次数就不再明显了。因此,要使程序有效的工作,他在主存中的页面数应不低于它总页面数的一半。
置换算法
建立性能模型来讨论,模型包含:页面走向、主存容量和置换算法。
经分析得:设G(P, M, t)表示当页面走向为P,主存容量为M,在时刻t的页面集合,对于LRU算法,存在如下关系,即G(P,M,t)含于G(P,M G1,t)。说明了增加主存容量不会增加缺页中断次数,FIFO算法不存在此关系。
评价
优点
它提供了大容量的多个虚拟存储器, 作业地址空间不受到限制
更有效地利用了主存,一个作业的地址空间不必全部同时都装入主存, 只装入其必要部分,其它部分根据请求装入, 或者根本就不装入
更加有利于多道程序的运行, 从而提高了系统效率
方便了用户,特别是大作业用户
缺点
为处理缺页中断,增加了处理机的时间开销
可能因作业地址空间过大或多道程序道数过多以及替他原因造成系统抖动
为防止系统抖动所采取的各种措施会增加系统的复杂性。
第五章
文件
定义:一个具有符号名的一组相关联元素的有序序列
文件可以包含范围非常广泛的内容。系统和用户都可以将具有独立功能的程序模块、数据、文字命名为一个文件。
组成单位
由若干个称为"逻辑记录"的最小单位组成。记录是一个有意义的信息集合,是对文件进行存取操作的基本单位,记录的长短可以不一。
类型
按性质和用途
系统文件
不直接对用户开放,通过调用为用户服务
库文件
允许用户调用,不允许修改
用户文件
由用户委托操作系统保存的文件
按使用情况
临时文件:建立的"中间文件",离开系统时撤销
档案文件:只在磁盘上,为考证和恢复使用的
永久文件:经常使用的,不仅在磁盘上,同时有可靠的副本
保护方式
只读文件
只可读的文件
读写文件
既可读,也可写的文件
不保护文件
所有用户都可以存取的文件
文件信息的流向
输入文件
只能输入
输出文件
只能输出
输入输出文件
可读又可写。
UNIX系统按组织和处理方式
普通文件
由内部无结构的一串平滑的字符构成的文件。
目录文件
由文件目录构成的文件
特别文件
由一次输入输出蛮熟字符设备构成的文件
文件系统
定义:操作系统中负责管理和存取文件信息的软件机构
组成
与文件管理有关的软件
被管理的文件
实施文件管理所需的数据结构
系统角度功能
对文件存储器的存储空间进行组织和分配
负责文件的存储并对存入的文件进行保护和检索的系统
用户的好处
使用的方便性
按照文件名字进行存取,不用考虑文件的位置和存储空间的分配
数据的安全性
提供了多种保护措施,防止文件被破坏。
接口的统一性
使用统一的广义指令或系统调用来存取各种介质上的文件。
管理部分的 基本功能
文件的结构及有关存取方法
文件的目录机构和有关处理
文件存储空间的管理
文件的共享和存取控制
文件操作和使用
文件的结构
逻辑结构
有结构的记录式文件
主要来源于卡片文件
定长记录文件
文件长度由记录长度和记录个数确定
变长记录文件
文件长度是各记录长度之和,需要在每个记录之前用固定字节 来表示记录长度
无结构的流式文件
主要处理文本文件的系统,这种方式处理效率更高,
物理结构
定义:逻辑文件在文件存储器上的存储结构。和文件存取方法密切相关
他的好坏直接影响系统性能,所以考虑
有效利用存储空间
便于高效处理文件
类型
连续结构
一个逻辑文件的信息存放在文件存储器的相邻物理块中,这种结构为连续结构
优点:一旦知道文件存储的起始块号和文件块数,就可以找到文件所有信息
缺点:建立文件时需要知道文件的最大长度以及需要相应大小的空间,不便于增删记录,一般在文件的末尾使用。
串联结构
也称之为连接结构,不要求所分配的物理块是连续的,也不必按照顺序排列
优点:便于增删,分配时不必知道最大长度,不连续分配,物理空间利用率高
缺点:只能顺序存取,查找慢
索引文件
要求为每一个文件建立一个索引表,每一表目指出we年逻辑记录所在的物理块号
优点:具备串联结构的优点,克服其缺点,便于随机存取
缺点:增加索引表开销,需要增加访盘次数,减低速度。可以通过提前载入内存解决
可能需要多个物理块存储, 因此按照索引表大小分为
串联文件方式:多个索引表按串联方式连接起来
多重索引方式:对于同一个集合,构建多个不同的索引
Hash文件
也就是计算寻址结构,利用这种结构建立Hash文件。但是因为地址总数少于键值,所以不同的键值在计算之后可能会得到相同的结果一,因此需要考虑的主要问题是地址冲突
用在不适宜采用连续结构,记录次序较乱,又需要在极短时间内存取的场合
优点:不需要索引,节省了索引表所占的空间和查找的时间
缺点:容易出现地址冲突的问题
第五章
文件存取方法
定义:指读写文件存储器上的一个物理块的方法
顺序存取法
提供记录式的系统中,严格按照物理记录排列的顺序依次存取
在只提供无结构的流式文件系统中,顺序存取法按读写位移从当前位置开始读写,每读写完一段,读写位移自动加上这段的长度,然后根据该位移读写下面的信息。
直接存取法
允许用户随意存取文件中的任何一个物理记录,而不管上次存取的是哪一个记录
在无结构的流式文件中,必须事先用必要的命令吧读写位移移动到将要读写的地方。
按键存取法
实际上也是直接存取法,但不是根据记录编号或者地址来存取的,而是根据文件中各记录的内容进行存取的。
适用于按逻辑记录中的某个数据项的内容来存放的,这种数据项通常称之为键
文件结构、文件存储备、存取方法之间的关系
简单文件目录
定义:在操作系统中建立一张线性表,每一个文件在表中占用一个表目
文件说明及其 包含的信息
有关文件结构的信息
文件的逻辑结构:是否为定长、记录长度、 记录个数
文件的物理结构:连续或串联要指出第一个物理 块号;索引要给出索引表块号或索引表在目录项中
有关存取控制的信息
文件主本人所具有的存取权限
文件主同组用户的存取权限
其他用户的存取权限
有关管理方面的信息
文件建立的日期和时间
上次存取的日期和时间
文件要求保留时间
缺陷
存在重名问题
当系统文件数量过多时,目录项数就会很大,查找起来就要花费较长时间
解决方法:建立二级或多级目录
二级目录
允许系统中的公户建立各自的名空间,这些名空间构成了用户文件目录表,管理这些文件目录的称之为总目录表,总目录表中给出了用户目录的名字,目录大小和其所在的物理位置,由此构成了二级目录。
存取文件:根据用户名找到用户目录表,根据文件名找到目录项,即找到用户文件的物理地址,从而找到文件
建立文件:在对应用户文件目录表中登记新的目录项,新用户则先建立用户文件目录表,再登记
删除文件:在用户目录中删除改文件的目录项
多级目录
多级树形目录
根节点称为根目录,枝节点称为子目录,叶节点称为信息文件。
根目录和子目录都是文件,称为目录文件。
绝对路径
从根文件开始到达文件的路径。如果路径名的第一个字符是分隔符,那么就是绝对路径
相对路径
路径名不是从根目录开始的所有
目录项组织
CP/M中的目录项
32位,一级目录结构,包含文件名、文件类型、盘驱动器号、范围、 块数和磁盘块号。
MS-DOS的目录项
32位,采用串联结构,第一个磁盘块号放在目录项中,根据首簇号, 按链接表,找到文件所有块。
UNIX中的目录项
16位,每个目录项中只包含一个文件名(14)及其 i 节点(2)。
查找方法:根据给出的文件名找到他所有的磁盘块,也就是 i 节点
存储空间管理
空白文件目录
我们把盘空间上一个连续的未分配的区域称为"空白文件"。为这些空白文件建立一个目录,每个空白目录有一个表目,保安第一个空白块地址、空白块个数。
这种方法仅当有少量空白文件时才有好的效果,仅适用于连续文件。当空间中有大量的小的空白文件,会使目录变的很大降低效率。
空白块链
采用非连续结构,将所有的文件用链接指针或索引文件把他们组织成一个空白文件。
采用链接结构时释放和分配空白块都可以在链首进行,主要问题是要修改几个有关的链接字。
位示图
为文件存储器空间建立一张位示图以反应整个存储空间的分配情况。
基本思想:用若干字节构成一张图,每个字节中的每一位对应文件存储器中的一个物理块。
其大小由磁盘空间的大小确定,仅用位示图的一位代表一个物理块有可能用不太大的位示图就把整个盘空间的分配情况反映出来。
优点:分配和释放都可以在内存的位示图上完成而且速度较快。
缺点:尽管位示图较小还是要占用内存空间。
MS-DOS的盘空间管理
UNIX文件存储空间管理
空闲盘块的分组
空闲块的分配与释放
第五章
文件的共享
目录结构中的共享
同名共享
异名共享
各用户使用不同的文件名访问某个文件
采用方法文件勾连
形式
允许目录项链接到目录树中的任一节点上
勾连功能很强但是允许共享的范围过宽,不易控制和管理使用不当会造成循环勾连
只允许链接到数据文件的叶子节点上
方法
基于索引节点的共享
又称之为硬链接。文件在创建时,系统在目录项中填入其文件名和分配相应的索引节点号。当某用户希望共享该文件时,则在某目录的一个目录项中填入该文件的别名,而索引节点仍然填写创建时的索引节点号。这时,两个具有不同文件名的文件指向同一个索引节点, 共享该文件的用户对文件的操作都将引起对同一索引节点的访问。 从而提供了多用户对该文件的共享。
基于符号链的共享
共享文件时,由系统创建一个新文件, 将新文件写入用户目录中,以实现目录与文件的链接。在新文件中只包含被链接文件的路径名,称这样的链接方法为符号连接。 新文件的路径名只是被看成是一个符号链。在利用符号连接方法实现文件共享时,只有文件主才拥有指向其索引节点的指针,而共享该文件的其它用户只有该文件的路径名, 而没有指向索引节点的指针。
符号链实际上是一个文件 。优点: 就是它能跨越文件系统共享。
打开文件结构中的共享
当多个用户同时打开某一个文件对其进行读写时,将在内存中建立一个数据结构、用来对这种动态共享进行控制和管理,这个数据结构就是打开文件结构。
每个进程包含
进程打开文件表:每个进程都有一个进程打开文件表, 其中每一项是一个指针,指向系统打开文件表。
系统打开文件表:其也叫打开文件控制块。 一个进程每打开一个文件都有一个系统打开文件表
该系统打开文件表的进程数
f-inode 指向一个打开文件的内存inode
内存Inode
文件在盘上的位置信息
与此内存Inode相连系统打开文件表的个数
父、 子进程打开文件的共享
父进程创建子进程时,除状态、标识以及与时间有关的少数控制项外,子进程基本上是复制父进程的所有信息。
同名或异名打开文件的共享
当文件首次被打开时,系统将在打开该文件的进程打开文件表中分配一个表项、一个系统打开文件表和一个内存索引节点, 同时把外存索引节点中的一些内容拷贝到内存索引节点中并建立起打开文件结构。
当其它进程使用同名或异名再次打开该文件时,发现其索引节点已在内存中,这时系统在该进程的进程打开文件表中分配一个表项, 同时也分配一个系统打开文件表, 但不再分配内存索引节点。而是与另一进程共享内存索引节点。 在这种共享方式中,共享文件的各个进程拥有各自的文件读、 写指针, 可以独立地对文件进行操作。
管道文件
是一种特殊的文件是一个特殊的打开文件
组成
一个外存索引结点
相应的内存索引结点
两个系统打开文件表
进程使用管道的一般形式
当父、子进程通过管道进行通信时,该管道文件最好是两个进程专用一个进程只负责写一个进程只负责读,所以他们应该分别关闭管道文件的接收端和发送端。
管道文件是一个临时文件,是以磁盘为中介实现进程间的通信,和内存相比通信速度较慢,只适用于父、子进程之间的通信
管道文件读写的同步
进程向管道中写入数据时,当写入的数据大于规定的长度时,就要使写进程挂起, 等到数据被读进程取走后再唤醒写进程;在读进程从管道中读数据时,当管道中的数据被读完读进程也应挂起,待写进程再次写管道写数据时唤醒读进程。
管道文件读写的互斥
为了防止几个进程同时对管道文件进行读写, 在对管道文件实施读写时要先对其加锁,加锁时如果发现管道文件已经被加锁,则要等待到其它进程释放该锁。
文件的存取控制
存取控制矩阵
是一个二维矩阵:一维列出系统中的所有用户,另一维列出系统中的全部文件。
矩阵中的每个元素用来表示某一用户对某一文件的存取权限。
存取控制矩阵法就是通过查访矩阵来确定某一用户对某一文件的可访问性。
存取控制表
把对某一文件有存取要求的用户按某种关系分成几种类型,文件主、A组、B组和其它。同时规定每一类用户的存取权限,这样就得到了一个文件的存取控制表
系统中每一文件都应有一张存取控制表。 实际上该表的项数较少,可以把它放在文件目录项中。当文件被打开时, 它的目录项被复制到内存,供存取控制验证模块检验存取要求的合法性。
用户权限表
以用户或用户组为单位建立存取控制表,称为用户权限表。
将一个用户所要存取的文件集中起来存入一张表中,其中每个表目致命用户对应文件的存取权限
口令
优点:对每个需要保护的文件只需要提供少量的保护信息,管理也比较简单且易于实现
缺点
保密性不强
如果某个文件者企图拒绝持有口令的用户访问他的文件他只好更换口令而且还要通知所有能够访问该文件的用户
加密
文件写入时的编码及读出时译码, 都由系统存取控制验证模块承担。但是,要由发出存取请求的用户提供一个变元——代码键。 一种简单的编码是,利用这个键作为生成一串相继随机数的起始码。编码程序把这些相继的随机数加到被编码文件的字节中去。译码时,用和编码时相同的代码键启动随机数发生器,并从存入的文件中的各字节依次减去所产生的随机数,这样就能恢复原来的数据。 由于只有核准的用户才知道这个代码键,因而他可以正确地存取该文件。
优点:保密性强节省存储空间
缺点:花费大量的编码和译码的时间
文件系统的安全性
文件拷贝的方法
周期性全量转存
按固定的时间间隔把文件系统存储空间中的全部文件都存入某存储介质上。系统失效时,使用这些备份将文件系统恢复到上次转存时的状态 。
缺点
在转存期间,应停止对文件系统进行其它操作, 以免造成混乱。 因此,全量转存影响系统对文件的操作, 因而不应转存正在打开进行写操作的文件。
转存时间长,如果使用磁带,一次转存可能长达几十分钟, 因此不能经常进行,一般每周一次。这样,从转存介质上恢复的文件系统可能与被破坏前那一时刻的文件系统差别较大。
增量转存
功能:当系统一旦遭到破坏后,至少可以恢复到数小时前的系统状态,从而使损失降到最小。
文件恢复过程
从最近一次全量转存中装入全部系统文件, 使系统得以重新启动,并在其控制下进行后续的恢复工作。
从近到远从增量转存盘上恢复文件。可能同一文件曾被转存过若干次,但只恢复最近一次转存的副本,其它则被略去。
从最近一次全量转存盘中, 恢复没有恢复过的文件。
第六章
I/O设备类型
使用特性
存储设备,输入/输出设备,终端设备,脱机设备
所属关系
系统设备:在操作系统生成时,意见登记在系统中的标准设备
用户设备:在操作系统生成时,未登记的设备。通常由用户提供,并通过一定的方式登记在系统中,方便管理。
资源分配
独占设备:同一时间只能有一个进程使用
共享设备:可以有多个进程同时使用同一个设备
虚拟设备:通过假脱机技术把独占设备改成共享设备,以提高利用率
传输数据数量
字符设备:传输单位为字节的设备
块设备:传输单位为块的设备
不同的I/O设备有不同的物理特性。
I/O系统的硬件组织
I/O控制方式
循环I/O测试方式
用程序直接控制I/O操作的方式。
做法:通过测试一台设备的忙/闲设备,决定主存和外设之间是否要传输一个字符或一个字。
缺点:处理机使用大量的时间用于等待循环检测上,使主机不能充分发挥效率,外设也不能合理使用,系统效率很低。
程序中断I/O方式
外围设备可以反应其自身状态,仅当I/O操作正常或异常结束时才中断处理机,从而实现了一定程度的并行操作。
DMA方式
为了解决CPU每次从控制器读字节都很费时的问题。
数据传输过程
进程要求设备输入数据时,CPU吧准备存放输入数据的内存始址和字节数分别送入DMA中的内存地址寄存器和传送字节计数器。同时把控制/状态寄存器中的中断允许位和启动位置1,。
发出数据请求的进程进入阻塞状态,其他进程占有CPU
输入设备不断挪用CPU工作周期,将数据送入内存当中。
DMA控制器在传输完成时发出中断信号,CPU接到中断信号后转中断处理程序进行相应处理
中断处理结束后,CPU返回被中断的程序或运行重新被调度的进程
通道方式
详细见采用通道模型的I/O系统分支
设备控制器
CPU的接口
用于实现设备控制器和CPU之间的通信
三类信号线
数据线
数据寄存器
控制/状态寄存器
地址线
控制线
设备接口
在一个设备控制器,可以连接一台或多台设备。
接口信号类型
数据信号:通常是位流,控制器是把CPU送来的字节流转换成位流 传递给设备,把从设备来的位流转换为字节流送给CPU
控制信号:输出信号,控制器发送给设备的
状态信号:输入信号,用于指示设备的当前状态
I/O逻辑
用于I/O的控制,通过控制线与CPU交互。CPU利用这个逻辑向控制器发送I/O命令;I/O逻辑对于接收到的命令进行译码。
当CPU启动设备时,既要将命令送给控制器,又要通过地址线吧地址送给控制器。
I/O系统的软件组织
设计目标
设备无关性
含义:使程序员写出的软件无需任何修改便能读出软盘、硬盘以及CD-ROM等不同设备上的文件
错误处理
错误尽可能多的在接近硬件的地方处理,只有底层处理不了,才交给高层软件处理。
同步/异步传输
多数I/O设备采用异步传输,即CPU启动操作后便去执行其他操作,直至中断到达。
采用同步I/O操作,用户编程会很简单,在发出读命令后,用户程序自动阻塞,直至数据进入缓冲区
必须能够处理独占设备和共享设备的I/O操作
四个层次
中断处理程序
位于I/O系统的最低层。当中断发生时,中断处理程序执行相应操作,解除进程阻塞状态
设备驱动程序
包括了所有与设备有关的代码
功能:从与设备无关的软件中接受抽象的请求,并执行该请求。 在执行时,要将请求转换成更具体的形式,必须确定需要哪些控制器命令以及命令的执行次序
与设备无关 的I/O软件
以块设备 为例功能
设备命名
设备保护
与设备无关的块大小
数据缓冲
数据块的分配
对独占设备的分配与释放
错误处理
用户空间的I/O软件
标准I/O库包含相当多设计I/O的库例程,作为用户程序的一部分运行,
还有一个类型是Spooling系统,是在多道程序设计中独占设备的一种方法。这个系统可以解决一个进程长时间打开而不用,使其他进程都无法使用的问题。
具体解决方法:创建一个精灵进程和Spooling目录。例:在打印文件之前现将待打印文件放入Spooling目录下,由精灵进程进行打印,即通过禁止用户直接使用打印机而解决打印机空占问题。
层次结构
第六章
采用通道模型的I/O系统
通道又称I/O处理机,专门用于输入/输出的处理机。具有通道结构的系统,主存、通道、控制器和设备之间采用四级连接,三级控制。
通道类型 信息交换方式和连接设备类型
字节多路通道
连接大量慢速外围设备,以字节为单位交叉的工作
选择通道
连接磁带、磁鼓等快速设备,以成组的方式工作,传送速度快,但是效率低
数组多路通道
对于连接在数组通道上的磁盘机,启动他们进行移臂,按次序交叉传送数据, 避免因为移臂时间过长而导致长期占用通道。
实质:对通道程序采用多道程序设计技术的硬件实现
多通路I/O系统
因为通道的成本高,为了提高系统处理能力,使设备被充分利用,采用多通路的方案,即一个通道连接多个设备。
使用多通道可以提高系统可靠性,在一个通道出问题时,其他通道还可以保证设备的正常使用
通道命令
I/O处理机发出的指令称为通道命令,又称一个通道命令字CCW
三类基本通道操作
数据传送类, 如读、 写、 反读、 断定(检验设备状态)
设备控制类, 如控制换页、 磁带反绕等
转移类, 即通道程序内部的控制转移
格式
通道地址字(CAW)
格式
通道状态字(CSW)
格式
CPU和通道间的通讯
输入/输出指令
需要传送数据时发送指令
CPU和通道之间是主从关系,CPU是主设备,通道是从设备
通讯方式
由CPU向I/O通道发I/O指令,命令通道工作,并检查其工作情况
通道以中断方式向CPU回报,等候CPU处理
缓冲技术
基本思想:在CPU和外设之间设立缓冲区,用于暂存CPU和外设之间交换的数据,从而缓和CPU和外设速度不匹配所产生的的矛盾。
单缓冲
在操作系统中设置一个缓冲区,供用户进程和操作系统之间交换数据使用
使用缓冲区可以在很大程度上提高系统运行的效率,但是当数据多时又会影响CPU和设备之间的并行程度。
双缓冲
在操作系统中为某一设备设置两个缓冲区,当一个缓冲区中的数据未被处理时,可用另一缓冲区存放从设备读入的数据,以此来平滑CPU和I/O设备之间速度的差异。
双缓冲区可以扩充为多缓冲区,但是系统的性能不会无休止的随着缓冲区的增多而不断提高,当缓冲区的数量增加到一定程度,对系统效率提高甚少,甚至会使其下降。
缓冲池
为了克服专用缓冲区所带来的消耗,以及提高系统的效率,系统一般使用公用缓冲技术--缓冲池
组成
基本组成空闲缓冲区,装满输入数据的缓冲区,装满输出数据的缓冲区
相同类型的缓冲区可以链成一个队列。空缓冲区队列(emq),输入队列(inq),输出队列(outq)
还有四种工作缓冲区
用于收容输入数据
用于提取输入数据
用于收容输出数据
用于提取输出数据
管理的基本操作
getbuf(type):用于type所指定的队列的队首,摘下一个缓冲区
putbuf(type, number):用于将参数number所指示的缓冲区,挂在type队列上
工作方式
收容输入
输入进程需要输入数据时,从emq队列队首获得一个缓冲区,作为收容输入工作缓冲区,装满输入数据后放在inq队列队尾
提取输入
计算进程需要输入数据时,从inq队列获得一个缓冲区,作为提取输入工作缓冲区,用完其中中断数据后放在emq队列
收容输出
计算进程需要输入数据时,从emq队列的队首获得一个缓冲区,作为收容输出工作区,装满输出数据后放在outq队列队尾
提取输出
计算进程需要输出数据时,从outq队列的队首取得一个装满输出数据的缓冲区,作为提取输出工作缓冲区,在提取完成之后,将他挂在空缓冲队列队尾
预先读
在使用某一块之前,使用异步的方法将其放入缓冲区中,当用户需要时,可以立即从缓冲区取走而无需等待。
延迟写
当块设备进行输出时,如果缓冲区只写了一部分,则先不把缓冲区中的内容写到块设备上,等待缓冲区将被写满时或该缓冲区被重新分配时,再写。
磁盘的调度算法
使磁盘、磁鼓等高速大容量旋转的存储设备可以按最佳次序处理请求,所采用的调度策略称为驱动调度算法
移臂调度算法
先来先服务
按照输入/输出请求到达的顺序,逐一完成访问请求
最短查找时间优先法
先完成距当前存取臂距离最近的柱面上的输入/输出请求
扫描法
存取臂从磁盘的一端向另一端移动,移动到最远的所请求柱面后,存取臂就改变移动方向。
磁道是由外向内进行编号,最外圈是0