分享

驱动、应用和Linux操作系统的关系

 hero_2004 2012-05-04

驱动、应用和Linux操作系统的关系


  • 仆人和主人
应用程序好比主人,驱动模块好比是仆人,Linux操作系统则就充当了管理仆人以及主人向仆人发号施令的系统这样的角色。
为了方便描述,假定这个仆人是需要插电才能工作的机器仆人,每个仆人只会做特定的几件事情,且不同的仆人能做的事情不同,Linux操作系统是具有电源插座以及接受主人命令的输入接口的一个大机柜;应用程序就是这个大机柜的主人。
驱动模块需要插入系统才能工作,插入系统的过程好比给机器仆人上电,至于这个机器仆人能做什么事情,能否做好事情,就完全取决于机器人的功能,对驱动而言,就是驱动模块内部实现了哪些方法,以及这些方法代码是否正确。
如果系统不再需要某个驱动模块,可以对模块进行卸载,就好比主人不再需要这个机器仆人干活了,就可以把电源插头从插座上拔掉,把插座留给其它机器人。
驱动程序永远不会主动运行自己的代码来做它能做的事情,只能等用户程序进行系统调用,才能使用内部的各种方法完成某种功能。这就好比机器仆人不能主动的干活,必须主人通过这个大机柜向机器人发送命令,让仆人干活,干多少活等等,仆人永远只能被动的干主人吩咐的事情。永远没有自己的思想,不会主动干活。这个仆人很听话,主人让干啥它就干啥,是一个听话的好仆人。
驱动程序出错的后果是严重的,最严重的就是使内核崩溃。好比尽管这个仆人很听话,但是发起脾气来危害也很大,如果机器仆人出故障了,很有可能将整个大机柜毁灭,所以机器仆人质量的好坏是至关重要的。
应用程序无法直接访问系统硬件,应用程序和硬件之间被操作系统隔离开了。好比主人被大机柜挡住了,看不到大机柜后面的硬件一样。

  • 老板和员工
应用程序好比是一个只会发号司令的老板,驱动模块则是老板雇佣的员工,Linux操作系统就是老板和员工干活的公司
不过这个老板呢,除了发号司令之外啥也不会,连招员工都需要人力资源去做(驱动开发者充当这个角色);这个公司的员工呢,每个都很懒,没接到老板的命令从不干活。
驱动加载就好比员工入职,在人力资源处登记注册。注册之后干不干活,干什么活完全由老板来指挥。
驱动卸载就好比活干完了,老板不再需要这个员工了,这个员工被老板炒鱿鱼了(能被卸载的驱动是典型的临时工,^_^)。当然,也有一些驱动可能是不用卸载的,一直在系统中(这些员工是有铁饭碗的关系户,^_^)。
每个驱动都有自己的方法,不同驱动的方法也不相同。这与每个员工都有自己的技能,至于技能能否满足职位额要求,这完全取决于人力资源招人时候是否谨慎,招的人是否合格。
驱动不会主动执行自己内部的功能,必须由应用程序调用。好比:不过这些员工很有意思,很懒惰,入职后,没有老板的命令都不干活的,坐在办公司,什么事情也不干,一旦有命令才开始干活。
驱动程序一旦出错,严重毁引起系统崩溃。如果招聘的员工,是个危险分子,很有可能导致公司倒闭,如时不时偷点钱(内存泄露),那公司离倒闭也不远了。
应用程序不能直接访问硬件。老板有了公司之后,不再做底层的技术活,底层的技术活都交给下面的马仔员工去做,自己高高在上。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多