[实施例]
A.整个系统的配置
图1以简要的形式表示采用本发明的笔记本式计算机(以下简称为系统)的主要硬件的构成部件。参考号10表示主CPU。在本实施例中,它是包括存储器控制器的Intel 80486SL。CPU10通过存储器通路11与主存储器12和PM存储器13通信。主存储器12装入BIOS、驱动器程序、OS和应用程序。另一方面,PM存储器13存储进行包括冬眠模式及其工作数据的电源管理的PM码(PMC)。PM存储器进一步分成一个存储PMC的区域和一个存储工作数据的区域。在POR(电源接通/复位)时,PMC被从ROM装入。
可以为PM存储器和主存储器分配不同的芯片,例如用SRAM作为PM存储器,用DRAM作为主存储器。本实施例用80486SL的体系结构将每块DRAM芯片的一个特定区域分配给主存储器12和PM存储器13。
PMC能够访问主存储器12和PM存储器13。另一方面,OS和驱动器不能够访问PM存储器13。存储器控制器可以切换CPU10的通信,以便CPU10或者与主存储器12通信,或者与PM存储器13通信。
CPU10通过地址/数据总线14与陷阱逻辑电路16、DMAC(直接存储器存取控制器)18、PIC(可编程中断控制器)20、PIT(可编程间隔计时器)22、串行口24、并行口26、RTC(实时时钟)28、CMOS30和ROM32相连。
陷阱逻辑电路16的输出端通过系统中断线52与CPU10的一个特定的引线端相连。陷阱逻辑电路16持续不断地监视总线14。当陷阱逻辑电路16检测到对设置在存储的寄存器中的地址进行访问的信号时,系统中断线52变得有效。当输入外部输入端的信号50变得有效时,陷阱逻辑电路16也启动系统中断线52。
本实施例采用Intel I/O芯片组82360SL,它包括陷阱逻辑电路16、DMAC18、PIC20、PIT22、串行口24、RTC28和CMOS30。在82360SL中,系统中断称之为SMI(系统管理中断)。当出现SMI时,存储器控制器使CPU10和PM存储器13中间发生通信,从而开始执行作为SMI处理程序的PMC。SMI处理程序(PMC)检测SMI的原因,并根据其原因转移到一个处理的例程。
串行口24通过串行口缓冲器34与一个或多个I/O驱动器相连。这些I/O驱动器可以自动地为分配给口24的I/O空间的基地址设置两个数中的任一个(例如3F8(H)或2F8(H))。
RTC28和CMOS30装在一块芯片上。备用电池36在即使系统断电的情况下也能给芯片供电。备用电池36可以是钮扣(coin)电池。
ROM32除了储存BIOS码外,也储存PMC。在系统的POR时运行的POST(加电自测试)将PMC从ROM32装入PM存储器13。
CPU10通过KMC(键盘/鼠标控制器)38从鼠标42和键盘44接收信号。在本实施例中,监视键盘44的一个矩阵的处理器(子CPU40)也作为电源管理功能的一部分。子CPU40监视键盘44的一个矩阵、LED46和主电池48。当子CPU40检测到发生预定的情况时,即例如按下一个正在工作的键、LED关闭或主电池48处于低电压状态,则信号线50变成有效。子CPU40通过总线41与总线14相连。于是子CPU通过总线41利用CPU10交换关于电源管理的指令和数据(包括冬眠)。
子CPU40向电源控制寄存器54输出一个信号,指示每个部件断电,或整个系统断电。详细情况将在下面结合图2给出。
CPU10通过总线14与VGA芯片56相连。VGA芯片是一个显示控制器,它通过LCDC(LCD控制器)60控制LCD板62,因此根据VRAM58的内容显示信息。否则可以安装包括CRT66和DAC(数模转换器)64的显示单元作为系统的一种选择方案。在这种情况下,VGA芯片56控制CRT66上的信息显示。
系统安装一个硬盘设备68和FDC(软盘控制器)70/FDD(软盘驱动器)72作为外部存储设备。硬盘设备68从本身的概念来看包括硬盘驱动器和安装在硬盘驱动器中的硬盘。硬盘设备68以下将称之为硬文件。当系统进入冬眠模式时,在硬文件上准备存储数据的文件(冬眠文件)。根据本发明,即使当硬文件是可拆卸的,冬眠/唤醒也能够得到支持。
除了上述硬件部件之外,系统中实际上还有许多I/F(接口)(例如在硬文件68和总线14之间设置了总线收发机)。这些部件对本领域的一般技术人员来说已经是已知的。为了简单起见,在附图中没有将它们画出。
下面将结合图2描述通电/断电机构。主电池的输出被输入至FET开关76,它能使整个系统一次断电。FET开关76的输出直接送至主存储器和VRAM。另一方面,FET开关76的输出分别通过FET开关80送至LCD背后照明电源的输入端,通过FET开关81送至直接与串行口24相连的集成的调制解调器,以及通过开关78送至主CPU10和其它外设。
每个FET开关与对应于电源控制寄存器54的一个位单元电连接。于是,子CPU40给寄存器54设置的值控制FET开关76、78、80和81的通电/断电。当系统进入冬眠模式时,当接收到PMC指令时,子CPU40给相应的位设置一个使FET开关76断电的值,由此使包括主存储器和VRAM的整个系统断电。当系统进入暂停模式时,当接收到PMC指令时,子CPU40使FET开关76通电,并设置一个使寄存器54中的FET开关78、80、81断电的值,由此使除主存储器和VRAM以外的系统断电。
电源控制寄存器54的清零端与系统的电源开关82电连接。于是当用户为系统接通电源时产生的信号对寄存器54的一个值复位,从而接通所有的FET开关,使整个系统通电。
B.冬眠文件的结构
如图3所示,本实施例确保在硬盘上为控制信息提供用于块A的存储单元,为文件分配信息提供用于块B的存储单元,为PM存储器中的工作数据提供用于块C的存储单元,为VRAM的内容提供用于块D的存储单元,以及为主存储器的内容提供用于块E的存储单元。如同下面将要详细地说明的那样,系统一接通电源,就需要控制信息。这种信息包括系统配置信息和块B至D的各个开始地址。工作数据是冬眠所需的另外的数据。工作数据包括硬件内容信息(以后说明)和不同的控制标志。控制标志的一个实例是其值可以由用户变换的标志,用于当系统进入或存在于冬眠模式时选择系统是否发出嘟嘟声。
块A至E可以是一系列物理地连成一个集成电路的区域。然而,块A至少需要驻留在盘上的一个固定位置中。于是在本实施例中,只有块A安排在CE同位标磁道的开头(它被保留,但不能被用户访问),它规定在硬盘的最内部分。其要点是,上述位置是固定的,并且可以从CE同位标磁道中间的一个扇区存储控制信息。
如同在C部分将要详细地看到的那样,块B至E是OS文件系统使用的位置,为的是以与用户文件相同的大小确保硬盘的用户分区中一个文件的一个位置。文件名被保留,在本实施例中是PM-HIBER.BIN。块B至E可在长度方向上延伸。当冬眠文件实际上储存数据时,可以确定块C至E的起始地址。构成块B至E的扇区通常以分散方式物理地驻留在硬盘上。扇区连接信息以表的形式记录在硬盘上的文件分配信息区域(当DOS用作OS时是FAT)。如同在D部分将要详细地看到的那样,PMC将构成PM-HIBER.BIN的扇区连接信息交换成唯一的分配信息,并将经变换的信息存在块B中。
C.冬眠文件的产生
以下结合图4至6详细说明根据本发明的冬眠文件的产生过程。
根据本发明,OS文件系统用来在块设备如硬文件等的用户分区提供一个冬眠文件。为此,准备一个文件准备实用程序(例如可执行的程序(.EXE文件)),用来生成冬眠文件。然而,可用多个块设备,PMC不需要直接访问所有的设备(不通过由OS系统文件管理的驱动器/BIOS)。这是因为PMC不能直接访问某些设备,其原因恰恰在于从实用程序看上去是逻辑相同的驱动PMC的I/F(硬件)是不合适的。
在图4所示的实施例中,OS文件系统可以访问可拆卸的盘(光盘、SSF(固态文件)、SRAM卡等)、网络驱动器(远程文件)、RAM盘、压缩分区、作为SCSI驱动器的硬文件1、作为IDE驱动器的硬文件2的分区1、2和3。对实用程序来说,这些都是相同的逻辑驱动器。
下面说明这些驱动器。起初,网络驱动器是用于通过一个网络连接的不同系统的驱动器。PMC不能访问网络驱动器以传送冬眠/唤醒数据。RAM盘是一个想象的驱动器,并且没有准备,PMC能够访问的I/F(由于RAM盘在本质上是易失性的,在冬眠模式期间盘不能保存数据)。
压缩分区是一个用于存储压缩数据的驱动器。在压缩分区中,具有特定算法的相应的驱动器压缩将要被写入驱动器中的数据,或扩展将要读出的数据。PMC不能采用压缩/扩展算法,因为对应于压缩分区的驱动器可以在OS文件系统的管理下运行。因此,压缩分区对准备冬眠文件来说是不适合的。此外,当只有IDE驱动器准备作为硬文件的I/F时,PMC才可以直接访问,PMC不能访问硬文件1。
在硬文件2上准备的分区4是一个隐分区。此外,分区5是一个其格式在OS文件系统上不支持的驱动器。当DOS用于OS文件系统中时,OS/2的HPFS不支持(OS/2是IBM公司的注册商标)。即使当PMC能够访问这些分区4和5,OS文件系统也不能访问这些分区4和5。
当实用程序是指OS文件系统时,这些驱动器中的某一些变得不适合准备冬眠文件。在图4所示实施例中,网络驱动器便是这样的一种驱动器。然而对实用程序来说,PMC是否能访问其它驱动器还不清楚。
可以想象,分配给驱动器的驱动器字母可以使实用程序指定一个冬眠文件准备文件。然而,根据安装的支持驱动器的驱动程序的等级,驱动器字母是不同的。此外,当多个可以引导的驱动器驻留时,实用程序不能通过利用一个驱动器字母以固定的方式指定该驱动器。另一方面,PMC不知道驱动器和驱动器字母之间的相互关系。
本发明以下述方式确定一个驱动器,它能够被PMC访问,并且适用于实用程序准备冬眠文件。
首先结合图5详细说明在POR时的系统操作。当电源开关接通或当系统复位时,运行POST程序(步骤502)。当POST将PMC装入PM存储器的过程完成以后,暂时执行PMC。PMC可以访问的每个驱动器查找冬眠文件(PM-HIBER.BIN)(步骤503)。查找完成以后,再次执行POST,从而进入正常的引导过程或唤醒引导过程(步骤504、505)。
下面结合图6说明由冬眠文件准备实用程序执行的步骤。当用户通过图形用户接口输入一个命令或给出一个指令启动冬眠文件时,开始执行文件准备实用程序(步骤601)。在步骤602,实用程序调用BIOS,了解冬眠文件所需的规模(主存储器的总体大小,PM存储器和VRAM的工作数据区)。
在步骤603,询问规模比需要的PMC在步骤503查找的规模大的冬眠文件(PM-HIBER.BIN)是否存在。如果这样的文件存在,则文件可被用来存储数据。于是这之后的过程结束。
当PMC的回答是否定的,则对每个驱动器来说执行以下步骤,实用程序可以访问除以下所述驱动器以外的驱动器,所述驱动器根据OS文件系统象网络驱动器一样是不适合的。
首先确定所选择的驱动器的规模是否大于上述所需的规模(步骤606)。如果判断的结果回答是肯定的,则用OS文件系统临时准备一个小的文件,其文件名保存在驱动器中,从而通知PMC这样一个事实,即文件临时准备好了(步骤607)。临时文件的名可以是PM-HIBER.BIN或其它的名称。准备它的文件的规模可以是0。
已经被通知上述事实的PMC立即打算读临时文件。当PMC任务完成后,它向实用程序发出一个肯定的答复。当驱动器收到来自PMC的肯定答复后,PMC可以访问该驱动器。PMC的规模也足够大。因此,实用程序擦除起初的临时文件。这之后,通过使用OS文件系统,在驱动器上准备具有和上述必需文件相同规模并且文件名是PM-HIBER.BIN的冬眠文件(步骤609)。
当PMC未发出确认时,则擦除临时文件(步骤611)。然后对选择的文件来说重复步骤606、607和608。当驱动器的规模不够时,跳过步骤607、608和611。当PMC对任何驱动器都不发出肯定的答复时,系统通过发出嘟嘟声或显示一条信息,通知用户不能用这种设备执行冬眠文件。这之后,操作序列完成(步骤614)。
在上述实施例中,检测适于准备文件的驱动器,并且立即准备冬眠文件。作为对这一实施例的修改,检验冬眠文件的准备是否对所有的逻辑驱动器都适合之后,可以提出对用户适合的一个驱动器。在这种情况下,提示对用户适合的驱动器,以便提出在由用户所选择的驱动器上准备一个冬眠文件。
D.存储/恢复序列概述
参照图7,说明进入或存在于冬眠模式的存储/恢复序列概况。当主CPU执行PM存储器的PMC时,进行图中所示的步骤701至708,以及步骤713至719。
首先说明存储/恢复序列。如图1所示,当子CPU40检测到出现预定情况时(例如按下一个正在工作的键或系统处于低电压状态)陷阱逻辑电路16向主CPU10传送一个系统中断信号。这使得正在执行的任务暂停,并且系统操作的控制权从OS文件系统或一个应用程序转移到PMC(陷阱处理程序)。
当PMC分析系统中断的原因,并且确定通过信号线50加入的外部现象对系统中断负责时,PMC转移到存储操作执行例程,以便进入冬眠模式。
开始PMC检测I/O设备中存在的活动(步骤701)。当存在活动时(例如执行DMA),经过预定时间之后(例如10秒)再次重复检测活动,一直等到检测到I/O活动。
当没有检测到I/O活动时,PMC在PM存储器中保存硬件前后关系信息。下一步,系统将来自PMC存储器的包括硬件前后关系信息的整个工作数据保存到硬盘设备中(步骤702)。硬件前后关系信息的典型例子包括每块芯片如CPU的寄存器值,中断控制器、DMA控制器和视频控制器的寄存器值,以及计时器的计时值。
在步骤703,PMC将VRAM的原始数据传送给硬盘设备。这时为了在硬盘上进行存储,可以压缩VRAM的数据。在步骤704,表示冬眠的存储操作有效的图符图象写入VRAM,以便在显示设备中显示。
在显示一个图符的同时,PMC将主存储器的原始数据传送给硬盘设备(步骤705)。这时,为了存储在硬盘上,可以压缩主存储器中的数据。在步骤706,来自CMOS的系统配置信息存储在硬盘设备中。系统配置信息的典型的例子包括与系统主体(便携式计算机)相连的任选设备的类型和数量,以及主存储器的规模。
在步骤707,PMC设置表示上述序列已经经过的冬眠标记。冬眠标记是2字节信息,它是存储在图中所示区域A中的一条控制信息。
最后,PMC向子CPU发出一条命令,使系统断电(步骤708)。
接下来说明恢复序列。当系统接通电源时,主CPU执行存储在ROM中的POST(通电自检测)程序(步骤712)。POST进行以下操作。
(ⅰ)当系统配置修改时,例如断电期间存储器增加,或改变FDD的数量,POST检测到这种修改,通过利用建立程序,直接或间接地重写CMOS的系统配置信息。
(ⅱ)作为与FDD相关的操作,系统检测FDD/FDC是否正常运行,系统需要在冬眠唤醒前从FDD引入,并且去除FDD,安装另一单元或设备。
(ⅲ)PMC从ROM传送至PM存储器。
(ⅳ)检测冬眠标记。
当系统需要从FDD引入,或当系统不经过步骤701至708断电时,系统进入正常引导过程,不需要将整个系统运行的控制权传送给PMC。当检测到硬件故障,如FDD/FDC不能正常运行时,系统停止。
这样根据本发明,系统是否经过冬眠序列的个人历史信息被保存在硬盘设备中,而不是保存在系统的其它部件中。在POR时,POST利用硬盘设备中的个人历史信息确定冬眠唤醒或正常引导是否有效。因此,用可拆卸的硬盘设备起动用其它装置的任务,这些装置的功能与进行将要恢复的存储操作的装置的功能相同。换句话说,被冻结的系统环境可以自由移动。
当确认存在冬眠标记、即冬眠前后关系时,整个系统的控制权从POST移动到PMC。开始PMC将硬盘与CMOS的系统配置信息进行比较(步骤713)。当检测到硬盘和系统配置信息不一致时,用图符等显示故障信息,提示系统允许用户选择以下任一种操作:使当前冬眠标记无效,或者在修改前通过对系统断电恢复系统设置(步骤714)。此外,当提示恢复系统配置时,提出修改前的系统配置,以便指导用户。
当硬盘设备是可拆卸的时,这里存在着极大的可能性即数据存储在硬盘时的环境(第一环境)不同于系统处于唤醒状态时的环境(第二环境)。例如在一些情况下,第二环境中的主存储器的规模可以较小。此外,尽管正在运行的应用程序要求I/O设备的基地址是一个具体的值,但在第二种环境却得不到该具体值。另外执行的应用程序在第一种环境下访问软盘。在第二种环境下没有软盘。在这种情况下,产生了各种缺点:唤醒本身变得不可能了,恢复的任务破坏数据等。于是检测系统配置的功能是非常重要的。
当确认环境允许唤醒功能时,PMC将表示PMC正在恢复(唤醒)的图符图象写入VRAM,以便将它显示在显示设备上(步骤715)。在显示冬眠图符的同时,PMC从硬盘恢复主存储器的原始数据(步骤716)。然后擦除图符,从硬盘恢复VRAM的原始数据(步骤717)。在步骤718,包括硬件前后关系信息的工作数据在PM存储器中恢复。然后硬件被恢复到例如I/O设备和CPU寄存器的地址。在最后一步,PMC为FDD变更线仿真进行设定(步骤719)。上述序列完成以后,系统的控制权转移到OS文件系统和应用程序。中断点之后恢复执行任务。
E.冬眠文件的保存/恢复操作的细节
下面结合图8将更具体更详细地说明在冬眠文件(PM-HIBER.BIN)(步骤702、703、704、705、706和707)中保存数据的操作。
一开始,PMC在存储器的PMC区域中存储硬件前后关系信息(步骤801)。于是如果硬件前后关系信息在开始就存储了,则可以修改硬件前后关系信息,以便于后来的存储操作。
在步骤802,访问硬盘的基本引导记录(MBR),以便得到硬盘设备的分区信息(起始地址和每个分区的大小)。MBR是一个同位标磁道,它位于硬盘的最外区域。同位标磁道被保留,但不能被用户访问。
在步骤803,PMC得到除比预定值小的分区以外的每个分区的路线目录的一个地址。由于地址计算方法是公知的,所以这里不再赘述。例如,当一种DOS作为OS文件系统时,位于分区前面的BIOS参数块(BPB)用来计算分区的路线目录的一个地址。
在步骤804,顺序访问计算地址的目录,查找文件名(PM-HIBER.BIN)。如果在任何目录中都没有检测到PM-HIBER.BIN,则不执行冬眠文件,并且通过发出嘟嘟声或显示不执行的信息将此通知用户。
当检测到PM-HIBER.BIN时,跟踪文件分配表(步骤805)。图9表示一个实例,其中给出DOS作为OS文件系统,当四个扇区定义为一个群集时给出的文件分配被分成从群集100开始直到群集149结束的一个扇区块,从群集500开始直到群集549结束的一个扇区块,以及从群集300开始直到群集349结束的一个扇区块。路线目录中的PM-HIBER.BIN的入口表示第一群集的号100。如同已经知道的那样,根据1∶1的比例在每个群集中形成FAT(文件分配表)。FAT描述连续的群集号(即FAT号)或表示文件最后的一个特定的号。在步骤805,PMC访问硬盘一次或多次,从而跟踪200FAT的列表。
这样得到的文件分配信息在步骤806被变换成适于存储/恢复的唯一的分配信息。图10表示上述变换之后形成的信息。所示实例对应于图9。PMC产生8字节长的数据,其中记录前扇区地址(来自实际上在地址前面的扇区地址的相对地址)和长度(扇区号)。变换之后的分配信息在PMC存储器的工作数据区中得到暂时的缓冲。
再看图8,在步骤807,PMC检测PM-HIBER.BIN的文件大小是否可以支持当前安装的VRAM、主存储器和PM存储器的工作数据的整体规模。例如,当冬眠文件产生后主存储器增加时,不是所有的数据都能保存的。然而当文件规模不够时,系统拒绝执行冬眠操作。这一事实是通过发出嘟嘟声等通知的。
当文件足够大,用在步骤806产生的分配信息本身将来自PMC的分配信息存在冬眠文件中(步骤808)。然后工作数据、VRAM的内容和主存储器的内容分别存在冬眠文件中(步骤809至811)。当向硬盘转移数据时,是指PMC存储器中的文件分配信息。
最后,准备控制信息,以便将它存储在控制信息区(图3中的区域A)(步骤812和813)。控制信息项分别包括图3所示的块B、C和D的起始地址,位于CMOS的当前系统配置信息和冬眠标记。其中系统配置信息包括设备的基本I/O地址、主存储器的大小,以及设备配置(设备的类型和数量)。基本I/O地址根据与串行口连接的每个设备,表示两个基地址的哪一个是例如3F8(H)或2F8(H)。
接下来参照图11,下面将从冬眠文件(PM-HIBER.BIN)更具体地说明数据恢复操作(步骤713、716和717)。
一开始,PMC访问CE同位标磁道的控制信息区,读那里的控制信息,以便了解硬盘上的冬眠文件的位置(步骤1101)。由于控制信息区中的地址是固定的,所以可以立即访问地址。在步骤1102,包括在控制信息中的系统配置信息与唤醒机构的CMOS中的系统配置信息进行比较。
在步骤1103,PMC用包括在控制信息中的起始地址访问硬盘上的文件分配信息块,以便在PMC中恢复文件分配信息。PMC起初用文件分配信息恢复主存储器的内容,然后恢复VRAM的内容(步骤1104和1105)。在这些步骤中,利用包括在控制信息区中的主存储器块和VRAM块的起始地址。最后,使硬盘上的控制信息无效,从而完成恢复操作(步骤1106)。由于冬眠标记也是无效的,所以只要系统不进入冬眠模式就能通过正常过程用加电操作引导系统。
此外,虽然说明省略了,但在实际上还有这样一步,它是在图8的步骤810和811之间以及图11的步骤1103和1104之间显示一个冬眠图符的步骤。应注意这一事实,即在图11的步骤1105和1106之间还有恢复H/W前后关系信息的步骤。
构成硬盘上的冬眠文件的扇区位置信息以复杂表形式由OS文件系统管理。因此根据本发明,在开始向冬眠文件转移数据之前,访问由OS文件系统管理的复杂表或驱动程序,以便得到这些扇区的位置信息,从而将位置信息转变成独立的分配信息,并将该信息输入至缓冲器(PM存储器)。然后当数据从VRAM和存储器转移到硬盘设备时,其独立的信息专门用来了解文件的扇区位置。因此,当数据被转移到硬盘时,可以不访问硬盘上的如FAT区的文件位置信息区,以便能够加速存储操作。
此外根据本发明,在执行存储操作中准备的独立冬眠文件上的分配信息被写入冬眠文件的部分。同时,其起始地址写在位于硬盘的固定地址上的一个块中。当数据从硬盘设备转移到VRAM和存储器时,存储在文件中的分配信息用来了解构成文件的扇区的位置。因此,当数据从硬盘设备转移时,不需要访问硬盘上的如FAT区域那样的文件空间分配信息区。于是当唤醒操作时,为了得到冬眠文件的分配信息而访问硬盘的频率可以最大限度地减小,以便能够加速恢复操作。
F.图符显示操作
参照图12,下面将更具体地说明与图符显示有关的操作(步骤703至705和步骤715至717)。
根据本发明,为了进行管理而将主存储器的内容和VRAM的内容分开。当系统进入冬眠模式时,PMC在冬眠文件上存储VRAM的内容(步骤1201)。当存储原始数据之后,设置VGA芯片(视频控制器)为图形模式,并在VRAM上写入图符图象,以便在与系统主体相连的显示设备上显示图象(步骤1203和1204)。在数据从主存储器转移到硬盘上的同时,一直显示图符。
当唤醒操作时,设置VGA芯片为图形模式,并在VRAM上写入图符图象,以便在显示设备上显示图象(步骤1205和1206)。在数据从硬盘转移到主存储器的同时,一直显示图符(步骤1207)。之后恢复VRAM的原始数据(步骤1208)。
在访问VRAM的同时(步骤1203至1208),不显示图符。然而,访问VRAM的时间比访问主存储器的时间要短许多(步骤1204和1208)。在步骤1203和1208,只是这一时刻不显示图符,这在实际上没有任何缺点。
图13表示步骤1203所示屏幕的一个实例。图符101表示系统,102表示硬盘设备,103表示数据转移的方向。这些图符被图符框104和105包围。图符框104内的区域106的颜色和区域107的颜色不同于背景108的颜色。
图14表示图12的步骤1208所示屏幕的一个实例。除了图符101和102的位置改变之外,本例与图13的对应部分相同。
参照图15,具体说明图12的步骤1203和1206中共同的图符绘制步骤。一开始,PMC设置整个VRAM上的背景色数据,以便用背景色遮盖屏幕(步骤1501)。然后PMC用不同于背景的颜色涂图符框内的区域106和107(步骤1502)。如图13、14所示,区域106和107是矩形,因此程序(PMC)可以非常方便地在屏幕上指定其位置,对其内部上色。在步骤1503和1504,从PM存储器读出图符101、102和103的图象数据,以便将它们设置在VRAM上。由于图符图象的数据量很小,所以图象预先存在ROM中,以便在POR时将它们写在PM存储器上。
冬眠图符可以是静止图象。然而,当数据在硬盘和主存储器之间转移时,有规律地访问VRAM,重写内容,从而随着时间改变冬眠图符。例如,闪烁箭头图符103或在系统图符101中增加表示保存/恢复数据量的图象。
根据本发明用这种方式将主存储器块和VRAM数据块分开,以便管理。当系统进入冬眠模式时,首先存储VRAM的原始数据。然后存储主存储器的原始数据。此外,当系统处于唤醒状态时,在VRAM的原始数据恢复之前恢复主存储器的原始数据。即不管是保存操作还是恢复操作,对VRAM的访问过程和对主存储器的访问过程都是不同的。
假定为了管理不将主存储器块和VRAM数据块分开。当主存储器的内容保存之前保存VRAM的内容时,VRAM的内容必须在主存储器的内容之前得到恢复。因此当系统进入冬眠模式时,在唤醒时即使图符是显示的,这时图符也不能显示。相反,如果首先保存主存储器的内容,然后保存VRAM的内容,在进入冬眠模式时不能显示图符。
因此为了在进入冬眠模式时和唤醒时在不损坏VRAM中的原始数据的情况下显示图符,如同本发明的说明书中所提出的那样,必须通过将主存储器数据块和VRAM的块分开,从保存操作的时间到恢复操作的时间改变对VRAM和主存储器的访问顺序。
G.FDD变更线仿真
下面参照图16和22说明由PMC支持的FDD变更线仿真。
图16表示从图1中分离出来的与FFD变更线仿真有关的硬件部件。图1所示的部件包括安装在FDD中的FD(软盘)94,FDD和FDC之间的变更线92,FDC中的变更线状态寄存器90,和存储将在陷阱逻辑电路中监视地址的陷阱逻辑电路96。
访问FD的方法一般根据以前是否已经访问过FD而不同。当以前已经访问过(读/写)FD,则那时读出的文件分配信息(当DOS作为OS文件系统时)被保存在由OS文件系统管理的一个预定的存储器地址中。因此,不再需要从FD中读分配信息。这样加速了第二次对FD的访问。
下面的机构通常用来确定主存储器中FD上的分配信息是否有效。连接FDD与FDC的变更线是一根信号线,专门用来监视FDD上的FD的连接和拆卸。当系统接通电源时,变更线自动启动。然后POST通过FDC访问FDD,检测FD的存在,并且变更线自动变成不起作用。当没有检测到FD时,变更线保持起作用。此外,当插入FD时,变更线变为起作用。当实际上访问插入的FD时,变更线自动变成不起作用。当取出FD时,变更线重新变为起作用。在本实施例中,高状态对应于起作用状态,低状态对应于不起作用状态。
标志反映变更线的状态。I/O地址3F7(H)所分配的变更线状态寄存器(图16中的寄存器90)的位7是那时的一个标志(变更线标志)。位7表示假定值为1时变更线起作用,而假定值为0时变更线不起作用。
BIOS或驱动程序直接访问FDC(例如,当DOS作为OS文件系统时是BIOS,而当OS/2作为OS文件系统时是驱动程序)。BIOS/驱动程序读变更线状态寄存器的内容,当位线7假定为1时,使主寄存器中FD上的分配信息无效,并且读FD上的新的文件分配信息。
所以当系统进入冬眠模式时,FD插入FDD中。此外当已经访问过FD时,将FD的文件分配信息保存在硬盘上,并且当系统唤醒时在存储器中恢复。
然后在冬眠模式FD交换时,POST检测FD驻留在FDD中。当完成唤醒序列时,变更线信号变为不起作用。因此,BIOS/驱动程序有其不足之处,它确定将变为有效的旧的FD上被存储的文件分配信息,并且用该信息访问当前插入FDD中的FD,并读出错误数据,从而破坏FD上的数据。在暂停之后的恢复情况下,也存在引起类似问题的可能性。
与暂停或冬眠的媒体转换有关的问题也存在于卡式存储器媒体中(如SSF)。然而在这种媒体的情况下,已经准备了完善的软件。换句话说,当卡安装在系统上时,系统进入低耗电模式。当系统离开该模式时,软件使系统误认为似乎在进入低耗电模式时卡已经拆除了。另一方面,当软件恢复或唤醒时,它使系统误认为似乎卡已经安装了。当接收这种虚构信息时,系统使主存储器中的卡上的文件分配信息无效,并得到新的分配信息。这样当进入并存在于低耗电模式时,软件对带有该软件的系统进行虚构操作,以便停止向卡供电。
然而,在FD的情况下,使用这样的方法,其中状态变更线信号的状态根据硬件随着预定时间变化,状态由CPU读出。当调整所形成的方法以便解决上述由交换FD引起的问题时,这一切都是在低耗电模式下进行的,必须采用的装置不同于卡式存储器媒体。
因此,本发明这样来虚构它的状态,即当唤醒操作以后或完成其序列以后,BIOS/驱动程序第一次检测变更线状态插头。于是即使FD插入FDD,软件也使系统误认为似乎FD已经从FDD中移去,从而在FD上闪烁文件分配信息。具体地说可以用两种方法。
(1)对访问变更线状态设置陷阱,以便暂时虚构一个变更线状态标志的值。
(2)准备一块板,它允许通过硬件进行变更线信号操作。
上述每一种方法都将根据从冬眠模式产生的唤醒模式予以说明。然而请注意,本发明可以用于从暂停模式产生的恢复操作。
(1)最新的便携式计算机提供了对I/O访问设置陷阱的机构。这种机构可以通过将Intel 80486SL(CPU)和82360SL(陷阱逻辑电路)结合起来实现。当在82360SL的寄存器(图16中的寄存器96)中设置I/O地址时,80486SL发出访问I/O地址的指令,这时82360SL向系统发出系统中断指令。对系统中断作出响应,启动处理程序(PMC)。当分析中断的原因以后,已经确定系统中断是由对一个预定的I/O地址访问引起的,这时系统转移到陷阱例程。
一般地当访问设备之前发出一条访问设备的命令时,已经用陷阱机构对断电的设备通电。虚构变更线状态的第一种方法采用陷阱机构。
参照图17,下面详细说明与虚构操作有关的步骤流程。如上所述,一旦加电之后运行的POST确认冬眠标记,系统就进入唤醒序列(步骤171、172)。接通电源时变更线为起作用状态。然而,当POST检测到FD仍然插在FDD中,则系统变为不起作用。
在步骤173,PMC设置系统处于准备变更线仿真的状态。具体地说,陷阱逻辑电路16(见图16)的寄存器96的值设置为3F7(H)。这之后,系统的控制权返回OS/应用程序。
当恢复执行OS/应用程序之后第一次访问FD时,完成对变更线状态的虚构(步骤174)。下面将结合图18和19进一步说明步骤174。
图19表示BIOS/驱动程序的代码部分。当执行指令MOV DX,3F7(H)时,CPU的DX寄存器装入3F7(H)。然后当执行指令IN AL,DX时,访问I/O地址3F7(H),以便使CPU中的AL寄存器能够存储变更线状态寄存器的内容。这时执行系统中断,从而执行陷阱处理程序(PMC)。处理程序分析系统中断的原因,从而转移到执行访问I/O地址3F7(H)的陷阱的例程。例程设置AL寄存器中的位7的值为1,并将它返回到BIOS/驱动程序。因此下面的指令TEST AL,80H将位7的值设置为1的信息传送给BIOS/驱动程序。根据这一点,OS/驱动程序使FD中的文件分配信息在存储器中闪烁。然后为了访问FD上的所需文件,系统读出FD中的分配信息。
顺便说明一下,在返回BIOS/驱动程序之前,PMC清除在陷阱寄存器中设置的值(图17的步骤175)。因此,在第一次之后访问FD期间不虚构变更线状态。
(2)第二种方法是通过向板增加硬件部件实现的,如图20所示。所增加的部件是包括寄存器112的I/O口110、I/O地址译码器114、或门116和信号线118和120。一个特定的I/O地址(1500(H))被分配给寄存器112。表示寄存器112的一个特定位值(位0)经信号线118输入至或门116的一个输入端。变更线信号从FDD92输入至或门116的另一输入端。或门116的输出端与变更线状态寄存器90的位7相连。或门116的输出变成了寄存器90的位7的值。I/O地址译码器114监视地址总线14,对地址信号3F7(H)译码,从而向I/O口110输出一个脉冲信号。译码器110的输出端与寄存器112的清零端相连。
参照图21说明第二种方法的步骤流程。步骤211和212与图17的步骤171和172相同,故省略对它们的说明。在步骤213,为了设置FDD变更线仿真,指明了PMC命令I/O地址1500(H),从而设定位0的值为1。结果如图22所示,变更线状态保持不起作用,以便用POST访问FDC。然而,由于信号线118变为起作用,信号线120的状态变为起作用。因此变更线状态寄存器90的位7设置为1。
步骤213之后,系统的控制权返回OS/应用程序。当执行OS/应用程序时,寄存器90中的位7的值保持为1,并且继续虚构变更线状态。
当恢复OS/应用程序之后BIOS/驱动程序开始读地址3F(H)以便访问FD时,位7的值变为1。于是OS/驱动程序闪烁FD的文件分配信息。
在对地址3F7(H)访问期间,从译码器114产生一个脉冲,它对寄存器112清零。于是,或门116的输入都变得不起作用。变更线寄存器90的位7的状态不变。FDD变更线仿真复位(步骤214)是以这种与第一种方法不同的方法完成的。
一些系统没有陷阱机构。在某些情况下,即使一些系统有陷阱机构,陷阱机构的运行也是受限制的。在这种情况下,第二种方法是有效的。
根据本发明,有可能恢复和唤醒从可拆卸的外部存储设备恢复一个任务所必需的信息,而不管打算唤醒的系统是否已经执行了冬眠操作。