您的位置:首页 > 运维架构 > Linux

嵌入式Linux学习《五》 设备管理

2010-08-01 00:17 295 查看
Linux的设备管理概述

按照设备的所属关系分为系统设备和用户设备

按照信息的交换的单位分为字符设备和块设备

字符设备是以字符为单位进行输入和输出的设备,块设备是以数据块为单位

按照设备的共享属性分为独占设备、共享设备和虚拟设备

独占设备:所有的字符设备都是独占设备,独占设备指一段时间内只允许一个用户(进程)访问的设备,即临界资源

共享设备:块设备都是共享设备,硬盘读操作时候是共享设备,写的时候是独占设备

虚拟设备:通过虚拟设备技术把一台独占设备变换为若干逻辑设备,供若干个用户(进程)同时使用

设备管理的任务和功能

设备管理是对计算机的输入/输出系统的管理

1、选择和分配 I/O设备以便进行数据传输操作

2、控制 I/O设备和CPU(或内存)之间交换数据

3、为用户提供透明接口,使得用户在编写应用程序时不必设计具体设备

4、提高设备和设备之间、CPU和设备之间、进程和进程之间的并行操作程度

为完成上述主要任务,一般设备管理程序要提供以下功能

1、提供和进程管理系统的接口

2、进行设备分配

3、实现设备和设备、设备和CPU等之间的并行操作

4、进行缓冲管理

5、设备控制与驱动

设备控制器

设备控制器是CPU与I/O设备之间的接口,它接收从CPU发来的命令并去控制 I/O 设备工作,设备控制器是一个可编程设备

设备控制器由三部分组成:

1、设备控制器与处理机的接口

2、设备控制器与设备的接口

3、I/O 逻辑

设备控制器的组成,如下图



I/O通道

设置I/O通道的目的是使一些原来由CPU处理的 I/O任务转由通道来承担,CPU只需向通道发送一条I/O指令,仅当通道完成了规定的I/O任务后,才向CPU发中断信号

I/O通道是一种特殊的处理机,具有执行I/O指令的能力,并通过执行通道程序来控制 I/O 操作

通道有两种基本类型:选择通道和多路通道

单通路I/O系统如下图



多通路I/O系统



设备驱动程序的处理过程

1、将抽象要求转换为具体要求

2、检查I/O请求的合法性

3、读出和检查设备的状态

4、传送必要的参数

5、工作方式的设置

6、启动I/O设备

I/O控制方式包括 程序I/O方式(查询方式)、中断驱动I/O控制方式、DMA方式

程序I/O方式的流程图



中断驱动I/O控制方式



当某进程要启动某个I/O设备工作时,便由CPU向相应的设备控制器发出一条命令,然后立即返回继续执行原来的任务,设备控制器按照该命令的要求去控制指定I/O设备,此时,CPU与I/O设备并行操作

例如,在输入时,当设备控制器收到CPU发来的读命令后,便去控制相应的输入设备读数据,一旦数据进入数据寄存器,控制器便通过控制线向CPU发送一个中断信号,由CPU检查输入过程中是否出错,若无错,便向控制器发送取走数据的信号,然后再通过控制线及数据线,将数据写入内存指定单元中

流程图如下:



DMA控制方式

DMA方式的基本思想是在外围设备和内存之间开辟直接的数据交换通路。在DMA控制器中,除了控制状态寄存器和数据缓冲寄存器外,还包括传送字节计数器和内存地址寄存器以及控制电路等,因此,DMA控制器可用来代替CPU,以实现内存和设备之间进行成批的数据交换

DMA方式的传送结构图



设备分配时应考虑的因素

1、设备的固有属性

2、设备分配算法,例如 先来先服务,优先级最高者优先 等算法

3、设备分配中的安全性,有两种分配方式:静态分配和动态分配

4、设备独立性:即应用程序独立于具体使用的物理设备

Linux中的设备管理

在Linux系统中所有设备都作为特别文件,从而在设备管理上具有以下特性

1、每个设备都对应文件系统中的一个索引节点,都有一个文件名

2、应用程序通常可以通过系统调用open() 打开设备文件,建立起与目标设备的连接

3、对设备的使用类似于对文件的存取

4、设备驱动程序都是系统内核的一部分,它们必须为系统内核或者它们的子系统提供一个标准的接口

5、设备驱动程序使用一些的内核服务,如内存分配

设备驱动分层结构图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: