打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
应用程序,操作系统,驱动程序和硬件 @ 杭州巨立安技术(juliantec)



欢迎转载本文,转载地址:
http://www.juliantec.info/articles/basic-concept/app-os-driver-hw.html

软件和硬件

我们通常所说的计算机系统(1)实际上可以被分成两个部分:硬件和软件。硬件就是构成计算机的所有设备,比如显示器,键盘,鼠标,主机里面的各种器件等等。作为计算机存在的物理基础,这部分通常是看得见,摸得着的;软件通常也叫程序,一般用来告诉这些硬件做什么以及如何做,比如你电脑里运行着的qq,我的魅族MP3播放器里面的操作控制程序等等都是软件。这些软件都要依赖特定的硬件才能完成正确的任务,比如你要用qq把一段话发给远端的朋友,那qq在收到你的话之后,就需要使用网卡发出去,MP3播放器控制软件也是一样。这里我们画出最简单的计算机组成图就是图一那样,我们把软件置上,硬件置下,并用一个箭头连接他们,用来表示它们之间的依赖。

图一: 软件和硬件

将软件细分为两种

实际上软件程序还可以细分成两种:系统程序软件和应用程序软件。系统程序软件实际上就是我们所说的驱动程序,它们的目的只有一个,就是为了驱动硬件,使之能正常地完成某种硬件功能,比如网卡的发送数据功能,声卡的播放声音功能。应用程序软件则用来接收用户的输入请求,进行很多业务运算后,再通过驱动程序驱动硬件去完成用户所要求的任务,有时候应用程序软件也负责把运算的最终结果反馈给用户。画成图就是图二那样,注意,在整个软件系统中,也只有驱动程序最清楚硬件的功能及工作方式,如果上面应用程序想要硬件完成什么样的任务,必须使用相应的驱动程序所提供的那些接口才行。驱动程序直接驱动硬件进行工作,而应用程序则只需要知道这些接口,通过它们间接去驱动硬件来完成任务。这种策略看似简单好用,但也会受到两方面因素的制约。

图二: 细分后的软件和硬件

首先,一个计算机系统里面的硬件设备通常不会只有一个。比方我的魅族MP3里除了音频解码器外,自然也有用来存储歌曲的设备。这些设备各具不同的功能,完成这些功能的操作也就各不相同,就决定了写出来的驱动程序也是各式各样的,最后导致他们提供给应用程序使用的接口也是千变万化的,如图三那样,用不同颜色的箭头表示不同的接口使用。这大大增加了应用程序开发的难度,因为应用程序开发者不仅要考虑上层业务逻辑的处理,还要非常熟悉各种驱动所提供出来的不同接口。

图三: 一个应用使用多个硬件设备

其次,一个计算机系统里面同时运行着的应用程序通常也不会只有一个,这些应用程序会竞争使用总量特定的硬件设备资源。比方你和朋友在用qq聊天的同时,也听着千千静听放出来的音乐,他们都要使用屏幕设备show出界面,也都要使用物理内存(2)来运行程序代码。但是屏幕只有一个,内存也只有那么多,所以在整个计算机系统范围内,必须有某种机制来管理分配这些特定硬件资源的使用。如图四,设计的时候,这种机制要么放在应用程序中实现,要么放在驱动程序中实现,但无论放在哪一方,都是会给这一方的程序开发者带来额外的负担。

图四: 多个应用使用多个硬件设备

引入操作系统之后

上面之所以说额外,那是因为对于应用程序开发者来讲,其重点要考虑的是业务逻辑如何实现,而不是去考虑硬件资源的管理分配,也最好用不着去区分那么多驱动程序的不同接口。类似的,对于驱动程序开发者来说,其要考虑的重点是如何正确的驱动特定的硬件,而不是去考虑硬件资源的管理分配上。那这部分“额外”的工作由谁去做呢,这正是后来出现的操作系统(3)的职责所在。

图五: 引入操作系统后的情况

如图五,操作系统帮我们考虑对各种硬件资源的分配管理,并完成对各种驱动程序所提供接口的抽象,形成一套简单一致的接口给上层的应用程序去使用。如此,应用程序开发人员只需要知道操作系统所提供的这套编程接口(API),就可以实现不同的业务应用。前面我们讲系统程序软件实际上就是驱动程序,但这里我们讲系统程序软件是操作系统。概念上,我们认为操作系统依赖于驱动程序这一层,但实际上,驱动程序是嵌入到操作系统中去的,所以我们认为驱动程序是操作系统的一部分。这种镶嵌大大增加了以往驱动程序开发者的工作难度,因为他们不仅要熟悉手头的硬件工作原理,更重要的是要确保他们写的驱动能正确的镶嵌到操作系统里面去,这就要求他们同时也必须熟练掌握操作系统提供出来的,用来完成镶嵌工作的各种接口。


注意:

1这里所讲的计算机系统是个广义的概念,包括你现在在使用的PC机,以及我经常听的魅族X3型MP3播放器。前者是通用计算机系统,后者是嵌入式计算机系统。

2很多人曾经为自己买过金士顿内存条就是物理内存,通常都不算大,介于256M和1G之间。注意和虚拟内存的区别,在32位系统中,操作系统为每一个运行着的应用程序都分配一个独立的,4G大小的虚拟内存。

3这里所说的操作系统说的是像Linux,Windows那样的操作系统,并不包括uCOSII那样的操作系统,因为uCOSII作为一个简单的实时操作系统只支持多任务(同一时刻运行多个应用程序),并没有像Linux和Windows那样提供设备驱动框架。在uCOSII里面,需要把驱动程序设计成一个个特殊的应用程序。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
计算机中的软件
操作系统与应用程序的关系
SoC中的软件结构
应用软件和操作系统的本质区别
行内话解答:什么是系统软件跟应用软件
关于Windows操作系统的详解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服