设备管理
设备管理概述
在计算机系统中除CPU和内存储外所有的设备和装置称为计算机外部设备(外围设备、I/O设备)。
设备分类
存储设备
存储设备又称块设备,是存储信息的设备。如:磁盘、磁鼓(以块为单位传输信息)。
输入输出设备
输入输出设备又称字符设备,能将信息从计算机外部输入到机内或反之。如:键盘、显示器、打印机(以字符为单位传输信息)。
通信设备
通信设备负责计算机之间的信息传输,如调制解调器、网卡等。
设备管理的目标
提高设备利用率
- 合理分配设备
- 提高设备与CPU、各外部设备之间的并行性
方便用户的使用
提供使用方便且独立于设备的界面
- 统一:对各种不同的设备提供一致的界面
- 独立于设备:用户使用的设备与物理设备无关
设备管理功能
状态跟踪
动态地记录各种设备的状态。
设备分配与回收
- 静态分配——应用程序级:程序进入系统时进行分配,退出系统时回收全部资源。
- 动态分配——进程级:进程提出设备申请时进行分配,使用完毕后立即收回。
设备控制
实施设备驱动和中断处理的工作。
设备独立性
设备独立性概念
- 什么是设备独立性:所谓设备独立性是指用户在程序中使用的设备与实际使用的设备无关,也就是在用户程序中仅使用逻辑设备名。
- 逻辑设备名:逻辑设备名是用户自己指定的设备名(或设备号),它是暂时的、可更改的。
- 物理设备名:物理设备名,是系统提供的设备的标准名称,它是永久的、不可更改的。
两种类型的设备独立性
-
一个程序独立于分配给它的某种类型的具体设备
系统可以根据设备的使用情况,动态地分配给程序某类设备中的任一台物理设备,程序都能正确地执行。
-
程序应尽可能与它所使用的I/O设备类型无关
在输入(或输出)信息时,信息可以从不同类型的输入(或输出)设备上输入(或输出),若要改变输入(或输出)设备的类型,程序只需进行最少的修改。
设备独立性的实现
- 在高级语言中用软通道实现:使用高级语言提供的指派语句,通过指派一个逻辑设备名(通道号)来定义一个设备或文件。如:fd=open(“/dev/lp”,mode)。
- 在批处理系统中,用联接说明语句来定义
- 在交互系统中,用指派命令来定义
设备独立性的优点
- 方便用户
- 改善设备利用率
- 提高系统的可扩展性和可适应性
设备控制块
什么是设备控制块(DCB)
系统为每一台设备都配置了一个用来记录设备的硬件特性、连接和使用情况的一组数据,称为设备控制块。
设备控制块的内容
- 设备名:设备的系统名,即设备的物理名
- 设备属性:描述设备现行状态的一组属性
- 命令转换表:转换表包含设备特定的I/O例程地址,不具备相应功能的设备在其例程地址上可以填\(-1\)。
缓存技术
缓冲概念
什么是缓冲
缓冲是两种不同速度的设备之间传输信息时平滑传输过程的常用手段。
缓冲类别
- 缓冲器:缓冲器是用来暂时存放数据的一种存储装置,它容量较小,存取速度快。
- 软件缓冲:在IO操作期间用来临时存在IO数据的一块存储区域。
为什么要引入缓冲
-
处理数据流的生产者与消费者间的速度差异
如:从调制解调器收到一个文件,并保存到硬盘上。
-
协调传输数据大小不一致的设备
如:在计算机网络中用来处理消息的分段和重组。
-
应用程序的拷贝语义
如:操作系统为保证系统调用write的正确语义 (应用程序要写入磁盘的数据就是write系统调用发生时的版本)。方法:在系统调用返回前将应用程序缓冲区复制到内核缓冲区。
利用缓冲技术如何进行I/O操作
进程活动期间请求从某字符设备读入数据
-
进程请求从输入设备进行读操作的图示
-
进程请求从输入设备进行读操作的步骤
- 当用户要求在某个设备上进行读操作时,首先从系统中获得一个空的缓冲区 (图中标注的操作①);
- 将一个物理记录送到缓冲区中 (图中标注的存在②) ;
- 当用户请求这些数据时,系统将依据逻辑记录特性从缓冲区中提取并发送到用户进程存储区中 (图中标注的操作③) ;
- 当缓冲区空而进程又要从中取用数据时该进程被迫等待。此时,操作系统需要重新送数据填满缓冲区,进程才能从中取数据继续运行。
要注意操作2与操作3的同步关系。
进程活动期间,请求从输出设备输出数据
-
进程请求从输出设备进行写操作的图示
-
进程请求从输出设备进行写操作的步骤
- 当用户要求进行写操作时,首先从系统中获得一个空的缓冲区 (图中标注的操作①) ;
- 将一个逻辑记录从进程存储区传送到缓冲区中 (图中标注操作②) ;
- 当缓冲区写满时,系统将缓冲区的内容作为物理记录文件写到设备上,使缓冲区再次为空 (图中标注的操作③) ;
- 只有在系统还来不及腾空缓冲区之前,进程又企图输出信息时,它才需要等待。
要注意操作2与操作3的同步关系。
常用的缓冲技术
双缓冲、环形缓冲、缓冲池。
双缓冲
在双缓冲方案下,为输入或输出分配两个缓冲区\(buf_1 , buf_2\)。
-
利用双缓冲输入数据
-
利用双缓冲输出数据
-
双缓冲同时用于输入或输出数据的操作
环形缓冲
在系统中设置若干缓冲区,并把这些缓冲区链接起来这样若干个缓冲区就形成了一个环,故称环形缓冲区。
缓冲池
将系统内所有的缓冲区统一管理起来,就形成了能用于输入、输出的缓冲池。缓冲池通常由若干大小相同的缓冲区组成,是系统的公用资源,任何进程都可以申请使用缓冲池中的各个缓冲区。
UNIX系统的缓冲区管理
UNIX系统缓冲管理的目的
- 加快系统响应、增强系统吞吐量
- 减少对磁盘的IO操作次数
UNIX系统缓冲管理的思路
当进程要从磁盘读数据时,首先考虑从高速缓冲中读——预先缓存
当进程要写数据到磁盘时,先写入高速缓冲中——延迟发送
缓冲管理数据结构
-
缓冲区的组成
- 缓存数组——含有磁盘上的数据的存储器数组
- 缓存首部——描述缓冲区特性的数据结构
-
缓存首部结构
-
缓冲区队列结构
- 设备缓冲区队列:与某类设备有关的所有缓冲区组成的队列称为设备缓冲区队列,简称b链。
- 空闲缓冲区队列: 可供重新分配使用的缓冲区组成的队列称为空闲缓冲区队列,简称av链。
-
缓冲区队列指针
-
b链指针
b_forw:指向设备缓冲区队列上的下一个缓冲区的指针
b_back:指向设备缓冲区队列上的上一个缓冲区的指针
-
av链指针
av_forw:指向空闲缓冲区队列上的下一个缓冲区的指针
av_back:指向空闲缓冲区队列上的上一个缓冲区的指针
-
UNIX缓冲管理算法
缓冲读、写示意图
UNIX缓冲管理算法
- 一个buf被分配用于读写某设备上的块时置B_BUSY = 1,位于b链上,不在av链上;
- 当读写操作结束时,释放该buf置B_BUSY=0,仍留在b链上,并送入av链尾
- 若进程需要的信息在buf中时,在该设备的b链上找到,置B_BUSY = 1;从av链上摘除使用完成后,又送入av链,链入队尾。
- 对空闲buf空队列的处理,当需要一个空闲buf时,总是取空闲buf队列(av链)的首元素;一个使用过的buf释放时,插入到空闲buf队列(av链)的队尾。(实现了精确的最久未使用淘汰算法(LRU算法))
- 对延迟写的处理:当一个具有延迟写标记的buf移到av链头,要用于分配时,立即进行写操作。从av链上摘除,使用完后又送av头部。
设备分配
独享分配
常用的设备分配技术:独享分配、共享分配和虚拟分配。
独享设备
- 让一个作业在整个运行期间独占使用的设备
- 特点:临界资源;费时的I/O操作或需人工干预。
独享分配
在一个作业执行前,将它所要使用的设备分配给它;当它结束撤离时,将分配给它的这类设备收回。
共享分配
共享设备
- 由多个作业、进程共同使用的设备称为共享设备。
- 特点:旋转设备,可直接或随机访问;便于共享,转接简单,耗费较少。
共享分配
在一个作业执行过程中,将它所要使用的资源分配给它;当它结束撤离时,将分配给它的这类资源回收。
虚拟分配
虚拟技术
所谓虚拟技术,是在一类物理设备上模拟另一类物理设备的技术,是将独占设备转化为共享设备的技术。
虚拟设备
通常把用来代替独占型设备的那部分外存空间(包括有关的控制表格)称为虚拟设备。
虚拟分配
当进程需要与独占型设备交换信息时,系统将分配磁盘空间,并建立相应的数据结构,这种分配方法称为设备的虚拟分配。
spooling设备
SPOOLING系统提供外围设备同时联机操作的功能。
设计思想
- 预输入:在应用程序需要数据前,OS已将所需数据预先输入到辅存输入井存放。当应用程序 (或进程) 需要数据时,可直接从辅存中读入主存。
- 缓输出:在应用程序执行时,将输出数据写入辅存输出井中。当应用程序 (或进程)执行完毕 (或需要数据时) ,由操作系统将数据输出。
什么是SPOOLING系统
利用通道和中断技术,在主机控制之下,由通道完成输入输出工作。系统提供一个软件系统 (包括预输入程序、缓输出程序、井管理程序、预输入表、缓输出表)。它提供输入收存和输出发送的功能,使外部设备可以并行操作。这一软件系统称为SPOOLING系统。
SPOOLING系统的优点
- 提供虚拟设备
- 外围设备同时联机操作
- 加快作业处理速度
实现SPOOLING系统的基础
-
大容量的辅存空间:在辅存上需开辟两个较大的输入井和输出井,用以存放大量应用程序的输入信息和输出信息。
-
硬件基础:通道装置、中断系统。
-
数据结构:预输入表、缓输出表:描述辅存输入井和输出井的状态变化。如: 输入信息从哪台设备输入,存放在辅存输入井什么位置;输出信息存放在辅存输出井什么位置,从哪台输出设备输出。
-
所需的软件程序
- 输入程序——控制信息从独占设备输入到辅存
- 缓输出程序——控制信息从辅存输出到独占设备
- 进管理程序——控制用户程序和辅存之间的信息交换
设备分配算法
磁盘访问时间
寻道时间\(T_s\)
这是指把磁臂(磁头)移动到指定磁道上所经历的时间。该时间是启动磁臂的时间\(s\)与磁头移动\(n\)条磁道所花费的时间之和,即:\(T_s= m \times n + s\)。其中\(m\)是一常数,与磁盘驱动器的速度有关,对一般磁盘\(m = 0.2\);对高速磁盘\(m \leq 0.1\),磁臂的启动时间约为\(2ms\)。
旋转延迟时间\(T_{\tau}\)
这是指定扇区移动到磁头下面所经历的时间。对于硬盘,典型的旋转速度大多为\(5400 r/min\),每转需时\(11.1ms\),平均旋转延迟时间\(T_{\tau}\)为\(5.55ms\);对于软盘,其旋转速度为\(300r/min\;or\;600r/min\),这样平均\(T_{\tau} = 50 \sim 100ms\)。
传输时间\(T_t\)
这是指把数据从磁盘读出或向磁盘写入数据所经历的时间。\(T_t\)的大小与每次所读/写的字节数\(b\)和旋转速度有关:
其中\(r\)为磁盘每秒钟的转数;\(N\)为一条磁道上的字节数。访问时间\(T_a\)表示为:
FCFS 先来先服务
最短寻道时间优先(SSTF)
扫描算法(SCAN)
循环扫描算法(CSCAN)
设备控制
输入输出控制方式
CPU通过I/O控制器与物理设备打交道。按照I/O控制器智能化程度的高低,将I/O设备的控制方式分为四类:循环测试I/O方式;I/O中断方式;DMA方式;通道方式。
IO中断方式
为了提高CPU和设备的利用率,就应使CPU与设备并行工作,采用I/O中断方式。采用这种方式要求控制寄存器中有一个中断位。
IO中断方式下,数据输入输出步骤:
- 要求输入数据的进程把一个启动命令和允许中断位“1”写入相应设备的控制状态寄存器中,从而启动了该设备。
- 该进程因等待输入的完成进入睡眠状态(CPU执行其它任务)。
- 当输入完成后,输入设备向CPU发出完成中断请求信号。
- 处理机响应中断,处理该中断,并唤醒等待输入完成的进程。
- 在以后的某个时期,该程序被调度到后,继续运行
这种方式的优点是大大地提高了CPU的利用效率,缺点是每次I/O都要CPU的干预,如果系统中配备了多台设备时,CPU的利用率也会降低。
通道方式
目的:为了使CPU从I/O事务中解脱出来,同时为了提高CPU与设备,设备与设备之间的并行工作能力。
通道是独立于CPU的专门负责数据输入输出传输工作的处理机,对外部设备实现统一管理,代替CPU对输入输出操作进行控制,从而使输入输出操作可与CPU并行操作。
通道可以执行通道程序(简单指令系统)
通道工作方式
CPU:执行用户程序,当遇到I/O请求时,可根据该请求生成通道程序放入内存(也可事先编好放入内存),并将该通道程序的首地址放入通道地址字 CAW中;之后执行“启动I/O”指令,启动通道工作。
通道:接收到“启动I/O”指令后,从CAW中取出通道程序的首地址,并根据首地址取出第一条指令,同时向CPU发回答信号,使CPU可继续执行其他程序,而通道则开始执行通道程序,完成传输工作。
通道程序完成实际I/O,启动I/O设备,执行完毕后,如果还有下一条指令,则继续执行, 否则表示传输完成。当通道传输完成最后一条指令时,向CPU发I/O中断,并且通道停止工作。CPU接收中断信号,从通道状态字 CSW中取得有关信息,决定下一步做什么。
DMA方式
设备与主存之间使用总线直接进行数据交换。
DMA方式与中断的主要区别:
- 中断方式是在数据缓冲寄存区满后,发中断请求,CPU进行中断处理;
- DMA方式则是在所要求传送的数据块全部传送结束时要求CPU进行中断处理,大大减少了CPU进行中断处理的次数;
- 中断方式的数据传送是由CPU控制完成的, 而DMA方式则是在DMA控制器的控制下不经过CPU控制完成的。
DMA工作原理
——获取总线控制权
- 存放输入数据的内存起始地址、要传送的字节数送入DMA控制器的内存地址寄存器和传送字节计数器。
- 中断允许位和启动位置成1,启动设备。
- 发出传输要求的进程进入等待状态,进程调度其他进程占据CPU。
- 输入设备不断窃取CPU工作周期,数据不断写入内存,传送完毕,发出中断信号。
- CPU接到中断信号转入中断处理程序处理。
- 中断处理结束,CPU返回原进程或切换到新的进程。
I/O子系统功能
I/O子系统的接口
-
在应用层为用户提供I/O应用接口
对设备的控制和操作则由内核I/O子系统来实施。
-
每个通过设备类型都通过一组标准函数(及接口)来访问
具体的差别被I/O子系统中的内核模块(称为设备驱动程序)所封装,这些设备驱动程序一方面可以定制以适合各种设备,另一方面也提供了一组标准的接口。设备驱动程序层的作用是为内核I/O子系统隐藏设备控制器之间的差异。将I/O子系统与硬讲分离,简化了操作系统
开发人员的任务,也有利于设备的设计与制造。
I/O控制的功能
- 解释用户的I/O系统调用
- 设备驱动
- 中断处理
设备处理程序
设备处理程序是能直接控制设备运转的程序,它根据各类设备的特点和性能来编写。每一类设备有一个相应的设备处理程序,能控制同类中多台物理设备同时工作。
控制I/O核心模块的方式
-
以设备处理进程的方式
- 为每一类设备设置一个设备处理进程 (对应的程序就是设备处理程序);
- 当有I/O请求来到时该进程被唤醒,进行设备驱动工作;当没有I/O请求时,该进程睡眠。
由I/O控制模块的接口程序负责解释用户的I/O系统调用,将其转换成I/O控制模块认识的命令形式后,将I/O请求发给对应的设备处理进程。
-
将设备与文件一样对待
将设备与文件一样对待,使用文件系统的系统调用命令进行设备的读、写。
作者:cherish.
出处:https://home.cnblogs.com/u/cherish-/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。