首页 / LINUX / linux驱动程序更新如何工作?
linux驱动程序更新如何工作?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux驱动程序更新如何工作?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1668字,纯文字阅读大概需要3分钟。
内容图文
据我所知,Linux机器上没有更新需要重启.然而,Windows需要重新启动几次才能完成更新,这是可以理解的,因为此刻硬件可能正在使用,重启确保没有软件使用该驱动程序.
但是OS(或Linux作为示例)如何处理您想要更新驱动程序但当前正在使用的情况?
解决方法:
Linux上的更新如果影响内核则需要重新启动.驱动程序是内核的一部分.有时可以在Linux上升级驱动程序而无需重新启动,但这种情况不会经常发生:驱动程序的外围控制器在更新期间无法使用,新驱动程序版本必须与正在运行的内核兼容.
将驱动程序升级到正在使用由驱动程序控制的外围设备的正在运行的系统需要旧驱动程序使外围设备处于新驱动程序能够启动的状态.新旧驱动程序也必须管理来自客户端的连接切换.这是可行但困难的;有多困难取决于驾驶员驾驶的是什么.例如,在不卸载文件系统的情况下更新文件系统需要切换一些非常复杂的数据结构,但很容易在硬件方面处理(只需在更新之前刷新缓冲区,然后重新开始使用空缓存).相反,输入驱动程序只需要在客户端传输开放描述符等的列表,但硬件方要求新驱动程序知道外围设备处于什么状态,并且必须小心管理以不丢失事件.
在实时系统上更新驱动程序是在操作系统开发期间的常见做法,其中驱动程序可以动态加载和卸载,但通常不在外围设备使用时.在Linux和Windows等操作系统上通常不会更新生产中的驱动程序;我想它确实在我不熟悉的高可用性系统上完成.
某些驱动程序不在内核中(例如FUSE文件系统).这使得在不更新系统其余部分的情况下更新它们变得容易,但仍然需要不使用驱动程序(例如,必须卸载并再次安装FUSE文件系统的实例以使用新的驱动程序版本).
Linux确实有机制升级内核而无需重新启动:Ksplice,Kpatch,KGraft.这在技术上很困难,因为更新版本必须在很大程度上与旧版本兼容;特别是,它的数据结构必须具有完全相同的二进制布局.一些发行版为安全更新提供此服务.这些功能在主线Linux内核中还没有(还可以?).在主线Linux内核上,只有当驱动程序作为模块加载并且可以卸载模块并且新模块与正在运行的内核兼容时,才能更新驱动程序.
内容总结
以上是互联网集市为您收集整理的linux驱动程序更新如何工作?全部内容,希望文章能够帮你解决linux驱动程序更新如何工作?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。