博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Linux 设备驱动开发详解(第2版)》——1.3 有操作系统时的设备驱动
阅读量:6173 次
发布时间:2019-06-21

本文共 843 字,大约阅读时间需要 2 分钟。

本节书摘来自异步社区《Linux 设备驱动开发详解(第2版)》一书中的第1章,第1.3节,作者:宋宝华著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.3 有操作系统时的设备驱动

Linux 设备驱动开发详解(第2版)

1.2节中我们看到一个干净利落的设备驱动,它直接运行在硬件之上,不与任何操作系统关联。当系统中包含操作系统后,设备驱动会变得怎样?

首先,无操作系统时设备驱动的硬件操作工作仍然是必不可少的,没有这一部分,驱动不可能与硬件打交道。

其次,我们还需要将驱动融入内核。为了实现这种融合,必须在所有设备的驱动中设计面向操作系统内核的接口,这样的接口由操作系统规定,对一类设备而言结构一致,独立于具体的设备。

由此可见,当系统中存在操作系统的时候,驱动变成了连接硬件和内核的桥梁。如图1.4,操作系统的存在势必要求设备驱动附加更多的代码和功能,把单一的“驱使硬件设备行动”变成了操作系统内与硬件交互的模块,它对外呈现为操作系统的API,不再给应用软件工程师直接提供接口。

screenshot

那么我们要问,有了操作系统之后,驱动反而变得复杂,那要操作系统干什么?

首先,一个复杂的软件系统需要处理多个并发的任务,没有操作系统,想完成多任务并发是很困难的。

其次,操作系统给我们提供内存管理机制。一个典型的例子是,对于多数含MMU的处理器而言,Windows、Linux等操作系统可以让每个进程都可以独立地访问4GB的内存空间。

上述优点似乎并没有体现在设备驱动身上,操作系统的存在给设备驱动究竟带来了什么实质的好处?

简而言之,操作系统通过给驱动制造麻烦来达到给上层应用提供便利的目的。当驱动都按照操作系统给出的独立于设备的接口而设计,那么,应用程序将可使用统一的系统调用接口来访问各种设备。对于类UNIX的VxWorks、Linux等操作系统而言,当应用程序通过write()、read()等函数读写文件就可访问各种字符设备和块设备,而不论设备的具体类型和工作方式,那将是怎样的便利?

转载地址:http://doxba.baihongyu.com/

你可能感兴趣的文章
约瑟夫问题总结
查看>>
spring mybatis 批量插入返回主键
查看>>
指针函数小用
查看>>
开源力量公开课第二十三期-从SVN到Git,次时代代码管理
查看>>
输入挂
查看>>
升级迁移前,存储过程统计各个用户下表的数据量,和迁移后的比对
查看>>
sql注入分类
查看>>
初识CSS选择器版本4
查看>>
[Hadoop in China 2011] 朱会灿:探析腾讯Typhoon云计算平台
查看>>
JavaScript之数组学习
查看>>
PHP 设置响应头来解决跨域问题
查看>>
CAS实现SSO单点登录原理
查看>>
博客园美化专用图片链接
查看>>
HDU_1969_二分
查看>>
高等代数葵花宝典—白皮书
查看>>
一种简单的图像修复方法
查看>>
基于DobboX的SOA服务集群搭建
查看>>
C#设计模式之装饰者
查看>>
[noip模拟20170921]模版题
查看>>
获取ip
查看>>