CN103984598B - 用于线程调度的方法以及系统 - Google Patents
用于线程调度的方法以及系统 Download PDFInfo
- Publication number
- CN103984598B CN103984598B CN201310167882.6A CN201310167882A CN103984598B CN 103984598 B CN103984598 B CN 103984598B CN 201310167882 A CN201310167882 A CN 201310167882A CN 103984598 B CN103984598 B CN 103984598B
- Authority
- CN
- China
- Prior art keywords
- thread
- queue
- virtual
- white list
- request
- 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.)
- Expired - Fee Related
Links
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
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/486—Scheduler internals
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)
Abstract
提供一种用于在具有用以执行操作系统的硬件处理器的电子装置中执行线程调度的方法。所述方法包含以下步骤:当多个预设条件其中之一满足时,启用由硬件处理器执行的虚拟管理器;通过线程调度器接收用于调度将执行的线程的请求。通过虚拟管理器屏蔽线程调度器以防其存取第一队列,所述第一队列包含处于可运行状态的多个第一线程。将线程调度器引导至第一虚拟队列以选择将执行的线程,第一虚拟队列包含第一队列中的所述第一线程的第一部分,此第一部分与当前正在运行的至少一个应用程序相关联;通过硬件处理器调度所选定的线程的执行。
Description
技术领域
本发明涉及用于线程调度的方法以及系统。更明确地说,本发明涉及用于以用户为中心的线程调度方法以及系统。
背景技术
现今的操作系统中通常会维持一个运行队列(run-queue),用以选择其中一个线程作为下一调度候选者以用于执行。为考量公平性,每一线程被指派时间片以定义线程最多能够按其调度间隔运行多久,另外还设定每一线程的优先级以判断其执行次序。操作系统的调度器按优先次序将所有可运行的线程插入到运行队列,且选取具有最高优先级的线程作为将由处理器执行的下一调度候选者。
对于例如智能电话、平板电脑(tablet computer)以及个人计算机等消费型电子装置,用户体验为非常重要的考量。然而,消费型电子装置的计算资源有限,当这种消费型电子装置的处理器同时执行过多进程或线程时,用户常感到明显滞后。
发明内容
因此,本发明涉及用于线程调度的方法以及系统,所述方法以及系统可将处理器的调度集中在前台进程以及操作系统的相关进程上以提供顺利而流畅的用户体验。本发明提供的方法以及系统简单且易于实施。
本发明提供一种用于在具有用以执行操作系统的硬件处理器的电子装置中执行线程调度的方法。所述操作系统包含线程调度器以及队列管理器。所述方法包含以下步骤:判断多个预设条件中的至少一者是否满足。当预设条件中的一者满足时,启用由所述硬件处理器执行的虚拟管理器;通过所述线程调度器接收用于调度将执行的线程的请求。通过所述虚拟管理器屏蔽线程调度器以防其存取第一队列,第一队列包含处于可运行状态的多个第一线程;将线程调度器引导至第一虚拟队列以选择将执行的线程,第一虚拟队列包含第一队列中的所述多个第一线程的第一部分,第一部分与当前正在运行的至少一个应用程序相关联;通过所述硬件处理器调度选定线程的执行。
本发明还提供一种用于电子装置中的线程调度系统。所述线程调度系统包含系统队列、线程调度器、队列管理器以及虚拟管理器。系统队列包含用于维持处于第一状态的多个第一线程的第一队列以及用于维持处于第二状态的多个第二线程的第二队列。线程调度器用以接收用于调度第一线程中的至少一者的执行以及更新第二线程的状态的请求。队列管理器用以接收用于更新第一队列以及第二队列中的线程的请求。所述虚拟管理器用以拦截由线程调度器以及队列管理器接收的用于存取第一队列的请求,更新第一队列以及第二队列中的线程,且用以根据与当前正在运行的至少一个应用程序相关联的白名单将第一队列中的第一线程映射到第一虚拟队列以及第二虚拟队列中。
本发明还提供一种用于在具有用以执行操作系统的硬件处理器的电子装置中执行线程调度的方法。所述操作系统包含运行队列以及休眠队列。所述方法包含以下步骤:通过所述硬件处理器产生包含与当前正在运行的应用程序相关联的进程的白名单;通过所述硬件处理器根据白名单而调度运行队列中的线程的执行;通过所述硬件处理器根据白名单将休眠队列中的线程更新到运行队列中。
附图说明
图1绘示本发明的实施例的操作系统的部分示意图。
图2绘示本发明实施例的虚拟管理器的示意图。
图3到图9绘示本发明实施例的用于线程调度的方法的流程的示意图。
图10绘示本发明实施例的用于线程调度的电子装置的示意图。
[主要元件标号说明]
100:操作系统 110:调度器
120:队列管理器 130:虚拟管理器
140:系统运行队列 150:系统休眠队列
160:线程列表 210:切换模块
220:白名单 230:控制单元
240:虚拟运行队列 250:虚拟封锁队列
310~940:方法步骤 1000:电子装置
1010:处理器 1020:存储装置
具体实施方式
图1绘示本发明实施例的操作系统100的一部分的示意图。操作系统100由电子装置的应用处理器或其它合适处理器执行。电子装置可为智能电话、个人数字助理(PDA)、平板电脑、笔记本计算机或个人计算机。操作系统100包括线程调度器110、队列管理器(queuemanager;QM)120、虚拟管理器(virtual manager;VM)130、系统运行队列140、系统休眠队列150以及线程列表160。
操作系统100中可存在一个或一个以上进程,每一进程可包含一个或一个以上线程。线程列表160记录操作系统100中的所有线程以及每一线程的状态,线程的状态可为正在运行、可运行、休眠或封锁。正在运行状态意味线程当前由电子装置的处理器执行。可运行状态意味线程准备好由处理器执行但尚未运行。封锁状态意味线程正等待预设事件发生,例如来自电子装置的硬件组件的中断或由另一线程先前获取的排它性对象的释放。系统运行队列140记录所有可运行线程,而系统休眠队列150记录所有封锁线程。系统运行队列140按优先次序记录线程,这意味系统运行队列140中的线程是按优先级次序排序。系统运行队列140的第一线程具有最高优先级。另一方面,系统休眠队列150中的线程是根据线程的休眠时间的长度排序的。系统休眠队列150的第一个线程具有最短休眠时间。
调度器110安排电子装置的处理器的线程执行。换句话说,调度器110判断操作系统100中的线程的执行次序。QM120处理希望将线程插入到系统运行队列140以及系统休眠队列150或从系统运行队列140以及系统休眠队列150移除线程的所有请求,且确保请求恰当地串行化。
本发明的VM130设置为调度器110、QM120、系统运行队列140与系统休眠队列150之间的中间层。VM130代替系统运行队列140以及系统休眠队列150与线程调度器110以及QM120互动。VM130可将调度器110的调度引导至较重要的线程,例如与用户当前关注(focus)的应用程序相关联的线程,使得这些进程可被优先执行。VM130可参考线程列表160以查询线程的当前状态。此外,VM130支持在对操作系统100透明化的即时被安装或卸载的能力,这意味VM130可灵活地被启用或停用。
当VM130被停用时,调度器110以及QM120不受VM130影响,且操作系统100表现得正如常规多任务操作系统一样。在这种状况下,调度器110将此时应唤醒的线程按优先次序从系统休眠队列150移动到系统运行队列140,且接着调度器110选择系统运行队列140中的第一线程作为将由处理器执行的下一线程。选定的线程可运行历时其剩余时间量和/或系统休眠队列150中的第一个线程的休眠时间中的最小值。
当VM130被启用时,VM130将系统运行队列140中的线程分类为两部分,且参考用户活动(例如,当前正在运行的前台应用程序)管理处理器进行的线程执行的调度。下文论述VM130的处理细节。
图2绘示本发明实施例的VM130的示意图。VM130包含切换模块210、控制单元230、白名单220、虚拟运行队列240以及虚拟封锁队列250。切换模块210监视一些预定条件且根据预定条件而停用或启用VM130。举例来说,可根据(例如)处理器的使用率(usage)、总线流通量(bus traffic)、处理器的吞吐量(throughput)和/或可影响效率或处理优先级的其它条件定义预定条件。当处理器的利用率百分比高于第一阈值时,切换模块210启用控制单元230以用于将传入线程映射到虚拟运行队列240或虚拟封锁队列250中,且用于重定向传入请求的调度。当处理器的利用率百分比低于第二阈值时,切换模块210停用控制单元230。切换模块210也可在显示屏幕闲置超过某一时间段(其暗示用户可能不与电子装置互动,或显示屏幕关闭等)的情况下停用控制单元230。
在本发明的一个实施例中,控制单元230可周期性地轮询切换模块210以检测切换模块210的接通/切断状态。当切换模块210接通时,控制单元230启用且开始执行用于线程调度的方法,所述方法的流程绘示于图3到图9中。当切换模块210切断时,控制单元230停用且停止执行用于线程调度的方法。在本发明的另一实施例中,切换模块210可当切换模块210处于接通状态(其意味满足预定条件中的至少一者)而用信号通知启用控制单元230。类似地,当条件未满足时,切换模块210可用信号通知停用控制单元230。
当控制单元230被启用时,控制单元230根据白名单220将系统运行队列140中的线程映射到虚拟运行队列240或虚拟封锁队列250中。当系统运行队列140中的线程的父进程或相关联的进程处于白名单220中时,此线程会映射到虚拟运行队列240中。否则,此线程会映射到虚拟封锁队列250中。白名单220记录对用户和/或操作系统100来说重要的进程。在本发明的一个实施例中,白名单220可包含与前台应用程序相关联的所有线程、对操作系统至关重要的服务以及不能被中断的其它重要进程。因此,虚拟运行队列240中的线程为从用户观点来看相对重要的线程,而虚拟封锁队列250中的线程相比较来说较不重要因此可延迟处理。
白名单220可包含静态白名单以及动态白名单。静态白名单可包含对操作系统100来说是基础的且在任何状况下不应被封锁的一个或一个以上预定进程,例如,操作系统100的核心程序、文件系统以及硬件装置驱动程序。静态白名单为固定的,这意味静态白名单中列出的进程将不会被改变或移除。动态白名单包含当前正在运行的其它进程,例如,操作系统100的前台进程。前台进程为当前显示在电子装置的屏幕上的进程。因此,前台进程应具有比其它正在运行的进程较高的优先级。此外,前台进程为当前由用户使用且当前正在与用户互动的应用程序。不能终止的后台应用程序(例如,音频媒体播放,例如音乐播放器、收音机等)的进程也会添加到动态白名单中。当所请求的服务与动态白名单中的至少一个进程相关联时,将提供所述服务的进程会动态地添加到白名单220中。白名单220由控制单元230维护且在应用程序切换时更新。
举例来说,当用户用浏览器浏览网站时,所述浏览器为前台进程。当用户单击浏览器的插件以观看串流视频时,插件启动下载并播放视频的进程,且启动播放串流视频的音频播放的另一进程。由于浏览器请求插件的服务,且插件请求下载进程以及音频播放进程的服务,因此控制单元230将插件进程、下载进程以及音频播放进程添加到白名单220中。因此,之后与插件、下载以及音频播放相关的请求将被放入到虚拟运行队列240中,使得其可被恰当地调度以用于执行。
控制单元230可向操作系统100发送询问以了解哪些进程为前台进程以及哪些进程为后台进程。此询问可周期性地或在预定时刻执行。举例来说,控制单元230可在每次控制单元230被启用时、接收到调度请求时或其它条件发生时发送询问。在先前系统中,当需要执行线程重调度时,调度器110将检查系统封锁队列150且使已经过休眠时段的进程处于可运行状态,并选择系统运行队列140中具有较高优先级的线程以用于调度。然而,在本发明中,控制单元230可中断调度器110的此意图,且重新引导调度器110从虚拟运行队列240选择候选线程以用于调度。另外,当由白名单220中的进程针对服务而请求进程时,所请求进程的至少一个线程必须被QM120插入到系统运行队列140中以提供所述服务。当QM120将要将线程插入到系统运行队列140中时,控制单元230可拦截QM120的此意图且根据白名单220将所述线程放入到虚拟运行队列240或虚拟封锁队列250中。
除维护控制单元230外,操作系统100还可提供专用应用程序设计接口(application programming interface;API)以供进程修改动态白名单。进程可通过向专用API发送请求将其自身或其它进程添加到动态白名单中。进程还可通过向专用API发送另一请求将其自身或其它进程从动态白名单移除。此专用API为白名单220的建构提供较高的灵活性以及效率。
控制单元230通过将对用户以及操作系统100来说重要的线程保持于虚拟运行队列240中,以及将无关线程暂时保持于虚拟封锁队列250中而起作用。控制单元230将处理器的执行循环集中在虚拟运行队列240的线程上以加快与用户紧密相关的线程的响应,因此用户可觉得所有资源专门供其使用且享受流畅体验。在虚拟管理器130的激活期间暂时不调度虚拟封锁队列250中的线程执行。细节陈述于用于线程调度的方法的步骤中,所述方法的流程绘示于图3到图9中。
图3绘示本发明实施例的用于线程调度的方法的初始化程序的流程的示意图。当切换模块210因预设条件而接通,控制单元230执行图3的流程以启用VM130。首先,在步骤310处,切换模块210判断是否满足多个预设条件中的至少一者。如果满足,那么切换模块210接通。同时电子装置的中断将被屏蔽,这是因为中断应在初始化程序期间被暂时屏蔽,以防止这个时段中的重调度,使得可保证所有队列一致。预设条件可包含以下各项中的至少一者:硬件处理器的使用率超过预定阈值、时序关键(timing critical)应用程序或服务的需求、耦合到硬件处理器的总线的流通量,以及硬件处理器的吞吐量。
接下来,在步骤320处,通过拦截调度器110以及QM120对系统运行队列140的操作来启用VM130。在安装之后,控制单元230可拦截调度器110以及QM120对系统运行队列140的各种操作,且对应执行图5到图8所示的流程。在图5到图8所示的流程中,控制单元230将被拦截的对系统运行队列140的操作转换为对虚拟运行队列240以及虚拟封锁队列250的操作。对系统休眠队列150的任何操作可被略过而无任何干扰,这是因为这些操作实际上不影响用户体验。
在步骤330中,VM130产生白名单220,白名单220包含与当前电子装置正在运行的应用程序相关联的进程。白名单220可包含与前台应用程序、系统关键服务以及时序关键后台应用程序或服务相关联的进程。接着VM130在步骤340中根据白名单220将含有处于可运行状态的线程的系统运行队列140中的线程映射到虚拟运行队列240以及虚拟封锁队列250中。与白名单中的进程相关联的线程映射到虚拟运行队列240,而不在白名单中的线程则映射到虚拟封锁队列220中。
接下来,在步骤350处,通过线程调度器110接收用于调度将执行的线程的请求。所述请求可在正在休眠的线程将唤醒或正在运行的线程的执行或时间量用完时被接收。响应于所述请求,VM130在步骤360中屏蔽线程调度器110以防止其存取系统运行队列140选择和调度将执行的线程。如上所述,通常线程调度器110将根据优先级从系统运行队列140选取线程。在这个实施例中,VM130将拦截请求且引导线程调度器110从虚拟运行队列240选择线程以供执行,如步骤370所示。在步骤380中,选定的线程可由线程调度器110调度以用于执行。
图4绘示本发明实施例的用于线程调度的方法的总流程示意图。首先,在步骤410处,以上述方式产生白名单220。将前台进程添加到白名单220中,且接着将服务被白名单220中的至少一个进程请求的任何进程也添加到白名单220中。接下来,在步骤420处,根据白名单220将系统运行队列140的线程映射到虚拟运行队列240以及虚拟封锁队列250中。将系统运行队列140中父进程在白名单220的线程移动到虚拟运行队列240中。按优先级次序对虚拟运行队列240中的线程进行排序。虚拟运行队列240中的第一个线程具有最高优先级。将系统运行队列140中父进程不在白名单220的线程移动到虚拟封锁队列250中。当将线程插入到虚拟封锁队列250中时,线程的当前状态从可运行或正在运行改变为封锁,且线程的休眠时间设定为极其大或无穷大。接下来,在步骤430中,当接收到对应于虚拟运行队列240中的线程的请求,允许所述线程被处理器执行。在步骤440中,当接收到对应于虚拟封锁队列250中的线程的请求,暂时阻止所述线程被执行。如上所述,映射到虚拟运行队列240中的线程为与对用户重要的进程相关联的线程,且因此这些线程的执行具有高优先级。然而,虚拟封锁队列250中的线程并不那么重要而无需立即执行,且因为计算资源缺乏,这些线程将被阻止调度以改进总体性能和用户体验。
图5绘示本发明实施例的用于线程调度的方法的流程的示意图。当调度器110执行处理器的重调度时,控制单元230执行图5中的流程。首先,当重调度发生时,调度器110唤醒驻存在系统休眠队列150中且有限休眠时段已到期的线程。在步骤510处,引导调度器110将被调度器110唤醒且父进程在白名单220中的线程按优先次序从系统休眠队列150移动到虚拟运行队列240中。另外,引导调度器110将被调度器110唤醒且父进程不在白名单220中的线程按优先次序从系统休眠队列150移动到虚拟封锁队列250中。
接下来,在步骤520处,引导调度器110选择虚拟运行队列240的第一个线程作为将执行的下一线程。在步骤530处,拦截自调度器110的决策,此决策包含由调度器110选择的线程。
接下来,在步骤540处,检查由调度器110选择的线程的父进程是否在白名单220中。当由调度器110选择的线程的父进程在白名单220中时,流程进行到步骤550以调度处理器执行调度器110选择的线程。当由调度器110选择的线程的父进程不在白名单220中时,流程进行到步骤560以按优先次序将调度器110选择的线程插入到虚拟封锁队列250中,且接着再次触发调度器110的选择程序以返回到步骤520。
图6绘示本发明实施例的用于线程调度的方法的流程的示意图。每当线程将被QM120插入到系统运行队列140中或从系统运行队列140删除时,控制单元230执行图6中的流程。首先,在步骤610处,检查来自QM120的所拦截的操作是插入还是删除。当所拦截的操作为插入线程时,流程进行到步骤620以按优先次序将线程插入到虚拟运行队列240中。在步骤630处,唤醒虚拟封锁队列250中父进程在白名单220的线程。在步骤640处,从虚拟封锁队列250移除被唤醒的线程。在步骤650处,按优先次序将被唤醒的线程插入到虚拟运行队列240中。步骤630到650的目的为在切换前台进程时,将与新的前台进程相关的线程移动到虚拟运行队列240中。
在步骤610处,当所拦截的操作为删除线程时,流程进行到步骤660以简单地将线程从虚拟运行队列240移除。
图7绘示本发明实施例的用于线程调度的方法的流程的示意图。当正在运行的线程(当前被处理器执行的线程)在请求由虚拟封锁队列250中的封锁线程所获取的排他性对象(exclusive object)时,控制单元230执行图7中的流程。排他性对象可为共享资源,例如,扬声器或打印机。或者,排他性对象可为同步对象,例如,信号灯(semaphore)、自旋锁(spinlock)或互斥锁(mutex)。如果这个问题不解决,那么将存在僵局(deadlock),这是因为只要VM130接通,虚拟封锁队列250中的封锁线程将绝不会被运行以释放排他性对象。当正在运行的线程必须等待排他性对象时,QM120必须改变正在运行的线程的状态。控制单元230可拦截来自QM120的此操作且检查排他性对象的拥有者。一旦发现拥有者在虚拟封锁队列250中休眠,控制单元230就执行图7中的流程以避免僵局。
首先,在步骤710处,唤醒封锁线程。在步骤720处,唤醒虚拟封锁队列250中父进程在白名单220的线程。在步骤730处,从虚拟封锁队列250移除在步骤710以及720处被唤醒的线程。在步骤740处,按优先次序将在步骤710以及720处被唤醒的线程插入到虚拟运行队列240中。
图8绘示本发明实施例的用于线程调度的方法的流程的示意图。当前台进程从先前前台进程切换到下一前台进程时,控制单元230执行图8中的流程。首先,在步骤810处,清除动态白名单。由于动态白名单记录与前台进程相关的进程,因此当前台进程切换时,动态白名单必须重设以及重建。在步骤820处,将下一前台进程添加到动态白名单中。在步骤830处,唤醒虚拟封锁队列250中父进程为下一前台进程的线程。在步骤840处,从虚拟封锁队列250移除被唤醒的线程。在步骤850处,将被唤醒的线程按优先次序插入到虚拟运行队列240中。至于在先前前台进程的动态白名单中且仍在虚拟运行队列240中的线程,将在处理器的下一重调度时依图4的流程将这些线程移动到虚拟封锁队列250中。
图9绘示本发明实施例的用于线程调度的方法的流程的示意图。当切换模块210因预设条件而切断时,控制单元230执行图9中的流程以关闭VM130。图9中的流程可在图3的步骤330之后执行。
首先,在步骤910处,屏蔽电子装置的中断以防止重调度且保证所有队列的一致性。在步骤920处,通过按优先次序合并虚拟运行队列240与虚拟封锁队列250的线程重建构系统运行队列140。在图4所示的初始化程序之后,系统运行队列140变成空的。然而当VM130关闭时,调度器110以及QM120直接存取系统运行队列140,因此,必须重建构系统运行队列140。在步骤930处,通过取消在图4的步骤420进行的拦截调度器110以及QM120对系统运行队列140的操作来卸载(uninstall)VM130。VM130对调度器110、QM120以及操作系统100的任何影响将被转返。接下来,在步骤940处,取消屏蔽电子装置的中断。在步骤940之后,VM130完全关闭且操作系统100表现得正如VM130不存在一样。
图10绘示本发明实施例的可运行线程调度的电子装置1000的示意图。电子装置1000包含处理器1010以及存储装置1020。处理器1010可执行包含VM130以及控制单元230的操作系统100。换句话说,处理器1010可执行用于线程调度的方法,所述方法的流程绘示于图3到图9中。存储装置1020耦接至处理器1010。存储装置1020可存储系统运行队列140、系统休眠队列150、虚拟运行队列240、虚拟封锁队列250以及白名单220。
总之,本发明根据可运行线程与前台进程之间的关系对操作系统中的可运行线程进行分类,且调整处理器的调度以将执行循环集中在与前台进程紧密相关的线程上。因此,前台进程的操作为流畅且反应灵敏的,这改进了用户体验。
所属领域的技术人员将明白,可在不脱离本发明的范围或精神的情况下对本发明的结构作各种修改和变化。鉴于以上内容,希望本发明涵盖本发明的修改和变化,只要所述修改和变化落入所附权利要求书和其等效物的范围内。
Claims (21)
1.一种用于在具有用以执行操作系统的硬件处理器的电子装置中执行线程调度的方法,其中所述操作系统包括线程调度器以及队列管理器,所述方法包括:
判断是否满足多个预设条件中的至少一者;
当满足所述多个预设条件中的一者时,启用由所述硬件处理器执行的虚拟管理器;
通过所述线程调度器接收用于调度将执行的线程的请求;
通过所述虚拟管理器屏蔽所述线程调度器以防存取第一队列,所述第一队列包括处于可运行状态的多个第一线程;
将所述线程调度器引导至包括所述第一队列中的所述多个第一线程的第一部分的第一虚拟队列以选择将执行的所述线程,所述第一线程的所述第一部分与当前正在运行的至少一个应用程序相关联;以及
通过所述硬件处理器调度选定的所述线程的执行。
2.根据权利要求1所述的方法,还包括:
通过所述虚拟管理器产生包括与当前正在运行的所述应用程序相关联的进程的白名单;以及
通过所述虚拟管理器根据所述多个第一线程对所述白名单的从属性,将所述多个第一线程映射到所述第一虚拟队列以及第二虚拟队列。
3.根据权利要求2所述的方法,其中所述白名单包括与前台应用程序、系统关键服务、时序关键后台应用程序或服务相关联的至少一个进程。
4.根据权利要求2所述的方法,还包括:
根据当前正在所述电子装置上运行的应用程序更新所述白名单。
5.根据权利要求2所述的方法,还包括:
通过队列管理器接收用于插入线程的请求;
通过所述虚拟管理器屏蔽所述队列管理器以防存取所述第一队列;
通过所述虚拟管理器根据所述白名单而判断所述第二虚拟队列中与所插入的线程相关联的线程;以及
通过所述虚拟管理器将所插入的线程以及所述第二虚拟队列中相关联的线程移动到所述第一虚拟队列中。
6.根据权利要求2所述的方法,还包括:
通过所述调度器接收对所述第一队列中的线程的请求;
通过所述虚拟管理器拦截所述请求;
判断所请求的线程是否在所述第二虚拟队列中;
当所述所请求的线程在所述第二虚拟队列中时,通过所述虚拟管理器根据所述白名单判断所述第二虚拟队列中与所请求的线程相关联的线程;以及
通过所述虚拟管理器将所请求的线程以及所述第二虚拟队列中相关联的线程移动到所述第一虚拟队列中。
7.根据权利要求2所述的方法,还包括:
判断当前正在所述电子装置上运行的前台应用程序;
于当前正在运行的所述前台应用程序被切换时,根据新的前台应用程序更新所述白名单;以及
根据所述更新的白名单来更新所述第一虚拟队列以及所述第二虚拟队列。
8.根据权利要求2所述的方法,还包括:
通过所述调度器判断第二队列中的多个第二线程的状态改变,所述多个第二线程处于休眠状态;
当所述第二线程中的至少一者的状态被改变时,向所述队列管理器发送用于插入具有状态改变的所述第二线程的请求;
通过所述虚拟管理器从所述队列管理器拦截所述用于插入具有状态改变的所述第二线程的请求;以及
根据所述白名单而将具有状态改变的所述第二线程插入到所述第一虚拟队列或所述第二虚拟队列中。
9.根据权利要求1所述的方法,其中所述预设条件包括以下各项中的至少一者:所述硬件处理器的使用率超过预定阈值、时序关键应用程序或服务的需求、耦接到所述硬件处理器的总线的流通量,以及所述硬件处理器的吞吐量。
10.根据权利要求1所述的方法,还包括:
通过所述队列管理器接收用于删除线程的请求;
通过所述虚拟管理器屏蔽所述队列管理器以防存取所述第一队列;以及
从所述第一虚拟队列移除所述删除的线程。
11.根据权利要求2所述的方法,还包括:
判断是否未满足所述多个预设条件;
当未满足所述预设条件时,通过所述虚拟管理器将所述第一虚拟队列以及所述第二虚拟队列中的线程映射回到所述第一队列;以及
停用所述虚拟管理器。
12.一种用于电子装置中的线程调度系统,包括:
系统队列,其包括用于维持处于第一状态的多个第一线程的第一队列,以及用于维持处于第二状态的多个第二线程的第二队列;
线程调度器,用以接收用于调度所述第一线程中的至少一者的执行以及更新所述第二线程的状态的请求;
队列管理器,用以接收用于更新所述第一队列以及所述第二队列中的线程的请求;以及
虚拟管理器,用以拦截由所述线程调度器以及所述队列管理器接收的用于存取所述第一队列的请求,更新所述第一队列以及所述第二队列中的线程,且用以根据与当前正在运行的至少一个应用程序相关联的白名单而将所述第一队列中的所述第一线程映射到第一虚拟队列以及第二虚拟队列中。
13.根据权利要求12所述的线程调度系统,其中所述虚拟管理器还包括:
切换模块,用以检测多个预设条件;以及
控制单元,用以于当所述多个预设条件中的至少一者满足时而被启用,且用以拦截所述请求。
14.根据权利要求13所述的线程调度系统,其中所述多个预设条件包括以下各项中的至少一者:硬件处理器的使用率超过预定阈值、时序关键应用程序或服务的需求、耦接到所述硬件处理器的总线的流通量,以及所述硬件处理器的吞吐量。
15.根据权利要求13所述的线程调度系统,其中所述控制单元还用以于当所述线程调度器接收到用于调度所述第一线程中的至少一者的执行的所述请求时,屏蔽所述线程调度器以防存取所述第一队列,且将所述线程调度器引导至所述第一虚拟队列以选择将执行的所述第一线程。
16.根据权利要求13所述的线程调度系统,其中所述控制单元还用以拦截由所述队列管理器接收的插入新线程的请求,屏蔽所述队列管理器以防存取所述第一队列,以及根据所述白名单而将所述新线程以及所述第二虚拟队列中与所述新线程相关联的所述第一线程移动到所述第一虚拟队列中。
17.根据权利要求13所述的线程调度系统,其中所述控制单元还用以将所述第一虚拟队列以及所述第二虚拟队列更新回所述第一队列,且用以于当未满足所述多个预设条件时而停用。
18.根据权利要求12所述的线程调度系统,其中所述白名单包括与前台应用程序、系统关键服务、时序关键后台应用程序或服务相关联的至少一个进程。
19.根据权利要求12所述的线程调度系统,其中所述虚拟管理器还用以判断当前正在运行的所述至少一个应用程序的状态,且当所述至少一个应用程序被切换时而更新所述白名单。
20.一种用于在具有用以执行操作系统的硬件处理器的电子装置中执行线程调度的方法,其中所述操作系统包括运行队列以及休眠队列,所述方法包括:
通过所述硬件处理器产生包括与当前正在运行的应用程序相关联的进程的白名单;
通过所述硬件处理器根据所述白名单而调度所述运行队列中的线程的执行;
通过所述硬件处理器根据所述白名单而将所述休眠队列中的线程更新到所述运行队列中;
根据所述白名单而将所述运行队列中的线程映射到虚拟运行队列以及虚拟封锁队列;
从所述虚拟运行队列选择将调度以用于执行的线程;以及
暂时阻止所述虚拟封锁队列中的所述线程的调度。
21.根据权利要求20所述的方法,其中所述白名单包括与前台应用程序、系统关键服务、时序关键后台应用程序或服务相关联的至少一个进程。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/762,329 US9274832B2 (en) | 2013-02-07 | 2013-02-07 | Method and electronic device for thread scheduling |
US13/762,329 | 2013-02-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103984598A CN103984598A (zh) | 2014-08-13 |
CN103984598B true CN103984598B (zh) | 2017-09-29 |
Family
ID=51206140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310167882.6A Expired - Fee Related CN103984598B (zh) | 2013-02-07 | 2013-05-09 | 用于线程调度的方法以及系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9274832B2 (zh) |
CN (1) | CN103984598B (zh) |
DE (1) | DE102013217995B4 (zh) |
TW (1) | TWI512619B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9501644B2 (en) * | 2010-03-15 | 2016-11-22 | F-Secure Oyj | Malware protection |
GB2521155B (en) * | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configuring thread scheduling on a multi-threaded data processing apparatus |
CN106575385B (zh) * | 2014-08-11 | 2019-11-05 | 艾玛迪斯简易股份公司 | 自动售票 |
EP2985721A1 (en) * | 2014-08-11 | 2016-02-17 | Amadeus S.A.A. | Automated ticketing |
CN104239094B (zh) * | 2014-08-29 | 2017-12-08 | 小米科技有限责任公司 | 后台应用程序的控制方法、装置及终端设备 |
CN105589633A (zh) * | 2014-10-22 | 2016-05-18 | 中兴通讯股份有限公司 | 一种实现终端应用切换的方法及装置 |
KR102279027B1 (ko) * | 2014-12-03 | 2021-07-19 | 삼성전자주식회사 | 멀티 스레드를 실행하는 방법 및 장치 |
US9916178B2 (en) * | 2015-09-25 | 2018-03-13 | Intel Corporation | Technologies for integrated thread scheduling |
US11023233B2 (en) | 2016-02-09 | 2021-06-01 | Intel Corporation | Methods, apparatus, and instructions for user level thread suspension |
CN105893120B (zh) * | 2016-04-21 | 2019-07-30 | 北京京东尚科信息技术有限公司 | 一种线程同步资源的获取方法和装置 |
CN106020893B (zh) * | 2016-05-26 | 2019-03-15 | 北京小米移动软件有限公司 | 应用安装的方法及装置 |
CN105979095B (zh) * | 2016-06-27 | 2019-08-16 | 努比亚技术有限公司 | 移动终端及应用功耗控制方法 |
US10540300B2 (en) * | 2017-02-16 | 2020-01-21 | Qualcomm Incorporated | Optimizing network driver performance and power consumption in multi-core processor-based systems |
US10560394B2 (en) * | 2017-09-22 | 2020-02-11 | Cisco Technology, Inc. | Dynamic transmission side scaling |
TWI639955B (zh) * | 2017-11-06 | 2018-11-01 | 晨星半導體股份有限公司 | 多處理器系統及其處理器管理方法 |
CN108958911B (zh) * | 2018-05-30 | 2022-02-08 | 北京小米移动软件有限公司 | 进程的控制方法及装置 |
CN112462921B (zh) | 2019-09-09 | 2023-07-21 | 中兴通讯股份有限公司 | 应用程序管理方法、装置和存储介质 |
CN111399994B (zh) * | 2019-11-27 | 2023-10-10 | 杭州海康威视系统技术有限公司 | 请求调度方法、装置、电子设备及存储介质 |
CN110989820A (zh) * | 2019-11-29 | 2020-04-10 | 上海庆科信息技术有限公司 | 处理器功耗的控制方法、装置、处理器及电子装置 |
CN111651261B (zh) * | 2020-07-07 | 2023-04-07 | Oppo(重庆)智能科技有限公司 | 进程管理方法、装置、终端设备及计算机可读存储介质 |
CN113032123B (zh) * | 2021-04-02 | 2024-05-14 | 深圳市大富网络技术有限公司 | 一种远程npl运行环境的线程调度方法、系统及相关装置 |
CN116501475B (zh) * | 2023-06-21 | 2023-10-20 | 杭州炬华科技股份有限公司 | 线程调度方法、系统以及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1740974A (zh) * | 2005-09-14 | 2006-03-01 | 艾默生网络能源有限公司 | 一种线程调度管理方法和系统 |
CN101324851A (zh) * | 2007-06-12 | 2008-12-17 | 华为技术有限公司 | 线程调度方法及其装置 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4642756A (en) * | 1985-03-15 | 1987-02-10 | S & H Computer Systems, Inc. | Method and apparatus for scheduling the execution of multiple processing tasks in a computer system |
US5812844A (en) | 1995-12-07 | 1998-09-22 | Microsoft Corporation | Method and system for scheduling the execution of threads using optional time-specific scheduling constraints |
US7210146B2 (en) * | 2001-06-18 | 2007-04-24 | Microsoft Corporation | Sleep queue management |
US7302684B2 (en) * | 2001-06-18 | 2007-11-27 | Microsoft Corporation | Systems and methods for managing a run queue |
WO2004059481A2 (en) | 2002-12-16 | 2004-07-15 | Globespanvirata Incorporated | System and method for scheduling thread execution |
US7536689B2 (en) | 2003-01-10 | 2009-05-19 | Tricerat, Inc. | Method and system for optimizing thread scheduling using quality objectives |
US7458077B2 (en) | 2004-03-31 | 2008-11-25 | Intel Corporation | System and method for dynamically adjusting a thread scheduling quantum value |
US20050251806A1 (en) * | 2004-05-10 | 2005-11-10 | Auslander Marc A | Enhancement of real-time operating system functionality using a hypervisor |
US8959515B2 (en) * | 2006-01-18 | 2015-02-17 | International Business Machines Corporation | Task scheduling policy for limited memory systems |
US7853950B2 (en) | 2007-04-05 | 2010-12-14 | International Business Machines Corporarion | Executing multiple threads in a processor |
US8839255B2 (en) | 2009-07-23 | 2014-09-16 | Empire Technology Development Llc | Scheduling of threads by batch scheduling |
US8904399B2 (en) * | 2010-03-15 | 2014-12-02 | Qualcomm Incorporated | System and method of executing threads at a processor |
US8423750B2 (en) * | 2010-05-12 | 2013-04-16 | International Business Machines Corporation | Hardware assist thread for increasing code parallelism |
US9141422B2 (en) * | 2010-05-18 | 2015-09-22 | Microsoft Technology Licensing, Llc | Plug-in task scheduler |
-
2013
- 2013-02-07 US US13/762,329 patent/US9274832B2/en not_active Expired - Fee Related
- 2013-04-17 TW TW102113616A patent/TWI512619B/zh not_active IP Right Cessation
- 2013-05-09 CN CN201310167882.6A patent/CN103984598B/zh not_active Expired - Fee Related
- 2013-09-09 DE DE102013217995.2A patent/DE102013217995B4/de not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1740974A (zh) * | 2005-09-14 | 2006-03-01 | 艾默生网络能源有限公司 | 一种线程调度管理方法和系统 |
CN101324851A (zh) * | 2007-06-12 | 2008-12-17 | 华为技术有限公司 | 线程调度方法及其装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103984598A (zh) | 2014-08-13 |
US9274832B2 (en) | 2016-03-01 |
DE102013217995B4 (de) | 2019-11-14 |
DE102013217995A1 (de) | 2014-08-07 |
US20140223437A1 (en) | 2014-08-07 |
TW201432565A (zh) | 2014-08-16 |
TWI512619B (zh) | 2015-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103984598B (zh) | 用于线程调度的方法以及系统 | |
JP5723968B2 (ja) | 便宜的マルチタスキング | |
Lampson | A scheduling philosophy for multiprocessing systems | |
EP2893444B1 (en) | Quota-based resource management | |
US9858115B2 (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 | |
US8615765B2 (en) | Dividing a computer job into micro-jobs | |
US8756613B2 (en) | Scalable, parallel processing of messages while enforcing custom sequencing criteria | |
US20090037927A1 (en) | Apparatus and method for direct switching of software threads | |
JP2009541848A (ja) | コンピュータマイクロジョブを中断せずに実行するようスケジュールするための方法、システムおよび装置 | |
US20160203083A1 (en) | Systems and methods for providing dynamic cache extension in a multi-cluster heterogeneous processor architecture | |
US20120284720A1 (en) | Hardware assisted scheduling in computer system | |
US20130347000A1 (en) | Computer, virtualization mechanism, and scheduling method | |
WO2024119988A1 (zh) | 多cpu环境下的进程调度方法、装置、电子设备和介质 | |
CN114168271A (zh) | 一种任务调度方法、电子设备及存储介质 | |
Huh et al. | Cross‐layer resource control and scheduling for improving interactivity in Android | |
CN111459622A (zh) | 调度虚拟cpu的方法、装置、计算机设备和存储介质 | |
WO2023241307A1 (zh) | 管理线程的方法及装置 | |
CN115408117A (zh) | 协程运行方法、装置、计算机设备和存储介质 | |
AU2007261611A1 (en) | Computer micro-jobs | |
CN106484536B (zh) | 一种io调度方法、装置和设备 | |
US8566829B1 (en) | Cooperative multi-level scheduler for virtual engines | |
Wang et al. | Hierarchical budget management in the RED-Linux scheduling framework | |
JPH06324888A (ja) | スケジューリングシステム | |
CN114691279A (zh) | 资源调度方法、设备及存储介质 | |
Jeong et al. | Transparent and selective real-time interrupt services for performance improvement |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170929 Termination date: 20200509 |
|
CF01 | Termination of patent right due to non-payment of annual fee |