具体实施方式
以下描述用来提供对本发明的实例的详细说明,而不应当用来限制本发明。相反,本发明任何数量的改变都可能落入紧随说明书的权利要求所限定的本发明的范围之内。
图1是显示可以在两个计算机***之间互换的操作***模块的方框图。计算机***110包括:BIOS 115,在加载操作***之前,用于执行计算机***110的基本输入/输出;非易失性存储器120,存储安装到计算机***上的应用程序、用户的设置等;和存储器125,用作计算机***操作期间的临时存储器。这里所涉及的BIOS还可以包括上电自检(POST)。计算机***110还包括附加设备130(比如打印机),该附加设备130包括设备的设备驱动器135。设备驱动器135被安装到计算机***110上,以便于计算机***110与附加设置130之间的通信。当附加设备130连接到计算机***110时,附加装置130可以向计算机***110提供设备驱动器135,所以,用户不需要从不同源获得用于附加设备130的设备驱动器。
计算机***110还包括可拆卸操作***模块接口137,它可以接受诸如可拆卸操作***模块180的可拆卸操作***模块。可拆卸操作***模块180包括非易失性存储器185和操作***运行映像190。当把可拆卸操作***模块180***可拆卸操作***模块接口137时,BIOS 115检测可拆卸操作***模块180,并把操作***运行映像从可拆卸操作***模块180加载到存储器单元125。BIOS 115随后启动计算机***110的操作***的运行。被加载的操作***操作和控制计算机***110,并在非易失性存储器120、存储器单元125、BIOS 115与附加设备140之间提供一个接口。
同样,计算机***140包括:BIOS 145,用于在加载操作***之前执行计算机***140的基本输入/输出;非易失性存储器160,存储安装到计算机***上的应用程序、用户的设置等;和存储器165,用作计算机***操作期间的临时存储器。计算机***110还包括附加设备170(比如打印机),该附加设备170包括设备的设备驱动器175。设备驱动器175被安装到计算机***140上,以便于计算机***140与附加设置170之间的通信。当附加设备170连接到计算机***140时,附加装置170可以向计算机***140提供设备驱动器175,所以,用户不需要从不同源获得用于附加设备170的设备驱动器。计算机***140还包括可拆卸操作***模块接口177,它可以接受诸如可拆卸操作***模块180之类的可拆卸操作***模块。
可拆卸操作***模块180可以从计算机***110中拆除,并随之将其***计算机***140,利用该模块上的操作***能够运行并控制整个计算机***。一旦把可拆卸操作***模块180***可拆卸操作***模块接口177,BIOS145就检测可拆卸操作***模块180并把操作***运行映像从可拆卸操作***模块180加载到存储单元165。BIOS 115随后以计算机***110的非常相似的方式启动计算机***140上的操作***的执行。被加载的操作***现在可以操作和控制计算机***140,并提供非易失性存储器160、存储器165、BIOS 145与附加设备170之间的接口。
图2是显示适于接受模块的计算机***的方框图,其中所述模块包含存储操作***的和运行映像的CPU和非易失性存储器。操作***的运行映像是包含已启动并且正在运行的操作***的存储器瞬像,所述正在运行的操作***包括正在执行的操作***作业。
计算机***201包括设于可拆卸模块290上的CPU 294。可拆卸模块290还包括非易失性RAM 292,可以拆卸该模块290并将其重新***计算机***201。可拆卸模块290连接主机总线202,主机总线202将可拆卸模块290连接到计算机***201。非易失性存储器292包含操作***运行映像294,当可拆卸模块290***计算机***201时被加载并开始执行,以操作和控制计算机***201。
二级(level two)(L2)高速缓冲存储器204也连接主机总线202。主机-PCI桥206连接主存储器208,主机-PCI桥206包括高速缓冲存储器和主存储器控制功能并提供总线控制,以处理PCI总线210、处理器200、L2高速缓冲存储器204、主存储器208和主机总线202之间的传输。主存储器208连接主机-PCI桥206以及主机总线202。仅由CPU 294使用的设备(比如LAN卡230)连接到PCI总线210。业务处理器接口和ISA接入通道212提供PCI总线210与PCI总线214之间的接口。如此,将PCI总线214与PCI总线210隔离。诸如闪存218之类的装置连接到PCI总线214。在一个实施例中,闪存218包含BIOS码,该BIOS码合并用于各种低级***功能和***引导功能的必要处理器可执行码。
PCI总线214提供用于各种设备的接口,所述设备被CPU 294和包含例如闪存218的业务处理器216共用。PCI-ISA桥235提供总线控制,以处理PCI总线214与ISA总线240之间的传输、通用串行总线(USB)功能性245、功率管理功能性255,并且PCI-ISA桥235可以包括未显示的其它功能组件,比如实时时钟(RTC)、DMA控制、中断支持和***管理总线支持。非易失性RAM 220连接到ISA总线240。业务处理器216包括JTAG和I2C总线222,用于在启动步骤期间与CPU 294通信。JTAG/I2C总线222还连接到L2高速缓冲存储器204、主机-PCI桥206和主存储器208,提供处理器、业务处理器、L2高速缓冲存储器、主机-PCI桥和主存储器之间的通信路径。业务处理器216还访问降低信息处理装置201功率的***功率资源。
***设备和输入/输出(I/O)设备可以连接各种接口(例如,连接到ISA总线240的并行接口262、串行接口264、键盘接口268和鼠标接口270)。作为选择,附属于ISA总线240的超I/O控制器(未示出)可以接纳许多I/O设备。
为了把计算机***201附属到另一个计算机***以在网络上拷贝文件,LAN卡230被连接到PCI总线210。同样,为了利用电话线连接把计算机***201连接到ISP并由此连接到互联网,调制解调器275连接串行端口264和PCI-ISA桥235。
图3是显示适于接受包含非易失性存储器的模块的计算机***的方框图,其中所述存储器存储操作***的运行映像。计算机***301包括连接主机总线302的处理器300。包括非易失性RAM 392的可拆卸模块390可以移出和重新***计算机***301。可拆卸模块390连接主机总线302,主机总线302将可拆卸模块390连接到计算机***301。非易失性存储器392包含操作***运行映像394,当可拆卸模块390***计算机***301时被加载并开始执行,以操作和控制计算机***301。
二级(level two)(L2)高速缓冲存储器304也连接主机总线302。主机-PCI桥306连接主存储器308,主机-PCI桥306包括高速缓冲存储器和主存储器控制功能并提供总线控制,以处理PCI总线310、处理器300、L2高速缓冲存储器304、主存储器308和主机总线302之间的传输。主存储器308连接主机-PCI桥306以及主机总线302。仅由主机处理器300使用的设备(比如LAN卡330)连接到PCI总线310。业务处理器接口和ISA接入通道312提供PCI总线310与PCI总线314之间的接口。如此,将PCI总线314与PCI总线310隔离。诸如闪存318的装置连接到PCI总线314。在一个实施例中,闪存318包含BIOS码,该BIOS码合并用于各种低级***功能和***引导功能的必要处理器可执行码。
PCI总线314提供用于各种设备的接口,所述设备被主机处理器300和包含例如闪存318的业务处理器316共用。PCI-ISA桥335提供总线控制,以处理PCI总线314与ISA总线340之间的传输、通用串行总线(USB)功能性345、功率管理功能性355,并且PCI-ISA桥335可以包括未显示的其它功能组件,比如实时时钟(RTC)、DMA控制、中断支持和***管理总线支持。非易失性RAM 320连接到ISA总线340。业务处理器316包括JTAG和I2C总线322,用于在启动步骤期间与处理器300通信。JTAG/I2C总线322还连接到L2高速缓冲存储器304、主机-PCI桥306和主存储器308,提供处理器、业务处理器、L2高速缓冲存储器、主机-PCI桥和主存储器之间的通信路径。业务处理器316还访问降低信息处理装置301功率的***功率资源。
***设备和输入/输出(I/O)设备可以连接各种接口(例如,连接到ISA总线340的并行接口362、串行接口364、键盘接口368和鼠标接口370)。作为选择,附属到ISA总线340的超I/O控制器(未示出)可以提供许多I/O设备。
为了把计算机***301附属到另一个计算机***以在网络上拷贝文件,LAN卡330被连接到PCI总线310。同样,为了利用电话线连接把计算机***301连接到ISP并由此连接到互联网,调制解调器375连接串行端口364和PCI-ISA桥335。
图4是显示操作***模块***和不***计算机***时,该计算机***的状态的方框图。计算机***410包括:BIOS 428,在操作***运行之前执行基本输入/输出功能;CPU 430,处理用于运行和控制计算机***410的指令;非易失性存储器434,存储已安装的应用、用户设置等;RAM 412,在计算机***410进行操作的同时进行临时存储。
此外,计算机***410包括能够接受可拆卸操作***模块424的可拆卸操作***模块接口425。可拆卸操作***模块424包括非易失性存储器中的操作***运行映像426。
当把可拆卸操作***模块424***可拆卸操作***模块接口425时,BIOS 428将操作***运行映像426从可拆卸操作***模块424的非易失性存储器加载到RAM 412(操作***RAM 414)并启动操作***的执行。
接着,操作***从非易失性存储器434加载连接到计算机***410的任何外部设备所需的装置驱动器(设备驱动器RAM 416),输入/输出配置(I/O配置RAM 418)和任何所需的应用(应用RAM 420)。
当从计算机***410移出可拆卸操作***模块424时,就倒转加载处理。在可拆卸操作***模块424上更新操作***的当前状态,在非易失性存储器434上更新应用信息、I/O配置和设备驱动器。一旦可拆卸操作***模块移去,就可以将其***另一个兼容计算机***中,使该模块的操作***可以控制和操作其它计算机***。
图5是显示可拆卸操作***模块***和移出计算机***的处理流程图。处理开始于步骤500,在步骤510,用户把可拆卸操作***模块***适于接受该模块的计算机***。可拆卸操作***模块包含操作***的运行映像,该运行映像被存储在模块的非易失性存储器上。在步骤515,计算机***的BIOS检测***时的可拆卸操作***模块,并将操作***从模块的非易失性存储器加载到计算机***的RAM。在操作***结束加载之后,BIOS启动操作***的执行,然后将控制传送到操作***。图6的流程图提供了在步骤515发生的处理的进一步细节。
在步骤520,操作***发现连接该计算机的本地设备。在可拆卸操作***模块从该计算机***移动到目前发现的设备之前,操作***比较包含该设备的列表,从而更新设备的列表。图7的流程图提供发生在步骤520上的处理的进一步细节。
在步骤525,操作***发现可由计算机***访问或者可由正在使用不同计算机***的用户访问的任何远程设备。图8的流程图提供了发生在步骤525上的处理的进一步细节。图9的流程图提供了发生在步骤530上的处理的进一步细节。
在步骤530,在从计算机***最后移出可拆卸操作***模块之前,操作***启动休眠或者暂停的应用程序。
在步骤535,操作***管理计算机***。操作***执行用户请求或者运行的应用请求的作业。图10的流程图提供了发生在步骤535上的处理的进一步细节。
然后在判决步骤540,确定用户是否已经请求移出可拆卸操作***模块。如果用户还没有请求移出可拆卸操作***模块,则判决步骤540转移到“否”分支550,并返回到步骤535,操作***在此步骤中继续执行任何所请求的作业。
如果用户已经请求移出可拆卸操作***模块,则判决步骤540转移到“是”分支545,并在步骤555继续进行处理,在此将操作***的状态保存在可拆卸操作***模块上。图11的流程图提供了发生在步骤555上的处理的进一步细节。
在步骤560,当移出可拆卸操作***模块的所有准备已经被执行之后,将“移出模块是安全的”通知给用户,并且在步骤565,用户移出可拆卸操作***模块。处理在步骤599结束。
图6是显示BIOS检测可拆卸操作***模块、加载操作***以及把控制传送到操作***的处理流程图。处理开始于步骤600,在步骤610,BISO检测已***的可拆卸操作***模块。可拆卸操作***模块例如可以包括即插即用型功能,以便向计算机***提供该模块的初始信息。
在步骤615,BIOS将操作***的运行映像从可拆卸操作***模块加载到计算机***的RAM。在加载操作***过程中,BIOS可以把操作***的运行映像直接拷贝到RAM中,或者BIOS可以将模块的存储器地址映射到RAM地址以运行来自模块的操作***,或者BIOS将操作***的映像从模块的休眠保存状态恢复到RAM,或者是以上的组合。为了在可拆卸操作***模块与计算机***的RAM上的存储器地址之间建立映射,可以例如通过以下方式分配基本地址:在***模块时进行预定的自动分配,或者在RAM中保存用于操作***的基本地址,或者利用硬件插脚检测和再定位。
在步骤620,BIOS提示用户是否通过有效地重新启动***或者重新启动模块,来恢复操作***的执行或者重新启动操作***。在步骤625,接收用户输入。
然后在判决步骤630,确定用户是否已经选择重新启动操作***。如果用户已经选择重新启动***,则判决步骤630转移到“是”分支635,在步骤655,从模块获得用于操作***的重新启动入口点。在模块的初始建立期间,或者当操作***的状态在模块从计算机***移出之前被保存在该模块中时,将操作***重新启动入口点保存在该模块上。重新启动入口点代表重新启动处理的点,而不考虑在可拆卸操作***模块最后移出之前,操作***的在前状态。在步骤660,操作***开始在重新启动入口点运行。然后处理于步骤699结束。
如果用户没有选择重新启动***,而是选择恢复操作***,则判决步骤630转移到“否”分支640,在步骤645,从模块中获得操作***的恢复入口点。在模块从计算机***中最后移出之前,操作***恢复点被保存在模块上。恢复入口点代表当操作***状态被保存在可拆卸操作***模块前恰好停止的一个点。在步骤650,操作***从恢复入口点开始运行。然后处理结束于步骤699。
图7是显示发现连接计算机***的本地设备的处理流程图。处理开始于步骤700,在判决步骤710中确定本地设备驱动器配置文件是否存在于本地计算机***的非易失性存储器上。如果设备驱动器配置文件不存在,则判决步骤710转移到“否”分支714,在步骤736建立本地驱动器配置文件。然后在判决步骤738继续进行处理。设备驱动器配置文件包含本地设备的列表,在计算机***最后一次被休眠、暂停或者关闭之前,该本地设备被连接到计算机***。该列表不一定反映设备的当前存在,因为自计算机***最后一次操作以后可以增加新设备并且可以断开旧设备。
如果设备驱动器配置文件存在,则判决步骤710转移到“是”分支712,从本地计算机***加载设备驱动器配置文件。在步骤718,从配置文件选择第一设备,并在判决步骤720确定所选择的设备当前是否被连接到计算机***。如果该设备不可用,则判决步骤720转移到“否”分支722,由此在步骤726将所选择的设备从设备驱动器配置文件中删除。然后在判决步骤728继续处理。如果所选择的设备可用,则判决步骤720转移到“是”分支724,以跳过删除步骤。
在判决步骤728,确定更多的设备驱动器是否存在于需要检查的设备驱动器配置文件的列表中。如果更多个设备驱动器存在,则判决步骤728转移到“是”分支732,由此在步骤734选择下一个设备驱动器,于是处理返回到判决步骤720。如果设备驱动器配置文件中没有更多的设备驱动器,则判决步骤728转移到“否”分支730,在判决步骤738继续进行处理。
在判决步骤738,确定自计算机***最后一次加电以来是否有任何新设备连接到该计算机***。如果没有出现新设备,则判决步骤738转移到“否”分支740,不再更新设备驱动器配置文件,于是处理结束于步骤799。如果存在新设备,则判决步骤738转移到“是”分支742,在步骤746选择已发现的第一新设备。在步骤746,确定和加载与新近发现的设备对应的设备驱动器。所以更新操作***的任何注册。此外,更新本地设备驱动器配置文件,使其包括新近发现的设备。
然后在判决步骤748确定更多新设备是否存在注册的需要。如果没有更多新设备存在,则判决步骤748转移到“否”分支750,于是处理结束于步骤799。如果更多新设备存在,则判决步骤748转移到“是”分支752,于是在步骤754选择下一个新设备,然后处理返回到步骤746,以便安装新设备和更新适当的文件。
图8是显示发现可由计算机***访问的远程设备的处理流程图。处理开始于步骤800。在判决步骤810确定远程设备驱动器配置文件是否存在于本地计算机***上。如果远程设备驱动器配置文件未存在于计算机***上,则判决步骤810转移到“否”分支814,于是在判决步骤818继续进行处理。
如果远程驱动器配置文件存在于计算机***上,则判决步骤810转移到“是”分支812,于是加载远程设备驱动器配置文件,以获得在计算机最后一次开机时,该计算机***连接的远程设备的列表。
在判决步骤818,确定远程设备配置文件是否存在于可拆卸操作***模块上。分离的远程设备驱动器配置文件可以保持在模块上,以用于由模块用户选用的远程设备。如果远程设备驱动器配置文件不存在,则判决步骤818转移到“否”分支820,于是在步骤826继续进行处理。如果远程设备驱动器配置文件存在,则判决步骤818转移到“是”分支822,在步骤824从模块加载远程设备驱动器配置文件。然后,处理前进到步骤826。
在步骤826,选择第一远程设备驱动器,在步骤828,连接远程设备驱动器注册服务器,以确定远程设备是否仍然可用。然后在判决步骤830确定设备是否可用。如果设备仍然不可用,则判决步骤830转移到“否”分支834,在判决步骤838继续进行处理。
如果设备仍然可用,则判决步骤830转移到“是”分支832,于是在步骤836接触远程设备驱动器注册服务器,以接收安装该设备的必要信息。图31的流程图提供了发生在步骤836上的处理的进一步细节。
然后在判决步骤838确定更多的设备是否存在检查的需要。如果更多设备不存在需要的检查,则判决步骤838转移到“否”分支840,于是处理结束于步骤899。如果更多设备存在需要的检查,则判决步骤838转移到“是”分支842,于是在步骤844选择新设备驱动器,然后返回到步骤828以检查所选择的驱动器。
图9是显示启动在计算机***上执行的应用程序的处理流程图。在可拆卸操作***模块从计算机***最后一次移出时,存在正在计算机***上执行并被休眠或者暂停的应用。处理开始于步骤900,在步骤910,操作***从可拆卸操作***模块中加载应用状态数据文件。应用状态数据文件包括诸如用户正在工作的文件的信息、编辑正在发生的文件的位置的信息等。
然后在判决步骤912确定更多应用是否存在恢复的需要。如果不存在需要恢复的应用,则判决步骤912转移到“否”分支916,于是处理结束于步骤912。如果需要恢复的应用存在,则判决步骤912转移到“是”分支914,于是在步骤918选择第一个这样的应用。
然后在判决步骤920确定所选择的应用是否可用于当前计算机***。操作***模块的用户可以执行在前计算机***不可用或者当前计算机***未安装的应用程序。如果应用程序不可用于当前计算机***,则判决步骤920转移到“否”分支924,将应用的状态信息保持在应用状态数据文件上。保持该信息是为了在未来的计算机***上能够自动恢复相应的应用程序。然后在判决步骤928继续进行处理。
如果应用程序可用于当前的计算机***,则判决步骤920转移到“是”分支922,开始该应用的运行。在步骤934,操作***保存运行应用程序的适当存储量,并且在步骤936,运行相应的可执行的应用程序。在步骤938,操作***使用来自应用状态数据文件的数据,将应用恢复到模块的用户在前遗留的状态。例如,如果应用程序是Microsoft Word,则运行用户最后编辑的文件,编辑位置设置到最后编辑位置,工具栏配置设置到最后的工具栏配置等。然后在判决步骤928继续进行处理。
在判决步骤928,确定更多的应用程序是否需要恢复。如果没有更多的需要恢复的应用程序,则判决步骤928转移到“否”分支932,于是处理结束于步骤999。如果存在更多的需要恢复的应用程序,则判决步骤928转移到“是”分支930,于是在步骤940选择下一个应用程序,在步骤940选择下一个应用,其处理返回到判决步骤920以继续进行恢复处理。
图10是显示在加载操作***之后管理操作***的处理流程图。处理开始于步骤1000,在步骤1010,操作***等候用户或者应用的作业请求。所请求的作业可以是例如打印、输入文本、显示图形、执行计算等。在判决步骤1015确定是否已经请求了作业。如果还没有请求作业,则判决步骤1015转移到“否”分支1025,于是处理返回到步骤1010,并且操作***继续等候作业请求。
如果已经请求了作业,则判决步骤1015转移到“是”分支1020,于是在判决步骤1030确定是否已经加载了请求完成作业的可执行文件和其它文件。操作***的某些部分可以不加载到RAM中,而是保留在可拆卸操作***模块的非易失性存储器中。如果已经加载了所有必需文件,则判决步骤1030转移到“是”分支1035,于是在步骤1050继续进行处理。
如果未加载用于执行所请求作业的所有必要文件,则判决步骤1030转移到“否”分支1040,于是在步骤1045,从可拆卸操作***模块的非易失性存储器加载剩余的所需文件。在步骤1050,操作***执行所请求的作业。然后处理返回到步骤1010,操作***在此步骤中继续等候另一个作业请求。
图11是显示模块移去之前在可拆卸操作***模块上保存操作***状态的处理流程图。处理开始于步骤1100,操作***在此执行可拆卸操作***模块移去应用。在判决步骤1115确定是否存储仍然执行的任何应用或处理。如果不存在更多的剩余执行的应用或者处理,则判决步骤1115转移到“否”分支1125,并在步骤1150继续进行处理。
如果存在仍然在执行的应用或者处理,则判决步骤1115转移到“是”分支1120,于是在步骤1130选择下一个执行的应用或者处理。在步骤1135,操作***停止执行处理或者应用,并在步骤1140,把应用的或者处理的状态信息保存到可拆卸操作***模块的应用状态信息数据文件中。如果该文件不存在,则建立一个新文件。例如,如果应用是Word,则保存最后编辑位置、工具栏配置等。在步骤1145,应用当前访问的任何文件的名称被保存在可拆卸操作***模块上。当模块下一次被***到计算机***时,将在适当的编辑点用适当的应用打开适当的文件。
在步骤1150,操作***的当前状态被保存在模块中。当该模块下一次被***计算机***时,将利用该信息重新启动操作***。操作***状态包括诸如桌面布置、快捷方式、配色方案和其它用户首选项的项目。
在步骤1155,确定最后的操作***执行点,并将其作为“恢复”点保存在可拆卸操作***模块上。当从可拆卸操作***模块再次加载操作***时可以使用该“恢复”点,并且与重新启动操作***相反,用户从最后执行点选择恢复操作***。
在步骤1160,远程设备驱动器的信息被保存在模块的远程设备驱动配置文件中。当可拆卸操作***模块被下一次***计算机***时,可以利用该信息重新连接可用的远程设备。在步骤1165,还可以把任何其它非计算机***特定数据(即仅与模块有关的数据)保存到可拆卸操作***模块上。
图12是显示操作***/应用模块***和不***计算机***时,计算机***状态的方框图。计算机***1210包括:BIOS 1228,在操作***运行之前执行基本输入/输出功能;CPU 1230,处理用于运行和控制计算机***1210的指令;非易失性存储器1234,存储已安装的应用、用户设置等;RAM 1212,在计算机***1210进行操作的同时进行临时存储。
此外,计算机***1210包括能够接受可拆卸操作***/应用模块1224的可拆卸操作***/应用模块接口1225。可拆卸操作***/应用模块1224包括非易失性存储器中的操作***运行映像1226以及一个或多个应用的运行映像。
当把可拆卸操作***/应用模块1224***可拆卸操作***/应用模块接口1225时,BIOS 1228将操作***和应用运行映像1226从可拆卸操作***/应用模块1224的非易失性存储器加载到RAM1212(操作***RAM 1214和应用RAM 1220)并启动操作***的执行。执行的操作***然后恢复已加载应用的运行。
接着,操作***从非易失性存储器1234加载连接计算机***1210的任何外部设备所需的装置驱动器(设备驱动器RAM1216)、输入/输出配置(I/O配置RAM 1218)和任何所需的应用(应用RAM 1220)。除了模块1222以外,应用也可以驻留在非易失性存储器1230中。
当从计算机***1210移出可拆卸操作***模块1224时,就倒转加载处理。在可拆卸操作***模块1224上更新操作***和模块应用的当前状态,在非易失性存储器1234上更新本地应用、I/O配置和设备驱动器。一旦可拆卸操作***/应用模块移去,就可以将其***另一个兼容计算机***中,使该模块的操作***可以控制和操作其它计算机***以及使模块的应用可以在其它计算机***上运行。
图13是显示可拆卸操作***/应用模块***和移出计算机***的处理流程图。处理开始于步骤1300,在步骤1310,用户把可拆卸操作***/应用模块***适于接受该模块的计算机***。可拆卸操作***/应用模块包含操作***的运行映像以及一个或多个应用的运行映像,这些运行映像被存储在模块的非易失性存储器上。可拆卸操作***/应用模块上的应用由于针对不同计算机***的模块对每模块每应用仅需一个许可而受到青睐。此外,与在不同计算机上保存相同应用的多个拷贝相反,模块提供维护应用的中心点。
在步骤1312,计算机***的BIOS检测***时的可拆卸操作***/应用模块,并将操作***的运行映像从模块的非易失性存储器加载到计算机***的RAM。在操作***结束加载之后,BIOS启动操作***的执行,然后将控制传送到操作***。图6的流程图提供了在步骤1312发生的处理的进一步细节。
在步骤1314,操作***发现连接该计算机的本地设备。在可拆卸操作***模块从该计算机***移动到目前发现的设备之前,操作***比较包含该设备的列表,从而更新设备的列表。图7的流程图提供发生在步骤1314上的处理的进一步细节。
在步骤1316,操作***发现可由计算机***访问或者可由正在使用不同计算机***的用户访问的任何远程设备。图8的流程图提供了发生在步骤1316上的处理的进一步细节。
在步骤1318,在从计算机***最后移出可拆卸操作***模块之前,操作***启动休眠或者暂停的应用程序。与驻留在可拆卸操作***/应用模块上的模块应用相反,本地应用是驻留在计算机***上的应用。图14的流程图提供了发生在步骤1318上的处理的进一步细节。
在步骤1320,操作***加载和恢复被驻留在可拆卸操作***/应用模块上的模块应用,并可以在当前的计算机***上运行。图15的流程图提供了发生在步骤1320上的处理的进一步细节。
在步骤1322,操作***管理计算机***。操作***执行用户请求或者运行的应用请求的作业。图10的流程图提供了发生在步骤1322上的处理的进一步细节。
然后在判决步骤1324,确定用户是否已经请求移出可拆卸操作***模块。如果用户还没有请求移出可拆卸操作***模块,则判决步骤1324转移到“否”分支1328,并返回到步骤1322,操作***在此步骤中继续执行任何所请求的作业。
如果用户已经请求移出可拆卸操作***模块,判决步骤1324转移到“是”分支1326,并在步骤1330继续进行处理,在此将操作***的状态保存在可拆卸操作***模块上。图16的流程图提供了发生在步骤1330上的处理的进一步细节。
在步骤1332,将模块应用保存在可拆卸操作***/应用模块。应用状态的改变包括应用的工具栏或者菜单的改变、优选文件位置的改变、被编辑的当前文件和编辑位置、以及其它用户特定设置和首选项。图17的流程图提供了发生在步骤1332上的处理的进一步细节。
在步骤1334,当移出可拆卸操作***模块的所有准备已经被执行之后,将“移出模块是安全的”通知给用户,并且在步骤1336,用户移出可拆卸操作***模块。处理在步骤1399结束。
图14显示启动运行于计算机***上的本地应用的流程图。处理开始于步骤1400,在步骤1410,操作***从可拆卸操作***/应用模块加载应用状态数据文件。应用状态数据文件包括诸如用户正在工作的文件的信息、编辑正在发生的文件位置的信息等。
然后在判决步骤1412确定更多本地应用是否存在恢复的需要。如果不存在需要恢复的本地应用,则判决步骤1412转移到“否”分支1416,于是处理结束于步骤1499。如果需要恢复的本地应用存在,则判决步骤1412转移到“是”分支1414,于是在步骤1418选择第一个这样的应用。
然后在判决步骤1418确定所选择的本地应用是否可用于当前计算机***。操作***模块的用户可以执行在前计算机***不可用或者当前计算机***未安装的本地应用程序。如果本地应用程序不可用于当前计算机***,则判决步骤1418转移到“否”分支1420,在步骤1424,将本地应用的状态信息保存在本地应用状态数据文件上。保存该信息是为了在具有可用本地应用程序的未来的计算机***上能够自动恢复相应的本地应用程序。然后处理返回到判决步骤1412。
如果本地应用可用于当前的计算机***,则判决步骤1418转移到“是”分支1422,开始该本地应用的运行。在步骤1426,操作***保存运行应用程序的适当存储量,并且在步骤1428,运行相应的可执行的本地应用。在步骤1430,操作***使用来自本地应用状态数据文件的数据,把本地应用恢复到模块的用户在前遗留的状态。例如,如果本地应用程序是Word,则运行用户最后编辑的文件,将编辑位置设置到最后编辑位置、把工具栏配置设置到最后配置等。然后处理返回到判决步骤1412。
图15是启动在计算机***上运行的模块(模块存储的)应用的处理流程图。处理开始于步骤1500,在步骤1510,操作***从可拆卸操作***/应用模块加载应用状态数据文件。应用状态数据文件包括诸如用户正在工作的文件的信息、编辑正在发生的文件位置的信息等。此外,应用的运行映像可以通过保存应用的RAM空间来保存。
然后在判决步骤1512确定更多模块应用是否存在恢复的需要。如果不存在需要恢复的模块应用,则判决步骤1512转移到“否”分支1516,于是处理结束于步骤1599。如果需要恢复的模块应用存在,则判决步骤1512转移到“是”分支1514,于是在步骤1518选择第一个这样的模块应用。
然后在判决步骤1518确定所选择的模块应用是否可在当前计算机***上运行(与其兼容)。如果模块应用不可用于当前计算机***,则判决步骤1518转移到“否”分支1520,在步骤1524,将模块应用的状态信息保存在模块应用状态数据文件上。保存该信息是为了在模块应用是可兼容的未来计算机***上能够自动恢复相应的模块应用。然后处理返回到判决步骤1512。
如果模块应用与当前计算机***兼容,则判决步骤1518转移到“是”分支1522,开始该模块应用的运行。在步骤1526,操作***保存运行模块应用的适当存储量,并且在步骤1528,从模块加载应用的运行映像。还从模块加载恢复应用所需的其它状态信息,比如应用运行的最后点。在步骤1530,操作***在已复原的恢复点开始运行。然后处理返回到判决步骤1512。
图16是显示模块移去之前在可拆卸操作***/应用模块上保存模块应用的处理流程图。处理开始于步骤1600,操作***在此执行可拆卸操作***/应用模块移去应用。在判决步骤1615确定是否存在仍然执行的任何本地应用或处理。如果不存在任何留下执行的应用或者处理,则判决步骤1615转移到“否”分支1620,并在步骤1650继续进行处理。
如果存在仍然执行的本地应用或者处理,则判决步骤1615转移到“是”分支1625,于是在步骤1630选择下一个执行的本地应用或者处理。在步骤1635,操作***停止执行处理或者本地应用,并在步骤1640,把本地应用的或者处理的状态信息保存到可拆卸操作***/应用模块的本地应用状态信息数据文件中。例如,如果应用是Word,则保存最后编辑位置、工具栏配置等。如果文件不存在,则建立一个新文件。在步骤1645,本地应用当前所访问的任何文件的名称被保存在可拆卸操作***/应用模块上。当模块下一次被***到计算机***时,将在适当的编辑点用适当的本地应用打开适当的文件。
在步骤1650,操作***的当前状态被保存在模块中。当该模块下一次被***计算机***时,将利用该信息重新启动操作***。操作***状态包括诸如桌面布置、快捷列表、配色方案和其它用户首选项的项目。
在步骤1655,确定最后的操作***执行点,并将其作为“恢复”点保存在可拆卸操作***/应用模块上。当从可拆卸操作***/应用模块再次加载操作***时可以使用该“恢复”点,并且与重新启动操作***相反,用户选择从最后执行点恢复操作***。
在步骤1660,远程设备驱动器的信息被保存在模块的远程设备驱动配置文件中。当可拆卸操作***/应用模块下一次***计算机***时,可以利用该信息重新连接可用的远程设备。在步骤1665,还可以把任何其它非计算机***特定数据(即仅与模块有关的数据)保存到可拆卸操作***/应用模块上。
图17是显示模块移去之前在可拆卸操作***/应用模块上保存应用状态的处理流程图。处理开始于步骤1700,于是在判决步骤1710确定是否存在更多的其状态需要保存在可拆卸操作***/应用模块上的运行的模块应用。如果没有需要保存的模块应用,则判决步骤1710转移到“否”分支1720,然后于步骤1799结束。
如果存在更多需要保存的模块应用,则判决步骤1710转移到“是”分支1715,于是在步骤1723选择下一个模块应用。在步骤1725,操作***停止模块应用的执行,并且在步骤1730把所选择的模块应用的当前状态保存到可拆卸操作***/应用模块。应用的状态可以包括当前编辑的文件、编辑的位置、工具栏和菜单布置以及其它的用户优选项。
在步骤1735,确定应用的最后执行点。然后,在步骤1740将最后执行作为“恢复”点保存在模块上。执行点可以用于以后恢复运行暂停执行的应用。
然后处理返回到判决步骤1710,以确定是否更多应用存在保存应用状态的需要。
图18是显示CPU模块***和不***计算机***时,计算机***状态的方框图。计算机***1810包括:BIOS 1850,在操作***运行之前执行基本输入/输出功能;非易失性存储器1855,存储已安装的应用、用户设置等;RAM1820,在计算机***1810进行操作的同时进行临时存储。
此外,计算机***1810包括适于接受CPU模块1840的模块接口1860。CPU模块1840包括CPU 1845,在CPU模块1840连接到计算机***1810之后,CPU 1845可以开始执行操作***指令。
一旦可拆卸CPU模块1840***到模块接口1860,BIOS 1850就检测该模块,并且开始将操作***从非易失性存储器1855加载到RAM1815(操作***RAM 1820)。在加载操作***之后,BIOS 1815使用CPU模块1840的CPU 1845启动操作***的运行。
接着,操作***从非易失性存储器1855加载连接计算机***1810的任何外部设备所需的装置驱动器(设备驱动器RAM 1825),输入/输出配置(I/O配置RAM 1830)和任何所需的应用(应用RAM 1835)。
一旦从计算机***1810移出可拆卸操作***模块1824,就倒转加载处理。在非易失性存储器1855上保存操作***的状态,在非易失性存储器1855上更新应用信息、I/O配置和设备驱动器。一旦可拆卸CPU模块移去,就可以将其***另一个兼容计算机***中,使该模块的CPU可以操作其它计算机***。
图19是显示可拆卸CPU模块***和移出计算机***的处理流程图。处理开始于步骤1900,在步骤1910,用户把可拆卸CPU模块***适于接受可拆卸CPU模块的计算机***。
在步骤1915,BIOS检测可拆卸CPU模块,并确定CPU与计算机***之间的兼容性。图20的流程图提供了发生在步骤1915上的处理的进一步细节。
在判决步骤1920,确定CPU是否与计算机***兼容。如果CPU与计算机***兼容,则判决步骤1920转移到“否”分支1930,于是在步骤1945将兼容性通知给用户,然后在步骤1999结束处理。
如果CPU与计算机***不兼容,则判决步骤1920转移到“是”分支1925,于是在步骤1935加载操作***并开始使用可拆卸CPU模块上的CPU运行。图21的流程图提供了发生在步骤1935上的处理的更多细节。
在步骤1950,操作***管理计算机***。操作***执行用户或者执行的应用所请求的作业。图10的流程图提供了发生在步骤1950上的处理的更多细节。
然后在判决步骤1955确定用户是否已经请求移出可拆卸操作***模块。如果用户还没有请求移出可拆卸操作***模块,则判决步骤1955转移到“否”分支1965,并返回到步骤1950,于是操作***继续执行所请求的作业。
如果用户已经请求移出可拆卸操作***模块,则判决步骤1955转移到“是”分支1960并在步骤1970继续进行处理,于是操作***的状态被保存到可拆卸操作***模块上。图11提供了发生在步骤1970上的处理的更多细节。
在步骤1975,当用于可拆卸操作***模块移去的所有准备已经被执行时,把“移出模块是安全”的消息通知给用户,在步骤1980,用户移出可拆卸操作***模块。处理结束于步骤1999。
图20是显示BIOS检测可拆卸CPU模块和确定模块的CPU与计算机***的兼容性的处理流程图。处理开始于步骤2000,于是在步骤2010,BIOS检测所***的CPU模块。例如,可以使用即插即用型协议检测CPU模块。
然后确定可拆卸CPU模块此前是否已经***该计算机***中。如果可拆卸CPU模块此前没有***该计算机,则判决步骤2015转移到“否”分支2020,于是在步骤2035继续进行处理。如果可拆卸CPU模块此前已经***该计算机,则判决步骤2015转移到“是”分支2025,于是在判决步骤2026确定包含CPU信息的文件是否存在于计算机***的非易失性存储器上。如果包含CPU信息的文件存在于计算机***上,则判决步骤2026转移到“是”分支2028,于是在步骤2030加载包含CPU信息的文件和CPU信息,比如CPU的访问地址、CPU的寻址模式和CPU地数据传输方法等。
如果包含CPU信息的文件不存在于计算机***上,则判决步骤2026转移到“否”分支2029,于是在步骤2035查询CPU,以提供CPU的访问地址、CPU的寻址方式、CPU的数据传送模式等。在步骤2030,所提供的数据(比如CPU访问地址、CPU寻址模式、CPU数据传送模式等)被保存在计算机***的非易失性存储器的文件中,以便在可拆卸CPU模块又***计算机***期间使用。然后处理在步骤2099结束。
图21是显示BIOS使用可拆卸CPU模块的CPU加载操作***和开始操作***运行的处理流程图。处理开始于步骤2100。确定已休眠的操作***的映像是否可在本地非易失性存储器中获得。如果映像是可用的,则判决步骤2110转移到“是”分支2120,于是BIOS在步骤2125从计算机***的非易失性存储器加载操作***。如果操作***的映像不可用,则判决步骤2110转移到分支2115,在步骤2165继续进行处理。在步骤2130,提示用户是否恢复或重新启动已加载的操作***,并在步骤2135接收用户的输入。
在判决步骤2140,确定用户是否已经选择重新启动操作***。如果用户已经选择重新启动操作***,则判决步骤2140转移到“是”分支2145,在步骤2165再次进行处理。如果用户没有选择重新启动操作***,而是选择从它的最后执行点恢复操作***,则判决步骤2140转移到“否”分支2150,于是在步骤2155,从计算机***的非易失性存储器获得操作***的恢复入口点。在步骤2160,操作***从恢复入口点开始执行。
在步骤2165,从计算机***的非易失性存储器获得重新启动入口点。在步骤2170,操作***从重新启动入口点开始执行。
在步骤2175,把CPU的在前确定的属性如CPU地址、CPU寻址模式、数据传送方法等通知给操作***,然后在步骤2199结束处理。
图22是显示CPU模块(包含第二CPU)***和不***计算机***时,计算机***状态的方框图。计算机***2210包括:BIOS 2245,在操作***运行之前执行基本输入/输出功能;CPU 2250,执行操作计算机***的指令;非易失性存储器2255,存储已安装的应用、已安装的操作***、用户设置等;RAM 2215,在计算机***2210进行操作的同时进行临时存储。RAM 2215包括操作***RAM 2220、设备驱动器RAM 2225、I/O配置RAM 2230和应用RAM 2235。
此外,计算机***2210包括适于接收CPU模块2260的模块接口2240。CPU模块2260包括CPU 2265,在CPU模块2240连接到计算机***2210之前,该CPU 2265可以和单板CPU 2250一起开始并行执行操作***指令。
一旦可拆卸CPU模块2260***模块接口2240,BIOS 2245就检测该模块,并把附加CPU的存在通知给操作***。最初,操作***仅仅把执行的指令转移到单板CPU 2250。在CPU模块***后,操作***把一个CPU指定为从CPU,而把另一个CPU指定为主CPU。然后,操作***开始向两个CPU发送执行的指令。如图所示,CPU 2250被指定为主CPU,模块上的CPU 2265被指定为从CPU。
图23是显示可拆卸CPU模块***和移出包含内置CPU的计算机***的处理流程图。处理开始于步骤2300,在步骤2310,用户把可拆卸CPU模块***具有现存CPU的计算机***。
在步骤2315,BIOS检测CPU模块并确定CPU与计算机***之间的兼容性。图20的流程图提供了发生在步骤2315上的处理的进一步细节。
然后确定CPU是否与计算机***兼容。如果该CPU被确定与计算机***不兼容,则判决步骤2320转移到“否”分支2330,于是在步骤2345,通知用户该CPU与计算机***不兼容。处理结束于步骤2399。
如果CPU被确定与计算机***兼容,则判决步骤2320转移到“是”分支2325,于是在步骤2335,BIOS把第二CPU的存在和CPU属性通知给操作***。
在步骤2340,操作***访问CPU并把操作***负荷的一部分分配给辅助CPU。图24的流程图提供了发生在步骤2340上的处理的更多细节。然后,处理结束于步骤2399。
图24是显示操作***访问第二CPU并分配部分负荷给辅助CPU的处理的流程图。处理开始于步骤2400。在步骤2410,操作***从BIOS接收CPU的属性,比如CPU的访问地址、CPU的寻址模式、CPU的数据传送方法等。然后在判决步骤2415,确定与当前CPU配置对应的多个CPU配置文件是否存在于计算机***中。如果与当前CPU配置对应的多个CPU配置文件不存在,则判决步骤2415转移到“否”分支2420,在步骤2450继续进行处理。如果与当前CPU配置对应的多个CPU配置文件存在,则判决步骤2415转移到“是”分支2425,于是在步骤2430,操作***根据多个CPU配置文件把CPU指令的一部分分配给本地CPU,并把CPU指令的一部分分配给模块CPU。
在判决步骤2435确定模块CPU是否仍然存在。如果模块CPU不再存在,则判决步骤2435转移到“否”分支2440,然后处理结束于步骤2499。如果模块CPU仍然存在,则判决步骤2435转移到“是”分支2445,处理返回到步骤2430。
在步骤2450,操作***确定哪个CPU被指定为主CPU,以及哪个CPU被指定为从CPU。在一个实施例中,主/从指定是根据CPU能力作出的。例如,最强的CPU可以被指定为主CPU。
在步骤2455,操作***确定主CPU与从CPU之间的CPU指令的分配。此外,分配的确定基于CPU的能力。例如,如果两个CPU都存在而且两个CPU计算能力基本相等,则可以在两个CPU之间相等地分配操作***负荷。
不同CPU之间的已确定的负荷分配被保存到计算机***的多个CPU配置文件上。该CPU配置将来再次存在时,由操作***以后检索该信息。处理继续在步骤2430进行,根据已确定的分配把计算机指令分配给多个CPU。
图25是显示操作***/CPU模块***和不***计算机***时,计算机***状态的方框图。计算机***2510包括:BIOS 2555,在操作***执行之前,执行基本输入/输出功能;非易失性存储器2560,用于存储已安装的应用、用户设置等;和RAM 2515,在计算机***2510操作的同时进行临时存储。
此外,计算机***2510包括可拆卸操作***/CPU模块接收2565,该接口能够接受可拆卸操作***/CPU模块2540。可拆卸操作***/CPU模块2540包括:非易失性存储器中的操作***运行映像2550,以及执行操作***指令以便操作计算机2510的CPU 2545。
一旦可拆卸操作***/CPU模块2540***可拆卸操作***/CPU模块接口2565,BIOS 2555就把操作***运行映像2550从可拆卸操作***/CPU模块2540的非易失性存储器加载到RAM 2515(操作***RAM 2520),并启动操作***模块CPU 2545的执行。
接着,操作***从非易失性存储器2560加载连接计算机***2510的任何外部设备所需的设备驱动器(设备驱动器RAM 2525)、输入/输出配置(I/O配置RAM 2530)和任何已请求的应用(应用RAM 2535)。
一旦可拆卸操作***/CPU模块2540从计算机***2510移出,就倒转加载处理。在可拆卸操作***/CPU模块2540上更新操作***的当前状态,在非易失性存储器2560上更新应用信息、I/O配置和设备驱动器。一旦可拆卸操作***/CPU模块移去,就可以将其***另一个兼容计算机***,使模块的操作***与CPU一起控制和操作其它计算机***。
图26是显示可拆卸操作***/CPU模块***和从计算机***移出的处理流程图。处理开始于步骤2600,在步骤2610,用户把可拆卸操作***/CPU模块***适于接受模块的计算机***中。可拆卸操作***/CPU模块包含:被存储到模块的非易失性存储器上的操作***运行映像;以及执行操作***指令的CPU。
在步骤2612,计算机***的BIOS检测***时的可拆卸操作***/CPU模块,并确定CPU的属性。图27的流程图提供了发生在步骤2612上的处理的进一步细节。
然后,在判决步骤2614确定模块是否与当前计算机***兼容。如果模块被确定为与计算机***不兼容,则判决步骤2614转移到“否”分支2616,在步骤2628继续进行处理。在步骤2628,通知用户模块与当前计算机***不兼容。
如果该模块被确定是兼容的,则判决步骤2614转移到“是”分支2618,在步骤2620,BIOS从模块加载操作***,并把模块上的CPU的存在和属性通知给操作***。图6提供了发生在步骤2620上的处理的更多细节。
在步骤2622,操作***发现连接到该计算机的本地设备。在可拆卸操作***/CPU模块从该计算机***移到当前已发现设备之前,操作***比较包含该设备的列表并更新设备列表。图7的流程图提供了发生在步骤2622中的处理的详细细节。
在步骤2624,操作***在用户正在使用不同计算机***时发现可由计算机***或者用户访问的任何远程设备。图8的流程图提供了发生在步骤2624上的处理的更多细节。
在步骤2626,操作***启动在可拆卸操作***/CPU模块从计算机***最后移出之前休眠或暂停的应用。图9的流程图提供了发生在步骤2626上的处理的更多细节。
在步骤2630,操作***管理计算机***。操作***执行由用户或者由运行的应用请求的作业。图10的流程图提供了发生在步骤2630上的处理的更多细节。
然后在判决步骤2632确定用户是否已经请求可拆卸操作***/CPU模块的移出。如果用户还没有请求可拆卸操作***/CPU模块的移出,则判决步骤2632转移到“否”分支2634,并返回到步骤2630,操作***继续执行所请求的作业。
如果用户已经请求可拆卸操作***/CPU模块的移出,则判决步骤2632转移到“是”分支2636,并在步骤2638继续进行处理,于是将操作***的状态保存到可拆卸操作***模块上。图11提供了发生在步骤2638上的处理的更多细节。
在步骤2640,当已经执行可拆卸操作***/CPU模型之后,将“移出模块是安全的”消息通知给用户,并且在步骤2624,用户移出可拆卸操作***模块。处理结束于步骤2699。
图27是显示BIOS检测可拆卸操作***/CPU模块并确定模块上的操作***和CPU与计算机***兼容性的处理流程图。处理开始于步骤2700,在步骤2710,BIOS检测已***的操作***/CPU模块。
然后确定可拆卸操作***/CPU模块此前是否已经***该计算机***。如果可拆卸操作***/CPU模块此前未***该计算机***,则判决步骤2715转移到“否”分支2720,在步骤2730上继续进行处理。如果可拆卸操作***/CPU模块此前已经***该计算机***,则判决步骤2715转移到“是”分支2725,于是在判决步骤2726确定包含操作***/CPU信息的文件是否存在于计算机***的非易失性存储器上。如果包含CPU信息的文件存在于计算机***上,则判决步骤转移到“是”分支2728,于是在步骤2730,加载包含CPU信息的文件以及CPU信息,比如CPU的访问地址、CPU的寻址模式、CPU的数据传送方法等。
如果包含CPU信息的文件未存在于计算机***,则判决步骤2726转移到“否”分支2729,于是在步骤2740,查询CPU以便确定CPU的访问地址、CPU的寻址模式、CPU的数据传送方法等。在步骤2745,确定操作***与计算机***的兼容性。然后处理结束于步骤2799。
图28是显示一个装置连接到计算机***以及把设备驱动器从该设备的非易失性存储器传送到计算机***的方框图。
计算机***2810包括:控制计算机***2810的CPU 2815;连接CPU2815、用于存储数据的存储单元2810;和连接CPU 2815、用于把计算机***连接到其它外部设备的通信接口2825。
设备2830包括:控制设备2830的处理器2845;连接处理器2845、用于将设备2830连接到其它设备的通信接口2840;和连接处理器2845、用于存储数据的非易失性存储器2835。
设备2830是外部设备,比如是适合于经由设备2830上的通信接口2840和计算机***2810上的通信接口2825连接计算机***2810的打印机。为了便于通信,设备驱动器首先被安装到计算机***上。通常,经由软盘、CD-ROM和连接计算机***的网络,向计算机***提供设备驱动器。如果设备驱动器不可用,则该设备驱动器将不起作用。设备2830可以把设备驱动器2850存储到非易失性存储器2835中,一旦设备2830连接到计算机***2810,就可以向计算机***2810提供设备驱动器2850。如果已更新的设备驱动器在计算机***2810上可用,则已更新的设备驱动器可以从计算机***2810传输到设备2830,以替代设备驱动器2850。
图29是显示把设备连接到计算机***以及把设备驱动器从设备的非易失性存储器传送到该计算机***的流程图。处理开始于步骤2900,在步骤2910,新设备被连接到计算机***。该设备适合于使用必需安装到计算机***上的设备驱动器来与计算机***通信。在步骤2915,计算机***检测新设备。在一个实施例中,在设备与计算机***之间建立即插即用型通信。
然后,确定该设备是否可以从设备的固件供应设备驱动器。如果该设备不能供应合适的设备驱动器,则判决步骤2920转移到“是”分支2930,于是在步骤2935,计算机***发送请求,并从设备接收用于新设备的设备驱动器。可以利用标准化设备驱动器通信协议从设备接收设备驱动器。然后,在步骤2945继续进行处理。
如果设备不提供设备驱动器,判决步骤2920转移到“否”分支2925,于是在步骤2940,计算机***搜索本地存储设备和/或连接计算机***的网络,以便获得用于已连接的设备的可兼容设备驱动器。
在步骤2945,操作***注册该新设备。例如,把设备的信息加到***注册器上,使操作***记录设备和该设备的适当设备驱动器的存在。在步骤2950,把设备和设备驱动器的信息添加到本地设备驱动器配置文件中。在重新启动或恢复计算机***时,可以使用设备驱动器配置文件,以便在关闭/休眠计算机***之前或者在移出操作***模块时,获得连接计算机***的设备的列表。在步骤2955,计算机***使用已安装的设备驱动器建立与新设备的通信。
图30是显示计算机***以诸如的XML的可移植语言与远程设备驱动器注册服务器通信,以便获得存储在服务器上的设备的设备驱动器的信息的方框图。
计算机***3010连接计算机网络3030,该计算机网络3030连接远程设备驱动器注册服务器3015、光打印机3020和高分辨率扫描仪3025。为了在计算机***3010、光打印机3020和高分辨率扫描仪3025之间建立连接,计算机***3010首先建立与远程设备驱动器注册服务器3015的通信。计算机***3010使用诸如XML(一种公知语言)之类的可移植语言建立与远程设备驱动器注册服务器3015的通信。远程设备驱动器注册服务器3015存储设备驱动器和其它信息,以便在计算机***3010、光打印机3020和高分辨率扫描仪3025之间进行通信。
在一个实施例中,远程设备驱动器注册服务器3015包含表3055和表3050。表3050包含可用设备的信息。例如,对于每个设备,表3055可以包含可以下载驱动器的网络位置、设备的接口定义、与设备使用有关的费用和联系网络地址。表3050可以包含,例如,用于每个用户的用户名、用户口令、用户是否访问第一设备、用户是否访问第二设备等。
当建立于远程设备驱动器注册服务器3015的通信之后,计算机***接收适当设备的信息。然后计算机***建立与设备如光打印机3020或高分辨率扫描仪3025的通信。
图31是显示计算机***用诸如XML的可移植语言与远程驱动器注册服务器通信,以便获得存储在服务器上的设备的设备驱动器的信息。处理开始于步骤3100,在步骤3110,用户请求连接到远程业务或设备如高质量打印的光打印机。
在步骤3115,使用诸如XML的可移植语言向远程设备驱动器注册服务器发送业务或设备的请求。远程设备驱动器注册服务器可以为请求业务或者设备的用户提供认证,以及提供关于设备驱动器和设备的信息。远程设备驱动器注册服务器可以提供诸如以下的信息:驱动器的位置、与业务或者设备通信的接口定义、使用设备的应用费、发生问题情况下的联系地址等。
在步骤3120,远程设备驱动器注册服务器请求用户提供用户名和口令,以便远程设备驱动器注册服务器确定用户是否可以访问任何业务或者驱动器。然后在判决步骤3125确定用户是否已经许可访问已请求的业务或者设备。远程设备驱动器注册服务器通过将键入的用户名和口令与远程设备驱动器注册服务器上保存的用户名和口令以及访问许可的列表进行比较来确定许可。如果不许可用户访问所请求的设备或者业务,则判决步骤3125转移到“否”分支3130,在步骤3145上继续进行处理。在步骤3145,通知用户访问所请求设备或者业务的许可已经被拒绝。
如果不许可用户访问所请求的业务或者设备,则判决步骤3125转移到“是”分支3135,于是在步骤3140,计算机***建立与所选择的业务或者装置的通信。图32的流程图提供了发生在步骤3140上的处理的更多细节。然后处理结束于步骤3199。
图32是在计算机***与远程业务/设备之间建立通信的处理流程图。处理开始于步骤3200,在步骤3210,远程设备驱动器注册服务器向所请求的计算机***发送所选设备驱动器的特性。远程设备驱动器注册服务器与计算机***之间的通信以诸如XML之类的可移植语言发生。在步骤3215,远程设备驱动器注册服务器向所请求的计算机***发送与设备驱动器通信所需的接口。远程设备驱动器注册服务器与计算机***之间的通信再次以诸如XML之类的可移植语言发生。
在步骤3220,所请求的计算机***将收到的与设备驱动器关联的信息保存到设备驱动器配置文件上,用于以后调用。在步骤3230,请求的计算机***使用远程设备驱动器注册服务器提供给请求的计算机***的接口和其它信息访问该设备。然后处理结束于步骤3299。
图33是显示包含防止未授权访问所述设备的安全设备的可拆卸操作***模块的方框图。可拆卸模块3310可以包含模块CPU 3315、操作***运行映像3330和/或模块应用3335。
此外,可拆卸模块3310包含锁住和保护可拆卸模块以避免未授权使用可拆卸模块的菜单。可拆卸模块3310包括安全数据3340,该安全数据例如与视网膜扫描仪3345、指纹扫描仪3350和/或小键盘3355结合,提供认证。视网膜扫描仪3345扫描用户的视网膜,并将被扫描图像与安全数据3340中存储的图像进行比较,以确定是否授权用户使用可拆卸模块3310。指纹扫描仪3350扫描用户的手指,并将被扫描的图像与安全数据3340中存储的图像进行比较,以确定是否授权用户使用可拆卸模块3310。小键盘3355提供用户输入口令的菜单,然后将输入的口令与安全数据3340中存储的口令进行比较,以确定用户是否被授权使用可拆卸模块3310。
可拆卸模块3310还包含加锁/解锁指示器3325。加锁/解锁指示器3325可以包括,例如,指示模块被加锁的红色LED和指示模块被解锁的绿色LED。
锁定按钮3320可以用来在可拆卸模块3310被解锁的任何时候,锁住可拆卸模块3310。在另一个实施例中,一旦可拆卸模块3310从计算机***移出,就可以自动将其锁住,或者在一段不活动时间之后或者按照时间表自动锁住可拆卸模块3310。
图34是显示使用模块上的安全设备防止未授权访问可拆卸操作***模块的处理流程图。处理开始于步骤3400,在步骤3410用户从计算机***移出可拆卸模块。
在判决步骤3415确定模块从计算机***移出时是否被设置为自锁。如果模块从计算机***移出时被设置为自锁,则判决步骤3415转移到“是”分支3435,于是在步骤3440模块自动锁住。在步骤3445继续进行处理。如果模块从计算机***移出时未被设置为自锁,则判决步骤3415转移到“否”分支3420,于是在判决步骤3425确定是否已经按压模块上的锁定按钮。如果锁定按钮已经被按压,则判决步骤3425转移到“是”分支3430,在步骤3445继续进行处理。如果锁定按钮未被按压,则判决步骤3425转移到“否”分支3475,在步骤3480模块维持解锁、可操作状态,并准备重新***计算机***。
在步骤3445,模块被锁住,因而是不可操作的,并且不准备进入计算机***激活。为了再次使用,必需首先解锁该模块。模块上的指示器指示该模块被锁住。
然后在判决步骤3450确定用户是否正在试图解锁模块。如果用户不试图解锁模块,则判决步骤3450转移到“否”分支3452,于是处理返回到步骤3445,模块再次确定用户是否正在试图解锁模块。如果用户正在试图解锁模块,则判决步骤3450转移到“是”分支3454,于是在步骤3455,模块执行认证处理过程,以确定试图解锁模块的用户是否具有这样做的授权。图35、36、37的流程图提供了发生在步骤3455上的处理的更多细节。
然后在判决步骤3460确定用户已经被认证。如果用户未被认证,则判决步骤3460转移到“否”分支3465,于是处理返回到步骤3455,以等候用户解锁模块的另一个试图。如果用户被认证,则判决步骤3460转移到“是”分支3470,于是在步骤3480,模块现在是解锁的、可操作的,并且准备***计算机***。然后在步骤3499结束处理。
图35是显示使用模块上的指纹扫描仪3510保护可拆卸操作***模块的处理流程图。处理开始于步骤3500,于是在步骤3510模块等候指纹扫描仪上的手指的出现。指纹扫描仪位于模块上,它是用于标识和认证目的的可操作扫描人的指纹的安全设备。
然后在判决步骤3515确定手指是否出现在扫描仪上。如果手指未出现在扫描仪上,则判决步骤3515转移到“否”分支3520,于是处理返回到步骤3510,模块在此继续等候手指在指纹扫描仪上的出现。
如果手指出现在扫描仪上,判决步骤3515转移到“是”分支,于是在步骤3530激活指纹扫描仪,并捕获手指上的指纹图像。在步骤3535,访问模块上的被认证指纹图像的数据库。存储在模块上的数据库包含来自被认证使用模块的用户的指纹图像。
然后确定是否存在还没有与已扫描图像比较的更多指纹图像。如果没有被比较的更多指纹图像不存在,则判决步骤3540转移到“否”分支,于是在步骤3560确定用户还没有被认证。然后处理结束于步骤3599。
如果没有比较的更多指纹图像存在,判决步骤3540转移到“是”分支3545,于是在步骤3555,从数据库加载下一个指纹图像,并与已扫描图像进行比较。
然后在判决步骤3565确定来自数据库的指纹图像是否与已扫描图像匹配。如果图像不匹配,则判决步骤3565转移到“否”分支3570,于是处理返回到步骤3535,以确定更多图像是否保存在需要比较的数据库中。如果图像匹配,则判决步骤3565转移到“是”分支3575,于是在步骤3580指示用户已经被授权,并且现在可以在可兼容计算机***中***并使用该模块。处理结束于步骤3599。
图36是显示使用模块上的眼视网膜扫描仪保护可拆卸操作***模块的处理流程图。处理开始于步骤3600,于是在步骤3610,模块等候视网膜扫描仪前方的眼睛的出现。视网膜扫描仪位于模块上,它是用于标识和认证目的的可操作扫描人的视网膜的安全装置。
然后在判决步骤3615确定视网膜是否出现在扫描仪的前方。如果视网膜未在出现于扫描仪上,则判决步骤3615转移到“否”分支3620,于是处理返回到步骤3610,模块在此继续等候视网膜出现在视网膜扫描仪的前方。
如果视网膜未出现在扫描仪上,则判决步骤3615转移到“是”分支3625,于是在步骤3630,激活视网膜扫描仪,并捕获视网膜的图像。在步骤3635,访问模块上的被认证的视网膜的数据库。该数据库被存储在模块上,包含来自被认证使用模块的用户的视网膜图像。
然后确定是否存在还没有与被扫描图像比较的更多视网膜图像。如果没有被比较的更多视网膜图像不存在,则判决步骤3640转移到“否”分支3650,于是在步骤3660确定用户没有被认证。然后处理结束于步骤3699。
如果没有比较的视网膜存在,则判决步骤3640转移到“是”分支3645,于是在步骤3655,从数据库加载下一个视网膜图像,并与被扫描的图像进行比较。
然后在判决步骤3665确定来自数据库的视网膜图像是否配置被扫描图像。如果图像不匹配,则判决步骤3665转移到“否”分支3670,于是处理返回到步骤3635,以确定更多图像是否保存在需要比较的数据库中。如果图像匹配,则判决步骤3665转移到“是”分支3675,于是在步骤3680指示用户已经被认证,并且可以在兼容计算机***中***并使用该模块。处理结束于3699。
图37是显示使用键入口令的键盘保护可拆卸操作***模块的处理流程图。处理开始于步骤3700,在步骤3710,模块等候将在键盘上键入的口令。
然后判决步骤3715确定口令是否已经被输入。如果未输入口令,则判决步骤3715转移到“否”分支3720,于是处理返回到步骤3710,模块在此继续等候口令。
如果已经输入了口令,则判决步骤3715转移到“是”分支3725,在步骤3730接收输入的口令。在步骤3735,访问模块上已认证口令的数据库。该数据库被存储在模块上,包含来自被认证使用模块的用户的口令。
然后确定是否存在还没有与被输入口令比较的更多口令。如果没有被比较的更多口令不存在,则判决步骤3740转移到“否”分支3750,于是在步骤3760确定用户没有被认证。然后处理结束于步骤3799。
如果没有比较的口令存在,则判决步骤3740转移到“是”分支3745,于是在步骤3755,从数据库加载下一个口令,并与被键入口令进行比较。
然后在判决步骤3765确定来自数据库的口令是否配置被输入的口令。如果口令不匹配,则判决步骤3765转移到“否”分支3770,于是处理返回到步骤3735,以确定更多口令是否保存在需要比较的数据库中。如果口令匹配,则判决步骤3765转移到“是”分支3775,于是在步骤3780指示用户已经被认证,并且可以在兼容计算机***中***并使用该模块。处理结束于3799。
图38是显示使用用于经由计算机***提供的安全数据防止未授权访问可拆卸操作***模块的处理流程图。处理开始于步骤3800,在步骤3810,用户把可拆卸模块***计算机***中。在步骤3812,BIOS检测可拆卸模块并确定模块是否与计算机***兼容。
然后判决步骤3814确定模块是否已经被安全锁住。如果模块未被安全锁住,则判决步骤3814转移到“否”分支31180,在步骤3848继续进行处理。如果模块被安全锁住,则判决步骤3814转移到“是”分支3816,于是提示用户输入安全数据,以便解锁该模块。安全数据可以是,例如口令、指纹扫描、视网膜扫描等。
然后在判决步骤3824确定是否已经提供了安全数据。如果未提供安全数据,则判决步骤3824转移到“否”分支3828,于是处理返回到步骤3822,***在此等候来自用户的安全数据。
如果提供了安全数据,则判决步骤3824转移到“否”分支3826,于是***在步骤3830接收由用户输入的安全数据。在步骤3832,访问模块上已认证的安全数据的数据库。存储在模块上的已认证的安全数据可以是例如口令、指纹扫描、视网膜扫描等。
图39是显示制造/编程可拆卸模块的方框图。制造计算机3910***包括CPU 3920、RAM 3925和非易失性存储器3915。非易失性存储器1915包括将安装到可拆卸模块的操作***的主拷贝。
在制计算机***3910还包括诸多接口,将可拆卸模块3930、3935、3934和3945从可拆卸模块栈3947附加并连接到计算机***3910。在操作***安装到计算机***3910之后,操作***的运行映像从RAM 3925传送给可拆卸模块3930、3935、3940、……、3945中的每一个。
在操作***已经被安装到可拆卸模块3930、3935、3940、……、3945之后,这些可拆卸模块就从计算机中移出,并且准备分配。
图40是显示制造和编程操作***模块的处理流程图。处理开始于步骤4000,在步骤4010,操作***被安装到在制计算机***上。安装到计算机***上的操作***是将要安装到可拆卸操作***模块上的操作***。在步骤4015,执行操作***,以获得存储器中的操作***的运行映像。已安装的操作***将被传送到可拆卸操作***模块上,已执行的操作***将用来获得状态信息、恢复和重新启动点等。
在步骤4020,开始可拆卸操作***模块的制造。得到具有以下部件的主板:互连不同部件的总线;安装BIOS的接口,所述BIOS被连接到总线上;安装处理器的接口,所述处理器被连接到总线上;安装非易失性存储器的接口,所述非易失性存储器被连接到总线上;连接总线的通信接口,用于连接到计算机***上的模块接口。
在步骤4030,BIOS被安装到主板的BIOS接口上。BIOS负责建立模块与计算机***上的模块接口之间的初始通信。在步骤4035,将处理器安装到主板的处理器接口上。处理器控制可拆卸操作***模块的运行,比如,从可拆卸操作***模块到计算机***的通信以及可拆卸操作***模块内的诸多部件之间的通信。在步骤4040,非易失性存储器被安装到主板的非易失性存储器接口上。非易失性存储器用来存储数据,通常还存储可拆卸操作***模块上存储的操作***的运行映像。
然后在判决步骤4045确定是否要制造更多模块。如果要制造更多模块,则判决步骤4045转移到“是”分支4050,于是处理返回到步骤4020,开始制造另一个可拆卸操作***模块。如果不制造更多可拆卸操作***模块,则判决步骤4045转移到“否”分支4055,于是在步骤4060,将一组被制造的可拆卸操作***模块***在制计算机***(manufacturing computer system)中。在制计算机***可以有适于连接到可拆卸操作***模块的多个接口,以便于将操作***同时加载到若干可拆卸操作***模块上。
在步骤4070,运行于在制计算机***上的操作***的运行映像被加载到连接到在制计算机***的可拆卸操作***模块上。操作***被传送到可拆卸操作***模块的非易失性存储器上。
在判决步骤4080上确定更多模块是否存在加载操作***的需要。如果需要加载操作***的更多操作***模块存在,则判决步骤4080转移到“是”分支4085,于是处理返回到步骤4060,将另一组可拆卸操作***模块***到在制计算机***中。如果没有更多需要加载操作***的可拆卸操作***模块,则判决步骤4080转移到“否”分支4090,于是处理结束于步骤4099。
图41是显示用户使用运行的操作***安装文件编程操作***模块的处理流程图。处理开始于步骤4100,于是用户在步骤4110启动计算机***。在步骤4115,用户使用计算机***连接操作***的制造商网站。在该网站,用户请求购买和下载文件,以便把操作***安装到可拆卸操作***模块上。
在步骤4120,用户漫游到购买网页,在此用户使用***购买操作***。在步骤4125,用户下载和接收呈可安装映像形式的所购买的操作***。
然后在判决步骤4130确定操作***是否包括把可拆卸操作***模块连接到计算机***的可拆卸操作***模块接口。如果计算机***不包括可拆卸操作***模块接口,则判决步骤4130转移到“否”分支4134,于是在步骤4140,把可拆卸操作***模块接口附加到计算机***上。然后在步骤4150继续进行处理。
如果计算机***包括可拆卸操作***模块接口,则判决步骤4130转移到“是”分支4150,于是在步骤4150,将可拆卸操作***模块***可拆卸操作***模块接口。在步骤4160,已***的可拆卸操作***模块由计算机***检测并安装。
在步骤4170,用户执行已下载的可执行的操作***,以开始安装已购买的操作***。给予提示时,用户把可拆卸操作***模块选作安装已购买的操作***的场所。在安装完成后,用户重新启动计算机***,在步骤4180选择使用新近安装的操作***映像重新启动计算机***。所安装的操作***映像可以是运行映像。
在步骤4185,用户执行可拆卸操作***模块移去应用,以便把操作***的状态和执行的应用保存在可拆卸操作***模块的非易失性存储器上,然后从可拆卸操作***模块接口移出可拆卸操作***模块。处理结束于步骤4199。
图42是显示用户使用运行操作***更新安装文件来更新操作***模块的处理流程图。处理开始于步骤4200,在步骤4210,用户把可拆卸操作***模块***到具有可拆卸操作***模块接口的计算机***,该接口适合于接受可拆卸操作***模块。在步骤4215,计算机***的BIOS检测可拆卸操作***模块,并从可拆卸操作***模块的非易失性存储器加载操作***。
在步骤4220,用户连接到操作***的制造商网站,并请求对操作***的更新。然后在判决步骤4225确定是否将免费提供更新。如果不免费提供更新,则判决步骤4225转移到“否”分支4230,于是在步骤4255用户使用***购买该更新。处理继续在步骤4340上进行。
如果免费提供更新,则判决步骤4225转移到“是”分支4240,在步骤4240用户从操作***的制造商网站下载和接收的已购买的操作***和可执行的更新。在步骤4245,用户执行已下载的操作***的更新,并且在步骤4250,更新可拆卸操作***模块上的操作***。
在步骤4260,重新启动计算机,并且在步骤4265,从可拆卸操作***模块加载已更新的操作***,并且用户准备以更新形式使用操作***。处理结束于步骤4299。
图43是显示具有模块接口的个人计算机的方框图。
计算机***4310是最初制造的计算机***,包括BIOS 4325、非易失性存储器4320、存储器4315和包含设备的设备驱动器4335的附加设备4330。
模块接口4350也附加到计算机***上,以便能够把可拆卸模块连接到计算机***4310。
图44是显示制造个人计算机的处理流程图,该个人计算机具有模块接口和连接到模块接口的具有不同配置选项的模块。处理开始于步骤4400,在步骤4410开始在制计算机***。
在步骤4415,获得具有以下部件的主板:互连不同部件的总线;安装BIOS的接口,所述BIOS被连接到总线上;安装CPU的接口,所述CPU被连接到总线上;安装RAM单元的接口,所述RAM单元被连接到总线上;连接非易失性存储器的接口,所述非易失性存储器被连接到总线上;连接附加设备的接口,所述附加设备也被连接到总线上。
在步骤4420,BIOS被安装到主板的BIOS接口上。BIOS能够使计算机***在加载操作***之前执行基本输入/输出,然后加载操作***。在步骤4425,将RAM单元连接到主板的RAM单元接口上。RAM单元在计算机***正在运行时,充当临时快速存储器。在步骤4430,非易失性存储器连接到主板的非易失性存储器接口上。非易失性存储器充当加载操作***、应用等的永久存储器。
在步骤4435,模块接口被附加和连接到计算机***的总线上。模块接口适于接受可拆卸模块,并适于经由总线将可拆卸模块连接到计算机***。
在步骤4440,获得具有非易失性存储器的模块,该模块适于接受模块化CPU,和/或存储在非易失性存储器中的模块化应用,和/或存储在非易失性存储器上的一个或多个模块化操作***。该模块适于通过把模块连接到计算机***的模块接口而连接到计算机***上。
在步骤4445,一个或多个操作***被安装到计算机***上和/或可拆卸模块上。图45的流程图描述了发生在步骤4445上的处理的更多细节。
在步骤4460,一个或多个应用被安装到计算机***上和/或可拆卸模块上。图46的流程描述了发生在步骤4460上的处理的多个细节。
在步骤4465,一个或多个CPU被安装到计算机***上和/或可拆卸模块上。图47的流程描述了发生在步骤4465上的处理的多个细节。处理结束于步骤4499。
图45是显示在计算机***和/或模块上加载操作***的处理流程图。处理开始于步骤4510,然后在判决步骤4510确定在计算机***或者在可拆卸模块上是否将要安装更多操作***。如果没有将要安装的更多操作***,则判决步骤4510转移到“否”分支4520,于是处理结束于步骤4599。
如果有更多操作***要被安装,则判决步骤4510转移到“是”分支4515,于是在判决步骤4525确定是否在可拆卸模块的非易失性存储器和计算机***的非易失性存储器上安装下一个操作***。如果要在可拆卸模块的非易失性存储器和计算机***的非易失性存储器上加载操作***,则判决步骤4525转移到“是”分支4530,在步骤4570,把操作***安装到计算机***主板的非易失性存储器上。在步骤4575,操作***的运行映像被安装到模块的非易失性存储器上。然后处理返回到判决步骤4510,以确定是否存在更多待安装的操作***。
如果操作***将不安装到可拆卸模块的非易失性存储器上和计算机***的非易失性存储器上,则判决步骤4525转移到“否”分支4535,在判决步骤4540确定是否把操作***安装到计算机***主板的非易失性存储器上。如果将在计算机***主板的非易失性存储器上加载操作***,则判决步骤4540转移到“是”分支4560,在步骤4580把操作***安装到计算机***的非易失性存储器上。
如果操作***不安装到计算机***主板的非易失性存储器上,则判决步骤4540转移到“否”分支4550,于是在判决步骤4555确定操作***是否安装到可拆卸模块的非易失性存储器上。如果操作***要被安装到模块的非易失性存储器上,则判决步骤4555转移到“是”分支4560,于是在步骤4585,把操作***的运行映像安装到可拆卸模块的非易失性存储器上。
如果操作***不安装到模块的非易失性存储器上,则判决步骤4555转移到“否”分支4565,于是处理返回到判决步骤4510,以确定是否有更多操作***要安装到计算机***和/或可拆卸模块上。
图46是在计算机***和/或模块上安装应用的处理流程图。处理开始于步骤4610,然后在判决步骤4610确定是否有更多应用要安装到计算机***上或可拆卸模块上。如果没有更多应用要被安装,则判决步骤4610转移到“否”分支4615,然后处理结束于步骤4699。
如果有更多应用要被安装,则判决步骤4610转移到“是”分支4620,在判决步骤4625确定是否在可拆卸模块的非易失性存储器和计算机***的非易失性存储器上安装下一个应用。如果要在可拆卸模块的非易失性存储器和计算机***的非易失性存储器上安装应用,则判决步骤4625转移到“是”分支4630,在步骤4670,把应用安装到计算机***主板的非易失性存储器上。在步骤4675,应用的运行映像被安装到模块的非易失性存储器上。然后处理返回到判决步骤4610,以确定是否存在更多待安装的应用。
如果应用不安装到可拆卸模块的非易失性存储器上和计算机***的非易失性存储器上,则判决步骤4625转移到“否”分支4635,在判决步骤4640确定是否把应用安装到计算机***主板的非易失性存储器上。如果要在计算机***主板的非易失性存储器上安装应用,则判决步骤4640转移到“是”分支4645,在步骤4680把应用安装到计算机***的非易失性存储器上。
如果应用不安装到计算机***主板的非易失性存储器上,则判决步骤4640转移到“否”分支4650,于是在判决步骤4655确定应用是否安装到可拆卸模块的非易失性存储器上。如果应用要被安装到模块的非易失性存储器上,则判决步骤4655转移到“是”分支4660,于是在步骤4685,把应用的运行映像安装到可拆卸模块的非易失性存储器上。
如果应用不安装到模块的非易失性存储器上,则判决步骤4655转移到“否”分支4665,于是处理返回到判决步骤4610,以确定是否有更多应用要安装到计算机***和/或可拆卸模块上。
图47是显示在计算机***和/或模块上安装CPU的处理流程图。处理开始于步骤4710,然后在判决步骤4710确定是否有更多CPU要安装到计算机***上或可拆卸模块上。如果没有更多CPU要被安装,则判决步骤4710转移到“否”分支4715,然后处理结束于步骤4799。
如果有更多CPU要被安装,则判决步骤4710转移到“是”分支4720,在判决步骤4725确定是否在可拆卸模块和计算机***上安装下一个CPU。如果要在可拆卸模块和计算机***上安装CPU,则判决步骤4725转移到“是”分支4730,于是在步骤4770,把CPU安装到计算机***主板上。在步骤4775,CPU被安装到模块上。然后处理返回到判决步骤4710,以确定是否存在更多待安装的CPU。
如果CPU不安装到可拆卸模块和计算机***上,则判决步骤4725转移到“否”分支4735,在判决步骤4740确定是否把CPU安装到计算机***主板上。如果要在计算机***主板上安装CPU,则判决步骤4740转移到“是”分支4745,在步骤4780把CPU安装到计算机***上。
如果CPU不安装到计算机***主板上,则判决步骤4740转移到“否”分支4750,于是在判决步骤4755确定CPU是否安装到可拆卸模块上。如果CPU被安装到模块上,则判决步骤4755转移到“是”分支4760,于是在步骤4785,把CPU安装到可拆卸模块上。
如果CPU不安装到模块上,则判决步骤4755转移到“否”分支4765,于是处理返回到判决步骤4710,以确定是否有更多CPU要安装到计算机***和/或可拆卸模块上。
图48是显示信息处理***的方框图,该信息处理***是能够执行所述操作的计算机***的简化实例。
图48显示了能够执行所述计算操作的计算机***的简化实例的信息处理***4801。计算机***4801包括连接到主机总线4802的处理器4800。二级(L2)高速缓冲存储器4804也连接主机总线4802。主机-PCI桥4806连接主存储器4808,包括高速缓冲存储器和主存储器控制功能,并提供处置PCI总线4810、处理器4800、L2高速缓冲存储器4804、主存储器4808和主机总线之间的传输。主存储器4808连接主机-PCI桥4806以及主机总线4802。仅由主机处理器4800使用的设备,比如LAN卡4830,被连接到PCI总线4810上。业务处理器接口和ISA访问通路4812在PCI总线4810与PCI总线4814之间提供一个接口。这样,就将PCI总线4814与PCI总线隔离。诸如闪存4818之类的设备被连接到PCI总线4814。在一个实施中,闪存4818包括BIOS码,它结合用于各种低级***功能和***引导功能的必要的处理器可操作码。
PCI总线4814提供由主机处理器4800和包括例如闪存4818的业务处理器4816共用的各种设备的接口。PCI-ISA桥4835提供处置PCI总线4814与ISA总线4840之间的传输、通用串行总线(USB)功能性4845、功率管理功能性4855的总线控制,并且可以包括未示出的其它功能组件,比如实时时钟(RTC)、DMA控制、中断支持和***管理总线支持。非易失性RAM4820连接到ISA总线4840。业务处理器4816包括JTAG和I2C总线4822,用于在启动步骤期间与处理器4800通信。JTAG/I2C总线4822还连接L2高速缓冲存储器4804、主机-PCI桥4806和主存储器4808,提供处理器、业务处理器、L2高速缓冲存储器、主机-PCI桥和主存储器之间的通信路径。业务处理器4816还访问降低信息处理装置4801功率的***功率资源。
***设备和输入/输出(I/O)设备可以连接各种接口(例如,连接到ISA总线4840的并行接口4862、串行接口4864、键盘接口4868和鼠标接口4870)。作为选择,连接到ISA总线4840的超级I/O控制器(未示出)可以提供许多I/O设备。
为了把计算机***4801连接到另一个计算机***以在网络上拷贝文件,LAN卡4830被连接到PCI总线4810。同样,为了利用电话线连接把计算机***4801连接到ISP并由此连接到互联网,调制解调器4875连接串行端口4864和PCI-ISA桥4835。
尽管图48所示的计算机***能够执行所述的处理,但是该计算机***仅仅是计算机***的一个实例。本领域普通技术人员将会明白许多其它计算机***设计也能够执行这里所述的处理。
本发明的优选实施之一是应用(即模块中的一组指令(程序码)),它可以例如驻留在计算机的随机存取存储器中。该组指令在被计算机需要以前存储到另一个计算机存储器(例如被存储到硬盘驱动器)中,或者被存储到诸如光盘(供CD ROM使用)或者软盘(供软盘驱动器使用)的非易失性存储器中,或者经由互联网或者其它计算机网络下载。因而,本发明可以被实施为供计算机使用的计算机程序产品。此外,尽管所述的各种方法便于在被软件选择性激活或者重新配置的通用计算机中实现。但是本领域普通技术人员还将会认识到这样的方法可以在硬件、固件中执行,或者在为执行所需方法步骤而构成的更专用的设备中执行。
尽管已经显示和说明了本发明的特定实施例,但是本领普通技术人员将会明白,基于这里的教导,可以做出诸多改变和修改而又不背离本发明和其宽广范围,所附的权利要求将覆盖落入本发明真实精神和范围的所有这种变化和修改的范围。此外,应当理解,本发明仅仅由所附的权利要求来定义。本领域普通技术人员将会理解,如果意指所引入的权利要求组件的具体数量,则将在该权利要求中明确说明这种意图,当缺少这种说明时,将没有这种限制。对于有助于理解的一个非限制例子,以下所附权利要求包含引导权利要求组件的引导短语“至少一个”和“一个或多个”的使用。然而,这种短语的使用将不构成暗示由不定冠词“a(一个)”或“an(一个)”引导的权利要求组件,把包含这种引导的权利要求组件的任何特定权利要求限制为仅包含一个这种组件的发明,即使所述权利要求包含引导短语“一个或多个”或者“至少一个”以及不定冠词如“a”或“an”也是如此。上述内容同样适用于在定冠词的权利要求中使用。