通过虚拟线程执行计算机多任务的方法及装置制造方法及图纸

技术编号:2865188 阅读:186 留言:0更新日期:2012-04-11 18:40
在计算机的操作中,多个字节码或伪码指令,至少一些包含多个机器码指令的伪码指令存储在计算机内存中,对于将由计算机执行的多个任务或工作中的每一个,自动产生各个执行上下文数据的虚拟线程。该虚拟线程的每个都包括(a)在执行各个任务或工作中将被执行的下一个的伪码指令的存储位置和(b)用于执行各个任务或工作需要的任何局部变量的值。至少一些任务或工作中的每个都承担包含多个机器语言指令的各个伪码指令的执行。在各个虚拟线程的控制下和在各个系列时间片或处理时隙内处理每个任务或工作,并且,在不同虚拟线程之间的每个上下文转接中,仅仅在完成当前执行的一个伪码指令的执行之后承担如此的上下文转接。(*该技术在2021年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及一种用于在计算机上同时执行多任务的方法及其相关的装置。
技术介绍
大多数现代操作系统具有本地多任务或多线程能力,即,多线程能力内置进操作系统中,明显的例外是先于OS X的Macintosh操作系统(MacOS)的版本,该版本没有多少或没有多线程能力。不幸的是,所提供的多线程能力,依靠操作系统和硬件平台而不同。很多平台对能够同时存在的线程的总数目加以限制,并且一些平台根本不能有多线程。为了正确地理解由软件和它们的解决方案中线程引起的问题,需要了解对多线程的通用方法和由大多数本地平台线程系统使用的特定方法。同时执行多处理任务,一个显而易见的解决方案是在计算机系统中提供多套处理电路。但是,典型的台式计算机仅仅有一个处理器,并且即使高端工作站也仅仅有一到四个处理。基本解决方案的软件是时间片,即,将处理器的时间划分成一系列小片,并且依此将每个小片专用于不同的任务或线程。典型地,依靠操作系统允许每个线程运行3ms到30ms之间,在该线程被挂起时,而另一个线程被允许运行。操作系统通常使用处理器的定时器中断来周期性地中断当前执行的线程并且激活操作系统的线程调度程序,一段存储当前线程状态或执行上下文的软件选择新的线程去运行,恢复新线程的已存储的执行上下文,随后允许处理器恢复正常执行,这个处理称为上下文转换。上下文转换除了在时间片终止时发生之外,也会在线程进入等待状态时发生,线程处于等待状态时不做任何操作,除非有特殊事件发生,当线程进入等待状态时,线程调度程序受到请求并发生上下文转换,以便其它线程可能会使用剩余的时间片。当线程试图访问已调页(page)到磁盘上的存储器时,会发生导致线程进入等待状态的典型事件。操作系统会将线程悬挂直到存储系统有机会在存储器中调页为止。其它导致线程进入等待状态的事件是线程对用户输入的检查以及试图对磁盘进行读取,对于后者,操作系统悬空一个线程直到磁盘读取完毕,当第一个线程等待从磁盘读取数据时允许其它线程执行处理任务。然而当线程产生剩余时间片时,另一个导致线程进入等待状态的事件会发生,例如,如果线程暂时没有更多事可做时就可能发生。因为上下文转换会频繁发生,快速的上下文转换操作很关键。很多操作系统对系统中存在的线程数量有限制,Windows 95在系统不稳定前最多有约150~200个线程,然而对于BeOS,每个处理器最多有4096个线程。对于线程数的这种限制是操作系统预分配的结果,由于性能上的原因,当系统启动时,一个固定尺寸的存储器块用于线程表。标准的非解释的(non-interpreted)编程语言将人可读的源代码编译成机读代码或可以直接由处理器读取的机器语言代码。另一方面,解释的语言(interpreted language)将人可读源代码编译成解释程序可读代码(interpreter-readable code)或字节码。一个被称为解释器并使用机器语言编写的软件程序可以读取字节码并指导处理器执行适当的操作。解释语言的一个重要优点是能对字节码进行设计以便独立于机器,它允许使用语言编写程序且编译成字节码在任何操作系统以及写有解释程序的硬件平台上运行。当开发一种必须在所有平台上同等地运行的解释语言时,依赖于平台的本地多线程能够是最多存在的问题,交差平台翻译程序语言的目标是使得有可能在一个平台上用语言开发程序,然后在任何另一个由这种语言支持的其它平台上运行此程序而不需要作任何变动,Java就是一个试图创建这种语言的例子。不幸的是,如果这种应用必须多线程,那么本地多线程功能的使用会立即限制应用能够运行的平台,应用程序在大多数MacOP(此操作系统没有线程能力)版本上运行时会立即受阻,以及这取决于应用程序要求同时有多少个执行线程,应用程序也可能会在Windows 95(最多约150~200个线程)上或者在BeOS(每个处理器最多4096个线程)上或是在其它平台上运行时受阻。
技术实现思路
本专利技术打算解决以上所说的问题并为具有不同平台和不同操作系统的计算机提供一个多任务的能力。根据本专利技术,独立平台意味着多线程是通过解释器的方法来完成,这个软件程序通过解释指令而形成解释后的编程语言。依照虚拟线程,解释器通过创建、维护和处理来执行多任务,这种方法消除了对本地平台线程能力的依赖,并为使用解释后的编程语言的多线交差平台提供了一个可靠办法。在典型的解释的编程语言中,程序中的每一个指令必须通过解释器来读取并传给处理器,这意味着解释程序典型地会比机器语言程序运行得慢很多。就象在传统的多线程或时间片中那样,增加代码到解释器中来检查每个机器代码指令的定时器或计数器进行,必要时执行一个上下文转换会对解释后的程序性能产生很大的影响。因此,本专利技术所期望上下文转换执行仅在连续伪代码之间和在伪代码不执行期间,从而在这里提到的使用多任务或多线程的计算机会反复执行与机器语言指令等同的指令,而不对定时器或计数器进行检查。根据本专利技术,操作计算机的方法包含向计算机的存储器中存储多个的伪代码指令,至少是一些含有多个机器码指令的伪代码指令,以及由于多个的任务或工作中的每一项都是由计算机来执行,因此自动创建一个相应的执行上下文数据的虚拟线程,它包括(a)在执行相应任务或工作时所执行的下一个伪代码指令的存储位置;(b)在执行相应任务或工作时所要求的任何局部变量的值。多个任务或工作中的每一个都执行相应的伪代码指令中的一个,这些伪代码指令包含多个的机器语言指令。该方法还包括在各自虚拟线程的控制之下,对相应一系列时间片或处理时隙中的每个任务或工作用进行处理,或者在每一个不同虚拟线程之间进行的上下文转换中,这种上下文转换必须在当前执行的伪代码指令执行完之后进行。而不是采用模仿细纹(fine-grained)机器语言指令传统的“虚机”方法(Java采用的方法),本专利技术的虚拟线程使用了一个带有不精练指令的解释语言,也就是说每个指令要完成更大的任务。例如周机器语言(或模仿机器语言的解释语言)画一个盒子可能会由几百或几千个指令组成,每个指令对盒子中一个像素的颜色进行设定。使用虚拟线程画一个盒子时只需要用一个指令,解释器会用机器语言对余下部分进行处理,这意味着对潜在上下文转换进行检查在盒子的整个绘制过程中仅需执行一次,是通过每一个指令而不是每一个像素来进行。结果,解释器能处理多线程而对性能无很大的负面影响,。依照本专利技术的另一特点,每个虚拟线程都是相应虚拟线程连接列表的一部分,每个虚拟线程包括一个指向相应连接列表中下一个虚拟线程的指针。对于不同虚拟线程之间的每一个上下文转换,计算机方法还包括参照当前执行的虚拟线程的指针来确定下一个要执行的虚拟线程。执行本地平台线程所遇到的一般问题是同时存在于系统中的线程总数(包括活动线程和闲置线程)方面的限制。例如,在Windows 95/98中,如果在所有应用程序中的线程总数超过约150-200,则系统会变得很稳定。遇到这种情况的测试系统所表现出的行为包括自动重动、随机键盘输入、随机性的移动鼠标、内存损坏以及随机出现的应用程序崩溃。虚拟线程所用的较不精练的指令集的后果之一是上下文转换时间不紧,这意味着需要花额外的时间在连接列表上存储线程,结果,虚拟线程允许有大量的仅受系统中可用内存总数限制的线程。本专利技术期望虚拟本文档来自技高网
...

【技术保护点】
一种用于操作计算机的方法,该方法包含:把多个伪码指令,至少一些包含多个机器码指令的所述伪码指令存储在计算机内存中;对于多个由计算机执行的任务或工作中的每个,都自动产生各个执行上下文数据的虚拟线程,该执行上下文数据包括a)在执 行各个任务或工作中将执行的下一个伪码指令的存储位置和(b)用于执行各个任务或工作需要的任何局部变量的值,多个所述任务或工作中的每个都承担包含多个机器语言指令的各个所述伪码指令的执行;在各个虚拟线程的控制下且在各个系列时间片或处理时隙 内处理每个所述任务或工作;和在不同虚拟线程之间的每个上下文转接中,仅仅在完成当前执行的一个所述伪码指令的执行之后承担如此的上下文转接。

【技术特征摘要】
US 2000-11-24 09/721,6951.一种用于操作计算机的方法,该方法包含把多个伪码指令,至少一些包含多个机器码指令的所述伪码指令存储在计算机内存中;对于多个由计算机执行的任务或工作中的每个,都自动产生各个执行上下文数据的虚拟线程,该执行上下文数据包括a)在执行各个任务或工作中将执行的下一个伪码指令的存储位置和(b)用于执行各个任务或工作需要的任何局部变量的值,多个所述任务或工作中的每个都承担包含多个机器语言指令的各个所述伪码指令的执行;在各个虚拟线程的控制下且在各个系列时间片或处理时隙内处理每个所述任务或工作;和在不同虚拟线程之间的每个上下文转接中,仅仅在完成当前执行的一个所述伪码指令的执行之后承担如此的上下文转接。2.根据权利要求1的方法,其中每个虚拟线程是各个虚拟线程的连接列表的一部分,每个虚拟线程还包括指向各个连接列表中的下一个虚拟线程的指针,进一步包括,为在不同虚拟线程之间的每个上下文转接,参考当前执行的虚拟线程的指针以确定将执行的下一个虚拟线程的身份。3.根据权利要求2的方法,其中所述相应的连接列表是多个所述虚拟线程的连接列表中的一个,在所述连接列表中,一个是闲置虚拟线程的列表,另一个是活动虚拟线程的列表,还有一个是队列虚拟线程的列表。还包含定期将至少一个虚拟线程从所述列队虚拟线程的列表中移到所述活动虚拟线程的列表中。4.根据权利要求3的方法,其中虚拟线程从所述列队虚拟线程的列表中向所述活动虚拟线程的列表中的移动包括设置互斥体以锁定所述列队虚拟线程的列表;随后,修改指针(i)在已移动的虚拟线程中、(ii)在最初至少一个虚拟线程在所述活动虚拟线程列表中和(iii)在至少一个保留的虚拟线程在所述列队虚拟线程的列表中;和然后,重新设定或释放互斥体,以便对所述列队虚拟线程的列表进行访问。5.根据权利要求1的方法,其中每一个所述虚拟线程还包括一个互斥体,进一步包括设定所述选定的一个虚拟线程的互斥体;随后在所述选定的虚拟线程中修改数据;然后,重新设定或释放互斥体,以便对所述选定的虚拟线程进行访问。6.根据权利要求5的方法,其中设定所述选定的虚拟线程的所述互斥体,或是修改所述数据,以及在响应来自所述另一个虚拟线程的信息来重新设定或释放所述选定的一个虚拟线程的互斥体。7.根据权利要求5的方法,其中每个虚拟线程都是虚拟线程相应连接列表的一部分,每个虚拟线程又包括一个指向相应连接列表中的下一个虚拟线程的指针,所述对数据的修改还包括修改所述选定的一个虚拟线程的指针。8.根据权利要求1的方法,其中每个所述虚拟线程中都被分配了信息队列,进一步包括在依照另一个选定的虚拟线程执行任务或工作时,在所述选定的一个虚拟线程的信息队列中输入信息。9.根据权利要求8的方法,其中所述选定的一个虚拟线程以及所述虚拟线程中的所述另一个与来自不同应用程序的相应任务或工作对应,由此,在所述选定的一个虚拟线程的信息队列中输入所述信息来实现不同应用程序之间的数据传递。10.根据权利要求8的方法,其中所述选定的一个虚拟线程以及所述虚拟线程中的所述另一个是不同计算机上的代理线程或界面线程,在包括所述计算机之间的信息链路上传送所述信息的所述信息队列中输入所述信息。11.根据权利要求1的方法,其中虚拟线程的创建、在相应的时间片或处理时隙中的所述任务或工作的处理和执行上下文转换都包括在解释器程序下计算机的操作。12.根据权利要求11的方法,该方法还包括在计算机上运行多个所述解释程序的实例,每个实例对应一个本地线程,每个本地线程创建相应的一套执行上下文数据的虚拟线程;在各个虚拟线程的控制下处理相应系列时间片或处理时隙中的多个任务或工作;和不同虚拟线程之间的每一个上下文转换中,执行这种上下文转换只有在当前执行所述伪代码指令中的一个执行完之后。13.根据权利要求12的方法,还包含将一个虚拟线程从具有一个比平均值重的负载的第一个本地线程移到具有一个比平均值轻的负载的第二个本地线程中。14.根据权利要求13的方法,其中虚拟线程的移动包括通过将各线程的线程负载值相加然后再除以线程数量来确定所有本地线程的平均负载;和对于每个本地线程,将各线程的负载值与平均负载值相比以得到相对负载。15.根据权利要求1的方法,其中所述虚拟线程包括第一个代理线程通过计算机网络链路与另一台计算机上的第二个代理线程进行交流;与所述另一台计算机的交流包括在所述第一个代理线程的控制之下使用标准网络协议。16.根据权利要求15的方法,其中每一个所述虚拟线程,包括所述第一个代理线程都被分配了一个相应的信息队列,进一步包括在所述第一个代理线程的信息队列中输入信息用来执行在所述计算机网络链路上另一台计算机的数据转换。17.根据权利要求1的方法,其中选定的一个处于闲置状态的所述虚拟线程,进一步包括产生一个信息以响应来自计算机外部源的输入;在所述选定的一个虚拟线程的信息队列中插入信息;将所述选定的一个虚拟线程从所述闲置状态变到活动状态;和在所述信息队列中插入所述信息并改变所述选定的一个虚拟线程的状态之后,在将一个时间片或处理时隙分配给选定的一个所述虚拟线程期间访问所述信息队列来获取所述信息。18.根据权利要求1的方法,其中每个所述虚拟线程还包括一个线程优先级,进一步包括自动根据多个所述虚拟线程中的线程优先级来确定相对优先级,并根据确定的相对优先级改变线程的次序。19.根据权利要求1的方法,其中在相应虚拟线程的控制之下,在相应一系列时间片或处理时隙中所处理的任务或工作包括控制成像于计算机显示器上的对象,每一个所述对象组成一个独立的分配给相应的一个所述虚拟线程的任务或工作;和监视计算机键盘上按键的活动,每个所述按键组成一个独立的分配给相应的一个所述虚拟线程的任务或工作。20.根据权利要求1的方法,其中所述时隙或处理时隙通过对连续执行的伪代码指令的计数来测量,进一步包括对于多个所述时间片或处理时隙中的每一个,在计数预定数量的连续执行伪代码指令时,终止相应的时间片或处理时隙。21.一种多任务计算机包含一存储器;一显示器;一输入外围设备;至少一个与所述存储器、显示器以及输入外围设备动态相连的处理器,此处理器有一编译器,其用来将人工输入的源代码(operator entered source code)指令转换为字节码或伪代码指令,此编译器与所述存储器动态相连以便能存储所述字节码或伪代码指令;用来执行所述字节码或伪代码指令的解释器;和所述存储器存储闲置虚拟线程的第一连接列表,活动虚拟线程的第二连接列表,以及列队或等待的虚拟线程的第三个连接列表。每个所述线程包括上下文或状态数据、一个互斥体以及一个指向相应列表中下一个线程的指针。所述解释器与所述输入外围设备动态相连,用来识别由所述输入外围设备产生的事件,所述解释器与所述存储器动态相连以用来(a)将至少一个所述闲置虚拟线程从所述第一个连接列表移到所述第三个连接列表,(b)将列队或等待的虚拟线程从所述第三个连接列表移到所述第二个连接列表,(c)在连续的时间片或处理时隙中依照预定的优先级安排,根据所述第二个连接列表中不同虚拟线程的上下文以及状态数据执行指令。所述解释器与所述显示器部分动态相连用于以响应所述第二个连接列表中相...

【专利技术属性】
技术研发人员:马修A范伯格
申请(专利权)人:凯萨罗恩产品公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1