曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 5469|回复: 0
打印 上一主题 下一主题

设备的分类及特点

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2009-6-25 17:17:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
驱动针对的对象是存储器和外设(包括 CPU 内部集成的存储器和外设),而不是针对 CPU 核。

Linux 将存储器和外设分为 3 个基础大类:
      字符设备
      块设备
      网络设备
字符设备:指那些必须以串行顺序依次进行访问的设备,如触摸屏、磁带驱动器、鼠标等。
块设备:可以用任意顺寻进行访问,以块为单位进行操作,如硬盘、软驱等。

字符设备不经过系统的快速缓冲,而块设备经过系统的快速缓冲。但是,字符设备和块设备并没有明显的界限,如 Flash 设备符合块设备的特点,但是我们仍然可以把它当作一个字符设备来访问。

字符设备和块设备的驱动设计有很大的区别,但对于用户而言,它们都使用文件系统的操作接口 open()、close()、read()、write() 等函数进行访问。

在 Linux 系统中,网络设备面向数据包的接收和发送而设计,它并不对应于文件系统的节点。内核与网络设备的通信和内核与字符设备、块设备的通信方式完全不同。

除网络设备外,字符设备与块设备都被映射到 linux 文件系统的文件和目录(如下图所示),通过文件系统的系统调用接口 open()、write()、read()、close() 等函数即可访问字符设备和块设备。所有的字符设备和块设备都被统一地呈现给用户。块设备比字符设备复杂,在它上面会首先建立一个磁盘/Flash 文件系统,如 FAT、Ext3、YAFFS、JFFS等。 FAT、Ext3、YAFFS、JFFS规范了文件和目录在存储介质上的组织。

应用程序可以使用 LINUX 的系统调用接口函数,也可以使用 C 库函数,出于代码可移植性考虑,推荐用 C 库函数。因为,C 库函数本身也通过系统调用接口而实现,如 C 库中的 fopen()、fwrite()、fread()、fclose() 分别会调用操作系统 API 的 open()、write()、read()、close() 函数。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 01:29 , Processed in 0.084670 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表