专利名称:在处理器处执行线程的系统和方法
技术领域:
背景技术:
便携式计算装置(PD)是普遍存在的。这些装置可包含蜂窝式电话、便携式数字助理(PDA)、便携式游戏控制台、掌上型计算机,和其它便携式电子装置。除了这些装置的主要功能之外,许多包含外围功能。举例来说,蜂窝式电话可包含进行蜂窝式电话呼叫的主要功能和静态相机、视频相机、全球定位系统(GPS)导航、网络浏览、发送和接收电子邮件、发送和接收文本消息、即按即说能力等外围功能。随着此装置的功能性增加,操作线程的数目增力口。另外,随着操作线程的数目增加,有效地管理线程的执行的能力变得日益困难。因此,所需要的是在一个或一个以上处理器上执行多个线程的改进系统和方法。
发明内容
一种用于执行多个线程的方法和系统包含如果休眠线程准备运行,那么将与所述休眠线程相关联的线程指定优先级值映射到与所述休眠线程相关联的线程量化优先级值。此映射包含向所述休眠线程指派桶优先级值。接着将所述休眠线程添加到准备运行队列。接着,可更新与所述休眠线程相关联的线程量化优先级值、线程量子值或其组合。此更新可包括使用映射静态地更新和基于指派到线程的桶优先级值动态地更新中的一者。
在图中,除非另外指示,否则相同参考数字遍及各视图指代相同部分。图1是处于闭合位置的便携式计算装置(PCD)的第一方面的正视平面图;图2是处于打开位置的PCD的第一方面的正视平面图;图3是PCD的第二方面的框图;图4是处理系统的框图;图5是优先级区分系统的框图;图6是说明区分多个线程的优先级的方法的流程图;图7是说明执行多个线程的方法的第一方面的流程图;图8是说明静态地更新线程优先级量化、线程量子值或其组合的方法的流程图;图9是说明动态地更新线程优先级量化、线程量子值或其组合的方法的第一部分的流程图;以及图10是说明动态地更新线程优先级量化、线程量子值或其组合的方法的第二部分的流程图。
具体实施例方式词“示范性”在本文中用以指“充当实例、例子或说明”。不必将本文中描述为“示范性”的任何方面解释为比其它方面优选或有利。在本描述中,术语“应用程序”也可包含具有可执行内容的文件,可执行内容例如为:目标代码、脚本、字节代码、标记语言文件和补丁。另外,在本文中提到的“应用程序”也可包含本质上不可执行的文件,例如可需要打开的文档或需要存取的其它数据文件。术语“内容”也可包含具有可执行内容的文件,可执行内容例如为:目标代码、脚本、字节代码、标记语言文件和补丁。另外,在本文中提到的“内容”也可包含本质上不可执行的文件,例如可需要打开的文档或需要存取的其它数据文件。如本描述中所使用,术语“组件”、“数据库”、“模块”、“系统”等等意在指代与计算机有关的实体:硬件、固件、硬件和软件的组合、软件,或执行中的软件。举例来说,组件可为(但不限于)处理器上运行的进程、处理器、对象、可执行程序、执行线程、程序和!或计算机。作为说明,在计算装置上运行的应用程序和计算装置两者可为组件。一个或一个以上组件可驻存于进程和/或执行线程内,且组件可位于一个计算机上和/或分布于两个或两个以上计算机之间。另外,这些组件可从其上存储有各种数据结构的各种计算机可读媒体执行。所述组件可例如根据具有^-个或一个以上数据包的信号(例如,来自借助于所述信号与本地系统、分布式系统中的另一组件交互及/或跨越例如因特网等网络而与其它系统交互的一个组件的数据)借助于本地和/或远程进程进行通信。最初参看图1和图2,展示示范性便携式计算装置(PCD)且大体上将其标示为100。如所展示,PCD 100可包含外壳102。外壳102可包含上部外壳部分104和下部外壳部分106。图1展示上部外壳部分104可包含显示器108。在特定方面中,显示器108可为触摸屏显示器。上部外壳部分104还可包含跟踪球输入装置110。另外,如图1中所展示,上部外壳部分104可包含通电按钮112和断电按钮114。如图1中所展示,P⑶100的上部外壳部分104可包含多个指示灯116和扬声器118。每一指示灯116可为发光二极管(LED)。在特定方面中,如图2中所描绘,上部外壳部分104可相对于下部外壳部分106移动。具体来说,上部外壳部分104可相对于下部外壳部分106滑动。如图2中所展示,下部外壳部分106可包含多按钮键盘120。在特定方面中,多按钮键盘120可为标准QWERTY键盘。当相对于下部外壳部分106移动上部外壳部分104时,可显露多按钮键盘120。图2进一步说明PCD 100可包含下部外壳部分106上的复位按钮122。参看图3,展示便携式计算装置(PCD)的示范性非限制性方面且将其大体上标示为320。如所展示,PCD 100包含芯片上系统322,芯片上系统322包含多核CPU 324。多核CPU 324可包含第零核325、第--核326和第N核327。如图3中说明,显示器控制器328和触摸屏控制器330耦合到多核CPU 324。芯片上系统322外部的触摸屏显示器332又耦合到显示器控制器328和触摸屏控制器330。图3进一步指示视频编码器334 (例如,逐行倒相(PAL)编码器、顺序传送彩色与存储(SECAM)编码器或美国国家电视系统委员会(NTSC)编码器)耦合到多核CPU 324。另夕卜,视频放大器336耦合到视 频编码器334和触摸屏显示器332。而且,视频端口 338耦合到视频放大器336。如图3中所描绘,通用串行总线(USB)控制器340耦合到多核CPU 324。而且,USB端口 342耦合到USB控制器340。存储器344和订户身份模块(SIM)卡346也可耦合到多核CPU 324。另外,如图3中所展示,数码相机348可耦合到多核CPU 324。在示范性方面中,数码相机348是电荷耦合装置(CCD)相机或互补金属氧化物半导体(CMOS)相机。如图3中所进^-步说明,立体声音频CODEC 350可耦合到多核CPU 324。此外,音频放大器352可耦合到立体声音频CODEC 350。在示范性方面中,第一立体声扬声器354和第二立体声扬声器356耦合到音频放大器352。图3展示也可耦合到立体声音频CODEC 350的麦克风放大器358。另外,麦克风360可耦合到麦克风放大器358。在特定方面中,调频(FM)无线电调谐器362可耦合到立体声音频CODEC 350。而且,FM天线364耦合到FM无线电调谐器362。另外,立体声头戴式送受话器366可耦合到立体声音频CODEC 350。图3进一步指示射频(RF)收发器368可耦合到多核CPU 324。RF开关370可耦合到RF收发器368和RF天线372。如图3中所展示,小键盘374可耦合到多核CPU 324。而且,具有麦克风376的单声道耳机可耦合到多核CPU 324。另外,振动装置378可耦合到多核CPU 324。图3还展示可耦合到芯片....t系统322的电力供应器380。在特定方面中,电力供应器380是向PCD 100的需要电力的各种组件提供电力的直流(DC)电力供应器。另夕卜,在特定方面中,电力供应器是可再充电DC电池或从连接到交流(AC)电源的AC-DC变压器得到的DC电力供应器。图3进一步指示PCD 100还可包含网卡388,网卡388可用以接入数据网络,例如,局域网、个域网或任何其它网络。网卡388可为蓝牙网卡、WiFi网卡、个域网(PAN)卡、个域网超低功率技术(PeANUT)网卡,或技术中众所熟知的任何其它网卡。另外,网卡388可并入到芯片中,即,网卡388可为芯片中的全面解决方案,且可能不是单独网卡388。如图3中所描绘,触摸屏显示器332、视频端口 338、USB端口 342、相机348、第一立体声扬声器354、第二立体声扬声器356、麦克风360、FM天线364、立体声头戴式送受话器366、RF开关370、RF天线372、小键盘374、单声道耳机376、振动器378和电力供应器380在心片上系统322外部。在特定方面中,本文中描述的方法步骤中的一者或一者以上可作为计算机程序指令存储于存储器344中。这些指令可由多核CPU 324执行以便执行本文中所描述的方法。另外,多核CPU 324、存储器344或其任何组合可充当用于执行本文中所描述的方法步骤中的一者或^-者以上以便执行多个任务或线程的装置。多核CPU 324、存储器344或其任何组合还可充当用于执行本文中所描述的方法步骤中的一者或一者以上以便静态地更新线程优先级量化、线程量子值或其组合的装置。另外,多核CPU 324、存储器344或其任何组合可充当用于执行本文中所描述的方法步骤中的一者或一者以上以便动态地更新线程优先级量化、线程量子值或其组合的装置。而且,多核CPU 324、存储器344或其任何组合可充当用于将优先级指派到多个线程中的每一者的装置。参看图4,其展示处理系统且将其大体上标示为400。在特定方面中,处理系统400可并入到上文结合图3描述的PCD 100中。如所展示,处理系统400可包含多核中央处理单元(C'PU) 324和连接到多核C'PU 324的存储器344。多核C'PU 324可包含第零核325、第一核326和第N核327。第零核325可包含在其上执行的第零动态时钟和电压调节(DCVS)算法416。第一核326可包含在其上执行的第一 DCVS算法417。另外,第N核327可包含在其上执行的第NDCVS算法418。在特定方面中,可在相应核326、327、416上独立地执行每一 DCVS 算法 416、417、418。此外,如所说明,存储器344可包含存储于其上的操作系统420。操作系统420可包含调度器422且调度器422可包含第一运行队列424、第二运行队列426和第N运行队列428。存储器344还可包含存储于其上的第一应用程序430、第二应用程序432和第N应用程序434。在特定方面中,应用程序430、432、434可将一个或一个以上任务436发送到操作系统420以在多核CPU 324内的核325、326、327处进行处理。任务436可作为单一任务、线程或其组合而进行处理。另外,调度器422可调度任务、线程或其组合以供在多核CPU 324内执行。另外,调度器422可将任务、线程或其组合置于运行队列424、426、428中。核325、326、327可如(例如)操作系统420所指令从运行队列424、426、428检索任务、线程或其组合,以供在核325、326、327处处理或执行那些任务和线程。在特定方面中,调度器422、存储器344、核325、326、327,或其任何组合可充当用于执行本文中所描述的方法步骤中的一者或一者以—t以便执行多个任务/线程436的装置。调度器422、存储器344、核325、326、327,或其任何组合还可充当用于执行本文中所描述的方法步骤中的一者或一者以上以便静态地更新线程优先级量化、线程量子值或其组合的装置。此外,调度器422、存储器344、核325、326、327,或其任何组合可充当用于执行本文中所描述的方法步骤中的一者或一者以上以便动态地更新线程优先级量化、线程量子值或其组合的装置。另外,调度器422、存储器344、核325、326、327,或其任何组合可充当用于将优先级指派到多个线程中的每一者的装置。在特定方面中,可通过分析各种线程436和其相关性并基于与每一线程436的处理相关联的关键程度而指派优先级值来篡改或以其它方式处置线程优先级。随着同时发生的线程的数目增加和优先级的数目增加,基于相应优先级来篡改线程436变得更复杂。如本文中所描述,每一线程可具有指定优先级值、量化优先级值和量子值。可将指定优先级值表达为对应于图5中说明且下文详细描述的桶504、506和508的相对值(例如,高、中或低)。可将量子值表达为时间值,例如毫秒。举例来说,特定线程可具有一晕秒(1ms)、五晕秒(5ms)、十晕秒(IOms)等的量子值。基于每一线程的指定优先级值,量化优先级值和量子值,可以允许处理相对较关键线程436而不使较不关键的线程436缺乏资源的方式来处理线程436。另外,在多个线程实质上同时运行且具有实质上相同关键程度(即,优先级)的情形中,所述线程可(例如)通过使用量子值在彼此之间进行信号交换,以便允许每一者进行处理而不使任一线程缺乏资源。图5说明大体上标示为500的优先级区分系统。如所说明,量化优先级区分系统500可包含调度器422。调度器422可具有对第一线程桶504的存取权。另外,调度器422可具有对第二线程桶506的存取权。如所展示,调度器422也可具有对第N线程桶508的存取权。在特定方面中,如所说明,调度器422可具有对对应于高优先级、中优先级和低优先级的三个优先级值的三个线程桶504,506,508的存取权。然而,可了解,调度器422可具有对对应于其它中间优先级值的四个线程桶、五个线程桶、六个线程桶等(未图示)的存取权。
在特定方面中,每一线程桶504可被指派桶优先级值510、512、514。具体来说,第一线程桶504可被指派第一桶优先级值510。第二线程桶506可被指派第二桶优先级值512。而且,第N线程桶508可被指派第N桶优先级值514。在一个方面中,桶优先级值510、512、514可彼此相关。举例来说,第一桶优先级值510可为高桶优先级值。第二桶优先级值512可为中间桶优先级值。另外,第三桶优先级值514可为低桶优先级值。可基于与每一线程相关联的指定优先级值将F文描述的线程置于每一桶504、506、508中。可将具有相同指定优先级值的线程置于同一桶504、506、508中。仍参看图5,第一桶504可包含第一线程520和第二线程522。第一线程520可包含指定优先级值524、量化优先级值526和量子值528。指定优先级值524是由线程指定的优先级值。指定优先级值用以将优先级给予线程的执行。举例来说,较高优先级值可致使特定线程在具有较低优先级值的线程之前被执行。量化优先级值526可为至少部分基于用于线程的运行信息而确定的优先级值。量子值528可为在被同一桶中的另一线程先占之前可允许线程运行的时间片。如所展示,第二线程522可包含指定优先级值530、量化优先级值532和量子值534。如图5中所展示,第二桶506可包含第三线程540及第四线程542。第三线程540可包含指定优先级值544、量化优先级值546和量子值541如所说明,第四线程542可包含指定优先级值550、量化优先级值552和量子值554。第N桶508可包含第(N-1)个线程560和第N线程562。第(N-1)个线程560可包含指定优先级值564、量化优先级值566和量子值568。如所说明,第N线程562可包含指定优先级值570、量化优先级值572和量子值574。在特定方面中,线程520、522、540、542、560、562可通过调度器422基于与每^一线
程相关联的运行时间 目息而在桶504、506、508之间移动。举例来说,与第一线程520相关联的量化优先级值526可变得 低于与第一桶504相关联的桶优先级值510。如果第一线程520的量化优先级值526变得低于第一桶504的桶优先级值510,那么可通过调度器422将第--线程520从第一桶504移动到第二桶506或第N桶508,这取决于第^-线程520的量化优先级值526。作为另一实例,与第三线程540相关联的量化优先级值546可变得大于与第二桶506相关联的桶优先级值512。如果第三线程540的量化优先级值546变得大于与第二桶506相关联的桶优先级值512,那么可通过调度器422将第三线程540从第二桶506移动到第一桶504。图5进一步展示调度器422可存取的量化优先级值映射580和量子值映射582。调度器422可将与每一线程520、522、540、542、560、562相关联的量化优先级值526、532、546、552、566、572 映射到每一线程 520、522、540、542、560、562 的指定优先级值 524,530,544、550、564、570,且将每一者存储于与适当线程520、522、540、542、560、562相关联的量化优先级值映射580中。另外,调度器422可将与每一线程520、522、540、542、560、562相关联的量子值 528、534、548、554、568、574 映射到每一线程 520、522、540、542、560、562 的指定优先级值524、530、544、550、564、570,且将每一者存储于与适当线程520、522、540、542、560,562相关联的量子值映射582中。量化优先级值映射580基于所有线程436的量化优先级值而列出所有线程436而不管其桶优先级指派如何。类似地,量子值映射582基于所有线程436的量子值而列出所有线程436而不管其桶优先级指派如何。优先级区分系统500允许调度器422管理其指派的桶504、506和508内的线程436且将线程436重新指派到其它桶504、506和508,因为在执行/运行时间期间优先级可转变或改变。在运行时间期间对线程436在其相应指派的桶504、506和508内的这种管理可称作线程优先级的动态更新。同时,通过量化优先级值映射580和量子值映射582,调度器422还可跟踪并更新线程436当中的优先级而不管其个别桶指派和较不频繁地与桶指派跟踪相关。基于映射580和582而不管桶指派和较不频繁地与桶指派跟踪相关的对线程436当中的优先级的这种跟踪和更新通常称作线程优先级的静态更新。图6说明展示用于将优先级指派到多个线程中的每一者的方法且将其大体上标示为600。在框602处开始,调度器422可接收用于线程的指定优先级值602。方法600可进行到框606且调度器422可确定用于线程的量化优先级值。移动到框608,调度器422可将量化优先级值与指定优先级值并与线程相关联。另夕卜,在框610处,调度器422可将量子值与指定优先级值并与线程相关联。此后,方法600可结束。在操作期间,调度器422可利用每一线程的指定优先级值、量化优先级值和量子值来控制每一线程的处理。举例来说,可在具有较低指定优先级值或量化优先级值的线程之前执行具有较高指定优先级值或量化优先级值的线程。
如果两个线程具有实质上相同的指定优先级值或量化优先级值,且位于同一桶中,那么可基于其相关联的量子值来处理线程。在这种情况下,如果特定线程具有五毫秒(5ms)的量子值且另一线程具有^-毫秒(Ims)的量子值。那么将允许具有五毫秒的量子值的线程执行五毫秒,或直到其完成为止(无论哪个较少)且接着,将允许具有一毫秒的量子值的线程运行或执行。在特定方面中,通过循环调度,线程执行可继续在两个线程之间交替,直到线程中的一者或两者完成其相应工作为止。参看图7,展示执行多个线程的方法且大体上将其标示为700。在特定方面中,可修改操作系统(OS)线程/进程调度器422以便将指定线程优先级量化到一些离散桶504、506、508中。每一桶可具有特定优先级且处于特定优先级的所有线程可被指派桶的优先级。另外,特定桶中的线程中的每一者可由调度器422运行或以其它方式执行,好像所述线程处于同一优先级--样。然而,特定桶中的每一线程也可被指派调度器量子值,即,在被同一桶中的另一线程先占之前线程可运行的最大时间片。调度器422可基于指派到每一线程的调度器量子值而进一步量化每一桶中的线程的优先级。举例来说,调度器422可将每一线程置于三个桶(例如,高优先级桶、中间优先级桶和低优先级桶)中的一者中。接着,可将每一桶内的每一线程的优先级量化为调度器量子值。在执行期间,特定桶内的线程可在另一桶内的线程之前执行,例如较高在中间和较低之前,中间在较低之前等。可基于每一线程的特定调度器量子值来执行特定桶内的线程。每一线程可为与以下应用程序相关联的工作负荷的一部分:视频应用程序、音频应用程序、电子邮件应用程序、无线网络应用程序、蜂窝式网络应用程序、短消息服务(SMS)应用程序、通信应用程序、安全应用程序、日历应用程序、即时消息接发应用程序、静态相机应用程序、全球定位系统(GPS)应用程序、浏览器应用程序、记事簿应用程序、时钟应用程序、游戏应用程序、计算器应用程序、银行业务应用程序、密码保管箱应用程序、帮助应用程序、电子商务应用程序、软件递送应用程序、搜索应用程序、选项应用程序、设置应用程序、电话应用程序、连接管理应用程序、安全应用程序、任何其它应用程序,或其组合。在框704处开始,当休眠线程706准备运行时,调度器422可通过产生具有三个不同优先级的三个桶而将线程指定优先级值映射到量化优先级值。在特定方面中,可基于针对特定线程确定的实际运行时间来确定量化优先级值。在特定方面中,调度器422可将线程指定优先级值静态地映射到量化优先级值,例如图5的量化映射580。在另一方面中,调度器422可将线程指定优先级值静态地映射到量子值,例如图5的量子映射582。在特定方面中,休眠线程706可为尚不在运行队列上的线程、刚开始执行的线程,或其组合。在框708处,调度器422可将线程添加到准备运行队列。另外,在框710处,调度器422可更新线程量化优先级值、线程量子值或其组合。在特定方面中,调度器422可静态地更新线程量化优先级值、线程量子值或其组合,如下文通过使用图8的静态更新方法7WA或图9的动态更新方法710B而描述。移动到框712,调度器422可选择运行队列上的最高量化优先级值线程中的下一者在处理器处运行(即,用于执行)。在特定方面中,调度器422可以循环方式选择最高量化优先级值线程中的下一者。另外,调度器422可以此项技术中众所熟知的任何其它方式进行此选择。在框714处,调度器422可将线程指定优先级值映射到线程量子值(即,时间片)。此后,线程可在处理器处运行或以其它方式执行。处理器可为单核CPU、多核CPU、多个单核CPU、多个多核CPU,或其组合。移动到决策718,调度器422可确定与运行线程716相关联的工作是否完成。如果工作未完成,那么方法700可返回到框710且方法700可如本文中所描述而继续。在决策718处,如果工作完成,那么方法700可进行到框720且线程可进入休眠状态。此后,方法700可结束。参看图8,其展示静态地更新线程优先级量化、线程量子值或其组合的方法71OA且将其大体上标示为710A。图8中所展示的方法710A可由调度器422执行以便更新线程优先级量化、线程量子值或其组合。在框802处开始,调度器422可更新与特定线程相关联的平均运行时间。在框804处,调度器422可将线程指定优先级值静态地映射到线程量化优先级值。换句话说,可将图5的量化线程优先级映射(MapQuantizedPriority) 580中的位置设定为等于与线程相关联的量化优先级值。在特定方面中,映射量化优先级值可为将线程优先级映射到量化优先级中的一者中的静态表。移动到框806,调度器422可将线程指定优先级值静态地映射到线程量子值。换句话说,可将图5的线程量子值映射(MapThreadQuantum value) 582中的位置设定为等于与线程相关联的线程量子值。MapThreadQuantum value可为将线程优先级映射到线程量子值(即,时间片)中的静态表。此后,方法7IOA可结束。图9展示了动态地更新线程优先级量化、线程量子值或其组合的方法710B。将所述方法大体上标示为TlOB0另外,图9中所展示的方法710B可由调度器422执行以便更新线程优先级量化、线程量子值或其组合。在框902处开始,调度器422可更新与特定线程相关联的平均运行时间。在框904 处,调度器 422 可将 Quantum value (Thread)值设定为等于 AvgRuntime (Thread)值。Quantum value (Thread)值可为与线程相关联的当前量子值。另外,AvgRunTime (Thread)值可为线程在闲置周期之间运行的平均时间量。移动到决策906,调度器422可确定QuantizedPriorit.y (Thread)值是否小于 MaxPriority(Thread)值,其中 QuantizedPriority(Thread)值是与线程相关联的当前量化优先级值且MaxPriority (Thread)值是线程应运行的最大优先级。如果QuantizedPriority (Thread)值小于 MaxPriority (Thread)值,那么方法 710B 可进行到决策 908 且调度器 422 可确定 AvgRuntime (Thread)值是否小于 MinAvgRuntime (Bucket)值,其中MinAvgRuntime (Bucke t)值是特定桶中的所有线程应维持的最小平行运行时间。如果AvgRuntime (Thread)值小于 MinAvgRuntime (Bucket)值,那么方法 710B 司进行到框910且调度器422可将QuantizedPriority(Thread)值设定为等于下一较高量化优先级值,即,将线程提升到具有比当前桶的优先级高的优先级的桶的序列中的下一桶。此后’方法710B可返回到决策906且方法710B可如本文中所描述而继续。返回到决策908,如果AvgRuntime (Thread)值不小于(即,大于或等于)MinAvgRuntime (Bucket)值.,那么方法710B可进行到决策912。另外,返回到决策906,如果QuantizedPriority(Thread)值不小于(即,大于或等于)MaxPriority (Thread)值,那么方法710B也可进行到决策912。在决策912处,调度器422可确定QuantizedPriority (Thread)值是否大于MinPrioritv (Thread)值,其中MinPriority (Thread)值为线程应运行的最小优先级。如果QuantizedPriority (Thread)值大于 MinPriority (Thread)值,那么方法 710B 可进行到决策 914 且调度器 422 可确定 AvgRuntime (Thread)值是否大于 MaxAvgRuntirae (Bucket)值,其中MaxAvgRuntime(Bucket)值是特定(即,当前)桶中的所有线程应维持的最大平行运行时间。如果AvgRuntime (Thread)值大于 MaxAvgRuntime (Bucket)值,那么方法 710B 可进行到框916且调度器422可将Quant.1zedPriority (Thread)值设定为等于下一较低量化优先级值,即,将线程降级到具有比当前桶的优先级低的优先级的桶的序列中的下^-桶。此后,所述方法可返回到决策912且方法710B可如本文中所描述而继续。返回到决策914,如果AvgRuntime (Thread)值不大于(即,小于或等于)MaxAvgRuntime (Bucket)值,那么方法710B可进行到图10的决策1002。返回到决策91.2,如果QuantizedPriorit.y (Thread)不大于(即,小于或等于)MinPriority (Thread)值,那么方法710B也可进行到图10的决策1002。在图10的决策1002处,调度器422可确定AvgSchedTime(Bucket)值是否大于MaxAvgSchedTime (Bucket)值,其中AvgSchedTime (Bucket)值为线程在特定桶中时在被置于运行队列上之后起动的平均时间量且MaxAvgSchedTime (Bucket)值可为特定桶所需要的最大平均调度时间。在特定方面中,线程的放置可为初始放置或线程已运行且耗尽其量子值之后的替换。如果AvgSchedTime(Bucket)值不大于(即,小于或等于)MaxAvgSchedTime (Bucket)值,那么方法 710B 可结束。否则,如果 AvgSchedTime (Bucket)值大于MaxAvgSchedTime (Bucket)值,那么方法710B可进行到决策1004且时间表可确/ LargestThreadQuantum value (Bucket) {I[是.否:大于 MinThreadQuantum value (Bucket)值,其中LargestThreadQuantum value (Bucket)值是用于特定桶中的任何线程的最大量子值且MinThreadQuantum value (Bucket)值是特定桶中的任何线程所需要的最小线程量子值。如果 LargestThreadQuantum value (Bucket)值实际上大于 MinThreadQuantumvalue (Bucket)值,那么方法71.0B可进行到框1006。在框1006 处,调度器 422 可将 Quantum value (LargestThread)值减小-一个整数,其中Quantum value (LargestThread)值是特定桶中的最高线程量子值。另外,在框1006处,调度器422可将AvgSchedTime (Bucket)值减小一个整数。此后,方法7IOB可返回到决策1002且方法71OB可如本文中所描述而继续。返回到决策1004,如果 LargestThreadQuantum value (Bucket)值不大于(即,小于或等于)MinThreadQuantum value (Bucket)值,那么方法710B可进行到决策 1008。在决策 1008 处,方法 710B 可确定 LowestMinThreadPriority (Bucket)值是否小于 Priority (Bucket)值,其中 LowestMinThreadPr iori ty (Bucket)值是用于特定桶中的任何线程的最低最小优先级且Priority(Bucket)值是特定桶的优先级。如果LowestMinThreadPriority (Bucket)值不小于(艮P,大于或等于)Priority (Bucket)值,那么方法7IOB可结束。相反地,如果LowestMinThreadPr iori ty (Bucket)值小于 Priority (Bucket)值,那么方法710B可进行到框1010。在框1010处,调度器422可将QuantizedPriority (LowestThread)值设定为等于F —较低量化优先级值,其中LowestThread是具有最低最小优先级的线程,即,将具有最低最小优先级的线程降级到具有比当前桶的优先级低的优先级的桶的序列中的下一桶。另外,在框1010处,调度器422可将 AvgSchedTime (Bucket)值设定为等于零或 AvgSchedTime (Bucket)值减去 Quantumvalue (LowestThread)值中的最大者,其中 Quantum value (LowestThread)值是在当前桶中具有最低最小优先级的线程的量子值。此后,方法710B可返回到决策1002且方法710B可如本文中所描述而继续。应理解,本文中所描述的方法步骤不必按如所描述的次序执行。另外,例如“此后”、“接着”、“接下来”等词语不希望限制步骤的次序。这些词语只是用来引导读者浏览对方法步骤的描述。此外,本文中所描述的方法被描述为可在便携式计算装置(PCD)上执行。PCD可为移动电话装置、便携式数字助理装置、智能本计算装置、上网本计算装置、膝上型计算装置、桌上型计算装置,或其组合。另外,本文中描述的方法步骤可在单核处理器、多核处理器、多个单核处理器、多个多核处理器,或其任何组合上执行。通过本文中所描述的配置,系统和方法可将线程优先级量化为用于线程的少量可调度优先级和调度器的量子值(时间片)。另外,系统和方法可在线程被量化为相同有效优先级时实质上消除由较高优先级线程连续运行而引起的较低优先级线程的总资源缺乏。系统和方法也可在线程被量化为相同有效优先级时实质上减少限制由较高优先级线程的连续执行弓I起的较低优先级线程缺乏资源的最大时间量。在特定方面中,本文中的系统和方法可实质上降低(例如)由线程优先级的减少的数目引起的穷追线程优先级引发的竞态条件和资源缺乏的复杂性。此外,本文中描述的系统和方法可在线程在调度器的运行队列上时允许具有较高指定优先级的线程获得增加百分比的处理时间而不使其它线程缺乏资源。本文中的系统和方法可进一步允许改变指定线程优先级以增加线程的CPU利用率而不改变有效优先级,且因而可能不导致其它线程的不合意的或另外未预期的资源缺乏和/或竞态条件。在特定方面中,本文中的系统和方法可实质上减少由可调度优先级等级的数目的减少而引起的线程资源缺乏。通过将指定优先级值量化为较少优先级并对每一线程进行时间切片,每当将具有不同指定优先级的线程映射到相同量化优先级值上时,(例如)由较高优先级线程始终运行引起的总资源缺乏可实质上得以消除。另外,通过将指定优先级值量化为较少优先级并对每一线程进行时间切片,(例如)由较高优先级线程始终运行引起的资源缺乏的持续时间可实质上减少到映射到相同量化优先级值且同时经调度以运行的所有其它线程的累积时间片的最大值。在另^-方面中,通过将指定优先级值量化为较少优先级,资源缺乏和/或竞态条件的可能性实质____t得以降低,因为确保此些条件不存在所需要的分析组合地取决于所涉及的优先级的数目。本文中所描述的 系统和方法可通过将高优先级线程映射到较高量子值而允许具有较高指定优先级的线程获得较多CPU时间。在特定方面中,线程量子值越高,线程在被先占之前可运行或执行得越久。因而,线程可具有CPU利用率的可能较高百分比但仍可允许较低优先级线程运行。另外,通过改变线程指定优先级值以使得线程量化优先级值保持相同不改变线程的有效优先级且不导致死锁和/或竞态条件的根本性增加。在^-个或一个以上示范性方面中,所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件实施,那么功能可作为一个或一个以上指令或代码存储于计算机程序产品(例如,机器可读媒体,即,计算机可读媒体)上或经由计算机程序产品(例如,机器可读媒体,即,计算机可读媒体)进行传输。计算机可读媒体包含计算机存储媒体与包含促进将计算机程序从一处传递到另一处的任何媒体的通信媒体两者。存储媒体可为可由计算机存取的任何可用媒体。举例来说而非限制,此计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用以运载或存储呈指令或数据结构形式的所要程序代码且可由计算机存取的任何其它媒体。而且,可恰当地将任何连接称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输软件,那么同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电和微波等无线技术包含于媒体的定义中。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地再现数据,而光盘用激光光学地再现数据。以—t各者的组合也应包含在计算机可读媒体的范围内。虽然已详细说明和描述了选定方面,但应理解,在不偏离如由所附权利要求书界定的本发明的精神和范围的情况下,可在其中进行各种替换和更改。
权利要求
1.一种执行多个线程的方法: 在休眠线程变为准备运行的情况下,通过向所述休眠线程指派桶优先级值而将与所述休眠线程相关联的线程指定优先级值映射到与所述休眠线程相关联的线程量化优先级值; 将所述休眠线程添加到准备运行队列;以及 更新与所述休眠线程相关联的所述线程量化优先级值、线程量子值或其组合,所述更新包括使用映射静态地更新和基于桶优先级值动态地更新中的一者。
2.根据权利要求1所述的方法,其中所述线程量化优先级值包括用于所述线程的基于所述线程的实际运行时间的优先级值。
3.根据权利要求1所述的方法,其进^-步包括将量化优先级值映射到选定优先级值。
4.根据权利要求1所述的方法,其中静态地、动态地或以其组合更新所述线程量化优先级值、所述线程量子值或其组合。
5.根据权利要求1所述的方法,其进一步包括: 选择运行队列上的线程进行运行。
6.根据权利要求4所述的方法,其中从具有最高量化优先级值的线程的群组中选择所述选定线程。
7.根据权利要求4所述的方法,其进一步包括: 将量子值映射到指定优先级值。
8.根据权利要求6所述的方法,其进一步包括: 运行所述选定线程。
9.根据权利要求7所述的方法,其进一步包括: 在与所述选定线程相关联的线程量子值完成的情况下,更新用于所述选定线程的线程量化优先级值、所述线程量子值或其组合。
10.根据权利要求7所述的方法,其进一步包括: 在与所述选定线程相关联的工作完成的情况下,更新用于所述选定线程的线程量化优先级值、线程量子值或其组合。
11.一种用于执行多个线程的装置,所述装置包括: 用于在休眠线程变为准备运行的情况下通过向所述休眠线程指派桶优先级值而将与所述休眠线程相关联的线程指定优先级值映射到与所述休眠线程相关联的线程量化优先级值的装置; 用于将所述休眠线程添加 到准备运行队列的装置;以及 用于更新与所述休眠线程相关联的所述线程量化优先级值、线程量子值或其组合的装置,所述用于更新的装置包括用于使用映射静态地更新的装置和用于基于桶优先级值动态地更新的装置中的一者。
12.根据权利要求11所述的装置,其中所述线程量化优先级值包括用于所述线程的基于所述线程的实际运行时间的优先级值。
13.根据权利要求11所述的装置,其中所述量子值包括在被含有多个线程的特定桶中的另一线程先占之前所述线程可运行的最大时间片。
14.根据权利要求11所述的装置,其进一步包括用于将量化优先级值映射到选定优先级值的装置。
15.根据权利要求11所述的装置,其进一步包括: 用于选择运行队列上的线程进行运行的装置。
16.根据权利要求14所述的装置,其中所述选定线程是选自具有最高量化优先级值的线程的群组。
17.根据权利要求14所述的装置,其进一步包括: 用于将量子值映射到指定优先级值的装置。
18.根据权利要求16所述的装置,其进一步包括: 用于运行所述选定线程的装置。
19.根据权利要求17所述的装置,其进一步包括: 用于在与所述选定线程相关联的线程量子值完成的情况下更新用于所述选定线程的线程量化优先级值、所述线程量子值或其组合的装置。
20.根据权利要求17所述的装置,其进一步包括: 用于在与所述选定线程相关联的工作完成的情况下更新用于所述选定线程的线程量化优先级值、线程量子值或其组合的装置。
21.一种装置,其包括: 处理器,其中所述处理器可操作以: 在休眠线程变为准备运行的情况下,通过向所述休眠线程指派桶优先级值而将与所述休眠线程相关联的线程指定优先级值映射到与所述休眠线程相关联的线程量化优先级值; 将所述休眠线程添加到准备运行队列;以及 更新与所述休眠线程相关联的所述线程量化优先级值、线程量子值或其组合,所述更新包括所述处理器使用映射静态地更新和所述处理器基于桶优先级值动态地更新中的一者。
22.根据权利要求21所述的装置,其中所述线程量化优先级值包括用于所述线程的基于所述线程的实际运行时间的优先级值。
23.根据权利要求21所述的装置,其中所述量子值包括在被含有多个线程的特定桶中的另一线程先占之前所述线程可运行的最大时间片。
24.根据权利要求21所述的装置,其中所述处理器进一步可操作以: 将量化优先级值映射到选定优先级值。
25.根据权利要求21所述的装置,其中所述处理器进一步可操作以: 选择运行队列上的线程进行运行。
26.根据权利要求24所述的装置,其中所述选定线程是选自具有最高量化优先级值的线程的群组。
27.根据权利要求24所述的装置,其中所述处理器进一步可操作以: 将量子值映射到指定优先级值。
28.根据权利要求26所述的装置,其中所述处理器进一步可操作以: 运行所述选定线程。
29.根据权利要求27所述的装置,其中所述处理器进一步可操作以:在与所述选定线程相关联的线程量子值完成的情况下,更新用于所述选定线程的线程量化优先级值、所述线程量子值或其组合。
30.根据权利要求27所述的装置,其中所述处理器进一步可操作以: 在与所述选定线程相关联的工作完成的情况下,更新用于所述选定线程的线程量化优先级值、线程量子值或其组合。
31.一种用于执行多个线程的计算机程序产品,所述计算机程序产品包括: 用于在休眠线程变为准备运行的情况下通过向所述休眠线程指派桶优先级值而将与所述休眠线程相关联的线程指定优先级值映射到与所述休眠线程相关联的线程量化优先级值的至少一个指令; 用于将所述休眠线程添加到准备运行队列的至少一个指令;以及 用于更新与所述休眠线程相关联的所述线程量化优先级值、线程量子值或其组合的至少一个指令,所述更新包括使用映射静态地更新和基于桶优先级值动态地更新中的一者。
32.根据权利要求31所述的计算机程序产品,其中所述线程量化优先级值包括用于所述线程的基于所述线程的实际运行时间的优先级值。
33.根据权利要求31所述的计算机程序产品,其中所述量子值包括在被含有多个线程的特定桶中的另一线程先占之前所述线程可运行的最大时间片。
34.根据权利要求31所述的计算机程序产品,其进一步包括用于将量化优先级值映射到选定优先级值的至少一个指令。
35.根据权利要求31所述的计算机程序产品,其进一步包括: 用于选择运行队列上的 线程进行运行的至少一个指令。
36.根据权利要求34所述的计算机程序产品,其中所述选定线程是选自具有最高量化优先级值的线程的群组。
37.根据权利要求34所述的计算机程序产品,其进一步包括: 用于将量子值映射到指定优先级值的至少一个指令。
38.根据权利要求36所述的计算机程序产品,其进一步包括: 用于运行所述选定线程的至少一个指令。
39.根据权利要求37所述的计算机程序产品,其进一步包括: 用于在与所述选定线程相关联的线程量子值完成的情况下更新用于所述选定线程的线程量化优先级值、所述线程量子值或其组合的至少一个指令。
40.根据权利要求37所述的计算机程序产品,其进一步包括: 用于在与所述选定线程相关联的工作完成的情况下更新用于所述选定线程的线程量化优先级值、线程量子值或其组合的至少一个指令。
全文摘要
本发明描述一种用于执行多个线程的方法和系统。所述方法可包含在休眠线程变为准备运行的情况下,将与所述休眠线程相关联的线程指定优先级值映射到与所述休眠线程相关联的线程量化优先级值。所述方法可进一步包含将所述休眠线程添加到准备运行队列并更新所述线程量化优先级值。还可更新与所述休眠线程相关联的线程量子值,或可更新所述量子值和量化优先级值的组合。
文档编号G06F9/48GK103140831SQ201180014230
公开日2013年6月5日 申请日期2011年2月23日 优先权日2010年3月15日
发明者史蒂文·S·汤姆森, 保罗·R·约翰逊, 希拉格·D·沙阿, 瑞安·C·米歇尔 申请人:高通股份有限公司