【技术实现步骤摘要】
本专利技术涉及一种用于在计算机上同时执行多任务的方法及其相关的装置。
技术介绍
大多数现代操作系统具有本地多任务或多线程能力,即,多线程能力内置进操作系统中,明显的例外是先于OS X的Macintosh操作系统(MacOS)的版本,该版本没有多少或没有多线程能力。不幸的是,所提供的多线程能力,依靠操作系统和硬件平台而不同。很多平台对能够同时存在的线程的总数目加以限制,并且一些平台根本不能有多线程。为了正确地理解由软件和它们的解决方案中线程引起的问题,需要了解对多线程的通用方法和由大多数本地平台线程系统使用的特定方法。同时执行多处理任务,一个显而易见的解决方案是在计算机系统中提供多套处理电路。但是,典型的台式计算机仅仅有一个处理器,并且即使高端工作站也仅仅有一到四个处理。基本解决方案的软件是时间片,即,将处理器的时间划分成一系列小片,并且依此将每个小片专用于不同的任务或线程。典型地,依靠操作系统允许每个线程运行3ms到30ms之间,在该线程被挂起时,而另一个线程被允许运行。操作系统通常使用处理器的定时器中断来周期性地中断当前执行的线程并且激活操作系统的线程调度程序,一段存储当前线程状态或执行上下文的软件选择新的线程去运行,恢复新线程的已存储的执行上下文,随后允许处理器恢复正常执行,这个处理称为上下文转换。上下文转换除了在时间片终止时发生之外,也会在线程进入等待状态时发生,线程处于等待状态时不做任何操作,除非有特殊事件发生,当线程进入等待状态时,线程调度程序受到请求并发生上下文转换,以便其它线程可能会使用剩余的时间片。当线程试图访问已调页(page)到磁盘 ...
【技术保护点】
一种用于操作计算机的方法,该方法包含:把多个伪码指令,至少一些包含多个机器码指令的所述伪码指令存储在计算机内存中;对于多个由计算机执行的任务或工作中的每个,都自动产生各个执行上下文数据的虚拟线程,该执行上下文数据包括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[美国]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。