设备管理(2)

一、总线与I/O

1.总线对I/O的影响
总线:解决I/O速度不匹配问题,I/O和CPU、各设备I/O速度不匹配。

2.几种经典总线模型
一、单总线结构模型:将CPU,主存和I/O模块连接到同一总线。
优点:结构简单,易于扩充;
缺点:公用总线;设备多时总线压力大,传输时延长,且慢速外设占用带宽多
在这里插入图片描述
二、三级总线模型
主存和Cache通过主存总线连接,主存总线和扩展总线上的I/O设备间通过扩展总线接口缓冲。
优点:主存与I/O之间的数据传送、处理器的内存活动分离;可以支持更多的I/O设备
缺点: 不适用于I/O设备数据速率相差太大的情形。
在这里插入图片描述
三、南桥于北桥
通过存储总线、PCI总线、E(ISA)总线分别连接主存、高速I/O设备和低俗I/O设备
有点可以支持不同数据速率的I/O设备
在这里插入图片描述
四、一种基于通道的服务器总线模型
支持CPU、主存和多个I/O通道之间的数据传送
支持I/O通道和I/O控制器,以及I/O控制器和设备之间的数据传送。
在这里插入图片描述

二、I/O软件的实现层次

1.I/O软件的设计目标
高效率:改善设备效率,求其是磁盘I/O操作的效率
通用性:用统一的标准来管理所有设备
设计思路
把软件组织成层次结构,底层软件用来屏蔽硬件细节,高层软件向用户提供简洁友善的界面。
主要考虑的问题:
设备无关性:用户进程访问设备时与具体设备的物理细节无关
出错处理:低层软件能处理的错误不让高层软件感知
同步、异步传输:支持阻塞和中断驱动两种工作方式
缓冲技术:建立数据缓冲区,提高吞吐率
2.I/O软件的实现层次
在这里插入图片描述
3.I/O中断处理程序
*位于OS底层,与硬件设备密切相关,与系统其余部分尽可能少的发生联系
*进程请求I/O操作时,通常被挂起,直到数据传输结束后并产生I/O中断时,操作系统接管CPU后转向中断处理程序
*当设备向CPU提出中断请求时,CPU响应请求并zhua入中断处理程序

4.设备驱动程序
包括与设备密切相关的所有代码
从独立于设备的软件中接收并执行I/O请求(把用户提交的逻辑I/O请求转化为物理I/O操作的启动和执行;监督设备是否正确执行,管理数据缓冲区,进行必要的纠错处理
设备驱动程序的功能
设备初始化:在系统初次启动或设备传输数据时,预置设备和控制器以及通道状态
执行设备驱动例程:负责启动设备,进行数据传输;对于具有通道方式,还负责产生通道指令和通道程序,启动通道工作。
调用和执行中断处理程序
负责处理设备和控制器及通道所发出的各种中断
设备驱动程序的层次
1.每个设备驱动程序只处理一种设备,或者一类紧密相关的设备。
2.设备驱动程序分为整体驱动程序和分层驱动程序。
整体驱动程序直接向操作系统提高接口和控制硬件(适用于功能简单的驱动程序,效率较高,但较难迁移。
分层驱动程序将驱动程序分为多层,放在栈中,系统接到I/O请求时先调用栈顶的驱动程序,栈顶的驱动程序可以直接处理请求或者向下调用更低层的驱动程序,直至请求被处理(适用于功能复杂、重用性要求较高的驱动程序,结构清晰且便于移植,但会增加一部分系统开销)

5.独立于设备的I/O软件
执行适用于所有设备的常用I/O功能,并向用户层软件提供一致性接口
功能:
.设备命名:通过路径寻址设备
设备保护:检查用户是否有权访问所申请设备
提供与设备无关的数据单位:字符数量,块尺寸
缓冲技术:传输速率,时间约束,不能直接送达目的地
设备分配和状态跟踪:分配不同类型的设备
错误处理和报告:驱动程序无法处理的错误

6.用户空间的I/O软件
库函数:
一小部分I/O软件不在操作系统中,是与应用程序链接在一起的库函数,甚至完全由运行于用户态的程序组成
系统调用通常由库函数封装后供用户使用,封装函数只是将系统调用所用的参数放在合适位置。然后执行访管指令来陷入内核,再由内核函数实现真正的I/O操作
SPOOLing软件:在内核外运行的系统I/O软件,采用预输入、缓输出和井管理技术,通过创建守护进程和特殊目录解决独占型设备的空占问题。

三、I/O缓冲区

1.I/O缓冲技术
设置I/O缓冲的目的:1解决CPU与设备之间速度不匹配的矛盾。2协调逻辑记录大小和物理记录大小不一致的问题(读磁盘可能读20或30个字节,而磁盘至少是按照一个扇区(512个字节)来记录)。3提高CPU和设备的并行程度4.减少I/O操作对CPU的中断次数。5放宽CPU对中断响应时间的要求。
**I/O缓冲区:**在内存中开辟的存储区,专门用于临时存放I/O操作的数据
2.单缓冲技术
操作系统在主存系统区中开设一个缓冲区
在这里插入图片描述
3.双缓冲技术
CPU处理速度较快,I/O处理较慢,因此一个缓冲区不够用
在这里插入图片描述
4多缓冲技术
又叫循环缓冲技术,OS分配一组缓冲区,每个缓冲区有指向下一个缓冲区的链接指针,构成循环缓冲。在这里插入图片描述

四、设备独立性

1.设备独立性概念
问题的提出
{
作业执行前对设备提出申请,指定某台具体物理设备会让设备分配变得简单。微型计算机OS多采用这种方式,直接指定物理设备。
缺点:如果指定设备出现故障,即使计算机系统中有同类设备也不能运行。
}
设备独立性及其实现
{
设备独立性:用户通常不指定物理设备,而是指定逻辑设备,使得用户进程和物理设备分离开来,再通过其它途径建立逻辑设备和物理设备之间的映射。
设备管理中需要将逻辑设备名转换为物理设备明,为此系统需要提供逻辑设备名和物理设备名的对应表以供转换使用。
}
2.设备独立性优点
{1.应用程序与具体物理设备无关,系统增减或变更设备时不需要修改源程序。
2.易于应对各种I/O设备故障,提高系统的可靠性。
3.增加设备分配的灵活性,有利于更加有效地利用设备资源,实现多道程序设计。
}

五、独占型外围设备的分配

独占型外围设备:键盘,显示器,大多数光盘、打印机等。一次只能由一个进程独占使用。使用时需要先申请再使用再归还。
1.设备分配方式
{
静态分配:进程运行前申请(实现简单,能够防止系统发生死锁名单会降低设备利用率)
动态分配:进程随用随申请(提高设备利用率, 但会造成死锁)
}
2.设备分配数据结构
{
1.设备表:
每类设备都有各自的设备表,用来登记这类设备中的每台物理设备
包括:物理设备名,逻辑设备名,占有设备的进程,分配标志,好/坏标志等
2.设备类表
每类设备对应于设备类表的中一栏
包括:设备类,总台数,空闲台数,设备表起始地址等
支持设备独立性使用
}

发布了33 篇原创文章 · 获赞 4 · 访问量 2632

猜你喜欢

转载自blog.csdn.net/CNMNMSL1/article/details/104014190