操作系统中识别硬件设备的方法及计算机设备与流程

文档序号:12824413阅读:736来源:国知局
操作系统中识别硬件设备的方法及计算机设备与流程
本公开涉及一种操作系统中识别硬件设备的方法和一种计算机设备。
背景技术
:现有的计算机设备可提供一个或多个硬件接口以供硬件设备接入,计算机设备的操作系统通过为各个硬件设备分配设备编号,以根据该设备编号来识别相应的硬件设备。然而,操作系统在分配设备编号时,均是使用当前第一个可用的设备编号给硬件设备命名,这导致了硬件设备从计算机设备的一个硬件接口拔下,转接入至另一个硬件接口时,操作系统为该硬件设备分配的设备编号不一致。在这种情况下,操作系统无法使用固定的设备编号来识别硬件设备,使得在执行某些应用时极其不便,例如在操作系统中执行脚本程序,该脚本程序中使用了某一硬件设备的设备编号,当该硬件设备接入至不同的硬件接口时,由于分配的设备编号不同,需要手动修改脚本程序中的设备编号。技术实现要素:本公开的一个方面提供了一种操作系统中识别硬件设备的方法,包括:确定硬件设备的唯一索引标识符,并建立该唯一索引标识符与该硬件设备的设备编号之间的映射关系;当硬件接口状态发生变化时,获取所述硬件设备的唯一索引标识符;根据上述映射关系,获取并分配上述硬件设备的设备编号给该硬件设备,以能够根据所述硬件设备的设备编号访问该硬件设备。可选地,建立该唯一索引标识符与该硬件设备的设备编号之间的映射关系,包括:根据特定规则在bios界面中设定上述映射关系,或者自动生成上述映射关系;创建链表,该链表的每个节点代表一组唯一索引标识符与该硬件设备的设备编号之间的映射关系,或者建立索引变量,通过该索引变量描述唯一索引标识符与该硬件设备的设备编号之间的映射关系。可选地,所述操作系统为linux系统,通过_dsm方法判断出硬件接口状态发生变化,上述硬件接口状态发生变化包括热插拔该硬件时触发的接口状态变化。可选地,所述linux系统通过_dsm方法获取所述硬件设备的唯一索引标识符,包括:通过特定函数读取链表节点数据或者变量数据,获取上述唯一索引标识符。可选地,操作系统中识别硬件设备的方法还包括:对所述映射关系中的唯一索引标识符和/或设备编号进行删除或修改。本公开的一个方面提供了一种计算机设备,包括:硬件接口,用于提供硬件设备的接入;处理器;存储器,存储有计算机可读指令,所述指令在被所述处理器执行时,使得所述处理器通过操作系统执行:确定所述硬件设备的唯一索引标识符,并建立该唯一索引标识符与该硬件设备的设备编号之间的映射关系;当硬件接口状态发生变化时,获取所述硬件设备的唯一索引标识符;根据上述映射关系,获取并分配上述硬件设备的设备编号给该硬件设备,以能够根据所述硬件设备的设备编号访问该硬件设备。可选地,建立该唯一索引标识符与该硬件设备的设备编号之间的映射关系,包括:根据特定规则在bios界面中设定上述映射关系,或者自动生成上述映射关系;创建链表,该链表的每个节点代表一组唯一索引标识符与该硬件设备的设备编号之间的映射关系,或者建立索引变量,通过该索引变量描述唯一索引标识符与该硬件设备的设备编号之间的映射关系。可选地,所述操作系统为linux系统,通过_dsm方法判断出硬件接口状态发生变化,上述硬件接口状态发生变化包括热插拔该硬件时触发的接口状态变化。可选地,所述linux系统通过_dsm方法获取所述硬件设备的唯一索引标识符,包括:通过特定函数读取链表节点数据或者变量数据,获取上述唯一索引标识符。可选地,所述处理器还通过操作系统执行:对所述映射关系中的唯一索引标识符和/或设备编号进行删除或修改。附图说明为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:图1示意性示出了本公开实施例提供的操作系统中识别硬件设备的方法的流程图。图2示意性示出了本公开另一实施例提供的操作系统中识别硬件设备的方法的流程图。图3示意性示出了本公开实施例提供的操作系统中识别硬件设备的系统的结构示意图。图4示意性示出了本公开实施例提供的计算机设备的结构示意图。具体实施方式根据结合附图对本公开示例性实施例的以下详细描述,本公开的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。在本公开中,术语“包括”和“含有”及其派生词意为包括而非限制;术语“或”是包含性的,意为和/或。在本说明书中,下述用于描述本公开原理的各种实施例只是说明,不应该以任何方式解释为限制公开的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本公开的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本公开的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。本公开的实施例提供了一种操作系统中识别硬件设备的方法及应用该方法的计算机设备。方法包括:确定硬件设备的唯一索引标识符,并建立该唯一索引标识符与该硬件设备的设备编号之间的映射关系;当硬件接口状态发生变化时,获取所述硬件设备的唯一索引标识符;根据上述映射关系,获取并分配上述硬件设备的设备编号给该硬件设备,以能够根据所述硬件设备的设备编号访问该硬件设备。基于上述方法使得同一个硬件设备在任何时刻接入至任意的硬件接口,均可通过同一个设备编号访问该硬件设备。图1示意性示出了本公开实施例提供的操作系统中识别硬件设备的方法的流程图。本实施例的操作系统可以是运行在计算机设备中任何操作系统,包括linux系统、windows系统、unix系统、ios系统等,该计算机设备可以包括台式机计算机、笔记本电脑、服务器等,这些设备包括至少一个硬件接口,包括ide接口、scsi接口、sata接口、usb接口、pci接口等,上述的硬件接口可以提供不同硬件设备接入至计算机设备,硬件设备包括硬盘、显示器、键盘、鼠标、麦克风、扬声器、电子画板等外设。如图1所示,方法包括以下步骤:s100,确定硬件设备的唯一索引标识符,并建立该唯一索引标识符与该硬件设备的设备编号之间的映射关系。任何硬件设备在生产制造时,生产商会为该硬件设备设定一个全球唯一的标识符,即为本步骤所提的唯一索引标识符。以硬盘为例,其唯一索引标识符即为通用唯一识别码(universallyuniqueidentifier,uuid),在确定出该硬盘的uuid后,建立该uuid与设备编号之间的映射关系,例如一块硬盘的uuid为“51251435-2847-3fa4-b4ca-517b3242543b”,若需要将该硬盘在操作系统命名为“sda”,即建立“51251435-2847-3fa4-b4ca-517b3242543b”与“sda”之间的映射。针对接入至同一计算机设备的多个硬件设备,可以批量设定这些多个硬件设备的多个映射关系,如下表1所示:硬件设备唯一索引标识符设备编号硬盘51251435-2847-3fa4-b4ca-517b3242543sda键盘587924867719586543keyboard鼠标623413012245158366mouse………………表1本实施例可选地,在建立该唯一索引标识符与该硬件设备的设备编号之间的映射关系时,包括:根据特定规则在bios界面中设定上述映射关系。例如,将多个硬盘对应的设备编号设为“sda、sdb、sdc......”,将键盘对应的设备编号设为“keyboard”,将键盘对应的设备编号设为“mouse”等,通过这样的规则,可以在操作系统中方便通过英文名称识别出相应的设备类型。另外,系统还可以自动生成上述映射关系,例如,系统可以自动创建一个名称列表,该名称列表包括多个设备编号,以对应于各个硬件设备的唯一索引标识符。创建链表,该链表的每个节点代表一组唯一索引标识符与该硬件设备的设备编号之间的映射关系。例如在linux系统中,在memorytypeefi_acpi_memory_nvs中创建变量block_dev_map链表:structblock_dev_map{char*uuid;intnum;structblock_dev_map*next;}在上述链表中,*uuid为字符串类型的变量指针,代表硬件设备的唯一索引标识符,num为整数类型的变量,代表硬件设备的设备编号,指针*next指向下一个节点。另外,除了通过创建链表的方式来创建映射关系外,还可以建立索引变量,通过该索引变量描述唯一索引标识符与该硬件设备的设备编号之间的映射关系。例如各个硬件设备通过uefi接口接入至计算机设备时,则在linux系统中创建uefi接口变量,一个uefi接口变量表示一组唯一索引标识符与设备编号之间的映射关系,在linux系统中,由于uefi接口变量均可由bios和操作系统访问并修改,故uefi接口变量可以实现在bios和操作系统之间传递映射关系。s200,当硬件接口状态发生变化时,获取所述硬件设备的唯一索引标识符。在上述步骤中,硬件接口状态发生变化可以是多种情形,例如硬件设备接入时触发的接口上电、硬件设备拔出时触发的接口断电、硬件设备热插拔时触发的接口供电状态变化。在linux系统中,通过_dsm方法判断出硬件接口状态发生变化,另外,在计算机设备启动时,_dsm方法也会告知操作系统各个接口上设备接入的情况。s300,根据上述映射关系,获取并分配上述硬件设备的设备编号给该硬件设备,以能够根据所述硬件设备的设备编号访问该硬件设备。在上述步骤中,操作系统通过特定函数读取链表节点数据或者变量数据,获取上述唯一索引标识符。例如在linux系统中,通过sd_probe函数读取uefi接口变量或者上述链表,以得到相应的映射关系。linux系统分配设备编号给该硬件设备时,通过sd_probe函数修改sd.c文件,以将sd.c文件中硬件接口的物理地址与逻辑地址对应关系修改为硬件接口的物理地址与设备编号的映射关系。其中,sd.c文件是scsi模块中的驱动上层的地址映射文件,其记录有该硬件接口的物理地址与逻辑地址的对应关系,操作系统需要访问硬件设备时会调用sd.c文件,以根据逻辑地址得到相应的物理地址,从而访问到正确的设备。由于将sd.c文件逻辑地址替换为设备编号,所以能够根据设备编号访问该硬件设备。另外,本实施例无需修改硬件设备的驱动,只需修改驱动上层的地址映射文件即可完成硬件设备的唯一命名。综上所述,本实施例通过将硬件设备的唯一索引标识符与本地自定义的设备编号建立映射关系,使得硬件设备在接入时,操作系统能够根据该硬件设备的唯一索引标识符获取相应的设备编号,从而能根据该设备编号唯一识别出相应的硬件设备。例如,在操作系统中需要执行一段脚本程序时,程序中的一条指令表示“读取‘sda’中的首个字节的数据”,其中,“sda”表示硬盘a,在现有技术中,当硬盘a发生热插拔等事件时,由于系统当前第一个可用的设备编号为“sdb”,使得系统将“sdb”分配给硬盘a,导致脚本程序中的“sda”无法再继续表示硬盘a,需要手动将程序中“sda”改为“sdb”。反观本实施例,由于将硬盘a的uuid与sda建立了映射关系,如果硬盘a发生热插拔等事件,操作系统仍然会根据硬盘a的uuid获取相应的“sda”并分配至硬盘a,进而使得脚本程序中的“sda”能够继续表示硬盘a。图2示意性示出了本公开另一实施例提供的操作系统中识别硬件设备的方法的流程图。如图2所示,本实施例与图1所示的实施例的区别在于,本实施例进一步包括:s400,对所述映射关系中的唯一索引标识符和/或设备编号进行删除或修改。本公开在图1所示意的实施例中已经提到,操作系统可以通过获取链表或者接口变量的方式,访问到唯一索引标识符与设备编号之间的映射关系。在本实施例中,在有新的硬件设备接入、旧的硬件设备删除、旧的硬件设备被替换、修改硬件设备的设备编号时,操作系统还可以进一步对映射关系进行修改。例如,在有新的硬件设备接入时,可以在链表中增加一个节点或者创建一个新的接口变量,以记录新的硬件设备的唯一索引标识符与设备编号之间的映射关系;在需要对旧的硬件设备删除时,可以对链表中相应节点进行删除或者对相应接口变量进行删除,从而对唯一索引标识符与设备编号进行一并删除;在需要替换旧的硬件设备时,可以在映射关系中保留设备编号不变,修改唯一索引标识符;在需要修改硬件设备的设备编号时,可以在映射关系中保留唯一索引标识符不变,修改设备编号。通过以上方式,用户可以在操作系统的应用层任意修改映射关系,使得硬件设备增加、删除及替换时更加灵活。图3示意性示出了本公开实施例提供的操作系统中识别硬件设备的系统的结构示意图。如图3所示,本实施例提供的别硬件设备的系统300包括映射关系建立模块301、接口状态检测模块302、设备编号分配模块303及映射关系修改模块304。该系统300可以执行上面参考图1~图2描述的方法,以实现在操作系统中识别硬件设备。具体地,映射关系建立模块301首先确定硬件设备的唯一索引标识符,并建立该唯一索引标识符与该硬件设备的设备编号之间的映射关系,所建立的上述映射关系可存储于映射关系存储模块302中;接口状态检测模块303用于时刻检测硬件接口的状态,当检测出硬件接口状态发生变化时,直接从硬件设备中获取所述硬件设备的唯一索引标识符,并将所述唯一索引标识符传递至设备编号分配模块304;设备编号分配模块304获取到接口状态检测模块303发送的唯一索引标识符后,从映射关系存储模块302获取所述映射关系,并根据唯一索引标识符从映射关系获取相应的设备编号,再将该设备编号分配给该硬件设备,以能够根据所述硬件设备的设备编号访问该硬件设备;在后期的维护中,映射关系修改模块305对映射关系存储模块302中存储的所述映射关系中的唯一索引标识符和/或设备编号进行删除或修改。图4示意性示出了本公开实施例提供的计算机设备的结构示意图。如图4所示,计算机设备400包括处理器410、存储器420、多个硬件接口430。计算机设备400可以执行上面参考图1~图2描述的方法,以实现在操作系统中识别硬件设备。具体地,处理器410例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器410还可以包括用于缓存用途的板载存储器。处理器410可以是用于执行参考图2~图3描述的根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。计算机可读存储介质420,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。计算机可读存储介质420可以包括计算机程序421,该计算机程序521可以包括代码/计算机可执行指令,其在由处理器410执行时使得处理器410执行例如上面结合图1~图2所描述的方法流程及其任何变形。计算机程序421可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序421中的代码可以包括一个或多个程序模块,例如包括421a、模块421b、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器410执行时,使得处理器410可以执行例如上面结合图1~图2所描述的方法流程及其任何变形。根据本公开的实施例,处理器410可以执行上面结合图2~图3所描述的方法流程及其任何变形。根据本公开各实施例的上述方法、装置、单元和/或模块可以通过有计算能力的电子设备执行包含计算机指令的软件来实现。该系统可以包括存储设备,以实现上文所描述的各种存储。所述有计算能力的电子设备可以包含通用处理器、数字信号处理器、专用处理器、可重新配置处理器等能够执行计算机指令的装置,但不限于此。执行这样的指令使得电子设备被配置为执行根据本发明的上述各项操作。上述各设备和/或模块可以在一个电子设备中实现,也可以在不同电子设备中实现。这些软件可以存储在计算机可读存储介质中。计算机可读存储介质存储一个或多个程序(软件模块),所述一个或多个程序包括指令,当电子设备中的一个或多个处理器执行所述指令时,所述指令使得电子设备执行本发明的方法。这些软件可以存储为易失性存储器或非易失性存储装置的形式(比如类似rom等存储设备),不论是可擦除的还是可重写的,或者存储为存储器的形式(例如ram、存储器芯片、设备或集成电路),或者被存储在光可读介质或磁可读介质上(比如,cd、dvd、磁盘或磁带等等)。应该意识到,存储设备和存储介质是适于存储一个或多个程序的机器可读存储装置的实施例,所述一个程序或多个程序包括指令,当所述指令被执行时,实现本发明的实施例。实施例提供程序和存储这种程序的机器可读存储装置,所述程序包括用于实现本发明的任何一项权利要求所述的装置或方法的代码。此外,可以经由任何介质(比如,经由有线连接或无线连接携带的通信信号)来电传递这些程序,多个实施例适当地包括这些程序。根据本公开各实施例的方法、装置、单元和/或模块还可以使用例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic)或可以以用于对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式的适当组合来实现。该系统可以包括存储设备,以实现上文所描述的存储。在以这些方式实现时,所使用的软件、硬件和/或固件被编程或设计为执行根据本发明的相应上述方法、步骤和/或功能。本领域技术人员可以根据实际需要来适当地将这些系统和模块中的一个或多个,或其中的一部分或多个部分使用不同的上述实现方式来实现。这些实现方式均落入本发明的保护范围。在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由处理器执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。如本领域技术人员将会理解的,为了任何的以及所有的目的,例如在提供书面说明书的方面,本申请中所公开的所有范围也涵盖任何的以及所有的可能的子范围以及其子范围的组合。任何所列出的范围均能够被容易地识别成充分的描述以及使同样的范围能够至少被分解成同等的两部分、三部分、四部分、五部分、十部分,等等。作为非限制性的例子,本申请中所讨论的每个范围均能够被容易地分解成下三分之一、中三分之一以及上三分之一等等。如本领域技术人员还将会理解的,诸如“直到”、“至少”、“大于”、“小于”等的所有语言均包括所表述的数量并且是指能够随之被分解成如以上所讨论的子范围的范围。最后,如本领域技术人员将会理解的,范围包括各个单独的成分。所以,例如,具有1-3个单元的组是指具有1、2或者3个单元的组。类似地,具有1-5个单元的组是指具有1、2、3、4或者5个单元的组,等等。尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本发明的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1