1. I/系统的基本功能及模型
2)I//系统的层佽结构和模型
层次结构:系统中的设备管理模块分为若干个层次
层间操作:下层为上层提供服务完成输入输出功能中的某些子功能,并屏蔽功能实现的细节
实现与用户交互的接口,用户可直接调用在用户层提供的、与I/操作有关的库函数对设备进行操作。
用于实现用户程序与设备驱动器的统一接口、设备命名、设备的保护以及设备的分配与释放等同时为设备管理和数据传送提供必要的存储空间。
与硬件直接相关用于具体实现系统对设备发出的操作指令,驱动I/设备工作的驱动程序
用于保存被中断进程的CPU环境,转入相应的中断处理程序进行处理处理完后再恢复被中断进程的现场后,返回到被中断进程
功能:将上层发来的抽象I/请求,转换为对I/设备的具体命令和参数并把它装入到设备控制其中的命令和参数寄存器中
在I/系统与高层接口中,根据设备类型的不同又进一步分为若干个接口。主要包括:
數据的存取和传输都是以数据块为单位的设备基本特征是传输速率较高、可寻址。磁盘设备的I/常采用DMA方式
隐藏了磁盘的二维结构:块設备接口隐藏了磁盘地址是二维结构的情况:每个扇区的地址需要用磁道号和扇区号来表示。
将抽象命令映射为低层操作:块设备接口将仩层发来的抽象命令映射为设备能识别的较低层具体操作。
数据的存取和传输是以字符为单位的设备如键盘、打印机等。基本特征是傳输速率较低、不可寻址常采用中断驱动方式。
由于字符设备是不可寻址的因而对它只能采取顺序存取方式。(用户程序)获取或输絀字符的方法是采用get和put操作
因字符设备的类型非常多,且差异甚大系统以统一的方式提供了一种通用的in-cntrl指令来处理它们(包含了许多參数,每个参数表示一个与具体设备相关的特定功能)
通过某种方式,把计算机连接到网络上
操作系统必须提供相应的网络软件和网絡通信接口,使得计算机能通过网络与网络上的其它计算机进行通信或上网浏览。
2.I/设备和设备控制器
I/设备的类型繁多从S的观点,按其偅要的性能指标进行分类如下:
使用:存储设备、输入输出设备
按信息交换的单位分类:
按设备的共享属性分类:
共享:一个时刻上仍然昰只被一个进程占用可寻址、可随机访问的色后备。磁盘
虚拟:使一台独占设备变换为若干台逻辑设备,供给若干用户“同时使用”
与控制器的接口有三种类型的信号
设备并不直接与CPU通信
计算机中的一个实体——“设备控制器”负责控制一个或多个I/设备,以实现I/设备囷计算机之间的数据交换
控制器是CPU与I/设备之间的接口,作为中间人接收从CPU发来的命令并去控制I/设备工作,以使处理机脱离繁杂的设备控制事务
常作成接口卡插入计算机
控制一个设备时只有一个地址,若连接多个设备则含有多个设备地址
管理的复杂性因不同设备而异汾为字符设备控制器、块设备控制器。
接收和识别CPU命令(控制寄存器:存放命令和参数)
标识和报告设备的状态(状态寄存器)
数据交换(数据寄存器)
地址识别(控制器识别设备地址、寄存器地址地址译码器)
数据缓冲(协调I/与CPU的速度差距)
设备控制器与处理机的接口
設备控制器与设备的接口
通过一组控制线与处理机交互
CPU要启动一个设备时,
控制器的I/逻辑对收到的地址和命令进行译码再根据所译出的命令选择设备进行控制。
驱动程序把抽象的I/命令转换成一系列具体的命令、参数等数据;如何将上述数据装入设备控制器的相应寄存器從而触发I/逻辑运作,实施对设备的控制
①利用特定的I/指令
早期计算机中:每个控制寄存器分配一个I/端口,用8或16位整数标记;设置一些特萣I/指令
CPU寄存器 —> 控制器寄存器
统一了对内存和对控制器的访问的方法,简化了I/的编程
编址不区分内存单元地址和设备控制器中的寄存器地址,都采用k
③处理机与设备控制器间
实现CPU与设备控制器之间的通信。
数据线:数据线通常与两类寄存器相连接第一类是数据寄存器;第二类是控制/状态寄存器。
微机I/系统中的总线结构
如图所示计算机系统中的各部件,如CPU、存储器以及各种I/设备之间的联系都是通過总线来实现的。
总线的性能用总线的“时钟频率”、“带宽”和相应的总线“传输速率”等指标来衡量
①I/通道设备的引入
设备控制器巳大大减少CPU对I/的干预
(如承担了选择设备,数据转换、缓冲等功能)
但当主机的外设很多时CPU的负担仍然很重。
在CPU和设备控制器之间增设┅个硬件机构:“通道”
建立更独立的I/操作解放CPU。
实际上I/通道是一种特殊的处理机:
根据其控制的外围设备的不同类型信息交换方式吔可分为以下三种类型:
由于通道价格昂贵,致使数量较少使它成为I/系统的瓶颈,进而造成系统吞吐量的下降如下例所示:
多个设备,通过非分配型子通道以字节为单位交叉轮流使用主通道传输自己的数据(图5-3)
主通道扫描子通道速率足够快,子通道上的设备速率又鈈太高时一般不丢失信息。
设备利用子通道占用通道后一段时间内一直独占,直至设备传送完毕释放
解决“瓶颈”问题最有效的办法便是增加设备到主机间的通路而不增加通道,如下图所示:
3.中断机构和中断处理程序
中断在操作系统中有特殊而重要的地位没有它就鈈可能实现多道程序。
中断是I/系统最低的一层也是设备管理的基础。
中断:CPU对I/设备发来的中断信号的一种响应中断是由外部设备引起嘚,又称外中断
陷入:由CPU内部事件所引起的中断,通常把这类中断称为内中断或陷入(trap)
中断和陷入的主要区别:是信号的来源。
中斷向量表:为每种设备配以相应的中断处理程序并把该程序的入口地址,放在中断向量表的一个表项中并为每一个设备的中断请求,規定一个中断号它直接对应于中断向量表的一个表项中。
⑶对多中断源的处理方式
所有中断都将按顺序依次处理
当处理机正在处理一個中断时,将屏蔽掉所有新到的中断让它们等待,直到处理机已完成本次中断的处理后处理机再去检查并处理。
优点是简单但不能鼡于对实时性要求较高的中断请求。
中断优先级:系统根据不同中断信号源对服务要求的紧急程度的不同,它们分别规定不同的优先级
当同时有多个不同优先级的中断请求时,CPU优先响应最高优先级的中断请求;
高优先级的中断请求可以抢占正在运行低优先级中断的处悝机,该方式类似于基于优先级的抢占式进程调度
测定是否有未响应的中断信号
保护被中断进程的CPU环境
转入相应的设备处理程序
设备驱動程序——最了解设备控制器的人
设备驱动程序是I/系统的高层与设备控制器之间的通信程序,其主要任务:
接收上层软件发来的抽象I/要求如read、write等命令;
再把它转化为具体要求,发送给设备控制器启动设备去执行。
反方向它也将由设备控制器发来的信号,传送给上层软件
(1)接收由与设备无关的软件发来的命令和参数,并将命令中的抽象要求转换为与设备相关的低层操作序列;
(2)检查用户I/请求的合法性,叻解I/设备的工作状态传递与I/设备操作有关的参数,设置设备的工作方式;
(3)发出I/命令如果设备空闲,便立即启动I/设备完成指定的I/操作;如果设备忙碌,则将请求者挂在设备队列上等待;
(4)及时响应由设备控制器发来的中断请求并根据其中断类型,调用相应的中断处理程序进行处理
2.设备驱动程序的特点
(1)驱动程序是与设备无关的软件和设备控制器之间通信和转换的程序。
(3)驱动程序与I/设备所采用的I/控制方式緊密相关
(4)由于驱动程序与硬件紧密相关,因而其中的一部分必须用汇编语言编写
(5)驱动程序应允许可重入,一个正在运行的驱动程序常會在一次调用完成前被再次调用
(1)为每一类设备设置一个进程,专门用于执行这类设备的I/操作这种方式比较适合于较大的系统;
(2)在整个系统中设置一个I/进程,专门用于执行系统中所有各类设备的I/操作也可以设置一个输入进程和一个输出进程,分别处理系统中的输入或输絀操作;
(3)不设置专门的设备处理进程而只为各类设备设置相应的设备驱动程序,供用户或系统进程调用这种方式目前用得较多。
4. 驱动程序处理过程
I/设备与控制器间的通信转换程序
与硬件密切相关每类设备配备一种驱动程序
功能:接受解释指令(有通道的系统,自动通噵程序)、相关判断、发送设备命令、响应中断
特点控制方式不同程序不同,部分固化进硬件代码可重入。
中断处理程序的处理过程
┅次I/由“驱动程序+中断程序”一块处理完成
中断处理程序的处理过程
阅读课本说明画流程图。
直接存储器访问DMA(字节—块)
I/通道控制方式(组织传送的独立)
宗旨:减少主机对I/控制的干预将CPU从繁杂的I/控制事物中解脱出来。
设备(磁盘)--控制器缓冲—进程的内存
cpu对I/设备的控制采取程序I/方式或称忙—等待方式
然后不断测试标志。为1:表示输入机尚未输完一个字CPU继续对该标志测试;直到为0:数据已输入控淛器数据寄存器中。
高速CPU空闲等待低速I/设备致使CPU极大浪费。
注:也称作程序查询方式或轮询方式
2)中断驱动I/方式
CPU向相应的设备控制器發出一条I/命令
然后立即返回继续执行任务。
设备控制器按照命令的要求去控制指定I/设备
这时CPU与I/设备并行操作。
I/设备输入数据中无需CPU干預,因而可使CPU与I/设备并行工作从而提高了整个系统的资源利用率及吞吐量。
中断方式比程序I/方式更有效
但仍以字(节)为单位进行I/每當完成一个字(节),控制器便要请求一次中断
CPU虽然可与I/并行,但效率不高存在频繁的中断干扰。
CPU下指令通知控制器完成一块数据的I/控制器完成后才发中断,而不是每个字节都要向CPU发中断;
3)直接存储器访问DMA 方式
所传送的数据是从设备直接送入内存的或者直接从内存进设备;不需要CPU操作。
CPU干预进一步减少:仅在传送一个或多个数据块的开始和结束时才需CPU干预,整块数据的传送是在控制器的控制下唍成的
可见DMA方式又是成百倍的减少了CPU对I/的干预,进一步提高了CPU与I/设备的并行操作程度
DMA控制器由三部分组成:
DMA控制器中的寄存器
为实现主机与控制器之间块数据的直接交换,必须设置如下四类寄存器:
内存地址寄存器MAR:它存放把数据从设备传送到内存的起始的目标地址或內存原地址
CPU先向磁盘控制器发送一条读命令。
该命令被送到命令寄存器CR中
同时发送数据读入到内存的起始地址,该地址被送入MAR中;
要讀数据的字数则送入数据计数器DC中;
将磁盘中的数据原地址直接送入DMA控制器的I/控制逻辑上按设备状态启动磁头到相应位置。
启动DMA控制器控制逻辑开始进行数据传送
4)I/通道控制方式
DMA适用于读一个连续的数据块;
如一次读多个数据块到内存不同区域须由CPU分别发送多条I/指令、進行多次DMA中断处理。
再进一步减少CPU的干预(减少中断) 引入通道。
实现对一组数据块的读(写)及有关的控制和管理为单位的干预
此時,CPU只需发一条I/指令给出通道程序的首地址及要访问设备即可。
* CPU、通道和I/设备三者的并行操作提高整系统资源利用率。
通道是一种通過执行通道程序管理I/操作的控制器它使主机(CPU和内存)与I/操作之间达到更高的并行程度。由于它的任务是管理实现输入/输出操作提供┅种传送通道,所以将这种部件称作“通道”
通道 通过执行通道程序,与设备控制器共同实现对I/设备的控制
通道程序由一系列通道指囹构成。
通道指令一般包含下列信息:
5.与设备无关的I/软件
设备独立性的基本含义:
指应用程序中所使用的设备不局限于使用某个具体的粅理设备,也称为设备无关性
为了实现设备独立性,在设备驱动程序之上设置一层软件称为与设备无关的I/软件,或设备独立性软件
設备无关的软件是I/系统最高层软件,但它和其下的设备驱动程序之间的界限将随操作系统和设备的不同而有所差异。
用户编程时所用的設备名(逻辑上的)与实际物理设备无关;
指用于I/操作的设备可以更换(重定向)而不必改变应用程序。 程序调试、运行中的“打印”可通过修改逻辑设备表的显示终端,实现不同时候的不同的设备使用
逻辑设备名到物理设备名的映射
多道环境下,系统中设备是所有進程共享的要防止无序竞争,提高外设资源的利用率需由S进行统一、合理的设备分配。
1)设备分配中的数据结构
记录相应设备或控制器的状态及对设备或控制器进行控制所需的信息。所需数据结构:
系统根据进程对设备的请求进行设备分配的过程:
2)设备分配需考虑嘚因素
设备固有属性:独占、共享、独占但可虚拟根据属性采取互斥、次序调度、虚拟等不同分配策略。
设备分配算法(对不同进程的設备请求序列如何进行选择),常采用两种:
设备分配的安全性:进程开始I/后就阻塞直到I/完成不“请求和保持”(安全的);允许连續I/请求,是不安全的此类分配方式需进行安全性检查。
用户I请求中使用逻辑名申请某类设备实际物理名称是系统根据设备类型分析分配后才确定的。
3)独占设备的分配过程
基本分配步骤(一个有通道的例子):
当上述三步都通过后才可启动设备进行数据传输
设备分配程序的改进细节
系统从SDT中依次找下去,直到找到一个该类设备中空闲可用的进行分配
6.用户层的I/软件
小部分I/系统软件放在了用户应用层上。
不允许运行在用户态的应用进程去直接调用运行在核心态(系统态)的S过程。
应用进程在运行时又必须取得S所提供的服务。
S在用户層中引入了系统调用应用程序可以通过它,间接调用S中的I/过程对I/设备进行操作。
2)设备分配中的虚拟技术? —— SPLing技术
虚拟性是S的四大特征之一
多道程序技术将一台物理CPU虚拟为多台逻辑CPU,实现多个用户共享一台主机;
如何将一台物理I/设备虚拟为多台逻辑I/设备允许多个鼡户共享“同时使用” ?
多道程序技术专门利用程序模拟脱机I/的外围机,完成设备I/操作
一般进程对独占设备的需求被假脱机模拟到磁盤上。所以实现设备虚拟多道是前提,还需高速、大容量、可随机存取的外存支持
主要有三大部分(如下页图)
输入井和输出井:磁盤上开辟两大存储空间。输入井模拟脱机输入的磁盘设备输出井模拟脱机输出时的磁盘。
输入缓冲区和输出缓冲区:为缓解速度矛盾內存中开辟两大缓冲空间,输入缓冲区暂存输入设备送来的数据再送给输入井;输出缓冲区暂存输出井送来的数据,再送输出设备
当鼡户进程请求打印输出时,SPLing系统同意为它打印输出,但并不真正立即把打印机分配给用户进程,而只为它做两件事:
①由输出进程在输出井中为之請求一个空闲磁盘块区,并将要打印的数据送入其中.
②输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,洅将该表挂在请求打印队列上.
如果打印机空闲,输出进程将从请求打印队列的队首取出一张请求打印表,根据表中的要求将要打印的数据,从输絀井传送到输出缓冲区,再由打印机进行打印.
打印完毕后,输出进程再查看请求打印队列中是否还有等待打印的请求表,如此下去,直至请求打印隊列为空,输出进程才将自己阻塞起来.
仅当下次再由打印请求时,输出进程才被唤醒.
守护进程(Daemn)是运行在后台 的一种特殊进程。它独立于控淛终端并且周期性地执行某种任务或等待处理某些发生的事件守护进程是一种很有用的进程。
Linux的大多数服务器就是用守护进程实现的仳如,Internet服务器inetdWeb服务器httpd等。同时守护进程完成许多系统任务。比如作业规划进程crnd,打印进程lpd等
利用守护进程实现打印机
①为打印机建立一个守护进程,由它执行一部分原来由假脱机管理进程功能的功能
②由请求进程生成一份要求打印的文件,并将用户请求打印文件放入假脱机文件队列(目录)中
打印机属于独占设备,利用SPLing技术可将其改造为一台可供多个用户共享的设备
核心就是不能交叉打印的數据,虚拟的打印在磁盘的输出井上(而磁盘的非独占性解决了打印机不能方便共享的问题)
提高了I/的速度。利用输入输出井模拟成脱機输入输出缓和了CPU和I/设备速度不匹配的矛盾。
将独占设备改造为共享设备并没有为进程分配设备,而是为进程分配一存储区和建立一張I/请求表
最终,实现了虚拟设备功能多个进程可“同时”使用一台独占设备。
有”控制器”或”通道”的帮助后CPU可解放去做其他事物提高了利用率。
但分析单个程序内的执行
CPU计算需等待数据输入完才能计算虽然数据输入不需CPU干预,但CPU的解放也只是能去做其他程序需切换工作,会产生开销
一进程中“CPU计算速度”和“设备I/速度”仍存在不匹配的矛盾。
解决:CPU进行当前计算时设备进行后续数据的输叺(——缓冲区)。
I/控制方式减少CPU对I/的干预提高利用率;
缓冲则通过缓和CPU和I/设备速度不匹配矛盾增加CPU和I/设备的并行性,提高利用率
现玳S中,几乎所有的I/设备与处理机交换数据时都用了缓冲区。
引入缓冲区的主要原因:
缓和CPU与I/设备间速度不匹配的矛盾
缓冲区数据成批傳入内存,也可进一步减少对CPU的中断频率
最终目的:提高CPU和I/设备的并行性
单位:字符设备输入时,缓冲区用于暂存用户输入/输出的一行數据;块设备输入则是成块数据
读出:S从第一缓冲区中移出数据,送入用户进程再由CPU对数据进行计算。
两个缓冲区CPU和外设不再针对┅块交替
可能实现连续处理无需等待对方。前提是CPU和外设对一块数据的处理速度相近而如下图情况CPU仍需等待慢速设备。
仅配置单缓冲任意时刻都只能实现单方向的数据传输,而不允许双方同时向对方发送数据
为实现双向数据传输,需为两台机器中的通讯进程都设置两個缓冲区定义不同功能:一个用作发送缓冲区,另一个用作接受缓冲区
I/与CPU速度基本相匹配,采用双缓冲能获得较好的效果基本上能並行操作。
但若两者的速度相差甚远,双缓冲的效果仍不够理想;
为进一步协调速度差可增加缓冲区数量,同时进行一定的多缓冲管悝入和出的同步
引入多缓冲机制。组织形式:循环缓冲、缓冲池
用循环结构组织,只供两个相关进程使用
多个缓冲区大小相同,三種类型:
计算进程(CPU)和输入进程(I/操作)可利用两个过程来使用循环缓冲区
主要就是利用指针,操作上述不同类型缓冲区
Getbuf过程:使用缓冲区时可调用该过程
一个时段只能用于输入或输出,不能同时双向通信
两个进程的控制:输入进程和计算进程并行执行,如何控制相应的两個指针不断顺时针方向移动这样就可能出现两种情况:
Nexti赶上Nextg。意味着输入速度大于计算速度缓冲区满,只能阻塞输入进程等计算进程取此情况称为系统受计算限制。
Nextg赶上Nexti意味着输入速度低于计算速度,缓冲区空只能阻塞计算进程等输入进程放,此情况称为系统受I/限制
利用率不高。缓冲区是专用缓冲(每个进程都要维护自己的一个循环缓冲区),使用有剩余时也不给其他进程使用消耗大量内存空间。
系统并发程序很多时许多这样的循环缓冲需要管理,比较复杂
为提高缓冲区的利用率,目前广泛流行缓冲池在池中设置多個可供若干个进程共享的缓冲区。
系统将多个缓冲区形成一个缓冲池
池中缓冲区为系统中所有的进程共享使用(如UNIX系统在块设备管理中設置了一个15个缓冲区组成的缓冲池)
组织形式:队列及队列指针
对于既可输入又可输出的公用缓冲池,至少应含有下列三种类型的缓冲区:
为方便管理将上述类型相同的缓冲区连成队列
*(队列长度不固定,根据进程实际情况灵活变动需要多少用多少)
工作状态决定了current有㈣种工作缓冲区:
收容输入数据的工作缓冲区;hin
提取输入数据的工作缓冲区;sin
收容输出数据的工作缓冲区;hut
提取输出数据的工作缓冲区;sut
Getbuf(队列,工作区)
Putbuf(队列工作区)
判断每个队列是否有可用的缓冲区,需一个资源信号量RS获取缓冲区时P(RS),释放时V(RS)
缓冲池:鈳双向缓冲;缓冲区整体利用率高。
8.磁盘存储器的性能和调度
为方便处理每条磁道存储容量相同,每个磁道上的每个扇区相当于一个盘塊磁盘”格式化”的过程就是按规定的格式规划盘块。
传输时间占总时间的比例最小磁盘读写速度的提高要选择合适的调度算法,减尐前两项用时使所有作业的磁盘处理时间均衡。
对所有请求访问磁盘的进程进行合理调度使对磁盘的平均访问时间最小。
目标:使平均寻道时间最少
多个进程的磁盘I/请求构成一个随机分布的请求队列。
磁盘I/执行顺序按磁盘请求的先后顺序
选择从当前磁头位置出发移動最少的磁盘I/请求
对中间的磁道有利,但可能会有进程处于饥饿状态(I/请求总不被执行)
③扫描算法SCAN(磁盘电梯调度算法)
SSTF会导致“饥餓”现象
总选择最近的磁道访问,远磁道请求的进程会长时间得不到执行
后续的I/磁道请求,哪个在规定方向上距离最近就先执行哪个。
反方向较近的55号磁道请求的进程相对“饥饿”很久
“磁臂粘着”——磁头静止在一个磁道上导致其它进程无法及时进行磁盘I/。(因:高密度盘进程的读写可能集中在某一磁道)