专利名称:文件结构系统的制作方法
技术领域:
本发明一般涉及计算机系统的改进,尤其涉及用于高效文件处理系统的系统和方法。
本申请涉及题为“面向目标的结构系统”的专利申请,该申请是由沃滕(Debra L.Orton)等人在1992年12月23日提交到美国联邦专利商标局并转让给本申请人。该申请亦在1993年12月23日提交到中国专利局,其申请号为93112880.3。该专利申请的内容结合于此作为参照。
本申请的部分内容受版权保护。版权所有人允许在专利商标局中该专利申请作为专利文件被传真复印,但保留所有其它的版权。
文件处理是计算机技术当前最流行的应用。先有技术中的字处理技术的例子包括(WordPerfect)文字处理程序以及Microsoft公司的Word文字处理程序。这些产品被设计用于各种操作系统和不同的硬件环境。有些硬件环境和操作系统是较不很可靠的。为了避免丢失数据或其他信息,这些产品能在系统建立时具有备份能力。当用户指定时间过去时,就会在用户选定启动备份时进行备份操作。但若在备份操作之间出现系统故障,那么自最后一次备份操作之后的信息就会丢失。
因此,本发明的主要目的是提供一种通过把面向目标的技术运用于文件处理上,从而自动保存文件的系统和方法。该系统自动地把文件的变化作为目标存到非易失性存储器中,然后,在断电故障或其他问题出现时,文件的顺序改变被存在运行记录中以再生该文件。
图1是根据本发明最佳实施例的一个个人计算机系统框图;图2A和2B是根据一个最佳实施例的处理流程图;图3是根据一个最佳实施例在恢复一个文件时的处理流程图;以及图4是根据一个最佳实施例的与保存一个文件有关的处理流程图。
本发明最好在IBM PS/2或Apple Macintosh计算机之类的个人机中的操作系统里实施。图1示出了具有代表性的硬件环境,它展示了根据本发明的工作站的典型硬件构造,它包括一个中央处理器10(例如常规的中央处理器),该中央处理器有一内部非易失存储器11以及多个经系统总线12相互连接的其他部件。图1所示工作站包括一个RAM14,ROM16,用于连接诸如磁盘部件20和软盘21之类的外设到总线上的I/O适配器18,用于把键盘24,鼠标器26,扬声器28,麦克风32以及/或其他用户接口设备(例如触摸式屏幕设备)等连到总线的用户接口适配器22,用于把工作站连到数据处理网络23的通讯适配器34,以及把总线连到显示设备38的显示适配器36。该工作站中的操作系统为Apple Sys-tem/7一类的操作系统。
在一个最佳实施例中,本发明是利用面向目标的编程技术以C++程序语言实现的。正如本领域一般技术人员所理解的,面向目标的编程(OOP)目标是包括数据结构和数据中的操作的软件实体。根据任一现实社会实体的特征(似其数据元素表示),以及行为(以其数据操纵功能表示),这些单元可以使该现实社会实体直接模型化。以这种方式,目标可以成型为具体的事物,例如人和计算机,而且亦可成型为抽象概念,例如数字或几何概念。目标技术的好处来自于三个基本原理封装,多形性以及继承。所谓封装(encapsulation)是指一种把数据以相应的过程存储起来的技术;而多形性则是指在一个共同的界面后面隐藏不同实现,从而简化目标之间的通信的能力。继承则是指一种处理,其中,分类可以利用在分类层级的分支上高于该分类的所有分类所限定的方法和变量。
目标根据其功能的工作来隐藏(或封装)其数据的内部结构和算法。除了展现这些实施细节,目标展示清楚表达其抽象而无冗余信息的界面。多形性则将封装又推进一步。该概念是多个形状,一个界面,一个软件部分可以提出另一部件的请求而无需知道那一部件倒底是怎样的。接收该请求的分量对其进行解释可根据其变量和数据确定如何执行该请求。第三个原理是继承,它允许开发者再使用先有的设计和编码。这一能力使开发者避免擦除以生成软件。进而,通过继承,开发者获得继承的行为的子分类。从而使开发者将其客户化以满足特定的需求。
一种先有技术的方法是在过程环境中对目标和分类库进行分层。市场上的许多应用结构都采用了这种设计方法。在这种设计中,在单一操作系统的顶部有至少一个层级。虽然这一方式利用了目标层级中的封装,多形性以及继承这些原理,而且是对过程编程技术的重大改进,但其仍有限制。其困难之处在于虽然开发者再使用他们自己的目标是很容易的,但使用其他系统的目标则很难,而且开发者仍需由过程操作系统(OS)调用进入较低的非目标层级。
面向目标编程的另一方面是应用开发的结构方式。结构的最合理定义之一是由依利诺易斯大学(University ofIllinois)的强森(Ralph E.Johnson)以及普渡(Purdue)的卢棱(Vincent F.Russo)做出的。在他们1991年发表的题为“面向目标设计的再使用“(Reusing Object-Oriented Designs)(该文发表在依利诺易斯大学技术报告UIUCDC91-1696页)一文中提出了以下定义“一个抽象分类是一组合作执行一组响应的目标的设计。因此,一个结构是一组合作执行所确定的组的计算响应的目标分类”。从编程观点出发,结构实际上是一组提供工作应用程序的预制结构的内连目标分类组。例如,一个用户界面结构可以提供绘制视窗,卷动条以及选项屏等的支持和“系统预置”行为,由于结构基于目标技术,该行为可被继承和置换以使开发者对结构进行扩展并在一特定的区域生成客户化方案。由于编程不改变初始码而只是扩展软件,上述优点便成为一个优于传统编程的主要特点。此外,由于结构提供了体系结构指导和模型并在同时允许为问题范畴提供了唯一的独特行为,开发者不会盲目地通过编码层级进行工作。
从商业观点来看,结构被视为在一特定知识领域封装或嵌入专门知识的方式,公司开发机构,独立软件销售商(ISV)以及系统集成者已经提出了在特定领域中的专门知识的要求,这些特定领域包括制造,财会,以及现金交易。该专门知识被嵌入编码中。结构允许这些开发机构捕捉并封装该专门知识的通用特性,其过程是将其嵌入机构的碥码之中。首先,这使得开发者生成或扩展利用该专门知识的应用程序。因此把问题解决一次并使商业规律和设计被前后一致地实施和使用。另外,在结构和结构上的嵌入的专门知识,对已经在市场上获得生产和销售的知识(例如生产,财快或生物技术)的那些机构有策略的有益含义,或生物技术需要包装,再销售,以及推广应用其知识,并进而推广和开发普及其技术。
从历史上看,结构(framework)只是在最近才成为个人计算机的主流概念。这一发展得力于面向目标语言(例如C++)的发展。C++最早是在UNIX系统和研究人员的工作站上实现的,而不是在商用个人计算机上发现的。正是C++语言以及其他面向目标的语言(例如Smalltalk等等)使得许多大学和研究项目产生了当今商用结构和分类库的先驱。这些例子包括斯坦福大学(Standford University)的InterViews,卡内基—麦伦大学(Carnegie-Mellon University)的AndrewToolkit,以及赤瑞茨大学(University of Zurich)的ET++结构。
根据想解决的问题以及涉及的系统层级,有多种结构。这些结构包括帮助开发用户界面的应用程序结构以及提供基本系统软件服务(例如通讯,打印,文件系统支持,图形等等)的低级结构。应用结构的商用例子是MacApp(Apple),Bedrock(Symantec),OWL(Borland),NeXtStep App Kit(NeXT),以及Smalltalk-80 MVC(ParcPlace)等等。
结构编程要求开发者有与常规的其他系统不同的新思维方式。事实上,它与传统概念的“编程”全然不同。在以前的操作系统中(例如DOS或UNIX),开发者自己的程序提供了所有结构。操作系统通过系统调用提供服务——开发者的程序在需要服务时以及服务完成控制返回时进行调用。程序结构基于嵌入开发者写的编码中的控制流程。
当结构使用时,其过程相反,开发者不再依赖控制流程。开发者必须根据执行流程事先了解编程任务的趋向。进而,必须依据目标的响应性进行思考,这必须根据结构确定何时执行任务。由开发者所写的程序由不是开发者写的而且开发者从未见到过的编码激励。控制流程中的转换可能对只在过程编程中有经验的开发者构成较大的心理障碍。但是,一旦明白之后,结构编程所需工作就大大少于其他编程。
以一个应用结构(application framework)给用户提供预制功能性的同样方法,系统结构(正如在最佳实施例中包括的)通过提供系统级服务而实现同样概念。系统程序员之类的开发者可用其进行子分类/置换以生成客户化的方案。例如,考虑一个可以提供基础以支持视频,音频,MIDI、动画等等新的以及多功能设备的多媒体结构,需要支持一种新设备的开发者必须写一个设备驱动程序。若以结构完成这一任务,则开发者只需提供该新设备所要求的特性和行为。
在这种情况下,开发者提供将为该多媒体结构调用的某种成员功能实施。开发者可得到的好处在于每类设备需要的通用编码已由多媒体结构提供了。这意味着开发者要编写,测试和检测的设备驱动程序编码减少了。使用系统结构(Sys-tem Framework)的另一例子是对于计算机系统接口(SCSI)设备,NuBus卡,以及图形设备提供各自的I/O结构。由于有继承功能性,每个结构为在其设备类别中发现的通用功能性提供支持。其他开发者则可依据对各种设备一致的界面。
本发明的一个最佳实施例采用了结构的概念并将其应用于整个系统,对于商业和企业开发者,系统集成商或OEM,这意味着象MacApp一类的结构所展示的优点可以不仅作用于文本和用户界面之类的事物,而且亦可用于系统的服务,例如图形,多媒体,文件系统I/O,以及测试等等。
在一个最佳实施例的体系结构中的应用程序生成基本与编写附加到结构协议的特定域的迹块类似,在这一方式中,编程的整个概念改变了,代之以在调用多个API层级的编码行之后写编码行,软件将由在该环境中的先有结构导出的分类所发展,可然后根据需要加入新行为并/或替换继承的行为。
如此,开发者的应用程序成为由所有其他结构应用程序编写和共享的编码集。由于开发者将可在相互的工作上工作,因此这是一个很有力的概念。这也为开发者提供了根据需要进行客户化的灵活性,某些结构将被原样使用,在某些情况下,客户化的量将很小,所以开发者插入的块将很小,在另外的情况中,用户可以进行很大修改并生成全新的事件,在一个最佳实施例中,如图1所示,在RAM14中的程序由CPU10的控制,用一个面向目标的文件结构来管理各种任务。
其他系统,例如Apple Macintosh System7,使用了要求用户明确保存一个文件的模型,在这些系统中,用户打开一个文件,进行某些改变,然后保存该文件。通常,新版本文件取代旧的版本文件,虽然有的应用程序可以保留一个或几个过去保存的文件。
直到用户保存,所进行的改变只存在于应用程序中。若应用程序或系统出现故障,则这些改变会丢失。某些应用程序把部分数据存在磁盘上且用户可以从这些磁盘文件中恢复一些东西。某些应用程序(即在Macintosh上的Quicken以及Hyper Card)可在用户改变内容时自动地保存变化。这一处理可使用户免于丢失数据和工作。但用户仍可能由于不想要的改变而丢失其工作和数据。其他应用程序则在用户进行相互转换时在一个单独的文件中进行文件检查。这使用户免于在其他页上丢失信息,但却不能防止在工作的这一页上丢失信息。
不保存模型根据本发明的一个最佳实施例检查文件的每一变化并将其存入磁盘。在故障出现时,系统由最后“保存”的版本开始并替换用户对于考贝进行的所有改变。最后的文件则完全与故障出现时刻用户所有的文件一样。该系统自动地存储保存的图象和命令运行记录。保存的图象记录了时间某一点处整个文件的状态,而命令运行记录则记录了从那时起文件的所有变化。
用户编辑文件的基本控制流程如下所示·每次用户改变文件时,代表该改变的命令目标的考贝被放在队列的终端。
·一个单独的背景任务将命令目标从队列中取出并将其存入命令运行记录之中。该任务以低优先级执行以使该动作在用户不与系统交互时执行,从而最大限度地减小对用户工作的影响。
·该命令目标被正常处理以改变文件图2A是根据本发明最佳实施例的处理流程图。处理始于200并立即去往功能框210,通过从一个磁盘或其他存储设备中的文件中打开一个文件。该文件可包括文本,图形,图象,音频或其他信息。判别框220检测文件是否被改变。然后,当文件被改变时,建立一个命令目标并将其置于存储的队列之末,如功能框230所示。最后,如功能框240所示,一个背景任务根据队列中的目标在非易失性存储器里建立运行记录。
当用户打开一个文件时,会发生下列操作·从一磁盘、高速缓冲存储器或其他存储器中检索文件的保存的图象。
·若命令运行记录不是空的,再现运行记录中的命令。
图2B始于250并立即去往功能框260,在该处,判别是当命令存在磁盘上。若是,则从队列中将目标移出并存在磁盘上的命令运行记录中。
图3是根据本发明的一个最佳实施例进行文件恢复时的处理流程。处理始于300并立即去往功能框310以便从磁盘,磁盘高速缓冲存储器或其他存储器中存储的文件进行检索。然后在判别框320处确定是否命令运行记录为空,若是,则该文件是完整的并返回至端点350,若否,则将运行记录中存储的命令依序重视并应用于该文件,如功能框330所示。命令运行记录在功能框340处被擦除。然后控制返回终端350。
在某些时刻,文件被保存·把整个文件保存为保存的图象。
·擦除命令运行记录。
图4是根据本发明最佳实施例与保存文件有关的流程图。处理始于400并立即去往功能框410以保存该文件。然后,命令运行记录在功能框420处被擦除且控制返回终端430。这一处理可发生于用户请求,用户指定时间之时,或在文件被关闭时自动发生。
文件体系结构定义了一个抽象的“模型存储”,它包含保存的图象和一个命令运行记录。一个文件包括一组独立的模型目标。而模型存储提供对模型目标的访问。模型目标包括在单独模型级别的文件图象。通常,模型存储被保存在磁盘上,但本领域的技术人员可以将模型存储保存于存储器,高速缓冲存储器,或其他存储媒介之中。
权利要求
1.一种用于处理文件的装置,其特征在于包括一个处理器;一个连到处理器的存储器;一个由处理器控制的显示器;一个位于存储器中并由显示器显示的文件;一个与位于存储器中的文件的每个改变关联的命令目标;一个用于存储命令目标的运行记录;用于在存储器中的文件改变发生时生成命令目标的处理装置;以及通过访问该运行记录,获取该命令目标并将命令目标用于文件从而恢复该文件的处理装置。
2.权利要求1所述装置,还包括用于存储文件的磁盘以及用于当文件存在磁盘之时擦除运行记录的处理装置。
3.权利要求1所述装置,还包括一个位于存储器中的队列,用于在命令目标被写入运行记录之前保留这些命令目标。
4.权利要求3所述装置,包括把命令目标从队列移到运行记录的处理装置,该移动是一低优先级任务,然后是一文件处理任务。
5.权利要求1所述装置,还包括在文件被恢复后擦除运行记录的装置。
6.权利要求1所述装置,其中的运行记录存在一个非易失性存储器中。
7.处理位于一个计算机的存储器中的文件的方法,其特征在于包括以下步骤(a).将一个文件装入计算机的存储器;(b)建立与存储器中的每一文件变化有关的命令目标;(c)当存储器中的文件改变时生成命令目标;(d)在存储器中的运行记录里存储命令;以及(e)通过访问该运行记录,获得该命令目标并将命令目标用于文件以恢复该文件。
8.权利要求7所述方法,还包括在磁盘上存储一个文件并在一个文件存在磁盘上的时候擦除运行记录的处理步骤。
9.权利要求7的所述方法,还包括保留驻留在存储器中的一个队列的步骤,该队列用于在命令目标被写到运行记录中之前保留该命令目标。
10.权利要求9所述方法,还包括按照较低优先级任务,然后一个文件处理任务的顺序把命令目标从队列移到运行记录的步骤。
11.权利要求7所述方法,还包括在文件被恢复后擦除运行记录的步骤。
12.权利要求7所述方法,还包括在一非易失性存储器中存储运行记录的步骤。
全文摘要
本发明涉及一种用于在文件改变时自动保存改变的方法和装置,一个面向目标的结构用于简化整个处理过程中的处理并确保文件的完整性。
文档编号G06F17/24GK1110065SQ94190303
公开日1995年10月11日 申请日期1994年1月3日 优先权日1993年6月4日
发明者戴维·R·安德逊, 杰克·H·佩勒维奇, 拉里·S·罗森斯泰因, 阿诺德·歇埃福尔 申请人:塔里根特公司