内核装置模块的实时更新制造方法及图纸

技术编号:26610804 阅读:59 留言:0更新日期:2020-12-04 21:36
公开了用于实现实时装置驱动程序更新的系统、设备和方法。当处理器加载给定版本的装置驱动程序时,所述给定版本向代理模块注册,而不是向操作系统注册。如果先前版本的装置驱动程序已经在运行,则所述代理模块为所述给定版本提供指向所述先前版本的指针。所述给定版本使用所述指针从所述先前版本中检索静态数据。在使所述先前版本静默后,所述给定版本从所述先前版本中检索瞬态数据,然后接任作为所述装置驱动程序的运行版本。后续版本的装置驱动程序能够以类似方式替换先前版本。同样,在降级的情况下,先前版本的装置驱动程序能够以类似方式替换后续版本。

【技术实现步骤摘要】
【国外来华专利技术】内核装置模块的实时更新
技术介绍
相关技术说明错误修复或安全补丁会定期应用于实时生产内核模块代码库。在一些计算环境中,这些补丁将导致操作环境中断。例如,云服务提供商(CSP)在具有成千上万台主机的实时生产环境中运行各种软件模块。大型CSP将用户踢出主机以便安装更新后版本的内核装置模块(即,装置驱动程序)是不切实际的。等待所有用户自行注销也是不可行的。附加地,尝试在运行对应装置时替换正在运行的内核装置模块(或简称为模块)可能是一项挑战。卸载和重新加载模块的行为可能会导致丢失状态的情景。一个问题是,新模块将不了解旧模块留下的状态。在已卸载旧模块并开始加载新模块之后的一段时间期间,将没有驱动程序管理装置。装置的任何活动或状态更改都将丢失。附图说明通过结合附图参考以下描述,可更好地理解本文中描述的方法和机制的优点,在附图中:图1是计算系统的一个实现方式的框图。图2是服务器的虚拟环境的一个实现方式的框图。图3示出了计算系统的一个实现方式的框图。图4示出了计算系统的一个实现方式的框图。图5示出了计算系统的一个实现方式的框图。图6示出了计算系统的一个实现方式的框图。图7示出了OS、代理模块和内核装置模块之间的交互的一个实现方式的序列图。图8示出了在加载新的内核装置模块时交互的一个实现方式的序列图。图9示出了在加载新的内核装置模块时交互的一个实现方式的序列图。图10示出了使现有内核装置模块版本静默的一个实现方式的序列图。图11是示出用于加载内核装置模块的方法的一个实现方式的通用流程图。图12是示出用于使第一版本的装置驱动程序静默以便将装置的控制权从第一版本的装置驱动程序转移到第二版本的装置驱动程序的方法的一个实现方式的通用流程图。具体实施方式在以下描述中,阐述了众多特定细节以提供对本文呈现的方法和机制的透彻理解。然而,本领域普通技术人员应认识到,可在没有这些具体细节的情况下实践各种实现方式。在一些情况下,并未详细示出众所周知的结构、部件、信号、计算机程序指令和技术,以避免混淆本文描述的方法。应当理解,为了说明的简单和清楚起见,附图中所示的元件不一定按比例绘制。例如,一些元件的尺寸可相对于其他元件被放大。本文公开了用于执行内核装置模块的实时更新的各种系统、设备和方法。在一个实现方式中,代理模块被加载到系统上,其中代理模块为两个不同版本的内核装置模块提供注册和通信点。在一个实现方式中,代理模块和内核装置模块是可加载的内核模块。当控制权从第一版本的内核装置模块转移到第二版本的内核装置模块时,代理模块在同时激活两个版本的可加载内核模块时执行无法复制或释放的驱动程序活动。在一个实现方式中,代理模块执行的活动包括但不限于装置注册、输入输出控制(IOCTL)调用、sysfs调用以及其他活动。当加载第一版本的内核装置模块时,它将使用从代理模块导出的应用程序编程接口(API)来向代理模块注册。然后,代理模块将向操作系统(OS)注册,假装是第一版本的内核装置模块。代理模块将维护所有必需的打开的sysfs属性文件和IOCTL文件属性。当加载第二版本的内核装置模块时,第二版本的内核装置模块也将向代理模块注册。由于已经向OS注册了代理模块,因此代理模块不需要重复注册步骤。由于每个版本的内核装置模块都向代理模块注册,因此代理模块知道如何查找每个版本的内核装置模块并与之通信。新版本的内核装置模块将查询代理模块以查找其他版本,以便两个版本能够直接通信。在一个实现方式中,一旦两个版本的内核装置模块能够彼此直接通信,则这两个版本管理它们之间的装置控制权的转移,而无需来自代理模块的进一步帮助。现在参考图1,示出了计算系统100的一个实现方式的框图。在一个实现方式中,计算系统100至少包括处理器105A至105N、输入/输出(I/O)接口120、总线125、一个或多个存储器控制器130、网络接口控制器(NIC)135和一个或多个存储器装置140。在其他实现方式中,计算系统100包括其他部件并且/或者计算系统100以不同方式布置。处理器105A至105N表示系统100中包括的任何数目的处理器。在一个实现方式中,处理器105A是通用处理器,诸如中央处理单元(CPU)。在一个实现方式中,处理器105N是具有高度并行架构的数据并行处理器。数据并行处理器包括图形处理单元(GPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等等。在一些实现方式中,处理器105A至105N包括多个数据并行处理器。一个或多个存储器控制器130表示可由处理器105A至105N和耦接到I/O接口120的I/O装置(未示出)访问的任何数目和类型的存储器控制器。一个或多个存储器控制器130耦接到任何数目和类型的一个或多个存储器装置140。一个或多个存储器装置140表示任何数目和类型的存储器装置。举例来说,存储器装置140中的存储器的类型包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、NAND快闪存储器、NOR快闪存储器、铁电随机存取存储器(FeRAM)或其他存储器。I/O接口120表示任何数目和类型的I/O接口(例如,外围部件互连(PCI)总线、PCI扩展(PCI-X)、PCIE(PCI快速)总线、吉比特以太网(GBE)总线、通用串行总线(USB))。各种类型的外围装置(未示出)耦接到I/O接口120。此类外围装置包括(但不限于)显示器、键盘、鼠标、打印机、扫描仪、操纵杆或其他类型的游戏控制器、媒体记录装置、外部存储装置、网络接口卡等。网络接口控制器(NIC)135跨网络145接收和发送网络消息。网络145表示任何类型的网络或网络的组合,包括无线连接、直接局域网(LAN)、城域网(MAN)、广域网(WAN)、内联网、互联网、有线网络、分组交换网络、光纤网络、路由器、存储区域网络,或其他类型的网络。LAN的示例包括以太网网络、光纤分布式数据接口(FDDI)网络和令牌环网络。在各种实现方式中,网络145还包括远程直接存储器访问(RDMA)硬件和/或软件、传输控制协议/互联网协议(TCP/IP)硬件和/或软件、路由器、中继器、交换机、电网和/或其他部件。在各种实现方式中,计算系统100是计算机、膝上型计算机、移动装置、游戏控制台、服务器、流式传输装置、可穿戴装置或者各种其他类型的计算系统或装置中的任一种。应注意,计算系统100的部件的数目随实现方式的不同而不同。例如,在其他实现方式中,存在与图1中示出的数目相比更多或更少的每种部件。还应注意的是,在其他实现方式中,计算系统100包括图1中未示出的其他部件。附加地,在其他实现方式中,计算系统100以与图1中所示不同的方式进行结构化。现在转到图2,示出了服务器200的虚拟环境的一个实现方式的框图。在一个实现方式中,服务器200包括客户端205A至205N、虚拟机(VM)215A至215N、虚拟机监测器(VMM)220、主机硬件230、存储器24本文档来自技高网...

【技术保护点】
1.一种系统,其包括:/n存储器,所述存储器存储操作系统(OS)、代理模块以及被配置为管理一个或多个软件应用程序与装置之间的交互的第一版本的装置驱动程序的程序指令;以及/n处理器,所述处理器被配置为:/n向所述代理模块注册所述第一版本的所述装置驱动程序;以及/n执行所述代理模块的程序指令以:/n提供从所述代理模块到所述第一版本的所述装置驱动程序的指示,所述指示指定另一版本的所述装置驱动程序是否已经被加载到所述系统上并且正在管理所述装置;以及/n响应于确定没有其他版本的所述装置驱动程序被加载到所述系统上并且正在管理所述装置,向所述OS注册为所述第一版本的所述装置驱动程序,并且将所述第一版本的所述装置驱动程序仿真到所述OS。/n

【技术特征摘要】
【国外来华专利技术】20180427 US 62/663,860;20180830 US 16/117,9591.一种系统,其包括:
存储器,所述存储器存储操作系统(OS)、代理模块以及被配置为管理一个或多个软件应用程序与装置之间的交互的第一版本的装置驱动程序的程序指令;以及
处理器,所述处理器被配置为:
向所述代理模块注册所述第一版本的所述装置驱动程序;以及
执行所述代理模块的程序指令以:
提供从所述代理模块到所述第一版本的所述装置驱动程序的指示,所述指示指定另一版本的所述装置驱动程序是否已经被加载到所述系统上并且正在管理所述装置;以及
响应于确定没有其他版本的所述装置驱动程序被加载到所述系统上并且正在管理所述装置,向所述OS注册为所述第一版本的所述装置驱动程序,并且将所述第一版本的所述装置驱动程序仿真到所述OS。


2.如权利要求1所述的系统,其中所述处理器还被配置为:
加载与被配置为管理所述装置与所述一个或多个软件应用程序之间的交互的所述第一版本的所述装置驱动程序不同的第二版本的所述装置驱动程序;
向所述代理模块注册所述第二版本的所述装置驱动程序;
所述代理模块向所述第二版本的所述装置驱动程序提供指向所述第一版本的所述装置驱动程序的指针;以及
所述第二版本的所述装置驱动程序经由所述指针请求来自所述第一版本的所述装置驱动程序的状态信息。


3.如权利要求2所述的系统,其中所述处理器还被配置为:
生成停止一个或多个外部刺激线程的一个或多个请求;
等待所述一个或多个外部刺激线程停止;以及
响应于所述一个或多个外部刺激线程停止,将所述装置的控制权从所述第一版本的所述装置驱动程序转移到所述第二版本的所述装置驱动程序。


4.如权利要求2所述的系统,其中所述处理器还被配置为:
将状态信息从所述第一版本的所述装置驱动程序传送到所述第二版本的所述装置驱动程序;
将所述装置的控制权从所述第一版本的所述装置驱动程序转移到所述第二版本的所述装置驱动程序;以及
停用所述第一版本的所述装置驱动程序。


5.如权利要求4所述的系统,其中所述处理器被配置为响应于确定所述第一版本的所述装置驱动程序被加载到所述系统上并且正在管理所述装置,而执行所述代理模块以通知所述第二版本的所述装置驱动程序跳过所述装置的硬件初始化。


6.如权利要求4所述的系统,其中所述处理器还被配置为:
将静态数据从所述第一版本的所述装置驱动程序传送到所述第二版本的所述装置驱动程序;
使所述第一版本的所述装置驱动程序静默;以及
在使所述第一版本的所述装置驱动程序静默之后,将瞬态数据从所述第一版本的所述装置驱动程序传送到所述第二版本的所述装置驱动程序。


7.如权利要求1所述的系统,其中所述处理器还被配置为:
如果当前没有其他装置驱动程序在管理所述装置,则提供从所述代理模块到所述第一版本的所述装置驱动程序的第一指示;以及
如果另一装置驱动程序当前在管理所述装置,则提供从所述代理模块到所述第一版本的所述装置驱动程序的第二指示,其中所述第二指示与所述第一指示不同。


8.一种方法,其包括:
执行第一版本的装置驱动程序的程序指令,以向代理模块注册所述第一版本的所述装置驱动程序,其中所述第一版本的所述装置驱动程序被配置为管理装置与一个或多个软件应用程序之间的交互;
其中在向所述代理模块注册所述第一版本的所述装置驱动程序之后:
执行所述代理模块的程序指令,以提供从所述代理模块到所述第一版本的所述装置驱动程序的指示,所述指示指定另一版本的所述装置驱动程序是否已经被加载到系统上并且正在管理所述装置;以及
响应于确定没有其他版本的所述装置驱动程序被加载到所述系统上并且正在管理所述装置,向OS注册为所述第一版本的所述装置驱动程序,并且将所述第一版本的所述装置驱动程序仿真到所述OS。


9.如权利要求8所述的方法,其还包括:
加载第二版本的所述装置驱动程序,其中所述第二版本的所述装置驱动程序被配置为管理所述装置与所述一个或多个软件应用程序之间的交互,并且其中所述第二版本的所述装置驱动程序不同于所述第一版本的所述装置驱动程序;
向所述代理模块注册所述第二版本的所述装置驱动程序;
所述代理模块向所述第二版本的所述装置驱动程序提供指向所述第一版本的所述装置驱动程序的指针;以及
所述第二版本的所述装置驱动程序经由所述指针请求...

【专利技术属性】
技术研发人员:凯利·唐纳德·克拉克·齐塔鲁克
申请(专利权)人:ATI科技无限责任公司
类型:发明
国别省市:加拿大;CA

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1