设备管理
1.设备管理概述
1.1 I/O设备的类型(有输入输出交换的设备)
按设备的所属关系可以将I/O设备分为两类:
(1)系统设备
系统设备是在系统生成时已登记于系统中的标准设备,属于系统的基本配置。
(2)用户设备(临时安装的设备如U盘)
用户设备是在系统生成时未登记在系统中的非标准设备。
按设备的信息交换的单位可将I/O设备分为两类:
(1)字符设备
字符设备是以字符为单位进行输入和输出的设备。一般以字节流的方式访问,典型的字符设备:键盘、鼠标、串口、显示器
(2)块设备
块设备的输入和输出是以数据块为单位的。ID硬盘、flash读取数据的时候。
判断是字符设备还是块设备关键一点是这个设备是否实现随机访问,对硬盘来讲我们随机读取每一个扇区的数据可以随时找这个扇区的数据。
字符设备和块设备两种驱动的结构是不一样的,接口也不同,首先要判断设备是字符设备还是块设备然后根据相应的接口进行编程。
按设备的共享熟悉可将I/O设备分为三类:
(1)独占设备
所有的字符设备都是独占设备。独占设备是指一段时间内只允许一个用户(进程)访问的设备,即临界资源。
(2)共享设备(硬盘读的时候是共享设备,写的时候是独占设备)
块设备都是共享设备。共享设备是指一段时间内允许多个进程同时访问的设备。
(3)虚拟设备
通过虚拟设备技术把一台独占设备变换为若干逻辑设备,供若干个用户(进程)同时使用,以提高设备的利用率。
1.2 设备管理的任务和功能
设备管理是对计算机的输入/输出系统的管理,它是操作系统中最具有多样性和复杂性的部分。其主要任务如下:(即驱动程序要实现的工作)
(1)选择和分配I/O设备以便进行数据传输操作。
驱动程序最初加载的时候需要做的,首先对设备初始化、分配设备、开辟设备的运行空间、映射设备所使用的IO空间
(2)控制I/O设备的CPU(或内存)之间交换数据。
一个IO控制,一端向设备访问另一端向CPU进行访问,中间的相当于设备控制器,设备控制器负责与设备之间数据的读取或向设备写入数据,向另外一端传送数据到CPU或者接受CPU指令到相应的IO控制器,相当于分了三块。
(3)为用户提供一个友好的透明接口,把用户和设备硬件特性分开,使得用户在编制程序时不必涉及具体设备,由系统按用户的要求来对设备的工作进行控制。另外这个接口还为新增加的用户设备提供一个和系统核心相连接的入口,以便用户开发新的设备管理程序。
(4)提高设备和设备之间、CPU和设备之间以及进程和进程之间的并行操作程度,以使操作系统获得最佳效率。
为了完成上述主要任务,设备管理程序一般要提供以下功能:
(1)提供和进程管理系统的接口(上层提供的API到接口,API接口由操作系统完成)
(2)进行设备分配(程序编写的时候需初始化设备,开辟设备使用内存所占用的空间,映射相应的IO端口)
(3)实现设备和设备、设备和CPU等之间的并行操作
(4)进行缓冲管理
(5)设备控制与驱动
1.3 设备控制器
设备控制器是CPU与I/O设备之间的接口,它接收从CPU发来的命令并去控制I/O设备工作。设备控制器是一个可编址设备,当它仅控制一个设备时,它只有一个唯一的设备地址;当它控制多个设备时,则应具有多个设备地址,使每一个地址对应一个设备。
为实现设备控制器的功能,大多数设备控制器由三部分组成:
1.设备控制器与处理机的接口
2.设备控制器与设备的接口
3.I/O逻辑
1.4 I/O通道
设置I/O通道的目的是使一些原来由CPU处理的I/O任务专由通道来承担,从而把CPU从繁杂的I/O任务中解脱处理。
在设置了通道后,CPU只需向通道发送一条I/O指令。通道在收到该指令后,便从内存中取出本次要执行的通道程序,然后执行该通道程序,仅当通道完成了规定的I/O任务后,才向CPU发中断信号。
实际上,I/O通道是一种特殊的处理机,它具有执行I/O指令的能力,并通过执行通道(I/O)程序来控制I/O操作。
通道有两种基本类型:选择通道和多路通道。
1.6 设备驱动
设备驱动程序的主要任务是接收上层软件发来的抽象要求,如read或write命令,再把它转换为具体要求,发送给设备控制器;此外它也将由设备控制器发来的信号传送给上层软件,从而完成两者间的相互通信。(设备上层是内核)
设备驱动程序的处理过程:
(1)将抽象要求转换为具体要求
(2)检测I/O请求的合法性
(3)读出和检测设备的状态
(4)传送逼样的参数
(5)工作方式的设置
(6)启动I/O设备
2 I/O控制方式
2.1 程序I/O方式(还有中断方式、DMA方式)