CN1264078A - 执行多个操作***的计算机 - Google Patents
执行多个操作***的计算机 Download PDFInfo
- Publication number
- CN1264078A CN1264078A CN00102345A CN00102345A CN1264078A CN 1264078 A CN1264078 A CN 1264078A CN 00102345 A CN00102345 A CN 00102345A CN 00102345 A CN00102345 A CN 00102345A CN 1264078 A CN1264078 A CN 1264078A
- Authority
- CN
- China
- Prior art keywords
- priority
- operating system
- task
- execution
- thread
- 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.)
- Pending
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Executing Machine-Instructions (AREA)
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
- Document Processing Apparatus (AREA)
Abstract
一种具有多个操作***和一个用于根据由各个操作***执行的任务的优先级切换操作***的模块的计算机***。根据分配给多个进程或线程的优先级执行这些进程或线程的每个操作***包括一个用于向该计算机***通知当前执行的进程或线程的优先级的模块。该计算机***包括一个用于把各个操作***发送的优先级转换成整个计算机***中公用的优先级(归一化优先级)的模块,并且包括一个用于对归一化优先级进行比较以选择要执行的操作***的模块。
Description
本发明涉及一种执行多个操作***中任一按需要切换到的操作***的计算机以及一种用于切换这些操作***的方法。更具体地,本发明涉及一种以特定的优先级方式切换多个操作***的方法。
迄今,已知虚拟机(VM)是由大型机使用的以在单个计算机上运行多个操作***的技术。根据该技术,执行在大型机内并行运行的多个虚拟机上切换的多个用户任务(以下把进程和线程通称为任务)。通常把虚拟机实施成大型机中的一个进程;在它和用户任务的关系的观点下还可把虚拟机认为是一个操作***。
通常,根据所考虑的虚拟机的优先级向每个虚拟机分配预定的时隙(分配的CPU时间)。在分配的时隙内各虚拟机切换并运行用户任务。在JPA 5-197577“用于虚拟机的执行优先级控制***”中公开说明了用来改进这样的虚拟机的执行效率的一种技术。
上面提及的技术涉及多个虚拟机以及一个用于控制多个虚拟机的虚拟机监视器。在开始或终束诸如***任务的高优先级任务的执行下,某虚拟机通知该虚拟机监视器所考虑的任务的优先级。作为响应,该虚拟机监视器改变所考虑的虚拟机的执行优先级以遵守接收到的优先级。当改变每个虚拟机的执行优先级以和要执行的任务的优先级匹配时,则称为有效地执行了对虚拟机的控制。
同时,微处理机,尤其是埋置式使用的微处理机的性能的改进以及操作***功能性的加强,在用户中产生在单个计算机上并发地运行并且动态地切换多个操作***的要求。
在其中包括诸如工厂的机械控制以及汽车导航***中,强调响应外部环境的实时变化的实时响应能力,并且强调长期不间断运行的高可靠性。出于这些原因,许多这样的应用采纳对外部变化高响应的并在结构上紧致的和模块化的实时操作***(实时OS)。然而,在强调实时响应性和可靠性的同时,实时OS趋于缺少面向人的接口的舒适性。
相反,安装在普通个人计算机(PC)上的商用操作***(商用OS)具有用户友好接口特性,其典型地允许用户基于图象的操作。出于这个原因,日益希望在实时OS统治的应用中采用商用OS。然而,由于商用OS主要解决和人类操作员的交互式交换,商用OS强调吞吐量而不是中断响应性。即,在商用OS下,处理可以在相当长时间的中断下继续。商用OS在结构上不象实时OS那样紧凑,从而不那么可靠。从而,商用OS不适用于连续一整天的或其它持续的操作。
但是,若象大型机上运行多个虚拟机(即多个操作***)的情况下那样在单个计算机上根据需要运行和切换商用OS和实时OS,有可能得到二种***的好处:一方面是用户友好接口,另一方面是实时响应性和可靠性。在当今微处理机性能的增强下,单个计算机运行多个操作***的模式不再是大型机独有的特点。
若考虑每个操作***的相关,切换多个操作***的最简单方式是使实时OS运行大部分时间并只在不存在实时OS任务时用商用OS替代。但是,不存在根据优先级把任一个单独的任务置于其它任务之上的简单方式(例如使实时OS任务在优先级上总高于商用OS任务)。
图27示出一个例子,表明难以根据优先级对任务进行简单分类。该图示出简化的汽车导航***典型地假定由四个任务构成:(1)用于识别汽车的行驶位置的位置识别任务370;(2)用于寻找到达目的地的最短路线的路线搜索任务371;(3)用于处理来自***的按钮和触屏控制的输入的接口任务372;以及(4)在休息停下期间启动的游戏任务373。位置识别任务以及路线搜索任务通常要求快速响应和高可靠性并且是由实时OS111运行的,而带有用户友好接口的商用OS110执行接口任务和游戏任务。但是,路线搜索通常需要执行大量的计算,在单次搜索可能要花费数秒的时间。若按上面说明的那样简单地分类任务,则在路线搜索计算期间必须暂停接口任务的处理,并且在该阶段期间不能识别用户反复施加的键输入。
图27中示出的汽车导航***对接口任务分配了高优先级。当把该任务置于可执行状态下时,需要优先运行商用OS。然而,依据上面提到的常规技术(“用于虚拟机的执行优先级控制***”中所使用),假定所有虚拟机(即操作***)具有相同的功能性。为了解决环境的改变,通常大多数实时OS比起它们的商用对手的优先级高得多。此外,在特殊情况下实时OS和商用OS可使它们的优先等级按互相相反的方向设置:对于实时OS,优先级值越小(接近“0”)优先级越高;对于商用OS,优先级值越大优先级越高。在该情况下,若二种操作***中的每个向虚拟机监视器请求高于对方的优先级,该虚拟机监视器会难以确定优先启动哪一个操作***。从而,上述的常规技术不能以一种统一的方式控制概念上功能不同的商用OS和实时OS。
从而本发明的一个目的是提供一种具有多操作***控制器的计算机,该控制器切换多个不同的操作***并且考虑各操作***执行的任务的优先级选择性地运行其中的一个操作***,以优先执行高优先级任务。
在实现本发明中并且依据它的一个方面,提供一种用于切换和运行多个按优先级执行多个任务的操作***。该计算机按如下执行:
(1)执行优先级监视进程以监视由涉及到的操作***执行的各任务的优先级。备择地,可在每个操作***内实现一个优先级通知过程,以通知当前在其中执行的任务的优先级。然而,一些商用OS或实时OS不能在其中添加地容纳优先级处理进程。在这样的情况下需要执行该优先级监视进程。
(2)执行优先级转换进程,从而把从各个操作***得到的当前执行任务的优先级转换成对于所有涉及到的操作***的公共优先级(公共优先级以下被称为归一化优先级)。
(3)执行优先级比较进程,从而比较优先级转换进程从每个操作***得到的归一化优先级,从而确定并切换到优先运行的操作***。
根据上面概述的本发明,在每个操作***内实现优先级通知进程。每次操作***切换任务时,由该进程提供当前任务的优先级的通知。
任务切换功能构成操作***的核心。因此,常常难以把优先级通知措施结合到商业上可买到的操作***中。然而,操作***通常具有有关计算机存储器中保持的正在进行的任务的管理信息,并且该管理信息的一部分包含任务执行优先级。为了提高任务切换的速度,操作***可在某具体变量(优先级存储变量)中存储当前执行的任务的优先级。利用这些特征,优先级监视进程检索任务管理信息或优先级存储变量,以核实各操作***正在执行的任务的优先级。优先级监视进程通过利用诸如外部中断和时钟中断的时间标记核对任务优先级。
优先级转换进程涉及把从各操作***得到的当前执行的任务的优先级转换成对于计算机内所涉及到的操作***共用的归一化优先级。在实现该功能时,优先级转换进程可具有和各操作***对应的优先级转换表。优先级转换表是一个对应表,以使可根据对每个操作***规定的任务优先级确定归一化优先级。虽然有可能利用简单的数字公式把各个操作***的任务优先级转换成归一化优先级,最好利用优先级转换表以便以快速和灵活的方式切换操作***。例如,可以把归一化优先级值以这样的方式设置到优先级转换表中,即来自各操作***的归一化优先级不会变成与另一个相等。
优先级比较进程涉及从优先级转换进程得到各操作***的当前执行任务优先级的归一化优先级,以判定是否另一个操作***具有比当前正在执行的操作***具有更高的归一化优先级。若检测出带有更高归一化优先级的操作***,选择该操作***以代替现行的操作***。
一旦阅读下述说明和附图,本发明的其它目的、特点和优点将更为清楚。
图1是一个方块图,表示按本明的第一实施例实现的计算机的典型***结构;
图2是描述该计算机的硬件结构的方块图;
图3示意示出当提供中断级屏蔽功能时使用的状态寄存器;
图4示意示出当提供单个中断屏蔽功能时使用的状态寄存器;
图5是详细示出各操作***的内部结构的方块图;
图6是描述操作***切换程序的详细内部结构的第一方块图;
图7是构成重新调度程序的处理流的步骤流程图;
图8是构成优先级转换模块的处理流的步骤流程图;
图9是构成优先级比较模块的处理流的步骤流程图;
图10是描述操作***切换程序的详细内部结构的第二方块图;
图11是构成OS环境切换模块的处理流的步骤流程图;
图12是构成公共中断处理程序的处理流的步骤流程图;
图13是构成中断处理程序的处理流的步骤流程图;
图14是构成优先级提升模式下的锁定获取模块的处理流的步骤流程图;
图15是构成优先级提升模式下的锁定释放模块的处理流的步骤流程图;
图16是示出优先级设定模块的详细内部结构的方块图;
图17是构成优先级转换模块的优先级逆转换功能的处理流的步骤流程图;
图18是构成优先级设定模块的处理流的步骤流程图;
图19是构成优先级继承模式下的锁定获取模块的处理流的步骤流程图;
图20是构成优先级继承模式下的锁定释放模块的处理流的步骤流程图;
图21是描述中断屏蔽级计算模块的详细内部结构的方块图;
图22是构成中断屏蔽级计算模块的处理流的步骤流程图;
图23是一个方块图,表示按本发明的第二实施例实现的计算机的典型***组成;
图24是构成优先级监视模块的处理流的步骤流程图;
图25是构成启动优先级监视模块的公共中断处理程序的处理流的步骤流程图;
图26是一个方块图,表示按本发明的第三实施例实现的计算机的典型***组成;
图27是一个示意图,表示如何典型地在操作***之间分摊任务;
图28是一个示意图,表示公共中断程序的另一种结构;以及
图29是一个方块图,表示按本发明的第四实施例实现的计算机的典型***组成。
现参照各附图说明本发明的各实施例。
图1示出按本发明的第一实施例实现的计算机的总体组成。该计算机通常包括处理机100、存储器101、I/O控制器102、盘机104和显示器105。处理机100、存储器101和I/O控制器通过处理机总线103互连。处理机100是用运行多个操作***的一个微处理器实现的。存储器101存储一个商用操作***(OS)110、一个实时OS111、由各操作***执行的任务112至117以及一个操作***切换程序118。这些程序由处理机100读出并执行。
I/O控制器102和存储程序及数据的盘机104连接,并和提供屏幕显示的显示器105连接。当实现用于工厂控制目的的或用于内置式使用的计算机时,I/O控制器102可和实时控制网络106连接。实时控制网络106和诸如传感器和致动器的I/O部件链接。根据***配置,可以略去盘机104、显示器105和实时控制网络106中的任一或全部。I/O控制器102通过中断信号线107和处理机100连接并且通知处理机100I/O操作以及其它事件的完成。虽然图1出于说明目的把中断信号线107表示成独立于处理机总线103,实际上信号线107是总线103的一个集成部分。处理机100和按固定间隔产生内部中断的时钟108合为一体。来自时钟108的中断被各操作***用于时间管理。
处理机100能够屏蔽在中断信号线107上发送的外部中断或屏蔽来自时钟108的内部中断。中断屏蔽是一种功能,用于在该功能被程序取消之前延迟特定的中断。通常,存在三种类型的中断屏蔽:
(1)全部中断屏蔽:屏蔽所有中断。
(2)单独中断屏蔽:单独地屏蔽各中断。
(3)中断级屏蔽:为各个中断建立若干级以便屏蔽某规定级之下的各中断。
在许多情况下,组合功能类型(1)和(2)或者组合功能类型(1)或(3)以实施中断屏蔽功能。采纳哪种组合取决于处理机100的类型。若处理机100采纳类型(1)和(3)的组合,根据各个处理中断的I/O部件的重要性确定各中断级。例如,把来自实时控制网络106的中断的优先级设成高于来自盘机104和显示器105的中断的优先级。
在第一实施例中,在计算机上驻留二个操作***,即,商用OS110和实时OS111。在执行任务112至114以及任务115至117中,这些操作***使用分配给它们的存储器和处理机资源。假定第一实施例包括二个操作***和六个任务(每个OS三个任务)。但是,这不是对本发明的限制,在实施本发明中可设置更多或更少的操作***和/或任务。尽管第一实施例不把动态地改变操作***的数量作为先决条件,对于第一实施例有可能让每个操作***以动态的方式生成或删除任务。虽然下面的说明将复盖商用OS110和实时OS111,下面的说明也可应用于任何类型的操作***。任务112至114是由商用OS执行的商用任务,而任务115至117是由实时OS执行的实时任务。根据在各商用OS110和实时OS111下各自的优先级定义各任务。
在图1的第一实施例,任务112至114分别在商用OS110下具有0、7、31的优先级;而任务115至117分别在实时OS111下具有0、99、255的优先级。对于第一实施例,假定任务广义地表示某进程或线程。进程指的是运行时占据独立的存储器空间的某程序。从而一个给定的进程通常不能改变另一个程序的数据。线程指的是运行时共享某进程的公共存储器空间的某程序。即,在同一进程内运行的线程之间不存在数据保护功能。
各操作***包含优先级通知模块120和121。在切换各操作***的任务之上执行优先级通知模块120或121,以向操作***切换程序118通知下个要执行的任务的优先级。
在许多情况中,商用OS具有的优先级模式不同于实时OS的优先级模式。实时OS通常具有数量较多的优先级以对重要的中断提供快速响应。另一方面,商用OS采纳少量的优先级以提高吞吐量。对于某些操作***,优先级值越小(即,接近0),优先级越高;对于另一些操作***,优先级值越大,优先级越高。这导致例如简单地比较不同操作***的优先级通知模块120和121得到的优先级无意义。出于解释的目的,假定对于商用OS110优先级值越大任务的优先级越高(在图1中任务114具有最高优先级),而对于实时OS111优先级值越小任务的优先级越高(在图1中任务115具有最高优先级)。对于商用OS110优先级可分配成0和31之间的任何值,而对于实时OS111可分配成0和255之间的任何值。
按如下解决二个操作***之间的优先级模式差异:操作***切换程序118具有作为其组成部分的优先级转换模块122和123以及优先级比较模块124。优先级转换模块122和123把分别来自商用OS110和实时OS111的优先级转换成在整个***中通用的归一化优先级。来自各操作***的在未修改前不可比较的任务优先级一旦转换成归一化优先级后可彼此比较。归一化的优先级可以和一个所涉及到的操作***中的优先级相同。在该情况中,所考虑的操作***提供看成是归一化后的优先级。优先级比较模块124比较从二个操作***得到的归一化优先级并且切换到二个操作***中具有较高的归一化优先级的那个操作***上。
图2概述处理机100的内部结构。超高速缓存131是暂时存储来自存储器101的数据或指令的缓冲存储器。CPU130是一个算术电路,它从存储器101或从超高速缓存131读指令并一个接一个地执行指令。在执行指令中,CPU130使用暂时保存计算结果的通用寄存器132、指定指令地址的程序计数器133以及保存执行状态的状态寄存器134。通过数据总线136和地址总线137,CPU130、超高速缓存131、通用寄存器132、程序计数器133及状态寄存器134互连。数据总线136是由多条用于传送数据的信号线构成的。地址总线137是由多条指定地址的信号线构成的。
中断信号线107和时钟108与中断控制器135连接。中断控制器135生成中断状态信号138,它表示当前对处理机100生成哪种类型的中断。通常,状态寄存器134具有有关当前中断屏蔽的信息并确定是否接收由中断状态信号138规定的中断。若接收中断,中断控制器135更新程序计算器133和状态寄存器134,并执行对应的中断处理程序。
图3示出,当处理机100具有全部中断屏蔽功能和中断层屏蔽功能时,状态寄存器134的结构。在图3中,状态寄存器134包括一个中断阻塞位140和一个中断屏蔽级字段141。若中断阻塞位100被接通,屏蔽所有对处理机100的中断。中断屏蔽级字段表示当前的中断屏蔽级值;低于该指定级的中断被拒绝。在图3中,中断屏蔽级字段141为四位长,从而最多可指定16个屏蔽级。(实际中,可规定15个屏蔽级,因为中断级0意味着遏制掉中断屏蔽。)改变中断屏蔽级字段141的位计数可改变可接受的中断级数量。
图4说明当处理机100具有全部中断屏蔽功能和单个中断屏蔽功能时所使用的状态寄存器134的结构。在该例中,状态寄存器134实际上由二个寄存器(即,执行状态寄存器142和中断屏蔽寄存器143)组成。如在图3的结构中,执行状态寄存器142包含一个中断阻塞位140。中断屏蔽寄存器143中的中断屏蔽位144至147对应于不同类型的中断。当接通这些中断屏蔽位中的任一个时,不接受对应的中断类型。图3的状态寄存器是图4中示出的状态寄存器的特殊变型。例如,只接通中断屏蔽位144的状态可等同于级1;接通中断屏蔽位144和145的状态等同于级2;接通中断屏蔽位144至146的状态等同于级3;依次类推。而在后面的说明中,假定状态寄存器134具有图4所示的结构。
通常,当处理机接收某中断时,由硬件自动地接通中断阻塞位140,并把中断处理程序的地址设到程序计数器133。根据需要可由中断处理程序断开中断阻塞位140以准许为中断服务。操作***或任务也有可能暂时更新中断阻塞位140的或者中断屏蔽寄存器143的内容,以便为等待的特定中断服务。中断屏蔽功能用来影响排斥控制并用于在中断处理期间防止生成相同的中断。
图5描述商用OS110和实时OS111的内部结构。在图5中,各操作***的所有组成部分被示成保持在存储器100中。
商用OS110和实时OS111都管理以队列150和151为形式的可执行任务信息。虽然可为每个优先级建立可执行任务队列150和151,第一实施例使每个操作***在单个队列中管理所有可执行任务。本发明的技术内容不受每个OS是否具有单个可执行任务队列的影响,也不受每个优先级是否和一个队列匹配的影响。每个任务依次采取三个状态:(a)执行状态,(b)可执行状态,以及(c)等待状态。出于这些原因,每个操作***用其它用于管理诸如等待状态任务和停止状态任务的队列补充可执行任务队列。在图5中省略了这些其它队列。由可执行任务队列150和151控制的管理表160至165包含要执行的任务的优先级以及影响任务执行的程序计数器、状态寄存器及通用寄存器的值。
在利用单个队列管理可执行任务的情况下,在该队列中登记的任务管理表是按它们的优先级的递减次序排列的。即,下个要执行任务的管理表位于队列的顶部。如前面所说明的那样,商用OS110具有从0到31的优先级;优先级值越大,在该操作***下的优先级越高。实时OS111具有0到255的优先级;优先级值越小,在该OS下的优先级越高。从而在商用OS110下,和任务114(优先级值为31)对应的任务管理表162处于可执行任务队列150的端部,后面跟着任务113(优先级值为7)的任务管理表161和任务112(优先级值为0)的任务管理表160。相反,在实时OS111下,对应于任务115(优先级值为0)的任务管理表163位于可执行任务队列151的端部,后面跟着任务116(优先级值为99)的任务管理表164和任务117(优先级值为255)的任务管理表165。
各操作***还包括用于进行中断处理的中断处理程序152和153、用于向任务提供服务的***调用程序156和157以及用于切换任务的重新调度程序154和155。当一旦生成、删除、停止或重新开始某任务必须切换任务或者在外部或内部中断情况时,启动重新调度程序154和155。在调用重新调度程序154或155之前,把前一个任务的执行环境(例如,各寄存器值)放到对应的任务管理表中。当确定下个要执行的任务时,从对应的任务管理表中检索与所考虑的任务有关的执行环境。把检索出的值设置到程序计数器、状态寄存器和通用寄存器中以执行选定的任务。
重新调度程序154和155在其内部具有优先级通知模块120和121。在刚要向各寄存器设置要执行的下个任务的执行环境之前,启动优先级通知模块120和121。从而在启动时,优先级通知模块120或121向操作***切换程序118的优先级转换模块122或123通知所考虑的任务的优先级。
图6表示操作***切换程序118的内部结构。优先级转换模块122和123具有用于把不同操作***下的任务优先级转换成归一化优先级的优先级转换表170和171。对于第一实施例,归一化优先级是范围从0到255的整数。在该实施例中,归一化优先级值越大、归一化优先级越高。自然,也可能改变归一化优先级的范围,或者定义成归一化优先级值越小归一化优先级越高。
如前面所述,商用OS110具有0到31的优先级。在该情况下,优先级转换表170具有一个32项的数组。每个数组元具有一个整数,该整数在0和255之间并满足下述不等式(该数组名字是“prioBusiness”):
i>j prioBusiness[i]>prioBusiness[j]其中,0≤i并且j≤31。
必须满足上述不等式,因为在商用OS110下的优先级情况下对于归一化优先级仍然优先级值越大优先级越高。
类似地,实时OS111情况下具有范围从0到255的优先级,优先级转换表171具有一个256项的数组。每个数组元具有一个整数,该整数在0和255之间并满足下述不等式(该数组名字是“prioRealtime”):
i>j prioRealtime [i]<prioRealtime[j]其中,0≤i并且j≤255。
在上面的不等式具有和商用OS所使用的大于符号相反的小于符号的原因是,在实时OS下优先级值越小优先级越大。
在图6中,若判定任务114是商用OS110中下个可执行的,优先级通知模块120向优先级转换模块通知优先级值31。利用优先级转换表170,优先级转换模块122接着获得124的归一化优先级值。若在实时OS111下判定任务115是可执行的,优先级通知模块121向优先级转换模块123通知实时OS优先级值0。通过使用优先级转换表171,优先级转换模块123接着得到255的归一化优先级值。请注意,对于第一实施例,不论在商用OS下任务优先级为多高,商用OS110的归一化优先级值从不超过124。这是一种建立优先级转换表的特殊例子,以这种方式会尽可能地优先执行实时OS任务。(若某实时OS任务具有低优先级某商用OS任务可能超过它而优先。)很明显,备择地可在结构上修改优先级转换表170,其方式是在尽可能平等的基础上把来自二个操作***的任务优先级转换成归一化优先级。
由优先级转换模块122和123转换好的归一化优先级被发送到优先级比较模块124。优先级比较模块124持有商用OS归一化优先级172和实时OS归一化优先级173。在本情况下,归一化优先级172和173分别取值124和255。
如前面所说明那样,优先级通知模块120和121驻留在重新调度程序中并且一旦任务切换各得到执行。由于在一次和下次任务切换期间只执行一个任务,除非实施任务优先级的动态改变,所考虑的操作***下的归一化优先级保持不变。一旦任务切换,优先级通知模块120和121总要提供优先级通知。由于这个原因,优先级比较模块124内保持的商用OS归一化优先级172和实时OS归一化优先级反映各自操作***下的实际任务优先级。
优先级比较模块124对来自二个操作***的归一化优先级172和173进行比较,并且允许优先执行具有较高优先级的一个操作***。在图6的例子中,实时OS111具有比商用OS110更高的优先级,从而优先于后者执行。
除了优先级转换模块122、123以及优先级比较模块124之外,操作***切换程序118还包括:用于向各适当的操作***分摊所生成的中断的公共中断处理程序174,确保各操作***之间协调处理的OS间通信功能模块175,切换二个操作***的执行环境的OS环境切换模块176,以及根据任务优先级改变中断屏蔽的中断屏蔽级计算模块177。后面会更详细地说明这些程序。
图7是商用OS110下构成重新调度程序154的处理流的步骤流程图。实时OS的重新调度程序155也由类似步骤构成。重新调度154是一个模块,当当前任务变成不再可执行下或者当某优先级高于当前正执行任务的任务变成可执行下把当前执行任务的各寄存器内容保存到任务管理表后通常启动该模块,这出现在下述任一情况下:
(1)结束时钟中断的处理;
(2)结束外部中断的处理;或者
(3)执行***调用。可触发对重新调度程序154的***调用包括:
(a)生成、终止、暂停或重新启动任务(例如,生成优先级高于现行任务的一个任务);
(b)排斥控制的执行或终止(例如,一旦在排斥控制下某任务变成等待状态时);以及
(c)改变任务优先级(例如,当现行任务的优先级减小时)。
重新调度程序154最初从可执行任务队列150提取最高优先级的任务管理表(步骤181)。此刻,可能不存在可执行任务,即所有任务处于等待状态或停止。在步骤182判断是否存在可执行任务。
若不存在可执行任务,重新调度程序154向优先级转换模块122通知空闲状态(步骤184)。由于没有可执行任务,在这里进入空闲循环(步骤186)。空闲循环是一个在出现要执行任务之前不做任何事的程序。请注意在步骤184中向优先级转换模块122通知空闲状态。若商用OS110处于空闲状态,优先级比较模块124在优先于另一个OS下执行实时OS111。这样,除非二个操作***同时进入空闲状态,实际上在步骤186不执行空闲循环。当重新执行商用OS110时,立即脱离空闲循环并到达步骤181,这是因为存在要执行的任务。
若在步骤182判定存在可执行任务,从任务管理表提取下个执行的任务的优先级并向优先级转换模块122报告。若判定所报告的优先级低于实时OS111的优先级(通过对归一化优先级的比较),则此刻选择实时OS111。除非因中断要执行的任务不再是可执行的或者除非某更高优先级的任务变成可执行的(即,启动步骤181中选择的任务),当实时OS111具有高于商用OS110的归一化优先级时立即在步骤183后重新启动任务执行。当然,若当前执行任务变成不再是可执行的或者若优先级高于现行任务的某任务变成可执行的,重新启动重新调度程序154。在步骤185,从任务管理表恢复各寄存器内容并设置到处理机100的各寄存器中,从而执行选定的任务。
在重新调度程序154中,步骤183和184构成由优先级通知模块120完成的处理。优先级通知模块121同样也嵌入到重新调度程序155中。
图8是构成对应于商用OS110的优先级转换模块122的处理流的步骤流程图。当由优先级通知模块120调用时,优先级转换模块122立即进行优先级转换。首先,优先级转换模块122进行检查以判定优先级通知模块120是否报告空闲状态(步骤190)。可把空闲状态看成是一个优先级低于任何其它优先级的任务。在本例中,假定空闲状态具有值为-1的归一化优先级,从而它的优先级低于任何其它归一化优先级。在步骤193,把-1的值送到优先级比较模块124。若实际上不是空闲状态,从优先级转换表170中检索对应项(步骤191)并发送到优先级比较模块124(步骤192)。同样的处理流适用于和实时OS对应的优先级转换模块123。
图9是构成优先级比较模块124的处理流的步骤流程图。首先,优先级比较模块124进行检查以判定所接收的优先级是来自商用OS110还是来自实时OS111的归一化优先级(步骤200)。若判定所接收的优先级是来自商用OS110的归一化优先级,优先级比较模块124把获得的优先级存储到商用OS归一化优先级172的位置上(步骤201)。若发现接收到的优先级是实时OS111的归一化优先级,优先级比较模块124把获得的优先级存储到实时OS归一化优先级173的位置上(步骤202)。
仅当可能改变二个操作***之一的归一化优先级时才报告归一化优先级。在这种情况下,对商用OS归一化优先级172和实时OS归一化优先级173之间的值进行比较(步骤203)。在第一实施例下,优先启动其归一化优先级值大于另一个操作***的操作***。从而,若商用OS110的归一化优先级值大于实时OS111的归一化优先级值,则把商用OS110选择成下个要执行的操作***(步骤204)。反之则接着执行实时OS111(步骤205)。在第一实施例下,若商用OS110具有和实时OS111相等的归一化优先级,优先执行实时OS111。替代地,可设置成若商用OS110和实时OS111的归一化优先级相同,则优先运行商用OS110。一种简化***结构的方法是作出安排以在设定优先级转换表170和171的内容不上使来自二个操作***的归一化优先级相等。
在步骤206,以检查并判定下个要执行的操作***是否和当前执行的操作***相同。若接着要执行不同的操作***,则请求OS环境切换模块176以便保存和恢复操作***的执行环境(步骤207)。
图10表示中断处理程序152和153、公共中断处理程序174、OS间通信功能模块175以及OS环境切换模块176的详细结构(中断屏蔽级计算模块177将参照另一个图详细说明)。
中断处理程序152和153具有中断栈214和215,以作为在其中保存或临时保留出现中断时受影响的例如寄存器值的各变量的区域。实际上必须保存中断刚刚发生前的各寄存器内容,而且必须在处理中断后恢复这些内容。各寄存器值的保存和恢复需要使用中断栈214和215。某种类型的处理机能够在发生中断时自动切换各寄存器内容并且在处理所考虑的中断后恢复各初始的寄存器值。然而,在允许多中断的计算机中,这种硬件的应用仍需要配置中断栈(即,若在中断处理期间出现一个其优先级高于现行中断的中断,则需要在重新启动对初始中断的处理之前优先对新产生的中断服务)。
中断处理程序152和153还拥有中断栈指针216和217,以指向各中断栈214和215被使用着的内容。中断处理程序152和153实际上保存中断前的执行环境(例如,寄存器的内容)并且利用中断栈及中断栈指针进行处理中断须做的工作。在中断处理结束时,中断处理程序152和153实际上恢复执行前的执行环境,以便重新启动被中断程序的执行。
公共中断处理程序174分摊可能在中断处理程序152和153之间出现的各个中断。公共中断处理程序具有一个存储正执行的OS存储变量210的区,该正执行OS的存储变量210指示当前执行的操作***是商用OS110还是实时OS111。例如,若假定在建立图10时商用OS110当前正在运行,则正执行OS的存储变量210含有表示“商用OS”的数据。很明显,在正执行OS的存储变量210中存储字符串“商用OS”效率太低,替代地,可采纳整数存储模式,例如用“0”代表商用OS和用“1”代表实时OS。公共中断处理程序174还包括一个中断对应表211,它指示给定的中断对应于哪个操作***。即,中断对应表211表示哪个操作***应该来处理任何一个给定的中断。如图4中所述,对于第一实施案存在32个中断起因。从而,中断对应表211由32项(从0到31)构成。在图10的例子中,把中断的每个起因定义成对应于某具体操作***:中断起因0对应用商用OS;中断起因1对应于实时OS;…,以及中断起因31对应于实时OS。为了提高效率,中断对应表211的内容应该象正执行OS的存储变量210那样同样用整数存储模式保持,而不是用字符串存储模式。
某种类型的计算机使它的任何一个I/O部件由两个操作***共享(例如,商用OS110和实时OS111都向单个显示器输出字符和图象)。为了实现这样的***需要为分摊的中断动态地改变目的操作***。对于第一实施例就是出于这个原因,目标操作***不是被固定的而是根据中断对应表211确定的。根据给定I/O部件的使用状态修改中断对应表211的内容,实现目标操作***的动态改变。
通过参照正执行OS的存储变量210,公共中断处理程序174确定当前正运行哪个操作***。若当前执行的操作***和中断对应表211所确定的目标操作***不同,公共中断处理程序174请求OS环境切换模块176切换操作***。若发现当前执行的操作***和目标操作***相同,或者若已经切换了操作***,请求可使用的操作***的中断处理程序开始中断处理。正执行OS的存储变量210也由OS环境切换模块176参照。如所说明那样,操作***切换程序118内的各模块的内部结构不由各模块垄断,而是可按需要在模块之间共享。
当因为优先级比较的结果或者因生成中断出现需要切换操作***时,启动OS环境切换模块176。在切换二个操作***时,OS环境切换模块176必须具有保存操作***的执行环境(即,各寄存器值)的区域。OS环境切换模块176备有一个用于商用OS被保存环境212的区域(其中保存商用OS的执行环境),并且备有一个用于实时OS被保存环境213的区域(其中保存实时OS的执行环境)。通过OS环境切换模块176按如下执行实现操作***的切换:把执行环境保存在用于当前执行的操作***的环境保存区域中,从用于另一个操作***的环境保存区域中检索执行环境,和把检索到的环境设置到处理机100的各寄存器中。
OS间通信功能模块175是一个确保二个操作***下的各任务之间的通信及协调的程序。对于第一实施例,OS间通信功能模块175包括一个共享存储器218,它可由商用OS 110和实时OS 111使用。还包括用于在操作***之间进行排斥控制的锁定获取模块219和锁定释放模块220。共享存储器218是存储器101的一部分并且可由二个操作***引用。共享存储器218之外的存储器空间大致划分成分别由商用OS110、实时OS111、操作***切换程序118分别垄断的商用OS区、实时OS区和操作***切换程序区。当二个操作***下的任务使用共享存储器218时,通常实施排斥控制以确保共享存储器218中的数据一致性。若某应用程序执行跨越二个操作***的排斥控制,会利用锁定获取模块219和锁定释放模块220提供的功能。
现注意所谓的优先级反转现象。该现象通常表示这样的情况:
(a)首先启动低优先级的任务α,并获取存储器上的锁定;
(b)接着启动高优先级的任务β,并进入锁定等待状态;以及
(c)启动中等优先级的任务γ,并触发从任务α(带有低优先级)到任务γ(带有中等优先级)的切换。
在上述情况下,任务γ的执行阻止任务α的执行并且从而延长高优先级任务β获得锁定的时间。通常借助于所谓的优先级提升方式或优先级继承方式解决这种优先级反转现象。
优先级提升方式涉及把已获得锁定的任务的优先级提高到预先确定的等级。这使得得到锁定的任务α的优先级暂时高于任务γ(带有中等优先级)的优先级,以允许即使任务γ已启动仍继续进行任务α直至释放锁定。然后高优先级任务β获得锁定并且继续处理。
优先级继承方式是优先级提升方式的一种确保比原始方式更为灵活的变型。在优先级继承方式下,若已经进入锁定等待状态的任务(上例中的任务β)的优先级比已获得锁定的任务(任务α)的优先级高,则由锁定获得的任务继承较高的优先权。仅当正在获取锁定时任务α才继承任务β的优先级。当在低优先级的任务之间实现排斥控制的情况下,可能不需要把已获得锁定的任务的优先级提高到某预定的等级。优先级继承方式可有效地处理这些情况。
第一实施例的锁定获取模块219和锁定释放模块220实现操作***之间的优先级提升方式或优先级继承方式。通过利用二个操作***之间的归一化优先级实现这二种方式。
下面说明图10中示出的OS环境切换模块176、公共中断处理程序174、中断处理程序152、锁定获取模块219和锁定释放模块220的处理流。中断处理程序153的处理流和中断处理程序152的处理流相同,从而在下面的说明省略。
图11是构成OS环境切换模块176的处理流的步骤流程图。仅当需要切换操作***时才调用OS环境切换模块176;在调用模块176之前完成导致这种切换需求的检查。首先,进行检查以判定需要选择哪一个操作***(步骤230)。若要用实时OS111替换商用OS110(即,当前执行的操作***是商用OS110,但需要用优先级高于它的实时OS111取代),在商用OS被保存环境212中保存各寄存器的当前值(步骤231)。接着从实时OS被保存环境213检索执行环境并设置到各寄存器中(步骤232)。这允许从实时OS最近一次保留其各寄存器的暂停状态下重新启动实时OS。相反,若要用商用OS111替代实时OS111,则把各寄存器的当前值保存到实时OS被保存环境213中(步骤233),并从商用OS被保存环境212恢复各寄存器的值(步骤234)。在任何情况下,把表示切换后正在执行的操作***的值写入到正执行OS的存储变量210中(步骤235)。
图12是构成公共中断处理程序174的处理流的步骤流程图。在由单个操作***控制的计算机中,通常在把各中断分配到各个程序之前由一个称为中断处理程序的模块处理所有的中断。另一方面,在由多个操作***控制的诸如第一实施例的计算机中,在各个中断处理程序的前面是一个最初接受所有中断的公共中断处理程序。公共中断处理程序把接收到的各程序分配给对应操作***的中断处理程序。当把某给定中断分摊到某操作***时,当前执行的操作***可能不是该中断所属于的OS。在这种情况下,需要切换操作***;该切换是由公共中断处理程序完成的。
在生成某中断后,公共中断处理程序174首先检索正执行OS的存储变量210的内容,从而判定当前执行的操作***是商用OS110还是实时OS111(步骤240)。接着作为确定该生成的中断和哪个操作***对应的基准使用中断对应表211(步骤241)。例如,当使用图10的中断对应表211时,判定中断“0”对应于商用OS 110;中断“1”对应于实时OS111;…,以及中断“31”对应于实时OS111。这里,进行检查以判定该中断的目标操作***是否和当前执行的操作***相同(步骤242)。
若判定该生成的中断和当前执行的操作***无关,必须切换操作***。OS环境切换模块176被请求以进行切换(步骤243)。接着进行检查以判定该中断的目标操作***是商用OS110还是实时OS111(步骤244)。若要转到的目标操作***是商用OS110,则启动商用OS110的中断处理程序152(步骤245)。若该生成的中断和实时OS111对应,则启动实时OS111的中断处理程序153(步骤246)。通常,当必须为中断处理进行任务切换时,中断调度程序152或153调用重新调度程序154或155而且不把控制返回到公共中断处理程序174。若不进行任务切换,实际上则终止中断处理程序的处理。此刻,中断处理程序152或153把控制回送到公共中断处理程序174(后面参照图13说明)。接着,公共中断处理程序174从步骤247重新启动处理。步骤247是一个在其中验证一旦生成中断是否切换了操作***的步骤。若在步骤243切换了操作***,则必须重新切换以便恢复到原始的执行环境。不出现任务的切换意味着二个操作***的归一化优先级中没有变化。从而实际上在生成中断前需要恢复执行环境。从而再次请求OS环境切换模块176以进行切换(步骤248)。
若二个操作***之一的中断处理程序激励了它的重新调度程序154或155,如上面所说明控制不返回到公共中断处理程序174的步骤247。在这种情况下,重新调度程序154或155向优先级转换模块新任务的优先级。接着优先级比较模块124判定是否切换操作***。
公共中断处理程序174的结构可如图28所示修改。图28中所描述的公共中断处理程序174除图10中示出的公共中断处理程序的各构件外还包括中断优先级对应表380。中断优先级对应表380指示在哪个归一化优先级等级上应运行哪个中断处理程序。在图28的例子中,和中断起因0对应的中断处理程序必须运行在等级为255的归一化优先级上,而和中断起因31对应的中断处理程序必须运行在等级为244的归一化优先级上。一旦启动某给定操作***的中断处理程序,公共中断处理程序174根据中断优先级对应表380更新所考虑的操作***的归一化优先级。在结束该中断处理程序后,公共中断处理程序174恢复初始的归一化优先级。虽然该例中公共中断处理程序174示成具有中断优先级对应表380,但这不是对本发明的限制。备择地,可把中断优先级对应表380合并到由公共中断处理模块174为转换优先级而请求的各个优先级转换模块122和123中。
若如图28中所示可向各中断分配归一化优先级,则还把各归一化优先级指定成各操作***的所有操作状态。例如,操作***通常具有下述四种操作状态:
(1)空闲状态
(2)任务执行状态
(3)操作***的自处理状态(例如,初始化)
(4)中断处理状态
可向上述所有的操作状态分配归一化优先级。在这样的情况下,通常必须赋予中断处理状态最高归一化优先级以便优先变成现用的。最高优先级的中断处理状态后面依次跟着操作***的自处理状态、任务执行状态和空闲状态。
图13是构成由公共中断处理程序174调用的商用OS的中断处理程序152的处理流的步骤流程图。首先,中断处理程序152把各寄存器的当前值保存到中断栈214(步骤250),并处理所涉及的中断(步骤251)。在步骤252进行检查以判定操作***是否处于重新调度状态(即,判定是否在执行重新调度程序154)。重新调度状态是这样的状态,在其中把先前执行任务的执行环境保存到对应的任务管理表中并选择下个要进行的任务从而当前不执行任务。这意味着若简化操作***的处理,只需要从开头执行重新调度。即,若检测到重新调度,废弃中断栈中被保存的寄存器值(步骤257),并重新启动重新调度程序154。若在重新调度期间生成中断,可能不必重新选择下个要执行的任务。在这种情况下,借助使用上述方法,仍从开头执行重新调度,这是无效率的。例如通过一种对在重新调度期间出现的并影响重新调度程序154的执行的(例如任务的激励和终止)进程排队的方法避免这种低效率。在重新调度程序154终止之前或者在优先级通知模块120内一起执行这些排列的进程。在使用后一种方法下,不需要每次生成中断时重新启动部分执行的重新调度。然而,在一起执行排队的进程后,必须验证是否需要再次重新调度。
出于简单的目的,第一实施例描述成采用上述二个方法中的前一个方法。若采纳后一个方法,应装备下述资源:
(1)一个指示是否正在进行重新调度的标志
(2)一个容纳各进程的队列
在***调用或者操作***所提供的别的功能下,若正在进行重新调度则把任何会影响重新调度程序154的执行的进程放在该队列中。在重新调度程序154的处理流中***一个一起执行这些排队的进程的模块。
若中断处理程序152判定未在进行重新调度,则意味着操作***当前执行某任务。在该情况下,进行检查以判定是否需要切换(步骤253)。若判定任务的切换是不需要的(即,若当前任务具有最高优先级并且是可执行的),则终止中断处理程序152的执行。接着恢复中断栈214中保存的各寄存器值(步骤254)并把控制返回到公共中断处理程序(步骤255)。若判定需要任务的切换,把中断栈214中保存的各寄存器值拷贝到任务管理表(步骤256),并且废弃中断栈中保持的各寄存器值(步骤257)。然后启动重新调度程序154(步骤258)。若处理机100能够在改变中断栈指针处的值的同时参照存储器101中的数据,则可正确地执行步骤256和257。
现说明锁定获取模块219和锁定释放模块220的处理流。假定这些模块承受优先级提升方式;后面再讨论和优先级继承方式有关的实施例。在下面的讨论中,已请求获取或释放锁定的任务称为现行任务,而管理该任务的操作***相对于另一个操作***称为现行操作***。
图14是构成优先级提升方式下的锁定获取模块219的处理流的步骤流程图。锁定获取模块219首先进行检查以判定是否另一个操作***的某任务已获得锁定(步骤260)。若判定另一个操作***的任务没有获取锁定,把现行操作***设成是锁定持有者(步骤261)。若另一个操作***的任何任务已获得锁定,则把现行操作***的任务置成等待状态(步骤263)。在该情况下,必须允许优先运行另一个操作***以便尽可能快地让它的任务释放锁定。这是通过把另一个操作***的归一化优先级(存储在优先级比较模块124中)提高到某高于现行操作***的归一化优先级的级别上实现的(步骤262)。在步骤263中把该任务置成等待状态使现行操作***启动重新调度程序。接着,重新调度程序依次调用优先级通知模块、优先级转换模块和优先级比较模块,从而现行操作***由其归一化优先级已被提高的另一个操作***替代。
图15是构成优先级提升方式下的锁定释放模块220的处理流的步骤流程图。锁定释放模块220首先释放它持有的锁定(步骤270)。进行检查以判定另一个操作***是否在等待获取锁定(步骤271)。若另一个操作***不等待锁定获取,则未提高过归一化优先级,并此时终止锁定释放模块220的执行。若另一个操作***正等待以获取锁定,则必然为解决所谓的优先级反转现象已提高了归一化优先级。在该假定下,恢复现行操作***的初始归一化优先级(步骤272),并把等待获取锁定的任务置成可执行状态(步骤273)。一旦在等待获得锁定的任务变成可执行的后切换任务,启动另一个操作***的重新调度程序。借助锁定获取模块,最终执行优先级比较模块124。接着根据它们的初始归一化优先级比较操作***,从而从二个操作***中选择优先级高的一个。
下面说明一个在其中实施优先级继承方式的例子。在该情况下,如图16中所示,所涉及的各操作***必须备有用于根据归一化优先级改变任务优先级的优先级设定模块280和281。除了把优先级转换成归一化优先级的功能之外,优先级转换模块122和123必须包括把归一化优先级再转换成OS专用的优先级的功能。出于这个目的,优先级转换模块122和123具有优先级逆转换表282和283,以把归一化优先级索引成各个操作***的实际优先级。
对于***调用,操作***通常具有改变任务优先级的能力。优先级设定模块280和281把接收到的归一化优先级转换成对应操作***中的实际的优先级,通过利用任务优先级改变***调用改变任务优先级。优先级逆转换表282和283功能上支持优先级设定模块280和281。由于第一实施例中归一化优先级的范围为0到255,优先级逆转换表282和283各具有一个256项的数组。因为商用OS110的优先级范围为0到31,优先级逆转换表282中的每个数组元具有0到31之间的一个整数并满足下述不等式(该数组名字为“revBusiness”):
i>j revBusiness[i]≥revBusiness[j]其中,0≤i且j≤255。
实时OS的优先级的范围从0到255。优先级值越小实时OS111所使用的优先级越高。因此,优先级逆转换表283中的每个数组元具有一个0和255之间的整数并满足下述不等式(该数组名字为“revRealtime”):
i>j revRealtime[i]≤revRealtime[j]其中,0≤i且j≤255。
在第一实施例中,归一化优先级的范围从0到255并且实时OS的具体优先级的范围也从0到255。这使得有可能在归一化优先级和实时OS优先级之间提供一对一的对应关系。从而可从优先级转换表171唯一地推导出优先级逆转换表283。另一方面,由于商用OS的优先级的范围为从0到31,不能唯一地确定优先级逆转换表282。在后一种情况下,例如不能从优先级转换表170导出和值为“1”的归一化优先级对应的商用OS优先级。由于不能唯一地确定归一化优先级,商用OS的优先级适当地以按满足上述不等式得到建立。
图17是构成由优先级转换模块122提供的优先级逆转换功能的处理流的步骤流程图。从优先级逆转换表282检索和指定的归一化优先级对应的商用OS优先级(步骤290),并发送到优先级设定模块280(步骤291)。优先级转换模块123提供类似的优先级逆转换功能。
图18是构成优先级设定模块280的处理流的步骤流程图。优先级设定模块280首先请求优先级转换模块122把归一化优先级转换成商用OS优先级(步骤292)。利用商用OS的优先级改变***调用,优先级设定模块280改变所涉及任务的优先级(步骤293)。用于实时OS111的优先级设定模块281进行类似的处理。
下面说明如何通过使用上面说明的优先级逆转换功能和优先级设定模块实现典型的优先级继承方式。
图19是构成优先级继承方式下的锁定获取模块219的处理流的步骤流程图。锁定获取模块219首先进行检查以判定另一个任务是否已经获得锁定(步骤300)。若判定别的任务未获得锁定,锁定获取模块219把现行任务置为锁定持有者(步骤301)。若判定另一个任务已获得锁定,须把现行任务置成等待状态,直至锁定被释放(步骤304)。在该情况下,必须优先执行获得锁定的任务,以便尽可能快地释放锁定。在获得锁定的任务和现行任务之间进行归一化优先级的比较(步骤302)。若判定获得锁定的任务比现行任务具有更低的归一化优先级,锁定获取模块219使获得锁定的任务继承现行任务的优先级(步骤303)。通过请求运行获得锁定的任务的操作***的优先级设定模块利用分配给现行任务的归一化优先级进行优先级设定处理,实现优先级的继承。若判定获得锁定的任务具有比现行任务更高的归一化优先级,不存在优先级继承的需要。接着立即把该任务置成等待状态。
图20是构成优先级继承方式下的锁定释放模块220的处理流的步骤流程图。锁定释放模块220首先释放其持有的锁定(步骤310)。接着检查以判定另一个任务是否等待获取锁定(步骤311)。若没有等待获取锁定的别的任务,这意味着未继承过归一化优先级,并在此处终止锁定释放模块220的执行。若另一个任务正等待获取锁定,则意味着必然继承过归一化优先级。在该设想下,请求优先级设定模块恢复该现行任务的初始归一化优先级(步骤312)。接着把等待获取锁定的任务置成可执行状态(步骤313)。
尽管在本发明说明书中未作出专门的说明,若在执行锁定获取模块219或锁定释放模块220期间所生成的中断导致任务的切换,可能在代表锁定持有者的数据中出现不一致性。应通过在锁定获取或释放处理中执行中断屏蔽功能避免这种可能性。
通过使用图16至20描述的程序模块和进程可在操作***间的排斥控制下实现有活力的优先级继承方式。实际上,利用图19和20的处理流使在单个操作***下继承归一化优先级成为可能。
图21示出中断屏蔽级计算模块177的内部结构。模块177提供把归一化优先级转换成中断屏蔽级并且当其转换后的级别高于某预定的级别后屏蔽中断的功能。该功能基于这个概念,即,其归一化优先级高于某预定级别的任务必须优先于中断先执行。即使没有这个功能,只要计算机能够借助于***调用其它功能屏幕掉中断,计算机可相当好地工作。然而,中断屏蔽级计算模块177提供只要归一化优先级超过预定值就自动地实施中断屏蔽的优点。
中断屏蔽级计算模块177具有用于执行中断屏蔽的中断屏蔽转换表320。中断屏蔽转换表320用于把归一化优先级转换成中断屏蔽值。如图4中所示,第一实施例可应用于能够分别屏蔽32种中断起因的计算机体系结构。因此,中断屏蔽转换表320中的每条项容纳32位长的数据。然而,若采用图4的四位的中断屏蔽级,中断屏蔽转换表320中的每条项可缩短到四位长。在图21的例子中,和为“0”的归一化优先级对应的中断屏蔽值是0x00000000,而和为“255”的归一化优先级对应的中断屏蔽值是0xffffffff。这意味着,若归一化优先级是“0”则允许所有的中断,而若***运行在最高归一化优先级时则屏蔽所有的中断。当优先级比较模块124向中断屏蔽级计算模块177通过当前执行的操作***的归一化优先级时,自动执行所需要的中断屏蔽。
图22是构成中断屏蔽级计算模块177的处理流的步骤流程图。首先,模块177从中断屏蔽转换表320提取和指定归一化优先级对应的中断屏蔽值(步骤330)。所获得的中断屏蔽值例如被设置到中断屏蔽寄存器143中,并执行中断屏蔽(步骤331)。
至此说明了本发明的第一实施例。如所讨论那样,第一实施例允许在保持各操作***下进行的任务的优先级下切换操作***。该实施例涉及把优先级通知模块编入到各现有操作***中,从而后者在每次进行重新调度时通知改变的优先级。但是,许多当前的商用操作***不适宜这种修改。可以用下面提出和讨论的本发明的第二实施例处理这样的情况。
图23是一个方块图,表示作为本发明的第二实施例的计算机的典型构成。假定商用OS110和实时OS111保存它们当前执行的任务的优先级(优先级340和341)。即,在这些操作***下,图5示出的在可执行任务队列150和151前面的任务管理表162和163分别保持执行优先级340和341。若向每个优先级分配多个可执行任务队列,通常设置一个指针或者一个变量;该指针指向给定时刻具有最高优先级的可执行任务队列的位置,或者该变量(优先级持有变量)指示所涉及的最高的优先级值。若设置指针,通过从指向供引用的任务管理表的该指针回到可执行任务阶列以得到执行优先级340和341;若设置变量,通过检索所涉及的优先级持有变量获得执行优先级340和341。
在操作***切换程序118中还包括优先级监视模块344。操作***切换程序118中的其它模块,即,优先级转换模块122和123、优先级比较模块124、公共中断处理程序174、OS间通信功能模块175、OS环境切换模块176以及中断屏蔽级计算模块177,和上面根据第一实施例讨论的各模块具有相同的结构和处理流。在各操作***中都不存在优先级通知模块120或121。
优先级监视模块344保持商用OS执行优先级存储值342和实时OS执行优先级存储值343。周期性启动下,优先级监视模块344监视各个操作***的执行优先级340和341。若所存储的执行优先级342或343被发现不同于现在执行的优先级340或341,识别出优先级的改变。接着向优先级转换模块122或123通知新的执行优先级。
图24是构成优先级监视模块344的处理流的步骤流程图。优先级监视模块344首先读出商用OS的执行优先级340以便和商用OS执行优先级存储值342进行比较(步骤350)。该步骤用于证实商用OS的优先级是否改变。若商用OS的优先级未改变,不做任何事并到达步骤353。若识别出优先级中的改变,把商用OS的执行优先级340设置到商用OS执行优先级存储值342中(步骤351),并向商用OS的优先级转换模块122报告所涉及的优先级(步骤352)。在实时OS111的优先级的可能变化下进行相同处理。即,把实时OS的执行优先级341和其执行优先级存储值343比较(步骤353)。若未检测出优先级的变化,是终止处理。若检测出优先级中的改变,把实时OS的执行优先级314设置到实时OS执行优先级存储值343中(步骤354)。接着向实时OS的优先级转换模块123报告所涉及的优先级(步骤355)。
请注意,在向优先级转换模块通知优先级下切换了操作***之后,控制返回到优先级监视模块344的开头处。在这个方面上,图24的监视方式看成是一种优先监视商用OS的优先级改变的方法。若希望在对等的基础下监视二个操作***的优先级,必须例如提供一种修改的处理流,其中对优先级监视模块344的启动次数进行计数,从而:
(1)若该模块的启动计数为奇数,监视商用OS110的优先级的改变;以及
(2)若该模块的启动计数为偶数,监视实用OS111的优先级的改变。
请注意,为监视优先级改变“周期性地”启动优先级监视模块344。为了实现周期性的监视,只需要通过时钟中断启动优先级监视模块344。因为包括时钟中断和外部中断的所有中断是集合地由公共中断处理程序174处理的,可以把优先级监视模块合并到公共中断处理程序174中。下面讨论这种布局。图25是构成带有优先级监视模块344的公共中断处理程序174的处理流的步骤流程图。在图25中,步骤240至248和图12中的对应步骤相同。启动优先级监视模块344(步骤360)可触发操作***的切换。因此,必须在中断处理程序的下游(步骤245或246)实施对优先级的监视。当中断处理程序152或153把控制回送到公共中断处理程序174时,自动地启动对优先级改变的监视。根据需要操作***被切换。若优先级监视模块344判定不需要切换操作***时,终止公共中断处理程序174的处理。
本发明的第二实施例不具有用于向优先级转换模块通知任何在重新调度后立即发生的优先级改变。因为在固定间隔处检查优先级的改变,操作***不是立即响应优先级的改变进行切换。因此,第二实施例构成一种不需要在内部改变其各操作***但和第一实施例相比切换有效性下降的计算机。
第二实施例满足不必内部修改二个操作***的要求。备择地,可能存在实时OS111可进行这种内部修改但商用OS110不能进行内部修改的情况。这种情况可由本发明的第三实施例应付,在第三实施例中实时OS111包含优先级通知模块121,并且优先级监视模块344只监视商用OS110的优先级改变(图26)。
作为另一种选择,可以不把优先级通知模块设立在重新调度程序之中,而是建立在各操作***里周期性地激励的构件中,例如时钟中断处理模块中。这种布局代替代先级监视模块344。
当上述任一实施例应用到图27中的汽车导航***时,即使***处于耗时的路线搜索操作期间仍可从用户接收输入。在图27的装配时,向接口任务分配高于路线搜索任务的归一化优先级。用户按按钮启动接口任务导致用商用OS代替实时OS以执行较高归一化优先级的任务。从而,即使当正运行处理时间长的路线搜索任务时也会执行接口任务。
存在各由多个操作***组成的虚拟计算机。向任何一种这样的计算机应用本发明使其有可能根据各任务的优先级运行具有不同优先级模式的多个操作***。
上面所讨论的发明布局的组合可构成一种同时提供二种不同的操作***的优点的计算机:商用OS的用户接口和实时OS的高可靠性。
本发明的上述第一到第三实施例都构造成在操作***切换程序118中转换优先级。备择地,可把分别和商用OS110和实时OS111对应的优先级转换模块122和123建立在它们的操作***之中。图29中示出的本发明的第四实施例设计成采纳这样的修改。
在第四实施例中,优先级转换模块122和123把二个操作***的优先级转换成归一化优先级。接着,优先级通知模块120和121向优先级比较模块124通知代表各操作***的结果归一化优先级。
在第四实施例中,根据归一化优先级一方面实现商用OS和实时OS之间的所有接口另一方面又实现操作***切换程序118。上述第一至第三实施例中的各个实施例在任务是可执行时通知该任务的优先级,而若不存在可执行任务则报告空闲状态。这种空闲状态以及操作***的自处理状态不能根据代表这些状态的归一化优先级的次序自由地变换。相反,借助第四实施例,在各操作***下把优先级转换成归一化优先级。即,和任务执行状态不同的哪些状态可按其归一化优先级的次序自由地变换。
如根据本发明所说明的那样,具有单个处理机运行多个操作***的计算机允许依据要执行的任务的优先级切换这些操作***,从而永远在低优先级的任务之前执行高优先级的任务。依据本发明,各操作***是按它们的优先级转换模块把任务优先级转换成归一化优先级后根据优先级进行比较的。对于运行多个承受不同优先级模式的操作***的计算机,保留了实时响应性和效率性。
在不背离本发明的精神和范围下可构造本发明的许多明显不同的实施例,从而可理解本发明除了权利要求书规定之外不受限于各特定的实施例。
Claims (10)
1.一种计算机包括:
一个存储器,用于存储多个操作***和存储由各个所述操作***执行的多个进程或线程;以及
一个处理机,用于根据分配给所述进程或线程的优先级执行所述各操作***;
其中所述处理机检索要由所述操作***的任一个执行的进程或线程的优先级,把所检索的优先级转换成所述多个操作***共用的优先级,根据该转换得到的优先级选择要执行的操作***,和执行该选定的操作***。
2.依据权利要求1的计算机,其中所述存储器包含一个优先级转换表,在该表中要由所述各操作***执行的进程或线程的优先级变换成公用优先级,并且其中所述处理机根据所述优先级转换表选择要执行的操作***。
3.依据权利要求1或2的计算机,其中所述处理机根据所述各操作***公共的优先级确定所述多个操作***中各个操作***的专用优先级,从而改变由各个所述操作***执行的所述多个进程或线程的优先级。
4.依据权利要求3的计算机,其中所述存储器包含一个优先级逆转换表,在该表中把所述公用的优先级变换成每个所述操作***专用的优先级,并且其中所述处理机根据所述优先级逆转换表改变所述多个进程或线程的优先级。
5.依据权利要求1至4中任一要求的计算机,其中,若指定一个用于执行的进程或线程,所述处理机提高负责执行指定进程或线程的操作***的优先级,该处理机还在终止所述指定进程或线程的执行时降低该涉及到的操作***的优先级。
6.一种数据存储介质,包含:
多个进程或线程;
多个操作***,用于执行所述多个进程或线程并且通知当前正执行进程或线程的优先级;
优先级转换步骤,以把所述多个操作***中的任一个操作***发出的优先级转换成所述多个操作***公用的优先级;以及
优先级比较步骤,用于比较经所述优先级转换步骤得到的各公用优先级,以便选择并优先执行其公用优先级高于任何其它操作***的操作***。
7.一种操作***执行方法,用于选择性地执行多个操作***中的某一个,所述操作***执行方法包括步骤:
把由每个所述操作***执行的进程或线程的优先级转换成所述多个操作***公用的优先级;以及
比较经所述优先级转换步骤得到的各公用优先级,以便选择并优先执行其公用优先级高于任何其它操作***的操作***。
8.依据权利要求7的操作***执行方法,其中把每个所述操作***专用的优先级转换成公用优先级的所述优先级转换步骤把不同操作***的优先级转换成在所述不同的操作***之间不同的公用优先级。
9.依据权利要求7或8的操作***执行方法,其中所述优先级转换步骤除了把要由各个所述操作***执行的进程或线程的优先级转换成公用优先级外,还至少把中断处理状态、任何操作***的自处理状态和空闲状态转换成公用优先级。
10.一种具有多个操作***和用于切换所述多个操作***的切换装置,每个所述操作***根据分配给多个进程或线程的优先级执行所述进程或线程:
其中所述多个操作***中的每个操作***还包括用于把由各个操作***执行的所述进程或线程的优先级转换成整个所述计算机***中公用的优先级的优先级转换装置,和包括用于向所述切换装置通知经所述优先级转换装置得到的公用优先级的优先级通知装置;以及
其中所述切换装置还包括优先级比较装置,用于比较每个所述操作***发送的公用优先级,以便选择并优先执行其公用优先级高于任何其它操作***的操作***。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04103299A JP4072271B2 (ja) | 1999-02-19 | 1999-02-19 | 複数のオペレーティングシステムを実行する計算機 |
JP41032/1999 | 1999-02-19 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1264078A true CN1264078A (zh) | 2000-08-23 |
Family
ID=12597071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN00102345A Pending CN1264078A (zh) | 1999-02-19 | 2000-02-18 | 执行多个操作***的计算机 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7810096B2 (zh) |
EP (1) | EP1031924B1 (zh) |
JP (1) | JP4072271B2 (zh) |
KR (1) | KR100759280B1 (zh) |
CN (1) | CN1264078A (zh) |
AT (1) | ATE444523T1 (zh) |
DE (1) | DE60043032D1 (zh) |
TW (1) | TW490638B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100356350C (zh) * | 2001-04-27 | 2007-12-19 | 邵通 | 实现计算设备状态转换装置安全操作的装置和方法 |
CN100356349C (zh) * | 2001-04-27 | 2007-12-19 | 邵通 | 一种实现计算设备状态转换的装置及方法 |
CN100458701C (zh) * | 2006-01-17 | 2009-02-04 | 株式会社Ntt都科摩 | 输入输出控制装置、输入输出控制***以及输入输出控制方法 |
CN101689127A (zh) * | 2008-04-28 | 2010-03-31 | 松下电器产业株式会社 | 虚拟计算机控制装置、虚拟计算机控制方法及虚拟计算机控制程序 |
US8274518B2 (en) | 2004-12-30 | 2012-09-25 | Microsoft Corporation | Systems and methods for virtualizing graphics subsystems |
CN102708333A (zh) * | 2002-03-29 | 2012-10-03 | 英特尔公司 | 用于执行安全环境初始化指令的处理器 |
US8296770B2 (en) | 2005-11-08 | 2012-10-23 | Yokogawa Electric Corporation | Systems and methods for allocation of hardware resource to tasks accordance with the device-based relative value for each of the field devices |
CN103229148A (zh) * | 2010-09-28 | 2013-07-31 | 西门子公司 | 运输车辆的适应性远程维护 |
CN105279015A (zh) * | 2014-05-29 | 2016-01-27 | 黑莓有限公司 | 用于跨域协调进程和内存管理的***和方法 |
WO2016074616A1 (en) * | 2014-11-13 | 2016-05-19 | Mediatek Inc. | Dual-system architecture with fast recovery and switching of operating system |
CN101963929B (zh) * | 2004-12-31 | 2016-07-06 | 钟巨航 | 保存/恢复工作现场的方法 |
CN101964029B (zh) * | 2004-12-31 | 2016-12-14 | 钟巨航 | 多个子数据处理***之间在线切换的方法 |
CN106547628A (zh) * | 2016-11-29 | 2017-03-29 | 北京元心科技有限公司 | 多***的资源释放方法及装置 |
CN115080158A (zh) * | 2021-03-12 | 2022-09-20 | Oppo广东移动通信有限公司 | 界面显示方法、装置、终端设备及计算机可读存储介质 |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001256067A (ja) * | 2000-03-08 | 2001-09-21 | Mitsubishi Electric Corp | プロセッサ省電力制御方法、記憶媒体、およびプロセッサ省電力制御装置 |
GB2369464B (en) * | 2000-11-27 | 2005-01-05 | Advanced Risc Mach Ltd | A data processing apparatus and method for saving return state |
JP2003067201A (ja) * | 2001-08-30 | 2003-03-07 | Hitachi Ltd | コントローラとオペレーティングシステム |
US20040023646A1 (en) * | 2002-07-31 | 2004-02-05 | Satoshi Inami | Information processing terminal and information processing method |
US7496494B2 (en) | 2002-09-17 | 2009-02-24 | International Business Machines Corporation | Method and system for multiprocessor emulation on a multiprocessor host system |
GB2396712B (en) * | 2002-11-18 | 2005-12-07 | Advanced Risc Mach Ltd | Handling multiple interrupts in a data processing system utilising multiple operating systems |
GB0226874D0 (en) | 2002-11-18 | 2002-12-24 | Advanced Risc Mach Ltd | Switching between secure and non-secure processing modes |
GB2395313B (en) * | 2002-11-18 | 2005-11-23 | Advanced Risc Mach Ltd | Task following between multiple operating systems |
JP3953449B2 (ja) * | 2003-08-26 | 2007-08-08 | 富士通株式会社 | タスク管理プログラムおよびタスク制御装置 |
JP4112511B2 (ja) | 2004-02-17 | 2008-07-02 | 富士通株式会社 | タスク管理プログラムおよびタスク管理装置 |
US8707317B2 (en) | 2004-04-30 | 2014-04-22 | Microsoft Corporation | Reserving a fixed amount of hardware resources of a multimedia console for system application and controlling the unreserved resources by the multimedia application |
US7716669B2 (en) * | 2004-04-30 | 2010-05-11 | Microsoft Corporation | Concurrent system applications in a multimedia console |
US8271976B2 (en) | 2004-06-30 | 2012-09-18 | Microsoft Corporation | Systems and methods for initializing multiple virtual processors within a single virtual machine |
US8561076B1 (en) * | 2004-06-30 | 2013-10-15 | Emc Corporation | Prioritization and queuing of media requests |
US20060010446A1 (en) * | 2004-07-06 | 2006-01-12 | Desai Rajiv S | Method and system for concurrent execution of multiple kernels |
WO2006018307A2 (en) * | 2004-08-18 | 2006-02-23 | Jaluna Sa | Operating systems |
US7840962B2 (en) * | 2004-09-30 | 2010-11-23 | Intel Corporation | System and method for controlling switching between VMM and VM using enabling value of VMM timer indicator and VMM timer value having a specified time |
EP1820100B1 (en) * | 2004-11-30 | 2008-08-27 | Koninklijke Philips Electronics N.V. | Efficient switching between prioritized tasks |
US7437546B2 (en) * | 2005-08-03 | 2008-10-14 | Intel Corporation | Multiple, cooperating operating systems (OS) platform system and method |
US7719132B2 (en) | 2005-09-28 | 2010-05-18 | L3 Communications Corporation | Ruggedized mobile computing device |
US20070104340A1 (en) * | 2005-09-28 | 2007-05-10 | Knowles Electronics, Llc | System and Method for Manufacturing a Transducer Module |
US8104033B2 (en) * | 2005-09-30 | 2012-01-24 | Computer Associates Think, Inc. | Managing virtual machines based on business priorty |
KR100731983B1 (ko) * | 2005-12-29 | 2007-06-25 | 전자부품연구원 | 저전력 무선 디바이스 프로세서용 하드와이어드 스케줄러및 스케줄링 방법 |
JP4342576B2 (ja) * | 2006-07-25 | 2009-10-14 | 株式会社エヌ・ティ・ティ・ドコモ | 複数オペレーティングシステム切替制御装置及びコンピュータシステム |
EP1892625B1 (en) * | 2006-08-09 | 2018-07-11 | Red Bend Software | Finer grained operating system scheduling |
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 |
JP4785142B2 (ja) * | 2007-01-31 | 2011-10-05 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
CN101689106B (zh) | 2007-06-12 | 2013-10-09 | 松下电器产业株式会社 | 多处理器控制装置、多处理器控制方法以及多处理器控制电路 |
US8627327B2 (en) * | 2007-10-24 | 2014-01-07 | International Business Machines Corporation | Thread classification suspension |
JP5053109B2 (ja) * | 2008-01-23 | 2012-10-17 | 株式会社日立製作所 | 制御装置 |
CN101499021A (zh) * | 2008-01-31 | 2009-08-05 | 国际商业机器公司 | 在多个虚拟机上动态分配资源的方法和装置 |
JP2009294712A (ja) * | 2008-06-02 | 2009-12-17 | Panasonic Corp | 優先度制御装置及び優先度制御方法 |
JP5323828B2 (ja) * | 2008-06-24 | 2013-10-23 | パナソニック株式会社 | 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路 |
US8635621B2 (en) * | 2008-08-22 | 2014-01-21 | International Business Machines Corporation | Method and apparatus to implement software to hardware thread priority |
US8424007B1 (en) * | 2008-09-30 | 2013-04-16 | Symantec Corporation | Prioritizing tasks from virtual machines |
US9086913B2 (en) * | 2008-12-31 | 2015-07-21 | Intel Corporation | Processor extensions for execution of secure embedded containers |
JP4897851B2 (ja) * | 2009-05-14 | 2012-03-14 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータ・システム及びコンピュータ・システムの制御方法 |
US20110117944A1 (en) * | 2009-11-17 | 2011-05-19 | Yaxin Cao | Method and system for task-level access arbitration between virtual modems in a multi-sim multi-standby communication device |
CN102667725B (zh) * | 2010-01-13 | 2015-09-16 | 马维尔以色列(M.I.S.L.)有限公司 | 用于媒体处理的硬件虚拟化 |
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 |
US8341643B2 (en) * | 2010-03-29 | 2012-12-25 | International Business Machines Corporation | Protecting shared resources using shared memory and sockets |
WO2011148563A1 (ja) * | 2010-05-24 | 2011-12-01 | パナソニック株式会社 | 情報処理システム |
JP5612681B2 (ja) | 2010-05-24 | 2014-10-22 | パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America | 仮想計算機システム、領域管理方法、及びプログラム |
JP5323103B2 (ja) * | 2010-09-03 | 2013-10-23 | 三菱電機株式会社 | グラフィカルユーザインタフェース装置 |
US8407710B2 (en) * | 2010-10-14 | 2013-03-26 | International Business Machines Corporation | Systems and methods for dynamically scanning a plurality of active ports for priority schedule of work |
WO2012086106A1 (ja) * | 2010-12-21 | 2012-06-28 | パナソニック株式会社 | 仮想計算機システム及び仮想計算機システム制御方法 |
WO2012102002A1 (ja) | 2011-01-24 | 2012-08-02 | パナソニック株式会社 | 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、記録媒体、及び集積回路 |
JP2012185541A (ja) * | 2011-03-03 | 2012-09-27 | Denso Corp | 車載装置、スケジューリングプログラム、及びスケジューリング方法 |
JP5648544B2 (ja) | 2011-03-15 | 2015-01-07 | 富士通株式会社 | スケジューリングプログラム、および情報処理装置 |
WO2012147252A1 (ja) | 2011-04-27 | 2012-11-01 | パナソニック株式会社 | 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路 |
US10417018B2 (en) | 2011-05-27 | 2019-09-17 | Microsoft Technology Licensing, Llc | Navigation of immersive and desktop shells |
US8924885B2 (en) | 2011-05-27 | 2014-12-30 | Microsoft Corporation | Desktop as immersive application |
US9843665B2 (en) | 2011-05-27 | 2017-12-12 | Microsoft Technology Licensing, Llc | Display of immersive and desktop shells |
KR101801359B1 (ko) * | 2011-07-28 | 2017-11-24 | 엘지전자 주식회사 | 이동 단말기 |
TWI496083B (zh) * | 2011-08-30 | 2015-08-11 | Compal Electronics Inc | 雙作業系統的操作方法、可攜式電子裝置以及對接擴充系統 |
TWI497419B (zh) | 2011-10-20 | 2015-08-21 | Via Tech Inc | 電腦裝置及其中斷任務分配方法 |
JP5729266B2 (ja) * | 2011-11-15 | 2015-06-03 | 富士通株式会社 | 情報処理装置、情報処理装置の制御方法、及び情報処理装置の制御プログラム |
WO2013132648A1 (ja) * | 2012-03-09 | 2013-09-12 | パイオニア株式会社 | 情報処理装置、情報処理方法、情報処理プログラムが記録された記録媒体及び情報処理プログラム |
JPWO2013132648A1 (ja) * | 2012-03-09 | 2015-07-30 | パイオニア株式会社 | 情報処理装置、情報処理方法、情報処理プログラムが記録された記録媒体及び情報処理プログラム |
WO2013159289A1 (en) * | 2012-04-25 | 2013-10-31 | Hewlett-Packard Development Company | Switching of operating systems |
US9575760B2 (en) * | 2013-05-17 | 2017-02-21 | Nvidia Corporation | Techniques for sharing priorities between streams of work and dynamic parallelism |
US9830178B2 (en) | 2014-03-06 | 2017-11-28 | Intel Corporation | Dynamic reassignment for multi-operating system devices |
US9606833B2 (en) * | 2014-04-09 | 2017-03-28 | Samsung Electronics Co., Ltd | Method and apparatus for providing a preemptive task scheduling scheme in a real time operating system |
CN104506563B (zh) * | 2015-01-20 | 2018-09-07 | 宇龙计算机通信科技(深圳)有限公司 | 进程的访问控制方法、访问控制***和终端 |
EP3553659B1 (en) * | 2015-02-24 | 2022-11-23 | Huawei Technologies Co., Ltd. | Multi-operating system device, notification device and methods thereof |
JP6110969B2 (ja) * | 2016-02-24 | 2017-04-05 | パイオニア株式会社 | 情報処理装置、情報処理方法、情報処理プログラムが記録された記録媒体及び情報処理プログラム |
JP6615726B2 (ja) * | 2016-09-16 | 2019-12-04 | 株式会社東芝 | 情報処理装置、情報処理方法及びプログラム |
JP7010014B2 (ja) * | 2018-01-18 | 2022-01-26 | 株式会社デンソー | スケジューリング装置 |
US10725941B2 (en) | 2018-06-30 | 2020-07-28 | Western Digital Technologies, Inc. | Multi-device storage system with hosted services on peer storage devices |
US10877810B2 (en) * | 2018-09-29 | 2020-12-29 | Western Digital Technologies, Inc. | Object storage system with metadata operation priority processing |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4481583A (en) * | 1981-10-30 | 1984-11-06 | At&T Bell Laboratories | Method for distributing resources in a time-shared system |
US5392409A (en) * | 1984-01-18 | 1995-02-21 | Hitachi, Ltd. | I/O execution method for a virtual machine system and system therefor |
JPS62231339A (ja) * | 1986-03-31 | 1987-10-09 | Fuji Electric Co Ltd | 2つのオペレ−テイングシステムの並行動作方法 |
EP0427067A3 (en) * | 1989-11-08 | 1991-08-14 | Siemens Aktiengesellschaft | Method for the alternating operation of a computer with several operating systems |
JPH04367037A (ja) * | 1991-06-13 | 1992-12-18 | Mitsubishi Electric Corp | 計算機システム |
JPH05108380A (ja) * | 1991-10-21 | 1993-04-30 | Mitsubishi Electric Corp | データ処理システム |
JPH0799501B2 (ja) * | 1991-11-18 | 1995-10-25 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 複数アプリケーションの同時実行装置 |
JPH05197577A (ja) * | 1992-01-20 | 1993-08-06 | Nec Corp | 仮想計算機システムにおける仮想計算機実行プライオリティ制御方式 |
US5333319A (en) * | 1992-03-02 | 1994-07-26 | International Business Machines Corporation | Virtual storage data processor with enhanced dispatching priority allocation of CPU resources |
JPH064310A (ja) | 1992-06-24 | 1994-01-14 | Nec Software Ltd | 複数オペレーティングシステム切換え方式 |
US5483647A (en) * | 1992-12-17 | 1996-01-09 | Bull Hn Information Systems Inc. | System for switching between two different operating systems by invoking the server to determine physical conditions to initiate a physical connection transparent to the user |
JP3349547B2 (ja) * | 1993-05-10 | 2002-11-25 | 株式会社日立製作所 | スケジューリングシステム |
JP3658420B2 (ja) * | 1994-04-14 | 2005-06-08 | 株式会社日立製作所 | 分散処理システム |
CA2173695A1 (en) * | 1995-04-14 | 1996-10-15 | Panagiotis Kougiouris | Method and system for providing interoperability among processes written to execute on different operating systems |
US6678712B1 (en) * | 1996-01-19 | 2004-01-13 | International Business Machines Corporation | Method and system for executing a program under one of a plurality of mutually exclusive operating environments |
US5826081A (en) * | 1996-05-06 | 1998-10-20 | Sun Microsystems, Inc. | Real time thread dispatcher for multiprocessor applications |
AU4353297A (en) * | 1996-09-17 | 1998-04-14 | Radisys Corporation | Method and apparatus for encapsulating a protected-mode operating system within a real-time, protected-mode operating system |
US6658447B2 (en) * | 1997-07-08 | 2003-12-02 | Intel Corporation | Priority based simultaneous multi-threading |
FI108478B (fi) * | 1998-01-21 | 2002-01-31 | Nokia Corp | Sulautettu jõrjestelmõ |
US6157989A (en) * | 1998-06-03 | 2000-12-05 | Motorola, Inc. | Dynamic bus arbitration priority and task switching based on shared memory fullness in a multi-processor system |
JP3659062B2 (ja) * | 1999-05-21 | 2005-06-15 | 株式会社日立製作所 | 計算機システム |
US6715016B1 (en) * | 2000-06-01 | 2004-03-30 | Hitachi, Ltd. | Multiple operating system control method |
EP1298624A4 (en) * | 2000-06-20 | 2004-10-13 | Hitachi Ltd | VEHICLE CONTROL DEVICE |
-
1999
- 1999-02-19 JP JP04103299A patent/JP4072271B2/ja not_active Expired - Fee Related
-
2000
- 2000-02-14 AT AT00301110T patent/ATE444523T1/de not_active IP Right Cessation
- 2000-02-14 DE DE60043032T patent/DE60043032D1/de not_active Expired - Lifetime
- 2000-02-14 EP EP00301110A patent/EP1031924B1/en not_active Expired - Lifetime
- 2000-02-18 CN CN00102345A patent/CN1264078A/zh active Pending
- 2000-02-18 KR KR1020000007733A patent/KR100759280B1/ko not_active IP Right Cessation
- 2000-02-19 TW TW089102909A patent/TW490638B/zh not_active IP Right Cessation
-
2005
- 2005-01-03 US US11/025,966 patent/US7810096B2/en not_active Expired - Fee Related
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100356349C (zh) * | 2001-04-27 | 2007-12-19 | 邵通 | 一种实现计算设备状态转换的装置及方法 |
CN100356350C (zh) * | 2001-04-27 | 2007-12-19 | 邵通 | 实现计算设备状态转换装置安全操作的装置和方法 |
CN102708333B (zh) * | 2002-03-29 | 2016-03-16 | 英特尔公司 | 用于执行安全环境初始化指令的处理器 |
US10175994B2 (en) | 2002-03-29 | 2019-01-08 | Intel Corporation | System and method for execution of a secured environment initialization instruction |
US10042649B2 (en) | 2002-03-29 | 2018-08-07 | Intel Corporation | System and method for execution of a secured environment initialization instruction |
US10031759B2 (en) | 2002-03-29 | 2018-07-24 | Intel Corporation | System and method for execution of a secured environment initialization instruction |
US9990208B2 (en) | 2002-03-29 | 2018-06-05 | Intel Corporation | System and method for execution of a secured environment initialization instruction |
CN102708333A (zh) * | 2002-03-29 | 2012-10-03 | 英特尔公司 | 用于执行安全环境初始化指令的处理器 |
US9361121B2 (en) | 2002-03-29 | 2016-06-07 | Intel Corporation | System and method for execution of a secured environment initialization instruction |
US8274518B2 (en) | 2004-12-30 | 2012-09-25 | Microsoft Corporation | Systems and methods for virtualizing graphics subsystems |
CN101964029B (zh) * | 2004-12-31 | 2016-12-14 | 钟巨航 | 多个子数据处理***之间在线切换的方法 |
CN101963929B (zh) * | 2004-12-31 | 2016-07-06 | 钟巨航 | 保存/恢复工作现场的方法 |
CN101305348B (zh) * | 2005-11-08 | 2013-03-27 | 横河电机株式会社 | 分布式*** |
US8296770B2 (en) | 2005-11-08 | 2012-10-23 | Yokogawa Electric Corporation | Systems and methods for allocation of hardware resource to tasks accordance with the device-based relative value for each of the field devices |
CN101359312B (zh) * | 2006-01-17 | 2010-06-09 | 株式会社Ntt都科摩 | 输入输出控制*** |
CN100458701C (zh) * | 2006-01-17 | 2009-02-04 | 株式会社Ntt都科摩 | 输入输出控制装置、输入输出控制***以及输入输出控制方法 |
CN101359313B (zh) * | 2006-01-17 | 2010-04-14 | 株式会社Ntt都科摩 | 输入输出控制*** |
CN101689127A (zh) * | 2008-04-28 | 2010-03-31 | 松下电器产业株式会社 | 虚拟计算机控制装置、虚拟计算机控制方法及虚拟计算机控制程序 |
CN101689127B (zh) * | 2008-04-28 | 2013-10-09 | 松下电器产业株式会社 | 虚拟计算机控制装置、虚拟计算机控制方法及虚拟计算机控制程序 |
CN103229148B (zh) * | 2010-09-28 | 2016-08-31 | 西门子公司 | 运输车辆的适应性远程维护 |
CN103229148A (zh) * | 2010-09-28 | 2013-07-31 | 西门子公司 | 运输车辆的适应性远程维护 |
CN105279015A (zh) * | 2014-05-29 | 2016-01-27 | 黑莓有限公司 | 用于跨域协调进程和内存管理的***和方法 |
WO2016074616A1 (en) * | 2014-11-13 | 2016-05-19 | Mediatek Inc. | Dual-system architecture with fast recovery and switching of operating system |
CN106547628A (zh) * | 2016-11-29 | 2017-03-29 | 北京元心科技有限公司 | 多***的资源释放方法及装置 |
CN106547628B (zh) * | 2016-11-29 | 2020-05-01 | 北京元心科技有限公司 | 多***的资源释放方法及装置 |
CN115080158A (zh) * | 2021-03-12 | 2022-09-20 | Oppo广东移动通信有限公司 | 界面显示方法、装置、终端设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP4072271B2 (ja) | 2008-04-09 |
ATE444523T1 (de) | 2009-10-15 |
EP1031924B1 (en) | 2009-09-30 |
TW490638B (en) | 2002-06-11 |
JP2000242512A (ja) | 2000-09-08 |
EP1031924A3 (en) | 2003-10-15 |
DE60043032D1 (de) | 2009-11-12 |
US20050149933A1 (en) | 2005-07-07 |
KR20000076691A (ko) | 2000-12-26 |
KR100759280B1 (ko) | 2007-09-17 |
EP1031924A2 (en) | 2000-08-30 |
US7810096B2 (en) | 2010-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1264078A (zh) | 执行多个操作***的计算机 | |
CN1147785C (zh) | 执行多个指令流的多程序流程同时处理器 | |
CN1117319C (zh) | 在多线程处理器中改变线程优先级的方法和装置 | |
CN1127017C (zh) | 线程切换控制方法及用于该方法的线程状态寄存器 | |
CN1154928C (zh) | 用于多任务设施信息处理***的资源管理方法和设备 | |
CN1188794C (zh) | 到一个共享的协处理器资源的多个逻辑接口 | |
CN1280716C (zh) | 计算机处理方法、分布式计算方法和网络计算方法 | |
JP5770721B2 (ja) | 情報処理システム | |
CN1592886A (zh) | 通过虚拟线程执行计算机多任务的方法及装置 | |
CN1760836A (zh) | 信息处理***、信息处理方法和程序 | |
CN107943555A (zh) | 一种云计算环境下的大数据存储和处理平台及处理方法 | |
CN1577310A (zh) | 信息处理***和存储器管理方法 | |
Xu et al. | Adaptive task scheduling strategy based on dynamic workload adjustment for heterogeneous Hadoop clusters | |
CN104199730B (zh) | 一种基于同步i/o复用机制的单线程多任务处理方法 | |
CN1906586A (zh) | 用于在多处理器***中处置处理错误的方法和设备 | |
CN101069161A (zh) | 调度方法、调度装置和多处理器*** | |
CN1268688A (zh) | 异步更新共享资源的接口***和方法 | |
CN1906583A (zh) | 信息处理设备、中断处理控制方法、以及计算机程序 | |
CN1993670A (zh) | 信息处理装置 | |
CN1993674A (zh) | 多芯架构中的资源管理 | |
US20150121388A1 (en) | Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium | |
CN1144569A (zh) | 资源分配 | |
CN1276888A (zh) | 在多线程处理器中选择线程切换事件的方法和装置 | |
CN1273890C (zh) | Arm处理器架构的微内核设计方法 | |
CN1292529A (zh) | 管理计算环境的分区组的方法,***和程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |