CN1791862A - 操作系统 - Google Patents
操作系统 Download PDFInfo
- Publication number
- CN1791862A CN1791862A CNA2004800135732A CN200480013573A CN1791862A CN 1791862 A CN1791862 A CN 1791862A CN A2004800135732 A CNA2004800135732 A CN A2004800135732A CN 200480013573 A CN200480013573 A CN 200480013573A CN 1791862 A CN1791862 A CN 1791862A
- Authority
- CN
- China
- Prior art keywords
- operating system
- common program
- virtual
- program
- routine
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 62
- 238000012986 modification Methods 0.000 claims abstract description 4
- 230000004048 modification Effects 0.000 claims abstract description 4
- 230000015654 memory Effects 0.000 claims description 58
- 230000006854 communication Effects 0.000 claims description 16
- 238000004891 communication Methods 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 7
- 230000007246 mechanism Effects 0.000 claims description 7
- 230000008676 import Effects 0.000 claims description 3
- 238000001514 detection method Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 16
- 238000012545 processing Methods 0.000 description 14
- 230000008859 change Effects 0.000 description 10
- 230000004044 response Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000003860 storage Methods 0.000 description 9
- 241001342895 Chorus Species 0.000 description 7
- HAORKNGNJCEJBX-UHFFFAOYSA-N cyprodinil Chemical compound N=1C(C)=CC(C2CC2)=NC=1NC1=CC=CC=C1 HAORKNGNJCEJBX-UHFFFAOYSA-N 0.000 description 7
- 238000013459 approach Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000004321 preservation Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000005465 channeling Effects 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 239000002253 acid Substances 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000000796 flavoring agent Substances 0.000 description 1
- 235000019634 flavors Nutrition 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000002054 transplantation Methods 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/4555—Para-virtualisation, i.e. guest operating system has to be modified
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
- H04L67/125—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
- Hardware Redundancy (AREA)
- Debugging And Monitoring (AREA)
- Vehicle Body Suspensions (AREA)
- Massaging Devices (AREA)
- Eye Examination Apparatus (AREA)
Abstract
一种使得多个不同的操作系统能够同时在同一计算机上运行的方法,包括:选择第一操作系统,使其具有较高的优先级(实时操作系统,比如C5);选择至少一个第二操作系统,使其具有相对较低的优先级(通用操作系统,比如Linux);提供公用程序(类似于超微内核的硬件资源分配程序),该程序被设置为,用于在预定的条件下在所述操作系统之间进行切换;以及,对所述第一操作系统和第二操作系统提供改进,以使得它们能够由所述公用程序进行控制。
Description
技术领域
本发明涉及操作系统。更加具体地讲,本发明涉及用于同时运行多个操作系统的系统、方法和计算机程序。
背景技术
对于某些计算机程序,关键的是:程序中的步骤要在限定的时段内或在限定的时刻进行。这种程序的示例是用于操纵移动电话的控制程序,或者用于操纵专用交换机(PBX)或蜂窝式基站的控制程序。一般来说,这种程序必须在外部事件或状态改变之后的一定时刻或一定时间内,以连贯的方式对该外部事件或该状态的改变做出响应。将这称为“实时”操作。
不过,对于很多其他的程序,执行程序所花费的时间并不是关键的。这适用于大多数公用计算机程序,包括电子制表程序、字处理程序、工资报表程序和通用报告或分析程序。另一方面,虽然由这些程序花费的确切时间并不关键,但是在大多数情况下,用户都喜欢在可能的情况下更快地执行。
应用程序通过操作系统与在其上运行有这些程序的计算机进行相互作用。通过使用操作系统的应用程序编程接口(API),可以以可移植方式编写应用程序,从而使其能够在具有不同硬件资源的不同计算机上执行。此外,诸如Linux或Windows的通用操作系统提供多任务;换句话说,它们允许多个程序同时运行。为此,它们提供调度;换句话说,它们在不同程序之间共享计算机资源的使用、根据调度算法为各个程序分配时间。这种类型的操作系统使用非常广泛,但是它们一般没有为运行实施应用程序做准备,并且因此它们不适于很多控制或通信任务。
因此,为这些任务开发了实时操作系统;一个示例是ChorusOS(也称为Chorus)及其衍生系统。Chorus可以作为开放源程序从http://www.experimentalstuff.com/Technologies/ChorusOS/index.html获得,并且可以在http://www.jaluna.com/上从Jaluna公司获得。
在“ChorusOS Features and Architecture overview”(FrancoisArmand,Sun Technical Report,August 2001,222p)中介绍了这种操作系统,该文章可以从http://www.jaluna.com/developer/papers/COSDESPERF.pdf得到。
这些操作系统还能够运行其他类型的程序。然而,可以理解,用户希望能够在实时操作系统上运行大量针对诸如Windows或Linux的通用操作系统编写的“老”程序,而不是必须对它们进行改写。
应该可以提供“双引导”系统,使得用户能够运行一种操作系统或另一种操作系统,但是有很多情况是希望能够在运行实时程序的同时运行“老”程序。例如,电信网络基础设施设备、第三代移动电话和其他先进的电话以及先进的电子游戏设备可能即需要实时应用程序(例如,游戏进行中的图形)也需要非实时应用程序(游戏下载)。
在US 5903752和US 5721922中,通过在非实时操作系统(比如Windows)的中断处理环境中设置实时多任务内核,进行了将实时环境结合到非实时操作系统中的尝试。
得到广泛采用的一种途径是“仿真”。一般来说,编写仿真器程序,在实时操作系统下运行,该仿真器程序解释针对通用操作系统编写的程序的各条指令,并且在实时操作系统下执行对应的一系列的指令。然而,由于一条指令总是要由很多指令来代替,仿真对计算机造成了很重的负担,导致较缓慢的操作性能。基于提供虚拟机(例如,JavaTM虚拟机)的途径也会引起类似的问题。虚拟机实现的示例是EP 1059582、US 5499379和US4764864。
在US 5995745(Yodaiken)中记载了另一种类似的技术。Yodaiken描述了这样一种系统,其中多任务实时操作系统将通用操作系统作为它的多个任务之一来运行,根据需要优先于它执行实时任务。
另一种途径是将实时操作系统作为通用操作系统的模块来运行,如例如EP 0360135和文章“Merging real-time processing and UNIX V”((Gosch),ELECTRONICS,September 19909,p62)中所记载的。在这种情况下,出于与通用操作系统相关的硬件中断不应优先于实时操作系统的目的,对硬件中断进行选择性的屏蔽。
另一种途径是ADEOS(用于操作系统的自适应域环境(AdaptiveDomain Environment for Operating System))所采用的途径,在http://opersys.com/ftp/pub/Adeos/adeos.pdf上的白皮书中有记载。
ADEOS提供超微内核,该超微内核除了别的功能以外,主要用于运行多操作系统,虽然仅从表面上看,它是用Linux实现的。ADEOS的一种已经提出的应用是允许ADEOS向RTAI(针对Linux的实时应用程序接口)分配中断,对此请参见:
http://www.aero.polimi.it/~rtai/applicaions/。
EP 1054332描述了一种采用“切换单元”(为了全面理解,不对此进行充分详细的介绍)运行实时和通用操作系统的系统。硬件中断由普通中断处理程序进行处理,并且在某些实施方式中,它们是由实时操作系统处理的,然后该实时操作系统产生较低优先级的软件中断,这些软件中断由二级操作系统中的例程进行处理。
发明内容
本发明的目的是提供一种经过改进的系统、方法和计算机程序,用于同时运行多个操作系统,即使当这些系统是为了不同目的而设计的时候也能够如此。具体来说,本发明的目的是使得操作系统之一(例如,实时操作系统)能够不受干扰地执行,而另一个操作系统(例如,通用操作系统)尽可能使用计算机的剩余资源来执行。
因此,根据一个方面,本发明提供这样一种系统,其中对多个操作系统稍稍进行了改进,并且配备了一个公用程序,该公用程序在这些操作系统之间进行调度,其中操作系统之一(“主”或“关键”操作系统)优先于另一个操作系统(“二极”或非关键操作系统)。优选地,本发明优先地向关键操作系统分配硬件,并且拒绝会干扰关键操作系统的访问的二级操作系统或多个二级操作系统进行访问。优选地,本发明使用关键操作系统驱动程序访问共享资源,即使这个访问是由二级操作系统请求的。不过,这决不是关键操作系统“运行”二级操作系统,如在US 5995745中那样;各个系统忽略并行运行的其他系统,并且仅与公用程序进行通信(与现有的超微内核相对应),该公用程序代理对关键操作系统的驱动程序的使用。
优选地,这样对二级操作系统进行改进:使得它们不能屏蔽中断,并且将它们的中断服务例程改进成使它们响应于表明出现了中断的消息。该公用程序通过将硬件异常传递给主操作系统的中断服务例程来处理所有的硬件异常,并且在硬件中断是将供一个二级操作系统使用的情况下,产生中断消息或通知。下一次由公用程序对二级操作系统进行调度时,将该消息或通知传递给该操作系统,并且公用程序调用其中断服务例程来对中断进行服务。
这样,在出现中断时候,二级操作系统不能以任何方式优先于主操作系统(或者,一般来说,重要性高于二级操作系统),这是因为所有的中断最初都是由主操作系统处理的,并且仅仅通知给二级操作系统,它们预定在主操作系统完成运行并且调用了二级操作系统之后。
因此这些中断的处理得到延迟,直到在主操作系统中不再出现关键任务。然而,当它们最终发生作用时,二级操作系统的例程可以以本质上未经改进的方式进行操作,从而行为是二级操作系统所预期的行为(除了延迟之外)。
通过下文的说明书、权利要求和附图,具有相应优点的其他的方面、实施方式和优选特征将会变得明确。
附图说明
现在将参照附图,仅以示例的方式描述本发明的实施方式,其中:
图1是表示能够在其上执行本发明的计算机系统的单元的框图;
图2a是示出说明现有技术中的软件结构的图;
图2b是示出根据本发明的软件结构的对应的图;
图3是表示在为图1的计算机创建图2b的软件的过程中的各个阶段的流程图;
图4表示形成图2的一部分的硬件资源分配程序的组成部分;
图5示出了在引导和初始化序列中使用的程序;
图6示出了在引导和初始化处理中使用的系统内存映象;
图7示出了从主操作系统到二级操作系统的过渡;
图8示出了从二级操作系统到主操作系统的过渡;
图9a示出了根据本发明的运行在不同操作系统上的应用程序之间的通信;以及
图9b示出了根据本发明的运行在不同计算机上的不同操作系统上的应用系统之间的通信。
具体实施方式
系统硬件
可应用本系统的计算机系统100包括:中央处理单元(CPU)102,比如由Intel公司提供的Pentium 4TM CPU,或由Motorola提供的PowerPCCPU(本实施方式在这两者上都得到了实现),该CPU通过系统总线104(包括控制、数据和地址总线)与只读存储器(ROM)芯片106相连;一条或多条随机存取存储器(RAM)芯片108;盘控制器驱动器110(例如与软盘驱动器、硬盘驱动器和额外的可拆装介质驱动器(比如DVD驱动器)相连的IDE或SCSI控制器);一个或多个输入/输出端口112(例如,一个或多个USB端口控制器,和/或用于连接打印机等的并行端口控制器);扩展总线114,用于与外部或内部外围设备进行总线连接,例如PCI总线;以及其他系统芯片116(例如,图形和声音设备)。这种类型的计算机的示例是个人计算机(PC)和工作站。然而,本文还公开了本发明对其他计算装置的应用,比如大型机、控制系统中的嵌入式微计算机和个人数字助理(PDA)(在这些情况下,可以不设置某些专用设备,比如盘驱动器控制器)。
软件的管理
参照图2a,在使用中,图1的计算机100运行驻留程序,该驻留程序包括:操作系统内核202(其提供允许由CPU对图1中所示的其他设备进行访问的输出例程);操作系统用户接口或表示层204(比如XWindows);中间设备层206(提供网络软件和协议,比如TCP/IP栈)和应用程序208a、208b,其通过对形成操作系统内核202的API例程进行调用来运行。
操作系统内核具有多个任务,具体是:
·调度(即,在正在运行的不同应用程序之间共享CPU和相关资源);
·内存管理(即,向各个任务分配存储空间,并且,在需要的情况下,从内存中换出数据和程序,并添加到盘驱动器上);
·提供文件系统;
·提供对设备的访问(典型地,通过驱动器);
·中断处理;
·提供应用程序编程接口,使应用程序能够与系统资源和用户相互作用。
对于Unix而言,内核可以是所谓的“整体内核”,在这种情况下,设备驱动器构成内核本身的一部分。另选地,对于Chorus而言,内核可以是“微内核”,在这种情况下,设备驱动器是与内核分开的。
然后,在使用中,当启动计算机100时,存储在ROM 106中的引导程序访问盘控制器110,以将操作系统的文件处理部分从盘上的永久存储空间中读取到RAM 108中,然后将操作系统的剩余部分加载到RAM 108的一个区域中。然后操作系统通过盘控制器110从盘驱动器中读取任意应用程序、为各个应用程序分配RAM 108中的空间并且将各个应用程序存储在分配给它的内存空间中。
在这些应用程序操作期间,操作系统的调度程序部分在不同的应用程序之间划分CPU的使用,根据调度策略允许各个应用程序在处理器上享有一部份时间。它还通过“换出”不常使用的应用程序或数据(即,将它们从RAM 108中删除,以释放空间,并且将它们存储到盘上)来管理内存资源的使用。
最后,从这些应用程序调用构成应用程序编程接口(API)的例程,以执行诸如输入和输出的功能,并且该操作系统的中断处理例程对中断和事件做出响应。
优选实施方式原理的概述
在优选实施方式中,要在计算机100上使用的各个操作系统201、202都经过稍许改写,并且创建新的低级程序400(这里称为“硬件资源分配程序”,有时也称为“超微内核”,尽管它并不是操作系统的内核)。硬件资源分配程序400专用于特定类型的CPU 102,因为它与处理器相互作用。经过改进的操作系统201、202的版本也是专用于硬件的版本,其原因将会变得明确。
硬件资源分配程序400本身并不是操作系统。它根本不与应用程序相互作用,并且具有非常有限的功能性。它既不是虚拟机又不是仿真器;即使它将大部分处理留给操作系统本身,在处理器上运行它们的本机代码,它也要求对操作系统进行改进,以便协同操作。
它执行下述基本功能:
·加载并启动多个操作系统中的每一个;
·为操作系统中的每一个分配内存和其他系统资源;
·调度不同操作系统的操作(即,在它们之间划分CPU时间,并且管理它们之间的更替);
·提供对需要由操作系统们共享的那些系统设备进行间接访问的“虚拟化设备”方法(对这些设备进行“虚拟化”);
·提供操作系统之间的通信链路,以使得运行在不同操作系统上的多个应用程序能够彼此进行通信。
根据本实施方式,操作系统并不是同等对待的。实际上,将操作系统之一选为“关键”操作系统(该操作系统将是实时操作系统),而将另一个或其他的每一个操作系统作为“非关键”或“二级”操作系统(将是通用操作系统或者是各个通用操作系统,比如Linux)。
在设计硬件资源分配程序的时候,为其配备了列出可用系统资源(即,设备和内存)的数据结构(例如表),以使得能够将尽可能多的系统设备静态地、排它地分配给这些操作系统中的一个或其他的操作系统。
例如,可以将并行打印机端口静态地分配给通用操作系统202,该操作系统202会经常运行需要产生打印输出的应用程序。另一方面,可以将ISDN数字线路适配器端口永久性地分配给实时操作系统201,用来进行通信。这种设备的静态分配无论在什么情况下都可能意味着:各个操作系统能够使用其现有的驱动器来访问静态分配的设备,而不需要调用硬件资源分配程序。因此,在访问这样的设备的过程中,不会有执行速度的损失(如果它用作虚拟机或仿真器,就会损失执行速度)。
在必须共享系统设备的情况下,硬件资源分配程序虚拟化非关键操作系统对这些设备的使用,并且利用由关键操作系统提供的驱动程序进行访问。同样,对于中断处理,将中断传送给关键操作系统中断处理例程,该中断处理例程对中断进行处理(如果它是供关键操作系统使用的)或者将其传回到硬件资源分配程序,以转送到非关键操作系统(如果它指定用于非关键操作系统)。
在启动的时候,首先载入硬件资源分配程序,然后它以预定的顺序加载操作系统中的每一个,首先由关键操作系统开始,然后依次是二级操作系统或各个二级操作系统。根据该表为关键操作系统分配它所需的资源,并且该关键操作系统得到在其中进行操作的固定内存空间。然后从可用的剩余资源中依次为各个二级操作系统分配所需的资源和内存空间。
这样,根据本实施方式,通过为各个操作系统分配自己的内存空间,并且通过排它地为操作系统提供设备的静态分配,尽可能地从物理上将由操作系统使用的资源分隔开;只有对必须要进行共享的设备才进行共享。
在操作过程中,硬件资源分配程序调度程序使得关键操作系统能够在它完成它的任务之前一直进行操作,然后再依次将控制转回到各个非关键操作系统,直到下一个中断或事件出现。
这样,本实施方式能够实现关键操作系统的操作本质上不发生改变(由于它使用它原来的驱动程序,并且具有首先使用任何中断和事件处理的权力)的多操作系统环境。二级操作系统能够在剩余的处理器时间内有效率地进行操作,因为在大多数情况下,它们将会使用它们自己的本机驱动程序,并且将具有使用很多系统设备的专署权力。最后,硬件资源分配程序本身可以是很小的程序,因此它仅仅负责有限的功能,从而节约了系统资源。
优选实施方式对于创建和维护也是非常经济的,因为它仅仅牵涉到对已经适合于特定计算机100的标准商用操作系统的有限改变。此外,由于对操作系统的改变限于体系结构专用文件处理问题(比如中断处理)和初始化时的配置,这种配置与特定类型的计算机相接口,并且并不可能如操作系统的其余部分那样频繁改变,因此,在使同一操作系统的新版本适应于以多操作系统方式工作的过程中,需要做很少的工作或不用做工作。
优选实施方式的详细说明
在本实施方式中,计算机100是Intel 386系列处理器(例如Pentium处理器)和Motorola PowerPC 750(精简指令集计算机或“RISC”)计算机(步骤302)。关键操作系统201是C5操作系统(Jaluna-1的实时微内核,第五代ChorusOS系统的开放源代码版,可得到开放源代码,从http://www.jaluna.com免费下载)。
在步骤306中,为了在多操作系统模式下进行操作,对ChorusOS操作系统内核201进行改进,处理方式与向新平台移植的方式相同(即,编写新的主板支撑程序包(Board Support Package),以允许在CPU相同而系统设备不同的新计算机上执行)。改进引导和初始化序列,使得实时操作系统能够在分配给它的内存空间中由硬件资源分配程序启动,而不是它自己启动。改进初始化序列的硬件检测阶段,以防止关键操作系统访问分配给其他二级系统的硬件资源。它从硬件资源分配程序中读取静态硬件分配表,以检测可由它使用的设备。
将软中断调用(trap call)2012添加到关键操作系统中,用来检测状态并响应于此请求某些动作。这里软中断调用指的是这样一种调用:使处理器保存当前设备环境(例如,寄存器的状态)并且加载新的设备环境。这样,在使用虚拟内存寻址的情况下,地址指针得到改变。
例如,当实时操作系统201达到终点(并且不再需要处理器资源)时,可以将控制权交还给硬件资源分配程序,发出“空闲”软中断调用,以启动二级操作系统。很多处理器具有“暂停”指令。在某些情况下,只有管理员级代码(例如,操作系统,而不是应用程序)可能包括这样的“暂停”指令。在本实施方式中,对所有的操作系统进行了改写,以删掉“暂停”指令并且将它们替换为“空闲”例程(例如,执行线程),在调用这个“空闲”线程的时候,发出“空闲”软中断调用。
主板支持程序包的某些驱动程序特别适于帮助硬件资源分配程序为二级操作系统虚拟化共享设备。
添加了额外的“虚拟”驱动程序2014,该驱动程序看起来像是为操作系统提供了使用输入/输出(I/O)总线的权力,使得能够将数据写入到总线中。实际上,虚拟总线驱动程序2014使用内存作为通信介质;它导出部分专用内存(用于输入数据)并且导入由其他系统导出的内存(用于输出数据)。这样,操作系统201(或运行在该操作系统上的应用程序)可以将数据传递给另一个操作系统(或运行于其上的应用程序),就像它们是运行在由真实的I/O总线连接的分立机器上的两个操作系统。
将二级操作系统202选择为Linux(步骤308),其具有内核版本2.4.18(步骤308)。
在步骤310中,对二级操作系统内核202进行改进,使其能够在多操作系统环境下进行工作,这个多操作系统环境被视为新的硬件体系结构。与在步骤306中一样,对引导和初始化序列进行改进,使得二级操作系统能够由硬件资源分配程序启动,并且如在硬件资源分配程序表中所规定的,防止该二级操作系统访问分配给其他系统的硬件资源。与在步骤306中一样,添加软中断调用2022,用来将控制权交还给硬件资源分配程序。
用新的驱动程序2028替换用于共享系统设备的本机驱动程序,该新驱动程序2028用来应对被硬件资源分配程序虚拟化的设备(中断控制器、I/O总线桥、系统计时器和实时时钟)。这些驱动程序执行对硬件资源分配程序的虚拟设备处理程序416的调用,以便进行在计算机100的相应设备上的某些操作。硬件资源分配程序的各个这样的虚拟设备处理程序416与关键操作系统中的“同级(peer)”驱动例程成对,而该“同级”驱动例程被设置为与系统设备直接地相互作用。这样,对虚拟设备处理程序的调用得以转继给关键系统中用于该虚拟化设备的同级驱动程序,以便进行真实的设备访问。与在步骤306中一样,提供了用于虚拟I/O总线的读写驱动程序2024,以实现操作系统间的通信。
对二级操作系统的中断服务例程进行改进,以提供虚拟中断服务例程2026,每个虚拟中断服务例程响应于各相应的虚拟中断(形式为由硬件资源分配程序的中断处理程序例程412发出的调用),并且不对真实的中断或事件做出响应。对二级操作系统的例程(包括中断服务例程)也进行改进,以去除硬件中断的屏蔽(至少是除了关键操作外的所有操作中的硬件中断屏蔽)。这样,关键操作系统202可因此被关键操作系统201占先;换句话说,二级操作系统响应的虚拟中断本身可被用于关键操作系统201的真实中断阻断。这典型地包括:
·屏蔽/不屏蔽事件(处理器层面上的中断);
·保存/恢复事件屏蔽状态;
·识别中断源(中断控制器设备);
·在源层面(中断控制器设备)上屏蔽/不屏蔽中断。
添加了新的虚拟设备驱动程序2028,用于访问共享硬件设备(I/O总线桥、系统控制台、系统计时器和实时时钟)。这些驱动程序执行对硬件资源分配程序的虚拟设备处理程序416的调用,以便向或从计算机100的相应设备写入数据或从其读取数据。
为了实现这个目的,在本实施方式中,通过添加具有少量经过修改的文件的新的虚拟硬件资源分配程序体系结构子树(用于I-386的nk-i386和nk-pcc以及PowerPC变量),对Linux内核207进行改进。未经改变的文件以它们的已有形式进行再利用。保留原有子树,但不使用。
在步骤312中,编写硬件资源分配程序400。该硬件资源分配程序包括为下述功能(如图4所示)提供例程的代码:
·对其自身进行引导和初始化(402);
·存储保存着硬件资源(诸如端口的设备)列表和表示将各个资源唯一分配给哪个操作系统的分配表目的表(403);
·对完成了硬件资源分配程序分配表(404)的关键操作系统进行引导和初始化;
·引导并初始化二级操作系统(406);
·在操作系统之间进行切换(408);
·在操作系统之间进行调度(410);
·处理中断(使用实时操作系统中断服务例程,并且在需要的情况下向二级操作系统的虚拟中断服务例程供应数据)(412);
·处理来自各个操作系统的软中断调用(414);
·处理从二级操作系统对共享设备的访问(416);
·在虚拟I/O总线上处理操作系统间通信(418)。
在另一种实施方式(下面将进行介绍)中,还可以提供系统调试框架。
操作系统切换程序408
为了从一种操作系统切换到另一种操作系统,设置了操作系统切换程序408来保存当前执行的操作系统的“设备环境”——状态变量集合的当前值,比如寄存器值;恢复所保存的另一个操作系统的设备环境;并且请求该另一个操作系统在它停用的地方重新开始执行。在处理器使用内存分段和虚拟或间接寻址技术的情况下,为此要交换保存指向当前内存空间的指针的寄存器或数据结构。例如,操作系统分别在不同的这种内存空间中操作,该内存空间由包括指向这些空间的指针的设备环境限定。
详细地说,该切换程序提供:
·显式切换(例如,软中断调用),在当前操作系统变得空闲时,从当前运行的操作系统切换到下一个预定的操作系统;和
·隐式切换,当出现硬件中断时,从二级操作系统切换到关键操作系统。
这些切换可能出现在软中断调用或者真实中断或虚拟中断的时候,下面将对此进行介绍。
调度程序410
调度程序410通过选择在退出另一个操作系统之后要将哪个二级操作系统(如果存在多于一个的二级操作系统)切换到下一个,来为各个操作系统分配可用处理时间的一部分。在本实施方式中,各个操作系统是根据固定的优先级编排方案选择的。此处也可构想能够实现基于分时方式的技术要求或保证最小处理器时间百分比的技术要求的其他实施方式。不过,在各种情况下,仅当关键操作系统处于空闲状态下时,别的操作系统才能优先于它。
在另外一些实施方式中,关键操作系统可以明确地通知调度程序410何时别的操作系统可以优先于它,从而允许所有的二级操作系统中有权使用CPU的那些操作系统以比在关键系统中仍在运行的任务更高的优先级来执行任务。这样,在一种示例中,关键操作系统的中断服务例程不能被剥夺优先权,从而关键操作系统能够总是对外部事件或来自实时时钟的定时信号做出响应,从而保持实时操作。
处理虚拟化处理器异常
将硬件资源分配程序设置成根据下述方式提供对处理器异常(例如CPU中断或协处理器中断)进行处理的机制:
·首先,通过关键操作系统中止处理器异常;
·其次,将响应的虚拟异常投送给一个或更多个二级操作系统;以存储该数据,并且,当调度程序下一次调用该二级操作系统时,调用二级操作系统中相对应的虚拟中断服务例程2026;
·最后,从二级操作系统中屏蔽或不屏蔽任何未决的虚拟异常。
虚拟化异常典型地用于两种不同的用途:
·首先,将硬件设备中断(它们是作为异步处理器异常传递的)转送给二级操作系统;
·其次,实现操作系统间交叉中断——即,由一个系统针对另一个中断而产生的中断(将它们作为同步异常进行传递)。
软中断调用处理程序414
通过下面的说明,将使软中断调用处理程序的操作变得明确。它主要的用途是使得调度程序和切换程序在第一个操作系统暂停时切换另一个操作系统(因此不需要CPU资源)。额外的作用是调用诸如系统控制台的硬件资源分配程序服务,以便用在将要针对后面的实施方式讨论的调试当中。
虚拟化设备416
如上面所指出的,各个操作系统都为各个共享设备(例如,中断控制器、总线桥、系统计时器、实时时钟)提供设备驱动程序,对于该设备形成一组同级驱动程序。实时操作系统提供用于对设备进行实际访问的驱动程序,而其他的操作系统提供虚拟设备驱动程序。
硬件资源分配程序的共享设备处理程序416为各个设备提供所存储的数据结构,用于由该设备的所有同级设备驱动程序进行访问。当要对设备进行访问,或已经对该设备进行了访问时,设备驱动程序用访问的详细情况对保存在相对应的数据结构中的数据进行更新。这些同级驱动程序使用交叉中断(如上面讨论的)来以信号形式发送事件,以通知其他的同级驱动程序刚刚更新了所述数据结构。
用于访问中断控制器设备的驱动程序使用上面讨论的虚拟异常机制,以根据下述方式处理硬件中断:
·关键操作系统的设备驱动程序处理硬件中断,并且将它们作为虚拟化的异常转发给二级操作系统的同级驱动程序;
·二级操作系统通过使用虚拟异常屏蔽或不屏蔽上面讨论的例程,来使能或禁止中断。
如果没有将与I/O总线和它们的桥相连的设备分配给同一个操作系统,则只能将它们共享。因此,在分配设备的过程中,要尽可能地将与同一I/O总线相连的设备分配给同一操作系统。在必须共享的情况下,资源分配表404存储表明与总线有关的资源(地址空间、中断线和I/O端口)分配情况的描述符数据,以指出哪些操作系统具有哪些资源。
实施方式的实现
最后,在步骤314中,将用于硬件资源分配程序和操作系统的代码编译为可发布的二进制计算机程序产品,以供应给计算机100。
根据本发明的一个方面,可以供应的产品是开发环境产品,其包括这样的计算机程序:使用户能够选用不同的操作系统,为各个操作系统建立并选择不同的应用程序,将应用程序和操作系统嵌入可交付使用的产品中,并且准备好操作系统的引导和应用程序的可执行二进制代码的装入。这基于,并且类似于,可从www.jaluna.com获得的C5开发环境。
本实施方式在引导和初始化期间的操作
参照图5,根据本实施方式的引导和初始化处理是根据如下方式进行的。
在第一次供电的时候,执行存储在ROM 106中的自举程序(“蹦床(trampoline)”)4022,该自举程序启动程序4024,程序4024将硬件资源分配程序400的剩余部分安装到内存中,并且启动它,以参数形式传送描述系统映象配置的数据结构(下面将进行说明)。
硬件资源分配程序初始化可用于系统控制台的串行线。然后它从关键操作系统开始,为各个操作系统依次分配内存空间(操作系统环境)。因此硬件资源分配程序起到了第二层系统内核引导装入程序的作用。
然后各个操作系统内核进行一遍它自己的初始化阶段,在资源分配表404中剩余的资源中选取专用于该操作系统的资源,并且启动其初始服务和应用程序。
图6示出了形成系统映象的内存地址分配的示例。在对硬件资源分配程序和操作系统进行编译时,对内存中的位置进行分配。这些内存中的位置的集合定义了系统映象,如图6所示。该系统映象包括:第一条内存602,硬件资源分配程序位于此处;第二条内存604,实时操作系统位于此处;第三条内存606,二级操作系统位于此处;以及,在本实施方式中,第四条内存608,包含二级操作系统(Linux)的引导文件系统的RAM盘位于此处。
将系统映象存储在永久性存储装置(例如,用于典型的实时设备(比如移动电话或PBX)的只读存储器)中。剩余的内存条可用来分配给各个操作系统作为它的环境,可以在其中装入并且运行应用程序。
对操作系统设备环境的内存分配
在被引导的同时,各个操作系统然后分配一块补充内存,以满足它自己的配置所需的总大小。一旦分配给操作系统,内存条就使用操作系统自己的物理内存管理方案来进行管理。所有其他的内在将被操作系统忽视。
虚拟内存分配
向各个操作系统分配了单独的虚拟内存空间,以确保这些操作系统不相互干扰或者干扰硬件资源分配程序。向各个操作系统的用户地址空间(即,范围)和管理员地址空间(即,范围)分别分配了不同的内存管理单元(MMU)设备环境标识符(ID),该标识符使得能够对具有重叠地址的不同虚拟内存空间进行区分。MMU设备环境ID是在对其进行编译的时候分配给各个操作系统的(图3的步骤314)。
这种解决方案避免了在硬件资源分配程序在不同操作系统之间进行切换的时候刷新翻译后援缓冲器(TLB)的需要,这种刷新会花费额外的时间。取而代之地,不同操作系统之间的切换是通过以下过程实现的:保存当前运行的操作系统的MMU设备环境ID,并且再调用先前存储的所切换的两个操作系统的MMU设备环境ID。
输入/输出设备的分配
如上面所指出的,分配表404指出将哪些设备唯一地分配给了各个操作系统。此外,表404表明将哪些输入/输出资源(直接存储器存取(DMA)设备、输入/输出端口、中断等等)专用地分配给了这些设备,从而能够实现这些资源的直接使用,而不会发生冲突。一般来说,很多设备都是双份的,从而根据这种方式能够本质上减少潜在的冲突。
该分配基于操作系统配置方案(例如,在C5的情况下,在设备树中规定的设备)。它们是在引导的时候分配给操作系统的,并且是根据引导的顺序进行分配的,从而关键操作系统享有对表404中的可用设备的第一选用权,而二级操作系统在剩余的设备中依次接收它们的分配。在各个操作系统初始化的时候,对这些设备的存在进行检测,并且使用其针对这些设备的本机驱动程序,而不受硬件资源分配程序的干涉。
二级操作系统的“热”启
根据本发明,可以在其他操作系统继续运行的同时重启二级操作系统(例如由于系统崩溃)。由于系统资源是分开使用的,因此二级操作系统中的崩溃不会影响关键操作系统(或其他二级操作系统)的继续运行,并且二级操作系统的重启也不会造成这种影响。
在本实施方式中,对硬件资源分配程序的系统“停止”和“启动”软中断调用支持从关键操作系统内关闭和重新启动二级操作系统。此外,硬件资源分配程序在引导的时候在硬件资源分配程序所分得的永久内存中保存原始系统映象的副本。举例来说,在本实施方式中,热启是根据下述方式进行管理的:
在开始引导的时候,硬件资源分配程序保存二级操作系统内存映象的副本。
关键操作系统包括软件监视器驱动程序例程,用于周期性地监测二级操作系统的工作(例如,通过设定超时和等待由运行在二级操作系统中的同级驱动程序触发的事件,从而检查它们的持续操作情况)。
如果关键操作系统检测到二级操作系统发生故障或停止,则触发对硬件资源分配程序的(二级操作系统的)“停止”,然后“启动”软中断调用。
然后硬件资源分配程序恢复所保存的二级操作系统映象的副本,并且从内存中对其进行重新引导,以进行重启。可以发现:在本实施方式的测试中,从锁死之后的几秒钟之内就可以重启Linux二级操作系统。
根据其他方面,热启建立在可在Chorus操作系统中获得的热启功能的基础上,例如在下面文章中所描述的:
“Fast Error Recovery in CHORUS/OS.The Hot-RestartTechnology”(Abrossimov,F.Hermann.J.C.Hugly等人,Chorus SystemsInc.,Technical Report,August 1996,14p,可从http://www.jaluna.com/developer/papers/CSI-TR-96-34.pdf得到)。
运行时操作
现在将更加详细地介绍本实施方式在安装和启动之后的操作
在已经进行了启动和初始化之后,实时操作系统运行一个或多个应用程序207(例如UDP/IP栈-UDP/IP代表通用数据报协议/网际协议),并且二级操作系统运行多个应用程序208a、208b(例如字处理程序和电子制表程序)。实时操作系统微内核201和二级操作系统内核202通过硬件资源分配程序接口与硬件资源分配程序进行通信,该接口包括:
·代表操作系统设备环境的数据结构(即,为了切换到操作系统而需要保存和恢复的状态变量集合),和硬件储存库;
·在操作系统环境中执行的功能的集合;和
·在硬件资源分配程序环境下执行的软中断调用例程的集合。
如果没有哪个操作系统需要处理器时间(例如,都达到了“等待”状态),则硬件资源分配程序400切换到关键操作系统的空闲线程,在这一状态下,它等待中断或事件。这样,中断可以立即得到关键操作系统的服务例程的处理,而不需要首先切换到关键操作系统。
在某一刻,会出现中断或事件。例如,在数据端口中可能会接收到数据包,引发中断,以使其能够得到执行UDP/IP栈的实时操作系统的处理。另外,用户可以操作键盘或鼠标,引发中断,以操作二级操作系统202的GUI,用来与字处理应用程序208相互作用。另选地,系统时钟可以表明已经过预定时间,并且指出应用程序应当开始重新执行,或者操作系统功能应当执行。
关键操作系统服务例程于是对中断进行服务,下面将对此进行说明。
中断和事件处理
如果还没有进入关键操作系统,则硬件资源分配程序中断处理程序412调用操作系统切换程序408,以切换到关键操作系统,然后中断处理程序例程412调用关键操作系统201中的中断服务例程(ISR)。如果中断是打算用于关键操作系统的,因为它来自于唯一分配给关键操作系统的设备或因为它来自共享设备并且具有某一预定值,则关键操作系统ISR采取处理该中断所需的动作。如果不是,则将控制权交还硬件资源分配程序。
关键操作系统到二级操作系统的切换
参照图7,对于这个示例,系统执行运行在关键操作系统201上的应用程序207a的线程702。
如果发生中断,则关键操作系统中断服务例程704执行中断服务。在结束的时候,将控制权交还给线程702和由关键操作系统201的调度程序执行的任何其他线程。当所有线程的处理完成时,关键操作系统完成执行过程,它调度它的“空闲”线程。由此,关键操作系统中的“空闲”软中断例程发出对硬件资源分配程序400的“空闲”软中断调用。硬件资源分配程序然后执行进行如下操作的例程:
·如果中断处理程序412目前具有某些保存下来的虚拟中断,则由中断处理程序412将这些虚拟中断转送给二级操作系统。
·硬件资源分配程序操作系统调度程序410选择二级操作系统202来执行。然后,操作系统切换程序408将当前的设备环境(典型地,处理器MMU和状态寄存器、指令和栈指针)保存到关键操作系统设备环境存储区706中。然后检索所保存的用于二级操作系统202的执行设备环境708,并且将它们写入到相关寄存器中。
·如果有用于相关二级操作系统的虚拟中断,则中断处理程序412调用二级操作系统中的相关中断服务例程710,该服务例程710对中断进行服务,然后在完成之后,将二级操作系统的例程712的执行过程回复到它停止的地方。
如果中断处理程序412当前没有未决的中断,那么硬件资源分配程序操作系统切换程序408通过使用所恢复的操作系统设备环境中的所保存的程序计数器值来使二级操作系统从它停止的地方重新开始执行,在这种情况下是线程712。
这样,在关键操作系统201已经进行了某些功能(为它自己的应用程序或服务程序进行服务,或为打算送给另一个操作系统的中断进行服务)之后,硬件资源分配程序根据调度程序410所做出的确定将控制权交还给下一个二级操作系统202。
二级操作系统根据中断切换到关键操作系统
参照图8,现在将说明从二级操作系统转换到关键操作系统的处理。在这种情况下,系统正在执行在关键操作系统202上运行的应用程序208a的线程712。
当发生硬件中断时,硬件资源分配程序启动操作系统切换程序,以将二级操作系统设备环境保存在设备环境存储区708中。然后切换到关键操作系统201,从设备环境存储区706中恢复状态变量的值,并且调用关键操作系统201的中断服务例程704。在对中断进行了服务之后,关键操作系统201的调度程序可以将控制权从ISR 704交到先前执行的线程704(或将要执行的线程)。
当ISR和所有的线程都已经得到处理时,关键操作系统201将控制权交还给硬件资源分配程序,根据上面参照图7讨论过的方式,该硬件资源分配程序进行从主操作系统201的切换(将状态变量保存在设备环境存储区706中),并且切换到选定的二级操作系统201(从设备环境存储区708中检索状态变量)。
操作系统间通信-虚拟总线418
虚拟总线例程与各个操作系统中的虚拟总线驱动程序协同工作。它模拟连接这些操作系统的物理总线,类似于插在cPCI背板中的紧凑的PCI(cPCI)板。各个操作系统为这一虚拟总线上的虚拟总线桥设备配备有驱动程序例程,使得操作系统和它们的应用程序能够根据任意期望的协议进行通信,从原始数据转变成完整的IP协议栈。
硬件资源分配程序虚拟总线基于上面已经讨论过的共享内存和系统交叉中断原理。详细地说,虚拟总线例程418模拟C5buscom DDI:限定虚拟总线桥共享设备的syscom,允许虚拟总线间的内存导出(共享)和交叉中断在其他操作系统内的触发。
各个二级操作系统中的各个虚拟总线驱动程序在启动的时候在硬件资源分配程序硬件储存库中创建这样的虚拟总线桥。这样做,它导出(共享)它的专用内存的一个区域,并且提供在其宿主系统中引发中断的途径。
这样,第一操作系统的虚拟总线驱动程序通过下述方式向第二操作系统发送数据:
·向由第二操作系统的同级虚拟总线驱动程序导出的内存中写入,然后;
·触发交叉中断来通报该数据可由第二操作系统中的同级总线驱动程序使用。
在反方向(引入)上,当接收到表明已将这些数据已经存储在它自己的导出内存区域中的交叉中断时,虚拟总线驱动程序传播引入数据上行流(由打算供给的应用程序或例程使用)。
参照图9a,要与运行在同一个操作系统202上的另一个应用程序208b进行通信的应用程序208a可以通过该操作系统完成这一通信过程。运行在一个操作系统上的要与运行在不同操作系统202上的另一个应用程序208b进行通信的应用程序207b通过使用它的操作系统的API将数据写入到虚拟总线中来实现这一通信,应用程序207b的操作系统使用虚拟总线驱动程序例程将数据传递给另一个操作系统202,该另一个操作系统202将数据从其虚拟总线驱动程序传送给应用程序208b。
参照图9b,将这一方案移植到在不同计算机100、101上运行第一和第二操作系统的方案中所需的改变是很小的;只需改变由操作系统使用的驱动程序,使得它们使用用于真实总线103的驱动程序而不是虚拟总线驱动程序。因此使得该系统更加独立于该系统在其上进行工作的硬件。
跨越硬件资源分配程序虚拟总线的通信可用于应用程序,但也可以由操作系统内核在内部使用,从而它们可以在实现分布在多个操作系统当中的多个服务的过程中协同工作。这种类型的“智能”分布服务包括用于系统热启的软件监视器(上面讨论过),或者分布式网络协议栈。
EP 1054332专利使用了信号机锁来同步对共用通信内存的访问。这种锁引用了RT与GP操作系统之间的额外的依从性。在本实施方式中,通过使用无锁通信协议使这种情况得到了避免。
调试
在一个优选实施方式中,硬件资源分配程序具有第二种操作模式,在这种模式下,它起到调试代理的作用。
根据这种实施方式,在第二种模式下,硬件资源分配程序能够通过串行通信线与运行在另一个机器(或“主”机)上的调制软件工具进行通信。
这样的调制工具提供高级图形用户界面(GUI),以远程控制硬件资源分配程序。使用了硬件资源分配程序虚拟化异常机制来中止所限定的异常。然后用户可以配置并控制硬件资源分配程序在处理器异常的情况下如何动作,并且还可以显示机器和系统状态,以便能够诊断代码或其他系统错误或问题。
用户能够选择一个或多个这样的处理器异常,作为从操作系统到硬件资源分配程序的软中断调用的基础。根据所选定的异常,当在运行期间出现该或各个异常时,停止操作系统,并且执行对硬件资源分配程序的软中断调用,然后硬件资源分配程序保存当前的设备环境,并且使能与主机上的调试工具相互作用。用户于是可以促成状态变量(比如栈指针、程序和地址计数器)和/或所选定的内存块的内容的当前状态的显示。用户可以规定在所要调试的特定操作系统应当捕获给定类型的异常,或者规定在任何操作系统中不管什么时候出现异常都应对它们进行捕获。响应于此,软中断调用是在一个或所有的操作系统中实施的。用户还可以规定,将给定类型的异常是在重新开始执行的时候正常地传送给系统,还是将其简单地忽略。
因为硬件资源分配程序在其自己的环境中执行,因此能够比从操作系统中进行调试实现更多的调试。重要的是,在用作调试代理的硬件资源分配程序与正在调试的系统之间没有代码要被共享。这能够实现,例如,甚至是内核低级代码的调试,比如异常向量或中断服务例程。
根据本实施方式的整个(主机/目标)调试体系结构的某些其他方面类似于Chorus或C5调试系统的体系结构,在由Jaluna出版的文献“C51.0Debugging Guide”(可从http://www.jaluna.com/doc/c5/html/DebugGuide/book1.html获得)中有记载。
安全体系
显然,上面说明的实施方式为安全体系给出了坚实的基础。这是因为二级操作系统(用户一般会在它上面运行不安全的应用程序)与规定的系统资源隔离,并且仅能通过硬件资源分配程序(和主操作系统的驱动程序)对它们进行访问。这样,可以在关键操作系统上运行安全应用程序,该操作系统例如进行加密/解密;允许对加密文件进行访问;管理、存储并提供密码和其他访问信息;管理并登记版权材料的访问和复制。运行在二级操作系统上的应用程序不能访问没有分配给该操作系统的系统资源,并且在操作系统运行在不同内存设备环境下时(即,对不同的空间使用不同的寻址指针),运行在二级操作系统上的应用程序不能用于干涉它们在主操作系统上的操作,从而削弱其操作的安全性。
其他方面和实施方式
从前文可显然看出,上述的实施方式仅仅是示例,并且很多其他的实施方式都是可行的。所提及的操作系统、平台和编程技术都可以自由改变。对本领域技术人员显而易见的任何其他的修改、替换和改变都被认为是落在本发明的范围之内,不管是否由所附的权利要求所覆盖。为了避免不清楚,所寻求保护的是本文所公开的任何和所有的新主题及其细合。
Claims (36)
1、一种使多个不同的操作系统能够同时运行在同一计算机上的方法,包括:
选择第一操作系统,使其具有相对较高的优先级;
选择至少一个第二操作系统,使其具有相对较低的优先级;
提供公用程序,该公用程序被设置为用于在预定的条件下在所述操作系统之间进行切换;以及
对所述第一操作系统和第二操作系统提供改进,以使得它们能够由所述公用程序进行控制。
2、根据权利要求1所述的方法,其中所述第一操作系统是实时操作系统。
3、根据权利要求1所述的方法,其中所述第二操作系统是非实时的通用操作系统。
4、根据权利要求1所述的方法,其中所述第二操作系统是Linux,或者它的一个版本或变型。
5、根据权利要求1所述的方法,其中所述公用程序被设置为:用于进行保存,并且用于将在操作系统之间进行切换所需的处理状态从保存版本进行恢复。
6、根据权利要求1所述的方法,其中将针对所述第二操作系统的处理器异常由所述公用程序以虚拟方式进行处理。
7、根据权利要求1所述的方法,其中所述公用程序被设置为:用于中止某些处理器异常,并且用于调用所述第一操作系统的异常处理例程,以对它们进行服务。
8、根据权利要求1所述的方法,其中将针对所述第二操作系统的处理器异常作为虚拟异常进行通报。
9、根据权利要求8所述的方法,其中所述公用程序被设置为:用于调用与未决的所述虚拟异常相对应的第二操作系统的异常处理例程。
10、根据权利要求1所述的方法,还包括:为各个所述操作系统提供独立的内存空间,在所述内存空间中,所述各操作系统能够进行排他地操作。
11、根据权利要求1所述的方法,还包括:为各个所述操作系统提供所述计算机的第一输入和/或输出设备,所述各个操作系统分别对所述第一输入和/或输出设备进行排他的使用权。
12、根据权利要求11所述的方法,其中所述各个操作系统使用本质上未经改进的本机例程来访问所述第一输入和/或输出设备。
13、根据权利要求1所述的方法,还包括:为各个所述操作系统提供对所述计算机的第二输入和/或输出设备的使用权,所述各个操作系统对所述第二输入和/或输出设备具有共享的使用权。
14、根据权利要求13所述的方法,其中所有的操作系统通过使用所述第一操作系统的例程,来访问所述第二输入和/或输出设备。
15、根据权利要求1所述的方法,还包括:提供用于在不中断所述第一操作系统或所述公用程序的操作的情况下重启所述第二操作系统的重启例程。
16、根据权利要求15所述的方法,其中所述公用程序提供软中断调用机制,以控制第二操作系统的操作,和/或事件机制,以将所述第二操作系统中的状态改变通知给所述第一操作系统。
17、根据权利要求15所述的方法,其中所述公用程序存储第二操作系统的内核的系统映象的副本,并且将该公用程序设置成用于从这样的所保存的副本恢复所述第二操作系统的内核。
18、根据权利要求15所述的方法,其中所述第一操作系统和所述第二操作系统具有协同操作的例程,用来使得所述第一操作系统能够监测所述第二操作系统的连续操作,以实现对所述第二操作系统崩溃的检测。
19、根据权利要求1所述的方法,还包括:提供调试例程,其中将所述公用程序设置为用于在这操作系统的操作中出现预定状态的时候输出机器状态变量的状态。
20、根据权利要求1所述的方法,还包括:将所述操作系统与所述公用程序组合成单一代码产品。
21、根据权利要求1所述的方法,还包括:将所述操作系统和所述公用程序嵌入到计算机产品的永久性存储器上。
22、根据权利要求1所述的方法,其中所述公用程序被设置为:用于提供操作系统间通信机制,该机制允许在所述第一操作系统与所述第二操作系统,和/或运行在它们之上的应用程序之间进行通信。
23、根据权利要求22所述的方法,其中所述公用程序限定与通信总线桥相对应的虚拟输入和/或输出设备,使得所述操作系统能够进行好像是由通信总线进行的通信。
24、根据权利要求23所述的方法,其中改进所述操作系统的步骤包括:添加对所述虚拟总线桥设备进行管理的驱动程序例程。
25、一种开发配套计算机程序产品,其包括用于执行权利要求1的步骤的代码。
26、一种计算机程序产品,其包括根据权利要求20组合的代码。
27、一种嵌入式计算机系统,其包括CPU、内存设备和输入/输出设备,该系统在其中的永久性内存上存储有根据权利要求24所述的嵌入程序。
28、一种计算机系统,其包括CPU、内存设备和输入/输出设备,在该系统上运行的计算机代码包括:
第一操作系统,具有相对较高的优先级;
第二操作系统,具有相对较低的优先级;以及
公用程序,被设置为:用于通过在预定的条件下在所述操作系统之间进行切换来同时运行所述操作系统。
29、根据权利要求28所述的计算机系统,被设置为:通过使用权利要求1到24中的任一项的方法,来同时运行所述第一操作系统和第二操作系统。
30、根据权利要求1所述的方法,其中各个所述操作系统配备有空闲例程,其中它将控制权交给所述公用程序。
31、根据权利要求30所述的方法,其中所述空闲例程取代了处理器暂停指令。
32、根据权利要求1所述方法,其中,在正在执行的操作系统的执行期间出现处理器异常时,
(a)所述公用程序被设置为调用所述第一操作系统的异常处理例程,以对它们进行服务;
(b)如果该异常是用于预定的第二操作系统,则创建虚拟异常;
(c)在所述处理器异常已经得到第一操作系统的服务之后,所述公用程序被设置为返回执行正在执行的操作系统;
(d)当所述公用程序接下来切换到所述预定的第二操作系统时,将未决的虚拟异常通知给预定的第二操作系统;以及
调用与所述虚拟异常相对应的预定第二操作系统的异常处理例程,来对其进行服务。
33、根据权利要求1所述的方法,其中对所述第二操作系统进行了改进,以防止它屏蔽中断。
34、根据权利要求1所述的方法,其中所有的硬件中断最初都是由所述第一操作系统处理的,并且对打算用于所述第二操作系统的硬件中断进行虚拟化和延迟,直到所述第二操作系统由所述公用程序下一次调用,并且在这个时候,所述硬件中断由该第二操作系统进行服务。
35、根据权利要求8所述的方法,其中所述公用程序被设置为:用于为所述第二操作系统或各个所述第二操作系统提供屏蔽虚拟异常的手段,以代替第二操作系统中的硬件中断屏蔽代码,从而使得所述第二操作系统可完全被所述第一操作系统占先。
36、根据权利要求9所述的方法,其中所述第二虚拟异常未被屏蔽。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP03290894.9 | 2003-04-09 | ||
EP03290894A EP1467282B1 (en) | 2003-04-09 | 2003-04-09 | Operating systems |
US10/665,352 | 2003-09-22 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008100986316A Division CN101349976A (zh) | 2003-04-09 | 2004-04-07 | 操作系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1791862A true CN1791862A (zh) | 2006-06-21 |
CN100392598C CN100392598C (zh) | 2008-06-04 |
Family
ID=32865085
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004800135732A Expired - Lifetime CN100392598C (zh) | 2003-04-09 | 2004-04-07 | 操作系统 |
CNA2008100986316A Pending CN101349976A (zh) | 2003-04-09 | 2004-04-07 | 操作系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008100986316A Pending CN101349976A (zh) | 2003-04-09 | 2004-04-07 | 操作系统 |
Country Status (6)
Country | Link |
---|---|
US (2) | US7434224B2 (zh) |
EP (2) | EP1467282B1 (zh) |
CN (2) | CN100392598C (zh) |
AT (1) | ATE409904T1 (zh) |
DE (1) | DE60323811D1 (zh) |
ES (1) | ES2315469T3 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101226478A (zh) * | 2006-09-29 | 2008-07-23 | 英特尔公司 | 提高平台引导效率的系统和方法 |
CN101946234A (zh) * | 2007-12-21 | 2011-01-12 | 开放协同有限公司 | 机动车辆控制装置 |
CN102469210A (zh) * | 2010-10-29 | 2012-05-23 | Lg电子株式会社 | 移动终端及其控制方法 |
CN102819497A (zh) * | 2012-05-31 | 2012-12-12 | 华为技术有限公司 | 一种内存分配方法、装置及系统 |
CN104050019A (zh) * | 2013-03-15 | 2014-09-17 | 宇宙互联有限公司 | 具有操作系统共享控制功能的电子装置、系统及方法 |
CN104156270A (zh) * | 2014-07-28 | 2014-11-19 | 浪潮(北京)电子信息产业有限公司 | 一种单机同时运行多操作系统的方法及系统 |
CN104572287A (zh) * | 2015-01-30 | 2015-04-29 | 西安酷派软件科技有限公司 | 一种系统切换时保持应用状态的方法、装置及终端 |
CN105068897A (zh) * | 2015-07-17 | 2015-11-18 | 东莞市健创电子有限公司 | 实现车载智能双系统的方法及其双系统和该双系统平台 |
CN106055384A (zh) * | 2009-07-20 | 2016-10-26 | 谷歌技术控股有限责任公司 | 多环境操作系统 |
CN107436810A (zh) * | 2017-07-03 | 2017-12-05 | 北京东土科技股份有限公司 | 一种计算机系统资源调度方法及装置 |
CN109032029A (zh) * | 2018-08-14 | 2018-12-18 | 北京东土科技股份有限公司 | 工业服务器对外通信方法、系统、装置及工业服务器 |
CN112136110A (zh) * | 2018-05-07 | 2020-12-25 | 三菱电机株式会社 | 信息处理装置、调整方法及调整程序 |
CN115098402A (zh) * | 2022-07-25 | 2022-09-23 | 摩尔线程智能科技(北京)有限责任公司 | 调试方法以及调试装置 |
Families Citing this family (111)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2003298560A1 (en) | 2002-08-23 | 2004-05-04 | Exit-Cube, Inc. | Encrypting operating system |
US7975117B2 (en) * | 2003-03-24 | 2011-07-05 | Microsoft Corporation | Enforcing isolation among plural operating systems |
US8612992B2 (en) * | 2003-04-09 | 2013-12-17 | Jaluna Sa | Operating systems |
EP1467282B1 (en) * | 2003-04-09 | 2008-10-01 | Jaluna SA | Operating systems |
US7647583B2 (en) * | 2003-05-20 | 2010-01-12 | Robert M Zeidman | Method and apparatus for emulating a hardware/software system using a computer |
JP3952992B2 (ja) * | 2003-06-03 | 2007-08-01 | ソニー株式会社 | 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム |
EP1503286B1 (en) * | 2003-07-30 | 2014-09-03 | Jaluna SA | Multiple operating system networking |
US9032404B2 (en) | 2003-08-28 | 2015-05-12 | Mips Technologies, Inc. | Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor |
US7836450B2 (en) | 2003-08-28 | 2010-11-16 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7849297B2 (en) * | 2003-08-28 | 2010-12-07 | Mips Technologies, Inc. | Software emulation of directed exceptions in a multithreading processor |
US7870553B2 (en) | 2003-08-28 | 2011-01-11 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7610473B2 (en) * | 2003-08-28 | 2009-10-27 | Mips Technologies, Inc. | Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor |
CN1922576A (zh) * | 2003-09-30 | 2007-02-28 | 扎鲁纳股份有限公司 | 操作系统 |
DE10348113A1 (de) * | 2003-10-16 | 2005-05-19 | Kuka Roboter Gmbh | Verfahren und Einrichtung zum Betreiben eines Sekundärbetriebssystems neben einem Primärbetriebssystem |
US7587723B2 (en) * | 2003-11-13 | 2009-09-08 | International Business Machines Corporation | Restarting a shared virtual resource |
CN1658185A (zh) * | 2004-02-18 | 2005-08-24 | 国际商业机器公司 | 相互独立地共存多个操作系统的计算机系统与其切换方法 |
US20050216895A1 (en) * | 2004-03-23 | 2005-09-29 | Tran Hieu T | Method and apparatus for remote debugging of kernel and application software |
US20050251806A1 (en) * | 2004-05-10 | 2005-11-10 | Auslander Marc A | Enhancement of real-time operating system functionality using a hypervisor |
JP4233492B2 (ja) * | 2004-06-02 | 2009-03-04 | 富士通マイクロエレクトロニクス株式会社 | アドレス変換装置 |
US7827558B2 (en) * | 2004-06-30 | 2010-11-02 | Devicevm, Inc. | Mechanism for enabling a program to be executed while the execution of an operating system is suspended |
US20060010446A1 (en) * | 2004-07-06 | 2006-01-12 | Desai Rajiv S | Method and system for concurrent execution of multiple kernels |
US7424601B2 (en) * | 2004-07-07 | 2008-09-09 | Yongyong Xu | Methods and systems for running multiple operating systems in a single mobile device |
GB0423094D0 (en) * | 2004-10-18 | 2004-11-17 | Ttp Communications Ltd | Interrupt control |
JP2006146758A (ja) * | 2004-11-24 | 2006-06-08 | Matsushita Electric Ind Co Ltd | コンピュータシステム |
FI119664B (fi) * | 2004-12-08 | 2009-01-30 | Open Invention Network Llc | Menetelmä elektronisissa laitteissa oleviin tiedostoihin pääsemiseksi |
US7793288B2 (en) * | 2004-12-09 | 2010-09-07 | International Business Machines Corporation | Automatic resource management of a guest operating system using information in data set indicating minimum system requirement |
US7748003B2 (en) * | 2004-12-20 | 2010-06-29 | International Business Machines Corporation | Hard real-time response |
TW200627277A (en) * | 2005-01-24 | 2006-08-01 | Lite On Technology Corp | OS selection method and computer system utilizing same |
US20060179326A1 (en) * | 2005-02-10 | 2006-08-10 | Kwok-Yan Leung | Security device using multiple operating system for enforcing security domain |
US8219823B2 (en) | 2005-03-04 | 2012-07-10 | Carter Ernst B | System for and method of managing access to a system using combinations of user information |
US7437546B2 (en) * | 2005-08-03 | 2008-10-14 | Intel Corporation | Multiple, cooperating operating systems (OS) platform system and method |
US7752436B2 (en) | 2005-08-09 | 2010-07-06 | Intel Corporation | Exclusive access for secure audio program |
TWI279678B (en) * | 2005-09-07 | 2007-04-21 | Mitac Technology Corp | Method for fast switching between different operating systems in computer device with multiple operating systems |
US20070104340A1 (en) * | 2005-09-28 | 2007-05-10 | Knowles Electronics, Llc | System and Method for Manufacturing a Transducer Module |
US7719132B2 (en) | 2005-09-28 | 2010-05-18 | L3 Communications Corporation | Ruggedized mobile computing device |
JP4597032B2 (ja) * | 2005-10-24 | 2010-12-15 | 株式会社ソニー・コンピュータエンタテインメント | コンピュータシステム、それにおける基本プログラムの起動方法、及びローダプログラム |
FI20051114A0 (fi) * | 2005-11-03 | 2005-11-03 | Nokia Corp | Automaattinen monen tietokoneen käynnistys |
US9189291B2 (en) * | 2005-12-12 | 2015-11-17 | International Business Machines Corporation | Sharing a kernel of an operating system among logical partitions |
JP2007220086A (ja) * | 2006-01-17 | 2007-08-30 | Ntt Docomo Inc | 入出力制御装置、入出力制御システム及び入出力制御方法 |
JP2007213494A (ja) | 2006-02-13 | 2007-08-23 | Ntt Docomo Inc | 更新起動装置及び更新起動制御方法 |
US7950020B2 (en) * | 2006-03-16 | 2011-05-24 | Ntt Docomo, Inc. | Secure operating system switching |
US7814307B2 (en) | 2006-03-16 | 2010-10-12 | Microsoft Corporation | Fast booting a computing device to a specialized experience |
US8042109B2 (en) | 2006-03-21 | 2011-10-18 | Intel Corporation | Framework for domain-specific run-time environment acceleration using virtualization technology |
US9201703B2 (en) | 2006-06-07 | 2015-12-01 | International Business Machines Corporation | Sharing kernel services among kernels |
JP2008033392A (ja) * | 2006-07-26 | 2008-02-14 | Nec Corp | 仮想計算機システム及びその動作方法 |
JP5028904B2 (ja) * | 2006-08-10 | 2012-09-19 | ソニー株式会社 | 電子機器、および起動方法 |
US7689820B2 (en) * | 2006-09-27 | 2010-03-30 | L3 Communications Corporation | Rapid-boot computing device with dual operating systems |
US8819483B2 (en) * | 2006-09-27 | 2014-08-26 | L-3 Communications Corporation | Computing device with redundant, dissimilar operating systems |
US8424013B1 (en) * | 2006-09-29 | 2013-04-16 | Emc Corporation | Methods and systems for handling interrupts across software instances and context switching between instances having interrupt service routine registered to handle the interrupt |
US8707337B2 (en) * | 2006-10-31 | 2014-04-22 | Motorola Mobility Llc | Dispatch API that permits midlets to initiate dispatch calls |
US7689566B1 (en) * | 2006-12-12 | 2010-03-30 | Sun Microsystems, Inc. | Method for defining non-native operating environments |
JP2008152462A (ja) * | 2006-12-15 | 2008-07-03 | Ntt Docomo Inc | 遠隔起動システム、遠隔起動サーバ及び通信端末 |
EP2126694A2 (en) * | 2006-12-22 | 2009-12-02 | VirtualLogix SA | System for enabling multiple execution environments to share a device |
JP2008305070A (ja) * | 2007-06-06 | 2008-12-18 | Hitachi Communication Technologies Ltd | 情報処理装置および情報処理装置システム |
US8269756B2 (en) * | 2007-06-15 | 2012-09-18 | The Boeing Company | Controllable voltage device drivers and methods of operation therefor |
US9454384B2 (en) * | 2007-07-05 | 2016-09-27 | Microsoft Technology Licensing, Llc | Custom operating system via a web-service |
US8146107B2 (en) * | 2007-07-10 | 2012-03-27 | Mitel Networks Corporation | Virtual machine environment for interfacing a real time operating system environment with a native host operating system |
US8312476B2 (en) | 2007-09-05 | 2012-11-13 | Htc Corporation | Method for synchronizing information of dual operating systems |
TWI393114B (zh) * | 2007-09-05 | 2013-04-11 | Htc Corp | 在作業系統切換時逐步調整螢幕亮度的方法 |
CA2699565C (en) * | 2007-09-20 | 2014-07-15 | C&S Operations, Inc. | Computer system with multiple terminals |
US20090158299A1 (en) * | 2007-10-31 | 2009-06-18 | Carter Ernst B | System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed |
US8230446B2 (en) * | 2007-11-28 | 2012-07-24 | International Business Machines Corporation | Providing a computing system with real-time capabilities |
EP2083525A1 (en) * | 2008-01-28 | 2009-07-29 | Merging Technologies S.A. | System to process a plurality of audio sources |
FR2927438B1 (fr) * | 2008-02-08 | 2010-03-05 | Commissariat Energie Atomique | Methode de prechargement dans une hierarchie de memoires des configurations d'un systeme heterogene reconfigurable de traitement de l'information |
US8364943B2 (en) * | 2008-02-29 | 2013-01-29 | Lenovo (Singapore) Pte. Ltd. | S3 BIOS operating system switch |
US11385758B2 (en) | 2008-10-09 | 2022-07-12 | Aristocrat Technologies Australia Pty Limited | Gaming system and gaming system processor module |
US11287939B2 (en) | 2008-10-09 | 2022-03-29 | Aristocrat Technologies Australia Pty Limited | Gaming system and gaming system processor module |
AU2009222627B2 (en) | 2008-10-09 | 2011-07-21 | Aristocrat Technologies Australia Pty Limited | Gaming system and gaming system processor module |
US20100180276A1 (en) * | 2009-01-15 | 2010-07-15 | Jiva Azeem S | Application partitioning across a virtualized environment |
US20100265938A1 (en) * | 2009-04-16 | 2010-10-21 | Mitel Networks Corporation | Enhanced system operation by virtualization |
US9372711B2 (en) | 2009-07-20 | 2016-06-21 | Google Technology Holdings LLC | System and method for initiating a multi-environment operating system |
US9367331B2 (en) | 2009-07-20 | 2016-06-14 | Google Technology Holdings LLC | Multi-environment operating system |
US9389877B2 (en) | 2009-07-20 | 2016-07-12 | Google Technology Holdings LLC | Multi-environment operating system |
KR101610828B1 (ko) * | 2009-09-23 | 2016-04-08 | 삼성전자주식회사 | 멀티코어 프로세서의 인터럽트 온/오프 관리 장치와 방법 |
US9110568B2 (en) * | 2009-10-13 | 2015-08-18 | Google Inc. | Browser tab management |
GB0919253D0 (en) * | 2009-11-03 | 2009-12-16 | Cullimore Ian | Atto 1 |
KR20110072922A (ko) * | 2009-12-23 | 2011-06-29 | 삼성전자주식회사 | 화상형성장치의 추가 확장기능을 실행하는 방법 및 이를 수행하는 화상형성장치 |
CN101782861A (zh) * | 2009-12-24 | 2010-07-21 | 华为终端有限公司 | 在嵌入式系统中操作系统的管理方法及装置 |
US20110219373A1 (en) * | 2010-03-02 | 2011-09-08 | Electronics And Telecommunications Research Institute | Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform |
US8433889B2 (en) | 2010-04-28 | 2013-04-30 | Acer Cloud Technology, Inc. | Operating system context switching |
US8819321B2 (en) | 2010-06-03 | 2014-08-26 | Dell Products L.P. | Systems and methods for providing instant-on functionality on an embedded controller |
US8983536B2 (en) | 2010-10-22 | 2015-03-17 | Google Technology Holdings LLC | Resource management in a multi-operating environment |
WO2012053095A1 (ja) * | 2010-10-22 | 2012-04-26 | 三菱電機株式会社 | 割込み信号受付け装置及びコンピュータ装置 |
KR101727041B1 (ko) * | 2010-10-29 | 2017-04-14 | 엘지전자 주식회사 | 이동 단말기 및 그 제어 방법 |
US8875276B2 (en) | 2011-09-02 | 2014-10-28 | Iota Computing, Inc. | Ultra-low power single-chip firewall security device, system and method |
US9178981B2 (en) * | 2010-12-22 | 2015-11-03 | Lg Electronics Inc. | Mobile terminal and method of sharing information therein |
US9354900B2 (en) * | 2011-04-28 | 2016-05-31 | Google Technology Holdings LLC | Method and apparatus for presenting a window in a system having two operating system environments |
US20120278747A1 (en) * | 2011-04-28 | 2012-11-01 | Motorola Mobility, Inc. | Method and apparatus for user interface in a system having two operating system environments |
US8904216B2 (en) | 2011-09-02 | 2014-12-02 | Iota Computing, Inc. | Massively multicore processor and operating system to manage strands in hardware |
JP5729266B2 (ja) * | 2011-11-15 | 2015-06-03 | 富士通株式会社 | 情報処理装置、情報処理装置の制御方法、及び情報処理装置の制御プログラム |
CN103136052A (zh) * | 2011-11-25 | 2013-06-05 | 展讯通信(上海)有限公司 | 移动终端及安装有多个操作系统的移动终端的控制方法 |
US8544082B2 (en) | 2012-01-05 | 2013-09-24 | Lenovo (Singapore) Pte. Ltd. | Security reuse in hybrid information handling device environments |
US9417753B2 (en) | 2012-05-02 | 2016-08-16 | Google Technology Holdings LLC | Method and apparatus for providing contextual information between operating system environments |
US9342325B2 (en) | 2012-05-17 | 2016-05-17 | Google Technology Holdings LLC | Synchronizing launch-configuration information between first and second application environments that are operable on a multi-modal device |
CN103839017B (zh) * | 2012-11-20 | 2019-07-26 | 联想(北京)有限公司 | 一种电子设备状态的切换方法及系统 |
CN103870295B (zh) * | 2012-12-13 | 2017-03-29 | 联想(北京)有限公司 | 切换方法和电子设备 |
WO2014100279A1 (en) * | 2012-12-18 | 2014-06-26 | Dynavisor, Inc. | Dynamic device virtualization |
US20140325041A1 (en) * | 2013-04-27 | 2014-10-30 | Tencent Technology (Shenzhen) Co., Ltd. | Method, apparatus, server and system for adapting a client to a hardware environment |
US9880888B2 (en) * | 2013-06-07 | 2018-01-30 | Mitsubishi Electric Corporation | Executing an operating system in a multiprocessor computer system |
CN103744693B (zh) * | 2013-12-13 | 2017-12-08 | 乐视致新电子科技(天津)有限公司 | 一种多系统切换方法及电子设备 |
EP3180030B1 (en) | 2014-08-12 | 2019-10-09 | The Regents of The University of California | Trehalose hydrogels for stabilization and delivery of proteins |
US9928079B2 (en) * | 2014-09-23 | 2018-03-27 | Dialog Semiconductor (Uk) Limited | Conditional processor auto boot with no boot loader when coupled with a nonvolatile memory |
CN105159819B (zh) * | 2015-09-01 | 2018-03-13 | 汉柏科技有限公司 | 一种记录内核异常栈及调试信息的方法及系统 |
TR201608894A3 (tr) * | 2016-06-27 | 2018-03-21 | Tusas Tuerk Havacilik Ve Uzay Sanayii Anonim Sirketi | Bir gerçek zamanlı çalışma yöntemi. |
JP6615726B2 (ja) | 2016-09-16 | 2019-12-04 | 株式会社東芝 | 情報処理装置、情報処理方法及びプログラム |
CN106445702A (zh) * | 2016-09-21 | 2017-02-22 | 乐视控股(北京)有限公司 | 多系统通信方法及终端 |
CN106681817B (zh) * | 2016-12-27 | 2021-01-15 | 宇龙计算机通信科技(深圳)有限公司 | 一种终端控制方法以及终端 |
CN108829442B (zh) * | 2017-05-04 | 2021-12-14 | 杭州海康威视数字技术股份有限公司 | 程序启动方法及装置 |
US10169030B1 (en) | 2017-09-13 | 2019-01-01 | International Business Machines Corporation | Refreshing a software component without interruption |
CN110134491B (zh) * | 2018-02-09 | 2023-08-08 | 威纶科技股份有限公司 | 信息处理传输装置 |
EP3611642B1 (en) * | 2018-08-17 | 2020-08-12 | Omron Corporation | Method for operating an industrial pc device and industrial pc device |
Family Cites Families (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4764864A (en) | 1985-04-04 | 1988-08-16 | Nec Corporation | Circuit arrangement capable of improving overhead of a control program on interrupting into a virtual machine |
US4747040A (en) | 1985-10-09 | 1988-05-24 | American Telephone & Telegraph Company | Dual operating system computer |
JP2629278B2 (ja) | 1988-06-30 | 1997-07-09 | 株式会社日立製作所 | 仮想計算機システム |
DE3831048A1 (de) | 1988-09-12 | 1990-03-15 | Nixdorf Computer Ag | Betriebsprogramm fuer eine datenverarbeitungsanlage |
US5144692A (en) * | 1989-05-17 | 1992-09-01 | International Business Machines Corporation | System for controlling access by first system to portion of main memory dedicated exclusively to second system to facilitate input/output processing via first system |
US5355490A (en) | 1991-06-14 | 1994-10-11 | Toshiba America Information Systems, Inc. | System and method for saving the state for advanced microprocessor operating modes |
US5596755A (en) | 1992-11-03 | 1997-01-21 | Microsoft Corporation | Mechanism for using common code to handle hardware interrupts in multiple processor modes |
US5530858A (en) * | 1993-04-01 | 1996-06-25 | Intel Corporation | Method and apparatus for background processing for PCMCIA card services |
US6684261B1 (en) * | 1993-07-19 | 2004-01-27 | Object Technology Licensing Corporation | Object-oriented operating system |
US5379432A (en) * | 1993-07-19 | 1995-01-03 | Taligent, Inc. | Object-oriented interface for a procedural operating system |
US6116768A (en) * | 1993-11-30 | 2000-09-12 | Texas Instruments Incorporated | Three input arithmetic logic unit with barrel rotator |
US5884077A (en) | 1994-08-31 | 1999-03-16 | Canon Kabushiki Kaisha | Information processing system and method in which computer with high load borrows processor of computer with low load to execute process |
US5721922A (en) | 1994-10-13 | 1998-02-24 | Intel Corporation | Embedding a real-time multi-tasking kernel in a non-real-time operating system |
US5903752A (en) | 1994-10-13 | 1999-05-11 | Intel Corporation | Method and apparatus for embedding a real-time multi-tasking kernel in a non-real-time operating system |
US5740438A (en) | 1995-03-31 | 1998-04-14 | International Business Machines Corporation | Methods and system for network communications of multiple partitions |
US5812823A (en) | 1996-01-02 | 1998-09-22 | International Business Machines Corporation | Method and system for performing an emulation context save and restore that is transparent to the operating system |
US6535929B1 (en) | 1996-07-02 | 2003-03-18 | Sun Microsystems, Inc. | Universal communication mechanism for applications running in a multitasking environment |
US5995745A (en) | 1996-12-23 | 1999-11-30 | Yodaiken; Victor J. | Adding real-time support to general purpose operating systems |
US6199096B1 (en) * | 1997-03-14 | 2001-03-06 | Efusion, Inc. | Method and apparatus for synchronizing information browsing among multiple systems |
US6269409B1 (en) * | 1997-09-02 | 2001-07-31 | Lsi Logic Corporation | Method and apparatus for concurrent execution of operating systems |
US6772419B1 (en) * | 1997-09-12 | 2004-08-03 | Hitachi, Ltd. | Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS |
FI108478B (fi) * | 1998-01-21 | 2002-01-31 | Nokia Corp | Sulautettu jõrjestelmõ |
EP0944003A1 (en) * | 1998-03-18 | 1999-09-22 | SONY EUROPE GmbH | Notification subsystem |
US6134653A (en) | 1998-04-22 | 2000-10-17 | Transwitch Corp. | RISC processor architecture with high performance context switching in which one context can be loaded by a co-processor while another context is being accessed by an arithmetic logic unit |
US6496847B1 (en) | 1998-05-15 | 2002-12-17 | Vmware, Inc. | System and method for virtualizing computer systems |
FR2793906B1 (fr) | 1999-05-19 | 2001-08-10 | Bull Sa | Systeme et procede de gestion d'attributs dans un environnement oriente objet |
JP3659062B2 (ja) * | 1999-05-21 | 2005-06-15 | 株式会社日立製作所 | 計算機システム |
US6760783B1 (en) * | 1999-05-21 | 2004-07-06 | Intel Corporation | Virtual interrupt mechanism |
JP2000347883A (ja) | 1999-06-03 | 2000-12-15 | Matsushita Electric Ind Co Ltd | 仮想計算機装置 |
US6920633B1 (en) * | 2000-01-14 | 2005-07-19 | Microsoft Corporation | Cross-process common system resource data sharing |
US7036106B1 (en) | 2000-02-17 | 2006-04-25 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
US6763327B1 (en) | 2000-02-17 | 2004-07-13 | Tensilica, Inc. | Abstraction of configurable processor functionality for operating systems portability |
US6715016B1 (en) | 2000-06-01 | 2004-03-30 | Hitachi, Ltd. | Multiple operating system control method |
EP1162536A1 (en) * | 2000-06-09 | 2001-12-12 | Hitachi, Ltd. | Multiple operating system control method |
CN101284525A (zh) | 2000-06-20 | 2008-10-15 | 株式会社日立制作所 | 车辆行驶控制装置 |
US6868507B1 (en) * | 2000-11-07 | 2005-03-15 | Intel Corporation | Operating system independent |
US20020078339A1 (en) * | 2000-12-15 | 2002-06-20 | Shen Hung-Ju | Booting system and booting method for an assistant operation system |
US20020161961A1 (en) * | 2001-01-17 | 2002-10-31 | Ajile Systems, Inc. | Multiple virtual machine environment management system |
US7079531B2 (en) * | 2001-03-28 | 2006-07-18 | Siemens Communications, Inc. | Method and apparatus for providing a software adaption layer in a telecommunications system |
US6789156B1 (en) | 2001-05-22 | 2004-09-07 | Vmware, Inc. | Content-based, transparent sharing of memory units |
JP2003036174A (ja) * | 2001-07-25 | 2003-02-07 | Hitachi Ltd | 車載端末装置 |
US7191440B2 (en) * | 2001-08-15 | 2007-03-13 | Intel Corporation | Tracking operating system process and thread execution and virtual machine execution in hardware or in a virtual machine monitor |
US7356677B1 (en) * | 2001-10-19 | 2008-04-08 | Flash Vos, Inc. | Computer system capable of fast switching between multiple operating systems and applications |
US6725289B1 (en) | 2002-04-17 | 2004-04-20 | Vmware, Inc. | Transparent address remapping for high-speed I/O |
US6920587B2 (en) * | 2002-04-25 | 2005-07-19 | International Business Machines Corporation | Handling multiple operating system capabilities in a logical partition data processing system |
KR100421144B1 (ko) | 2002-05-24 | 2004-03-04 | 삼성전자주식회사 | 미디어 게이트웨이 콘트롤 프로토콜방식의 보이스 오버인터넷 프로토콜 호 서비스를 위한 헤드 엔드 장치 |
US7210144B2 (en) * | 2002-08-02 | 2007-04-24 | Microsoft Corporation | Method for monitoring and emulating privileged instructions of programs in a virtual machine |
US6782424B2 (en) | 2002-08-23 | 2004-08-24 | Finite State Machine Labs, Inc. | System, method and computer program product for monitoring and controlling network connections from a supervisory operating system |
US8214531B2 (en) | 2002-10-24 | 2012-07-03 | Emulex Design & Manufacturing Corporation | Network configuration synchronization for hardware accelerated network protocol |
US8612992B2 (en) | 2003-04-09 | 2013-12-17 | Jaluna Sa | Operating systems |
EP1467282B1 (en) | 2003-04-09 | 2008-10-01 | Jaluna SA | Operating systems |
EP1503286B1 (en) | 2003-07-30 | 2014-09-03 | Jaluna SA | Multiple operating system networking |
CN1922576A (zh) | 2003-09-30 | 2007-02-28 | 扎鲁纳股份有限公司 | 操作系统 |
-
2003
- 2003-04-09 EP EP03290894A patent/EP1467282B1/en not_active Expired - Lifetime
- 2003-04-09 DE DE60323811T patent/DE60323811D1/de not_active Expired - Lifetime
- 2003-04-09 AT AT03290894T patent/ATE409904T1/de not_active IP Right Cessation
- 2003-04-09 ES ES03290894T patent/ES2315469T3/es not_active Expired - Lifetime
- 2003-09-22 US US10/665,352 patent/US7434224B2/en active Active
-
2004
- 2004-04-07 EP EP07016570A patent/EP1879108A1/en not_active Withdrawn
- 2004-04-07 CN CNB2004800135732A patent/CN100392598C/zh not_active Expired - Lifetime
- 2004-04-07 CN CNA2008100986316A patent/CN101349976A/zh active Pending
- 2004-04-07 US US10/552,608 patent/US8201170B2/en active Active
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101226478A (zh) * | 2006-09-29 | 2008-07-23 | 英特尔公司 | 提高平台引导效率的系统和方法 |
CN101946234A (zh) * | 2007-12-21 | 2011-01-12 | 开放协同有限公司 | 机动车辆控制装置 |
CN106055384A (zh) * | 2009-07-20 | 2016-10-26 | 谷歌技术控股有限责任公司 | 多环境操作系统 |
CN102469210A (zh) * | 2010-10-29 | 2012-05-23 | Lg电子株式会社 | 移动终端及其控制方法 |
US8612740B2 (en) | 2010-10-29 | 2013-12-17 | Lg Electronics Inc. | Mobile terminal with a dedicated screen of a first operating system (OS) with at least an icon to touch for execution in a second OS |
CN102469210B (zh) * | 2010-10-29 | 2015-01-21 | Lg电子株式会社 | 移动终端及其控制方法 |
CN102819497A (zh) * | 2012-05-31 | 2012-12-12 | 华为技术有限公司 | 一种内存分配方法、装置及系统 |
CN102819497B (zh) * | 2012-05-31 | 2015-09-30 | 华为技术有限公司 | 一种内存分配方法、装置及系统 |
CN104050019A (zh) * | 2013-03-15 | 2014-09-17 | 宇宙互联有限公司 | 具有操作系统共享控制功能的电子装置、系统及方法 |
CN104156270A (zh) * | 2014-07-28 | 2014-11-19 | 浪潮(北京)电子信息产业有限公司 | 一种单机同时运行多操作系统的方法及系统 |
CN104572287A (zh) * | 2015-01-30 | 2015-04-29 | 西安酷派软件科技有限公司 | 一种系统切换时保持应用状态的方法、装置及终端 |
CN104572287B (zh) * | 2015-01-30 | 2018-12-25 | 西安酷派软件科技有限公司 | 一种系统切换时保持应用状态的方法、装置及终端 |
CN105068897A (zh) * | 2015-07-17 | 2015-11-18 | 东莞市健创电子有限公司 | 实现车载智能双系统的方法及其双系统和该双系统平台 |
CN107436810A (zh) * | 2017-07-03 | 2017-12-05 | 北京东土科技股份有限公司 | 一种计算机系统资源调度方法及装置 |
CN112136110A (zh) * | 2018-05-07 | 2020-12-25 | 三菱电机株式会社 | 信息处理装置、调整方法及调整程序 |
CN109032029A (zh) * | 2018-08-14 | 2018-12-18 | 北京东土科技股份有限公司 | 工业服务器对外通信方法、系统、装置及工业服务器 |
CN109032029B (zh) * | 2018-08-14 | 2020-12-08 | 北京东土科技股份有限公司 | 工业服务器对外通信方法、系统、装置及工业服务器 |
CN115098402A (zh) * | 2022-07-25 | 2022-09-23 | 摩尔线程智能科技(北京)有限责任公司 | 调试方法以及调试装置 |
CN115098402B (zh) * | 2022-07-25 | 2023-01-06 | 摩尔线程智能科技(北京)有限责任公司 | 调试方法以及调试装置 |
Also Published As
Publication number | Publication date |
---|---|
CN100392598C (zh) | 2008-06-04 |
EP1467282A2 (en) | 2004-10-13 |
ATE409904T1 (de) | 2008-10-15 |
CN101349976A (zh) | 2009-01-21 |
US20070022421A1 (en) | 2007-01-25 |
US20040205755A1 (en) | 2004-10-14 |
EP1467282A3 (en) | 2004-12-22 |
EP1467282B1 (en) | 2008-10-01 |
US8201170B2 (en) | 2012-06-12 |
DE60323811D1 (de) | 2008-11-13 |
EP1879108A1 (en) | 2008-01-16 |
ES2315469T3 (es) | 2009-04-01 |
US7434224B2 (en) | 2008-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1791862A (zh) | 操作系统 | |
CN1254746C (zh) | 应用执行装置及方法 | |
CN1299207C (zh) | San环境中基于网络的海量存储资源管理方法 | |
CN1881183A (zh) | 信息处理装置、进程控制方法及其计算机程序 | |
CN1906584A (zh) | 信息处理装置、处理控制方法和计算机程序 | |
CN1149479C (zh) | 一个实时系统的数据管理系统 | |
CN1224903C (zh) | 逐模块验证 | |
CN101477496B (zh) | 基于分布式内存虚拟化的numa结构的实现方法 | |
CN101052949A (zh) | 操作系统 | |
CN1928840A (zh) | 存储装置虚拟化装置的设备控制交接方法 | |
CN1298512A (zh) | 基于堆栈的访问控制 | |
CN1492324A (zh) | 多处理器存储器一致性的高效仿真方法和系统 | |
CN1008484B (zh) | 处理机输入/输出和中断过滤器 | |
CN1016829B (zh) | 在多任务虚拟存储器虚拟计算机型数据处理系统中控制输入输出存取的方法 | |
CN1589431A (zh) | 基于pmi和smi的调度执行框架中用于并发处理程序执行的方法和系统 | |
CN1722092A (zh) | Vex-虚拟扩展框架 | |
CN1906583A (zh) | 信息处理设备、中断处理控制方法、以及计算机程序 | |
EP0908817A2 (en) | Method of changing a dynamic link library function efficiently and a computer system for executing the same | |
CN1924812A (zh) | 用于i/o适配器的方法和装置 | |
CN101038545A (zh) | 操作系统内核构件跨域运行的方法 | |
CN100337204C (zh) | 软件在线升级的方法 | |
EP1616257B1 (en) | Operating systems | |
CN1690909A (zh) | 一种安全计算机及其实现方法 | |
CN1601473A (zh) | 仿真装置、仿真方法和存储介质 | |
CN1224902C (zh) | 用于最低上界类型的符号计算的数据流算法 |
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 | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20080604 |