带操作系统时的设备驱动

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zztingfeng/article/details/82833164

一、不带操作系统

图1 无操作系统时硬件、设备驱动与应用软件的关系

说明:

无操作系统时,应用软件没有跨越任何层次就直接访问了设备驱动的接口设备驱动包含的接口函数也与硬件的功能直接吻合。

二、带操作系统

图2  带操作系统时硬件、设备驱动与应用软件的关系

说明:

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

驱动设备为什么要带操作系统?

首先,一个复杂的软件系统需要处理多个并发的任务,带操作系统,可以完成多任务并发功能。

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

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

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

 

 

 

 

猜你喜欢

转载自blog.csdn.net/zztingfeng/article/details/82833164