Unix系统字符型设备驱动程序能够提供的入口点

系统 其他OS
在文章中,我们知道在Unix系统的内部,I/O设备的存取通过一组固定的入口点进行的,这组入口点是由每个设备的设备驱动程序提供的。

我们知道Unix系统对硬件设备支持两个标准接口:块特别设备文件和字符特别设备文件,通过块(字符)特别设备文件存取的设备称为块(字符)设备或具有块(字符)设备接口。块设备接口仅支持面向块的I/O操作,所有I/O操作都通过在内核地址空间中的I/O缓冲区进行,它可以支持几乎任意长度和任意位置上的I/O请求,即提供随机存取的功能。

在Unix系统内部,I/O设备的存取通过一组固定的入口点来进行,这组入口点是由每个设备的设备驱动程序提供的。一般来说,Unix系统字符型设备驱动程序能够提供如下几个入口点:

(1) open入口点。打开设备准备I/O操作。对字符特别设备文件进行打开操作,都会调用设备的open入口点。open子程序必须对将要进行的I/O操作做好必要的准备工作,如清除Unix系统缓冲区等。如果设备是独占的,即同一时刻只能有一个程序访问此设备,则open子程序必须设置一些标志以表示设备处于忙状态。

(2) close入口点。关闭一个设备。当***一次Unix系统使用设备终结后,调用close子程序。独占设备必须标记设备可再次使用。

(3) read入口点。从设备上读数据。对于有缓冲区的I/O操作,一般是从缓冲区里读数据。对字符特别设备文件进行读操作将调用read子程序。
 
(4) write入口点。往设备上写数据。对于有缓冲区的I/O操作,一般是把数据写入缓冲区里。对字符特别设备文件进行写操作将调用write子程序。

(5) ioctl入口点。执行读、写之外的操作。

(6) select入口点。检查Unix系统设备,看数据是否可读或设备是否可用于写数据。select系统调用在检查与设备特别文件相关的文件描述符时使用select入口点。如果设备驱动程序没有提供上述入口点中的某一个,系统会用缺省的子程序来代替。对于不同的系统,也还有一些其它的入口点。

我们知道了,在Unix系统中,对用户程序而言,设备驱动程序隐藏了设备的具体细节,对各种不同设备提供了一致的接口,一般来说是把设备映射为一个特殊的设备文件,用户程序可以象对其它文件一样对此设备文件进行操作。

【编辑推荐】

  1. Unix连接知识讲解之文件的连接和符号连接
  2. Unix系统文件使用chmod的一些例子
  3. 对Unix文件的属性知识深入讲解
  4. 一起来学习Unix文件知识详细分析
  5. 讲解非常重要的Unix文件
责任编辑:小霞
相关推荐

2010-05-10 15:53:24

Unix系统

2010-04-19 10:28:43

Unix操作系统

2010-04-19 10:18:30

Unix操作系统

2011-01-10 18:21:38

linux编写程序

2021-11-29 07:55:45

Linux GPIO Linux 系统

2009-12-07 09:39:04

Linux设备驱动硬件通信

2021-11-16 06:55:36

Linux字符设备

2021-11-22 08:14:23

Linux Linux驱动Linux 系统

2009-06-12 08:39:08

微软Windows 7操作系统

2018-11-26 08:45:29

Linux驱动程序命令

2009-07-06 18:17:46

JDBC驱动程序

2023-10-28 09:57:04

FocusriteLinux

2021-06-27 17:31:16

微软恶意软件网络攻击

2013-10-31 16:29:10

Linux内核

2021-02-22 09:05:59

Linux字符设备架构

2020-12-18 11:54:22

Linux系统架构

2011-01-06 16:29:08

linuxtasklet机制

2011-09-08 18:34:33

WindowsXP驱动程序

2009-08-12 18:20:39

C#事件驱动程序

2017-03-03 08:40:32

点赞
收藏

51CTO技术栈公众号