CN100504772C - 用于识别在计算机系统上运行的操作系统的方法和设备 - Google Patents

用于识别在计算机系统上运行的操作系统的方法和设备 Download PDF

Info

Publication number
CN100504772C
CN100504772C CNB2007101023104A CN200710102310A CN100504772C CN 100504772 C CN100504772 C CN 100504772C CN B2007101023104 A CNB2007101023104 A CN B2007101023104A CN 200710102310 A CN200710102310 A CN 200710102310A CN 100504772 C CN100504772 C CN 100504772C
Authority
CN
China
Prior art keywords
enumerating
operating system
equipment
pattern
computer system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CNB2007101023104A
Other languages
English (en)
Other versions
CN101078985A (zh
Inventor
约瑟夫·E.·博兰
罗伯特·K.·克里斯特纳尔
朱柱中
皮特·T.·多诺万
埃里克·R.·克恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo International Ltd
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101078985A publication Critical patent/CN101078985A/zh
Application granted granted Critical
Publication of CN100504772C publication Critical patent/CN100504772C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Abstract

识别在计算机系统上运行的操作系统。在本发明的一个方面,收集枚举模式,所述枚举模式描述已经在设备和在主机计算机系统上运行的所述操作系统之间执行的所述设备的枚举。基于所述收集的枚举模式识别在所述主机计算机系统上运行的所述操作系统的类型。

Description

用于识别在计算机系统上运行的操作系统的方法和设备
技术领域
本发明涉及计算机操作系统,具体来说,涉及基于设备的枚举识别操作系统的类型。
背景技术
操作系统在主机计算机系统上运行,并使用各种协议和通信标准中的任何一个与设备进行通信。操作系统实现了允许它向连接的设备发送数据或从这些设备中接收数据的驱动程序。设备和主机之间的通信可以包括枚举,这是对到计算机系统的连接的设备的识别,以及对允许设备利用主机计算机而运转的所需的驱动程序的初始化。在某些情况下,设备可能必须知道在它所连接的主机计算机上运行的操作系统的身份(即,类型)。
当设备需要运行主机计算机系统的取决于在该主机上运行的操作系统的类型的特定程序时,就会发生一个这样的情况。例如,连接到主机计算机系统的存储设备可能存储用于更新一个程序或主机的闪速存储器的更新程序的不同版本。更新程序的一个版本需要在设备上运行(或提供到主机以便运行)以执行更新,在那里,要运行的版本将基于在主机上运行的操作系统的类型。例如,如果主机正在运行
Figure C200710102310D00041
操作系统,则执行第一个版本,而如果主机正在运行来自Microsoft Corp.的
Figure C200710102310D00042
操作系统,则执行第二个版本。在不同的实施例中,设备可能必须知道操作系统的身份以执行用户的任务,如与操作系统的开发人员进行通信,或执行特定操作系统特定的功能。
在另一个示例中,某些服务器系统可以包括多个单个服务器计算机,其中,每一个服务器都连接到集中系统或硬件集。例如,一种服务器系统是“刮刀”服务器,如IBM Corporation推出的这种服务器,是具有由多个服务器共享的底盘或外壳的系统。每一个服务器是作为最小包装的计算机主板“刮刀”提供的,包括其自己的处理器、存储器,及其他组件。系统管理硬件可以控制对任何刮刀可用的系统设备和资源,包括共享的CD设备、键盘和鼠标设备,及其他资源。每一个刮刀都可以运行其自己的操作系统,在很多情况下,不同的操作系统在刮刀服务器内的不同刮刀上操作。由管理硬件启动的,在刮刀上运行的软件应用程序,可能必须知道在刮刀上运行的特定操作系统的身份。例如,UpdateXpress是IBM Corporation推出的应用程序,用于更新服务器刮刀内提供的服务器固件和支持的选项的固件。此应用程序必须知道在刮刀上运行的操作系统的类型,以便可以执行正确的更新。这些应用程序可以通过系统管理硬件请求操作系统信息。
用于识别操作系统的现有技术费时,或费力。例如,用户通常需要人工地识别正在运行的操作系统,并向设备、程序,或管理硬件。由于没有现有的识别操作系统的信号或代码的标准,因此,不能对操作系统类型进行自动检测。可以提供软件以便在每一个操作系统下运行,并向发出请求的设备或应用程序指出操作系统,但是,在大多数系统上没有这样的软件。
相应地,所需要的是,能够识别在服务器或其他计算机系统上运行的操作系统,而不需要特殊软件在每一个操作系统下运行或由用户进行人工识别。本发明就是为了适应这样的需要。
发明内容
本申请的发明涉及使用设备枚举识别在计算机系统上运行的操作系统。在本发明的一个方面,用于识别在计算机上运行的操作系统的方法包括收集枚举模式(所述模式描述已经在设备和在主机计算机系统上运行的所述操作系统之间执行的设备的枚举),并基于所述收集的枚举模式识别在主机计算机系统上运行的所述操作系统的类型。本发明的类似方面提供了计算机程序产品,包括计算机可读取的介质,包括用于实现类似特点的程序指令。
在本发明的另一个方面,用于识别在计算机上运行的操作系统的设备包括设备接口,用于为在与设备进行通信的主机计算机系统上运行的操作系统执行所述设备的枚举,与所述设备接口进行通信的操作系统检测引擎,用于从所述设备接口接收描述枚举的枚举模式。操作系统检测引擎用于基于接收的枚举信息识别在主机计算机系统上运行的所述操作系统的类型。
本发明提供了允许计算机的操作系统自动地被包括设备的系统识别的方法和设备,如此节省了用户的向连接的设备或程序指出操作系统的人工任务。本发明还无需安装专门的和侵害性的软件以在计算机系统和操作系统上运行,即可进行操作系统识别。
根据本发明的一方面,提供了一种用于识别在计算机上运行的操作系统的方法,所述方法包括:收集枚举模式,所述枚举模式描述已经在设备和在主机计算机系统上运行的所述操作系统之间执行的所述设备的枚举;以及基于收集的枚举模式和与不同类型的操作系统关联的已知枚举模式之间进行的比较,识别在所述主机计算机系统上运行的操作系统的类型。
在上述方法中,所述收集的枚举模式和已知枚举模式之间进行的比较包括:比较收集的枚举模式的多个步骤和已知枚举模式中的相应的步骤,以便选择与所述收集的枚举模式具有最高步骤相关性的已知枚举模式,以识别在所述主机计算机系统上运行的操作系统的类型。
在上述方法中,识别在所述主机计算机系统上运行的操作系统的类型的步骤包括:向已经用与不同类型的操作系统关联的已知枚举模式训练的神经网络输入收集的枚举模式。
在上述方法中,所述枚举包括主机计算机系统从所述设备请求和接收枚举信息并向所述设备提供命令。
在上述方法中,所述收集的枚举模式是从虚拟设备引擎收集的,所述虚拟设备引擎向至少一台主机计算机系统模拟所述设备的操作。
在上述方法中,所述设备使用包括USB、SCSI以及IDE的标准协议中的任何一个与主机计算机进行通信。
在上述方法中,识别所述操作系统的类型的步骤包括识别所述操作系统的版本。
根据本发明的另一方面,提供了一种用于识别在计算机上运行的操作系统的设备,所述设备包括:设备接口,用于为主机计算机系统上运行的操作系统执行所述设备的枚举,所述主机计算机系统与所述设备进行通信;以及与所述设备接口进行通信的操作系统检测引擎,用于从所述设备接口接收描述所述枚举的枚举模式,其中,所述操作系统检测引擎用于基于接收到的枚举信息和与不同类型的操作系统关联的已知枚举模式之间进行的比较,识别在所述主机计算机系统上运行的操作系统的类型。
在上述设备中,所述操作系统检测引擎比较接收的枚举模式的多个步骤与已知枚举模式中的相应的步骤,以便选择与所述接收的枚举模式具有最高步骤相关性的已知枚举模式,以识别在所述主机计算机系统上运行的操作系统的类型。
在上述设备中,所述设备接口包括虚拟设备引擎,所述虚拟设备引擎耦接到所述操作系统检测引擎,并用于向主机计算机系统模拟所述设备,并向所述操作系统检测引擎提供所述枚举信息。
在上述设备中,所述虚拟设备引擎用于从连接到所述设备接口的至少一个其他主机计算机系统接收信息。
在上述设备中,所述操作系统检测引擎和虚拟设备引擎在管理模块中提供,所述管理模块用于从多个主机计算机系统中接收信息并连接到多个设备。
在上述设备中,所述设备是USB设备,并且所述设备接口包括串行接口引擎和数字软件逻辑,其中,所述串行接口引擎耦接到所述主机计算机系统的USB主机控制器。
附图说明
图1是显示了适用于本发明的系统的方框图;
图2是显示了与本发明一起使用的实施例的方框图,包括提供了使用一个或多个设备的多个计算机系统的系统;
图3是显示了本发明的用于基于设备枚举信息识别操作系统的方法的一个实施例的流程图;以及
图4是显示了本发明的用于基于设备枚举信息识别操作系统的方法的另一个实施例的流程图。
具体实施方式
本发明涉及计算机操作系统,具体来说,涉及基于设备的枚举识别操作系统的类型。提供了下面的描述,以使精通本技术的普通人实现并使用本发明,下面的描述是在专利申请以及其要求的上下文中提供的。对优选实施例以及这里所描述的一般性原理和特点的各个修改,对那些精通本技术的人是显而易见的。如此,本发明不仅限于所显示的实施例,而是根据与这里所描述的原理和特点一致的最广阔的范围。
主要是通过以特定实现方式提供的特定系统来描述本发明的。然而,那些本领域普通技术人员将轻松地认识到,此方法和系统将会有效地以其他实现方式操作。例如,可与本发明一起使用的系统实现方式可以呈现许多不同的形式。还将在具有某些步骤的特定方法的上下文中描述本发明。然而,方法和系统也可以采用具有和本发明一致的不同和/或其他步骤的其他方法有效地操作。
本发明可以呈现完全是硬件、完全是软件或包含硬件和软件元件两者的实施方式的形式。软件实施例可以包括但不仅限于固件、常驻软件、微代码等等。
此外,本发明还可以呈现计算机程序产品的形式,该产品可以从计算机可使用的或计算机可读取的介质进行访问,介质提供了程序代码,供计算机或任何指令执行系统使用或与它们一起使用。对于此说明书,计算机可使用的或计算机可读取的介质可以是可以包含、存储、传递、传播或传输供指令执行系统、设备一起使用或与它们一起使用的程序的程序的任何设备。
介质可以是电子的、磁性的、光学的、电磁的、红外线的或半导体系统(或设备)或传播介质。计算机可读取的介质的示例包括半导体或固态存储器,磁带,可移动计算机磁盘,随机存取存储器(RAM),只读存储器(ROM),硬磁盘和光盘。光盘的当前示例包括只读光盘存储器(CD-ROM),光盘读取/写入(CD-R/W)和DVD。
为比较详细地描述本发明的特点,请参阅图1-4并结合下面的讨论。
图1是显示了适用于本发明的系统10的方框图。系统10包括计算机系统12、设备14,以及管理模块16。
计算机系统12可以是任何合适的计算机系统、服务器或电子设备。例如,计算机系统12可以是大型计算机、台式计算机、工作站、便携式计算机,或电子设备(蜂窝电话、个人数字助理、音频播放器、游戏设备等等)。在某些实施例中,提供了多个计算机系统12,以连接到一个或多个设备14(例如,下面所描述的图2的实施例)。
计算机系统12包括一个或多个微处理器20,用于执行程序代码和控制计算机系统12的基本操作,包括处理操作、操纵数据,向系统12的其他组件发出命令等等。操作系统24在计算机系统12上运行,并通过计算机系统12的微处理器20及其他组件来实现。操作系统是在微处理器20上运行的用于执行基本任务的软件,包括到I/O设备的输入/输出操作,控制并实现存储设备的使用,并为其他程序维护操作环境。操作系统可以是许多不同类型中的一种。例如,常见的操作系统类型包括Linux
Figure C200710102310D0008091404QIETU
、UNIX
Figure C200710102310D0008091404QIETU
、来自Microsoft Corp.的Windows
Figure C200710102310D0008091404QIETU
操作系统,以及来自Apple Computer,Inc.的MacOS
Figure C200710102310D0008091404QIETU
。对于本发明,可以在计算机系统的接通电源和启动时运行的基本输入/输出系统(BIOS)也可以视为除了另一个操作系统之外的可以在计算机系统上运行的“操作系统”。
与本发明相关的操作系统24的一个任务是与一个或多个设备14的通信。设备14可以包括通常使用标准通信协议执行功能和与计算机系统12和操作系统24进行通信的任何外围设备、卡或接口设备。例如,通用串行总线(USB)设备使用USB通信标准与计算机系统进行通信。是参考USB设备和USB标准来描述图1的实施例的;然而,在其他实施例中,其他设备类型和通信协议也可以用于本发明中。其他设备协议包括小型计算机系统接口(SCSI)、外围接口连接(PCI和PCI Express)、Firewire、并行接口(例如,用于打印机)、串行接口,等等,所有的这些都可以用于本发明中。
微处理器20可以与计算机系统12的其他组件进行通信,包括所显示的示例中的北桥26。北桥26包括集成电路芯片,用于将微处理器连接到存储器、PCI总线或其他系统总线、高速缓冲存储器,以及其他功能。北桥26连接到存储器28,存储器可以包括所需要的类型的只读存储器(ROM)和/或随机存取存储器(RAM),允许微处理器检索和存储信息(诸如高速缓冲存储器之类的其他存储器可以是微处理器20本地的)。南桥30可以连接到北桥26,并包括集成电路芯片,该集成电路芯片控制诸如USB、音频、串行、内部通信总线之类的功能等等。南桥30又连接到USB主机控制器32,该控制器与连接到计算机系统12的USB接口设备进行通信。在备选实施例中可以使用其他配置,其中,没有功能的北桥/南桥划分,和/或功能以不同的方式在不同组件之间划分。其他组件也可以连接到计算机系统12,如使得计算机系统通过私有的或公共网络连接到其他计算机系统或设备的网络适配器。
USB标准是主机控制的,USB主机控制器32可使计算机系统12充当USB主机。USB主机负责计算机系统12和USB设备之间的所有事务,并负责调度带宽。数据可以通过各种事务方法,使用基于令牌的协议来进行发送。USB主机控制器具有它们自己的规范;例如,对于USB1.1,主机控制器接口规范包括通用主机控制器接口(UHCI)和开放式主机控制器接口(OHCI),而对于USB 2.0,规范包括增强的主机控制器接口(EHCI)。
主机控制器32可以通过通信链路或总线38连接到设备14。对于USB标准,此链路通常是多重屏蔽的线路,向USB设备14提供了差动数据信号(D+和D-)和功率。在任何适当的通信层上在计算机系统12和设备14之间进行通信,以便可以使用传输线路、无线通信设备、到计算机系统12的内部电路,或任何电子通信介质和机制,提供链路38。
设备14可以通过链路38连接到计算机系统12的主机控制器32。设备14可以是各种接口设备或其他设备类型中的任何一种。例如,设备14可以是键盘、鼠标、存储设备(硬盘驱动器、软盘驱动器等等)、CD-ROM或DVD-ROM驱动器、调制解调器、扫描仪、音频扬声器、视频监视器、打印机、蜂窝电话、PDA或其他电子设备或外围设备。在所描述的实施例中,设备14是包括串行接口引擎40和数字软件逻辑42(可以在USB设备的外壳内,如果适用,位于一个或多个集成电路上)的USB设备14。
串行接口引擎(SIE)40连接到USB总线38。SIE是这样的控制器:用于检测设备14何时连接到主机控制器,从总线接收功率和数据信号,并可以向主机控制器32指出USB设备的速度(例如,高速度或低速度)。SIE通常处理低级别的USB协议细节,如错误检查和总线重试。可以在其他实施例中使用其他控制器类型而不是SIE(例如,连接到USB收发器的专用集成电路(ASIC))。
数字软件逻辑42连接到SIE 40,并可以执行USB设备14所需的任何处理,并接收由用户使用设备提供的任何输入,如果适用的话(例如,对于键盘或鼠标设备14)。在本发明中,数字软件逻辑42还向管理模块16转发USB总线38的传递的数据,并从管理模块16接收待提供到USB设备14和/或待转发到计算机系统12的数据。
管理模块16通过外围总线44连接到数字软件逻辑42。管理模块16可以以其自己的硬件实现,或与USB设备14中的或计算机系统12中的硬件集成在一起,具体情况取决于实施例。例如,管理模块16可以作为USB设备的一部分提供,与设备14位于同一个外壳内,并在设备14中的现有硬件中提供(如果需要的话)。在其他实施例中,管理模块16与系统10的其他组件分开。
管理模块16可以执行各种功能,具体情况取决于计算机系统12和USB设备14的实施例。例如,在某些实施例中,管理模块16可以控制涉及多个计算机系统12的功能(如下面参考图2的实施例所描述的)。针对本发明,管理模块16包括虚拟设备引擎46和操作系统(OS)检测引擎48。在所描述的实施例中,虚拟设备引擎46(显示为虚拟USB引擎46)在管理模块16的硬件中以软件方式运行,并包括向连接的计算机系统12的操作系统24模仿USB设备14的逻辑。如此,数字软件逻辑42可以向管理模块16提供主机请求,虚拟USB引擎46将通过外围总线44和USB总线38响应USB主机控制器32,好像它是实际USB设备。
虚拟引擎46的模拟包括设备14向主机控制器32的枚举并响应来自操作系统24的对数据的请求。例如,当USB设备14连接到USB总线38和计算机系统12时,由主机控制器32检测设备14,由主机控制器32和/或由操作系统24请求设备的枚举,以向主机识别设备,并提供必需的设备特性。枚举包括构成枚举模式的各种步骤。枚举模式包括发往设备14的主机命令,并按照要求从设备14向主机提供数据。例如,在USB枚举过程中,可以向设备分配标识号(因为在USB总线上可以有多个设备),在配置描述符中将设备14的功能(输入、输出等等)通知给操作系统24。设备还向操作系统24通知特定标识信息,如设备描述符中的其“名称”,可以包括供应商标识、产品号码、版本号,以及序列号。还可以提供其他信息;例如,如果设备14将其本身标识为人机接口设备(HID),那么,设备描述应该如何解释数据。可以在各种时间进行枚举,例如,在将设备14连接到计算机系统12时,或在重置设备14或计算机系统12的组件之后。例如,可以由在该主机上运行的BIOS重置主机计算机中的PCI总线,需要设备14的另一个枚举,例如,当设备14是连接到PCI总线的PCI设备时。
在询问新检测到USB设备和接收到枚举之后,主机控制器32可以向操作系统24传递适当的信息,该操作系统24运行操作系统中的设备的适当的驱动程序软件。当USB设备14与计算机系统12断开连接时,主机将检测到设备不存在,操作系统将会卸载驱动程序软件。
在某些实施例中,可以使用复合的USB设备14,其中,多个USB设备在它们的控制逻辑中组合起来,并向USB主机控制器表现为单一设备。组合的设备可以提供多个USB设备的单一枚举。例如,组合的键盘和鼠标USB设备可以包括单一SIE 40、数字软件逻辑42,以及虚拟USB引擎46,并从键盘和鼠标设备两者向USB主机控制器提供信号。
由虚拟USB引擎46提供的模拟给管理模块16提供了其他功能。例如,模块16可以处理来自多个USB设备(对计算机系统12来说看起来像一个设备)的数据,和/或可使多个计算机系统12共享USB设备14(如在图2的实施例中)。
本发明的OS检测引擎48连接到虚拟USB引擎46,并可以基于虚拟USB引擎46向主机控制器32和操作系统24传递的枚举信息,检测操作系统24的身份(类型)。由于每一种操作系统都需要设备14的不同枚举,因此,由OS检测引擎48检测枚举中的差别,并据此确定操作系统的身份。下面将参考图3和4比较详细地描述OS检测引擎48检测操作系统24的能力。
在备选实施例中,管理模块16不必包括虚拟设备引擎46。例如,可以在设备14中提供OS检测引擎48,并包括在数字软件逻辑42中,或连接到数字软件逻辑42。在这样的实施例中,数字软件逻辑42可以提供枚举信息,并响应来自主机控制器32的枚举请求,如在标准USB设备中那样,只是逻辑42还可以向OS检测引擎48发送枚举模式。
应该注意,在其他实施例中,除USB之外的其他接口也可以用于本发明中。可以使用需要设备向主机计算机发送指出设备的身份、功能和/或状态的信息的任何接口,该信息随着在主机计算机上运行的操作系统而变化,可以与这里所描述的USB实施例类似地用于本发明中。
图2是显示了与本发明一起使用的实施例70的方框图,包括提供了使用一个或多个设备14的多个计算机系统12的系统。例如,系统70可以是刮刀服务器系统,其中,每一个计算机系统12都是在共同的底盘或外壳中提供的服务器计算机或“刮刀”,该外壳为所有刮刀提供了常见的电源、冷却,及其他组件。
在所描述的实施例中,每一个服务器12都通过USB通信总线连接到每一个USB设备14。设备14包括如上所述的SIE 40和数字软件逻辑42,以及用于实现设备的功能的物理硬件。在其他实施例中,可以连接使用其他通信标准的其他设备类型。
可以使用一个或多个交换机或多路复用器块72来将服务器12连接到USB设备14。例如,如图2所示,每一个服务器12都通过USB总线38连接到多路复用器块72,多路复用器块72的每一个输出端74都连接到USB设备14。多路复用器块72可以根据需要选择服务器输入端以连接到USB设备14。要选择哪一个服务器12连接到特定USB设备14,管理模块16可以使用控制线76来控制多路复用器块72。例如,多路复用器块72可以作为多个多路复用器来实现,每一个多路复用器都从服务器12接收USB总线38,并提供到其关联的USB设备14,块72中的每一个多路复用器都从管理模块16中接收控制线76上的控制信号,以选择连接到关联的USB设备14的服务器12。
管理模块16包括如上文参考图1所描述的虚拟USB引擎46和OS检测引擎48。管理模块16使用适当的连接,例如,网络连接78(如USB over IP协议,或其他合适的协议),连接到可用的USB设备14。管理模块16上的虚拟USB引擎46可以模拟USB设备,通过适当的USB设备14响应来自一台或多台服务器12的适当的信号,以便连接到管理模块16的任何一个服务器12将表现得似乎连接到USB设备14。
当一个服务器12与USB设备14断开连接并且另一个服务器12连接到USB设备时,新连接的服务器12的操作系统24针对新检测到的USB设备14启动枚举过程(而断开连接的服务器12的操作系统可以卸载设备14的驱动程序等等)。然后,管理模块的OS检测引擎48将检测在枚举之后新连接的服务器12的操作系统。管理模块16,还通过使用虚拟USB引擎46,使多个服务器共享对USB设备14的访问,其中,每一个服务器12都认为它具有专用的对USB设备的访问。
图3是显示了本发明的用于基于设备枚举信息识别操作系统的方法的一个实施例100的流程图。方法100可以使用“模糊逻辑”过程来查找最匹配收集的枚举模式的已知枚举模式。例如,可以通过OS检测引擎48来实现方法100。方法100可以通过可以存储在计算机可读取的介质上的程序指令或代码来实现。或者,可以以硬件(逻辑门等等)或以硬件和软件的组合来实现方法100。
该方法从102开始,在步骤104中,收集枚举模式。在上文所描述的实施例中,当OS检测引擎48从虚拟设备引擎46接收由虚拟设备引擎46提供到主机控制器32的枚举模式时,执行此过程。在枚举过程中采取的操作和提供的数据作为模式提供到OS检测引擎48,其中,模式描述了在枚举过程中采取的步骤。
例如,如果计算机系统12的操作系统24是Windows操作系统,那么,对于USB设备,通常执行包括下列步骤的枚举模式,一旦主机已经检测到设备:1)主机发出重置指令,将设备置于默认状态;2)主机请求存储在USB设备中的设备描述符,并从设备中接收设备描述符的开头8个字节;3)主机发出另一个重置指令;4)主机请求并接收设备描述符的所有字节;5)主机从设备中请求并接收配置描述符;以及6)主机请求串描述符,如果指定了的话。
如果操作系统24是Linux操作系统,那么,对于USB设备,在检测到设备之后,通常执行包括下列步骤的枚举模式:1)主机向设备发出重置指令;2)主机从设备中请求并接收设备描述符的16个字节;3)主机请求并接收设备描述符的所有字节;以及4)主机从设备中请求并接收配置描述符。类似地,其他操作系统类型也将具有该操作系统类型特定的USB枚举模式。当为在主机计算机系统上运行的BIOS枚举设备时,第一枚举可以在BIOS之下,而第二枚举可以位于也在主机计算机系统上的BIOS上面运行的另一个操作系统之下(虽然此枚举顺序不必始终发生)。
如此,枚举模式中的元素包括重置设备,获取设备描述符字节,获取配置描述符字节,以及获取串描述符或数量。其他步骤可以包括将设备设置为空闲,获取最大逻辑单元号(由操作系统发送的确定多少大容量存储设备的USB大容量存储命令与特定接口关联)等等。
当设备使用其他通信协议或标准时,使用其他枚举模式步骤。例如,当与SCSI硬盘驱动器进行通信时,枚举模式步骤可以包括传递SCSI命令,如测试单元准备好、查询、读取和写入命令、读取(驱动器的)容量,以及读取(驱动器的)格式容量。其他命令和其他类型的设备一起使用,如智能驱动器电子(IDE)接口设备、Firewire设备等等,这些设备可以类似地向OS检测引擎48提供枚举模式。
在步骤106中,选择收集的枚举模式的第一枚举步骤。在步骤108中,将选择的步骤与已知枚举模式的相同步骤进行比较。例如,第一枚举步骤可以与和Windows操作系统一起使用的枚举模式的第一步骤(这是如上文所描述的“复位设备”步骤)进行比较。如果已经选择了收集的枚举的第三步骤,则它可以与Windows枚举模式的第三步骤进行比较(上文所描述的示例中的另一个“复位设备”步骤)。
在步骤110中,检查在选择的枚举步骤和已知枚举模式的相同步骤之间是否有匹配。如果没有匹配,那么,继续执行步骤112,在该步骤中,选择收集的模式的下一枚举步骤,返回到步骤108,以将选择的步骤与已知枚举模式的相同步骤进行比较。
如果在步骤110中有匹配,那么,继续执行步骤114,在该步骤中,向已知枚举的相关值加1。相关值是与当前在过程100中比较的已知枚举类型关联的值;给每一个已知枚举类型提供了关联的相关值,该相关值指出了它匹配收集的枚举模式的程度。
在步骤116中,检查在收集的枚举模式中是否有另一个步骤要进行比较。如果有,那么,继续执行步骤112,在该步骤中,选择下一枚举步骤,然后,返回到步骤108,以将选择的步骤与已知枚举模式的相同步骤进行比较。如果在步骤116判断在收集的枚举模式中没有其他步骤要进行比较,那么,继续执行步骤118,在该步骤中,检查是否有另一个操作系统类型的另一个已知枚举模式要与收集的模式比较。例如,如果已经比较了Windows已知枚举模式,那么,要比较的另一个已知枚举模式可以是Linux枚举模式。如果有另一个已知枚举要比较,那么,继续执行步骤120,在该步骤中,选择下一已知枚举模式,然后,返回到步骤106,以与如上文所描述的方式类似地选择收集的模式的第一枚举步骤(只是步骤108的比较是与新选择的已知枚举模式进行的)。
如果在步骤118中的检查中没有更多的已知枚举模式要比较,那么,继续执行步骤122,在该步骤中,向具有最大的相关值的已知枚举分配当前(收集的)枚举模式。基于当前模式和已知模式之间的匹配枚举步骤的最大的数量,为已知枚举模式累积最大的相关值。如此,将与具有最大的相关值的已知模式关联的操作系统类型选择为主机计算机系统12的识别的操作系统24。然后,在124中完成该过程。
应该注意,可以在其他实施例中使用其他方法,以确定最高的相关值,或以别的方式确定哪一个已知枚举模式最紧密地对应于收集的模式。例如,可以向相关值中增加或从其中减去1之外的不同的值。
在某些实施例中,还可以使用阈值相关值要求,以便进行操作系统识别。例如,最大的相关值必须比次最大的相关值至少大一个阈值量,才能保证识别操作系统类型。如果不满足阈值,那么,该方法可能会提供“未知操作系统”结果。
在某些实施例中,还可以通过方法100识别涉及操作系统身份的其他类别。例如,如果由不同版本使用的枚举模式不同,则可以检测操作系统的不同版本或更新。如此,例如,如果Windows操作系统的服务包安装更改了由操作系统使用的枚举模式,则可以给上述方法100提供具有服务包的Windows版本以及没有服务包的版本的已知枚举模式,并可以将收集的模式与每一个已知模式进行比较。类似地,对于Linux的一个内核版本,可以提供已知枚举模式,并与收集的模式进行比较,对于Linux的不同的内核版本,提供一个,也进行这种提供和比较。
图4是显示了本发明的用于基于设备枚举信息识别操作系统的方法的另一个实施例150的流程图。在此实施例中,使用以软件(和/或硬件)实现的人工神经网络来基于神经网络以前接收到的训练将当前枚举与已知枚举模式关联。例如,可以在OS检测引擎48中提供神经网络。
该方法从152开始,并在步骤154中,用已知枚举模式训练神经网络。将需要识别的各种类型操作系统的枚举模式作为示例提供给神经网络,以便神经网络可以得知哪些模式要比较并根据类别对各种模式步骤进行加权。这样的训练已为那些精通神经网络的技术的人员所熟知。
在步骤156中,如上文所描述的,从设备的当前枚举将枚举模式收集到主机计算机,并将收集的模式提供到神经网络。在步骤158中,神经网络查找与收集的枚举模式最近的已知枚举模式。例如,神经网络可以使用基于数字的模式识别,如那些精通本技术的人所知道的,来确定与收集的枚举模式最近的已知枚举模式。
在步骤160中,接收神经网络的输出,作为与在步骤158中查找到的最近的已知枚举模式关联的识别的操作系统类型。然后,在160中完成该过程。或者,神经网络可以提供最近的已知枚举模式,然后,将其与操作系统类型和/或版本关联。
虽然是根据所显示的实施例描述本发明的,但是,那些本领域普通技术人员将轻松地认识到,可以对实施例进行修改,这些修改将在本发明的精神和范围内。相应地,在不偏离所附的权利要求的精神和范围的情况下,可以作出许多修改。

Claims (13)

1.一种用于识别在计算机上运行的操作系统的方法,所述方法包括:
收集枚举模式,所述枚举模式描述已经在设备和在主机计算机系统上运行的所述操作系统之间执行的所述设备的枚举;以及
基于收集的枚举模式和与不同类型的操作系统关联的已知枚举模式之间进行的比较,识别在所述主机计算机系统上运行的操作系统的类型。
2.根据权利要求1所述的方法,所述收集的枚举模式和已知枚举模式之间进行的比较包括:比较收集的枚举模式的多个步骤和已知枚举模式中的相应的步骤,以便选择与所述收集的枚举模式具有最高步骤相关性的已知枚举模式,以识别在所述主机计算机系统上运行的操作系统的类型。
3.根据权利要求1所述的方法,识别在所述主机计算机系统上运行的操作系统的类型的步骤包括:向已经用与不同类型的操作系统关联的已知枚举模式训练的神经网络输入收集的枚举模式。
4.根据权利要求1所述的方法,其中,所述枚举包括主机计算机系统从所述设备请求和接收枚举信息并向所述设备提供命令。
5.根据权利要求1所述的方法,所述收集的枚举模式是从虚拟设备引擎收集的,所述虚拟设备引擎向至少一台主机计算机系统模拟所述设备的操作。
6.根据权利要求1所述的方法,其中,所述设备使用包括USB、SCSI以及IDE的标准协议中的任何一个与主机计算机进行通信。
7.根据权利要求1所述的方法,其中,识别所述操作系统的类型的步骤包括识别所述操作系统的版本。
8.一种用于识别在计算机上运行的操作系统的设备,所述设备包括:
设备接口,用于为主机计算机系统上运行的操作系统执行所述设备的枚举,所述主机计算机系统与所述设备进行通信;以及
与所述设备接口进行通信的操作系统检测引擎,用于从所述设备接口接收描述所述枚举的枚举模式,
其中,所述操作系统检测引擎用于基于接收到的枚举信息和与不同类型的操作系统关联的已知枚举模式之间进行的比较,识别在所述主机计算机系统上运行的操作系统的类型。
9.根据权利要求8所述的设备,所述操作系统检测引擎比较接收的枚举模式的多个步骤与已知枚举模式中的相应的步骤,以便选择与所述接收的枚举模式具有最高步骤相关性的已知枚举模式,以识别在所述主机计算机系统上运行的操作系统的类型。
10.根据权利要求8所述的设备,其中,所述设备接口包括虚拟设备引擎,所述虚拟设备引擎耦接到所述操作系统检测引擎,并用于向主机计算机系统模拟所述设备,并向所述操作系统检测引擎提供所述枚举信息。
11.根据权利要求10所述的设备,其中,所述虚拟设备引擎用于从连接到所述设备接口的至少一个其他主机计算机系统接收信息。
12.根据权利要求11所述的设备,其中,所述操作系统检测引擎和虚拟设备引擎在管理模块中提供,所述管理模块用于从多个主机计算机系统中接收信息并连接到多个设备。
13.根据权利要求8所述的设备,其中,所述设备是USB设备,并且所述设备接口包括串行接口引擎和数字软件逻辑,其中,所述串行接口引擎耦接到所述主机计算机系统的USB主机控制器。
CNB2007101023104A 2006-05-23 2007-04-27 用于识别在计算机系统上运行的操作系统的方法和设备 Active CN100504772C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/419,988 US7574534B2 (en) 2006-05-23 2006-05-23 Method for using device enumeration information to identify an operating system running on a computer system
US11/419,988 2006-05-23

Publications (2)

Publication Number Publication Date
CN101078985A CN101078985A (zh) 2007-11-28
CN100504772C true CN100504772C (zh) 2009-06-24

Family

ID=38878156

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007101023104A Active CN100504772C (zh) 2006-05-23 2007-04-27 用于识别在计算机系统上运行的操作系统的方法和设备

Country Status (2)

Country Link
US (1) US7574534B2 (zh)
CN (1) CN100504772C (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8244824B2 (en) * 2006-09-06 2012-08-14 Stereotaxis, Inc. Coordinated control for multiple computer-controlled medical systems
US20080147909A1 (en) * 2006-12-18 2008-06-19 Winters Zhang Remote USB protocol for a heterogeneous system
WO2008128014A1 (en) * 2007-04-12 2008-10-23 Dow Global Technologies Inc. Process and apparatus for vapor phase purification during hydrochlorination of multi-hydroxylated aliphatic hydrocarbon compounds
US20090006702A1 (en) * 2007-06-26 2009-01-01 Nitin Sarangdhar Sharing universal serial bus isochronous bandwidth between multiple virtual machines
EP2131287A1 (fr) * 2008-06-02 2009-12-09 Gemalto SA Dispositif électronique de mise à disposition de services autoadaptatifs en fonction de la plateforme de l'équipement hôte avec lequel il est en liaison
US8713209B2 (en) * 2009-01-13 2014-04-29 Qualcomm Incorporated System, apparatus, and method for fast startup of USB devices
TWI386809B (zh) * 2009-03-20 2013-02-21 Aten Int Co Ltd 記憶體整合裝置及方法
US20110161428A1 (en) * 2009-12-28 2011-06-30 Ezpnp Technologies Corp. Two-way data and resources sharing method
CN102043751B (zh) * 2010-06-29 2012-12-12 飞天诚信科技股份有限公司 Usb设备识别主机操作系统的方法
US8661164B2 (en) 2010-08-24 2014-02-25 Mediatek Inc. Method of USB device enumeration including detecting the operating system type of the USB host
CN101916238B (zh) * 2010-08-26 2012-01-25 华为终端有限公司 数据卡识别操作系统的方法、装置及通信系统
CN101957807B (zh) * 2010-09-16 2012-08-08 飞天诚信科技股份有限公司 USB设备识别主机Windows操作系统版本类型的方法
CN102012743A (zh) * 2010-12-16 2011-04-13 成都西麦克虚拟现实电子技术有限公司 可组态通用模拟器输入输出系统
CN102088797A (zh) * 2011-01-30 2011-06-08 中兴通讯股份有限公司 一种无线通讯方法、系统及无线通讯终端
CN102736861B (zh) * 2011-04-08 2016-01-20 群联电子股份有限公司 存储器配置方法、存储器控制器及存储器储存装置
CN102736982B (zh) * 2011-04-08 2015-04-22 群联电子股份有限公司 内存组态方法、内存控制器与内存储存装置
CN102253904A (zh) * 2011-06-08 2011-11-23 广州视睿电子科技有限公司 一种usb设备识别计算机操作系统的方法及装置
US20140129681A1 (en) * 2011-06-10 2014-05-08 Dmitry Alekseevich Gorilovsky Method of installing a driver to emulate a network card
US8473666B2 (en) * 2011-06-27 2013-06-25 Schneider Electric It Corporation Systems and methods for driverless operation of USB device
CN102375786B (zh) * 2011-10-18 2014-09-10 中兴通讯股份有限公司 Usb设备自动识别操作系统的方法及系统
EP2602722B1 (en) 2011-12-07 2020-04-08 VIA Technologies, Inc. USB charging module
EP2602721B1 (en) * 2011-12-07 2017-07-12 VIA Technologies, Inc. USB charging module
KR101956574B1 (ko) * 2012-02-24 2019-03-11 삼성전자주식회사 휴대용 단말기에서 호스트 디바이스의 운영 체제를 확인하기 위한 장치 및 방법
KR20130107618A (ko) * 2012-03-22 2013-10-02 한국전자통신연구원 Usb 디바이스 장치의 데이터를 클라이언트 단말을 통해 서버로 전송하는 데이터 처리 방법 및 클라이언트 단말
CN103092799B (zh) * 2012-12-28 2015-07-22 飞天诚信科技股份有限公司 一种usb设备及其识别主机操作系统的方法
EP2997484B1 (en) 2013-05-16 2021-10-27 Intel Corporation Apparatus, system and method of protocol adaptation layer (pal) communication to indicate transitioning a device to a default state
CN105760325A (zh) * 2014-12-16 2016-07-13 鸿富锦精密工业(武汉)有限公司 支持usb存储设备在dos系统下热插拔的系统及方法
CN105786729B (zh) * 2016-02-19 2018-11-09 深圳市文鼎创数据科技有限公司 命令处理方法及装置
CN107833176A (zh) * 2017-10-30 2018-03-23 上海寒武纪信息科技有限公司 一种信息处理方法及相关产品
CN108845837B (zh) * 2018-07-09 2021-05-28 武汉斗鱼网络科技有限公司 一种检测windows系统运行模式的方法及电子设备
CN112612423A (zh) * 2020-12-29 2021-04-06 芯启源电子科技有限公司 一种usb共享存储装置
US11789743B2 (en) * 2021-01-15 2023-10-17 Tenable, Inc. Host operating system identification using transport layer probe metadata and machine learning
CN113975816B (zh) * 2021-12-24 2022-11-25 北京蔚领时代科技有限公司 一种基于hook的通过DirectX接口使用显卡的显卡分配方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6389495B1 (en) * 1999-01-16 2002-05-14 Cypress Semiconductor Corp. Dedicated circuit and method for enumerating and operating a peripheral device on a universal serial bus
CN1437726A (zh) * 2000-03-02 2003-08-20 凤凰技术有限公司 在计算机运行中交换设备的装置与方法
CN1492632A (zh) * 2002-10-23 2004-04-28 联想(北京)有限公司 基于数字家庭网络的多媒体系统
US6816897B2 (en) * 2001-04-30 2004-11-09 Opsware, Inc. Console mapping tool for automated deployment and management of network devices
US6963986B1 (en) * 2002-06-21 2005-11-08 Cypress Semiconductor Corp. Device enumeration current reduction

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7100160B2 (en) * 2001-10-19 2006-08-29 Hewlett-Packard Development Company, L.P. Method and system for implementing host-dependent SCSI behavior in a heterogeneous host environment
TWI220492B (en) * 2002-08-09 2004-08-21 Ortek Technology Inc Command input method of small keypad
US7664909B2 (en) * 2003-04-18 2010-02-16 Nextio, Inc. Method and apparatus for a shared I/O serial ATA controller
US20060242401A1 (en) * 2005-04-22 2006-10-26 Digi International Inc. Recognition of devices connected to a console server
US7644219B2 (en) * 2005-06-30 2010-01-05 Dell Products L.P. System and method for managing the sharing of PCI devices across multiple host operating systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6389495B1 (en) * 1999-01-16 2002-05-14 Cypress Semiconductor Corp. Dedicated circuit and method for enumerating and operating a peripheral device on a universal serial bus
CN1437726A (zh) * 2000-03-02 2003-08-20 凤凰技术有限公司 在计算机运行中交换设备的装置与方法
US6816897B2 (en) * 2001-04-30 2004-11-09 Opsware, Inc. Console mapping tool for automated deployment and management of network devices
US6963986B1 (en) * 2002-06-21 2005-11-08 Cypress Semiconductor Corp. Device enumeration current reduction
CN1492632A (zh) * 2002-10-23 2004-04-28 联想(北京)有限公司 基于数字家庭网络的多媒体系统

Also Published As

Publication number Publication date
US7574534B2 (en) 2009-08-11
CN101078985A (zh) 2007-11-28
US20080005370A1 (en) 2008-01-03

Similar Documents

Publication Publication Date Title
CN100504772C (zh) 用于识别在计算机系统上运行的操作系统的方法和设备
US8380883B2 (en) Resource sharing expansion card
CN100489823C (zh) 用于禁用通用串行总线端口的方法和设备
US7657688B2 (en) Dynamically allocating lanes to a plurality of PCI express connectors
US7660937B2 (en) Emulating a USB host controller
US7711886B2 (en) Dynamically allocating communication lanes for a plurality of input/output (‘I/O’) adapter sockets in a point-to-point, serial I/O expansion subsystem of a computing system
CN100380353C (zh) 在计算节点的热插拔期间枚举处理器的装置和方法
US7047348B2 (en) Method and architecture for accessing hardware devices in computer system and chipset thereof
US8103993B2 (en) Structure for dynamically allocating lanes to a plurality of PCI express connectors
US20070174033A1 (en) Remote control device and method for accessing peripheral device remotely
US7490176B2 (en) Serial attached SCSI backplane and detection system thereof
CN101663655A (zh) 合成固态驱动器标识和优化技术
US20080270780A1 (en) Design structure for disabling a universal serial bus port
US8521950B2 (en) Booting an operating system from a virtual hard disk
US20100064079A1 (en) USB Devices Pre-Configuration For KVM Switch
US9075797B2 (en) Restore PCIe transaction ID on the fly
US6973526B2 (en) Method and apparatus to permit external access to internal configuration registers
US11467780B1 (en) System and method for automatic identification and bios configuration of drives in a backplane
JP2002032324A (ja) Pciバスデバイス接続制御方式
US11093431B2 (en) Automated device discovery system
US20040044817A1 (en) Method and apparatus for detecting a device's ability to run at a selected frequency in a PCI non-inhibit bus-connect mode
CN100465935C (zh) 用于为总线代理设置参考电压的方法和设备
US11665474B1 (en) Audible device/port beacon system
US20030055846A1 (en) Method and system for providing field replaceable units in a personal computer
US20030188080A1 (en) Apparatus, method and system for remote registered peripheral component interconnect bus

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20170712

Address after: Hongkong, China

Patentee after: Lenovo International Ltd

Address before: American New York

Patentee before: International Business Machines Corp.

TR01 Transfer of patent right