DE102013217995B4 - Verfahren und System zum Thread-Scheduling (Fadenzuteilung) - Google Patents

Verfahren und System zum Thread-Scheduling (Fadenzuteilung) Download PDF

Info

Publication number
DE102013217995B4
DE102013217995B4 DE102013217995.2A DE102013217995A DE102013217995B4 DE 102013217995 B4 DE102013217995 B4 DE 102013217995B4 DE 102013217995 A DE102013217995 A DE 102013217995A DE 102013217995 B4 DE102013217995 B4 DE 102013217995B4
Authority
DE
Germany
Prior art keywords
queue
thread
virtual
threads
scheduler
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
Application number
DE102013217995.2A
Other languages
English (en)
Other versions
DE102013217995A1 (de
Inventor
Wen-Yen CHANG
Chih-Tsung WU
Ting-Lun Chen
Kao-Pin Chen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HTC Corp
Original Assignee
HTC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by HTC Corp filed Critical HTC Corp
Publication of DE102013217995A1 publication Critical patent/DE102013217995A1/de
Application granted granted Critical
Publication of DE102013217995B4 publication Critical patent/DE102013217995B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/486Scheduler 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

Ein Verfahren zur Durchführung des Thread-Scheduling in einem elektronischen Gerät, das einen zur Ausführung eines Betriebssystems konfigurierten Hardwareprozessor aufweist, wird bereitgestellt. Das Betriebssystem umfasst einen Thread-Scheduler und einen Warteschlangenverwalter. Das Verfahren umfasst die folgenden Schritte. Als Reaktion darauf, dass einer von einer Vielzahl von vordefinierten Zuständen erfüllt ist, Aktivieren eines virtuellen, durch den Hardwareprozessor ausgeführten Verwalters. Empfangen einer Anforderung durch den Thread-Scheduler zum Scheduling eines auszuführenden Thread. Maskieren des Scheduler durch den virtuellen Verwalter gegen Zugreifen auf eine erste Warteschlange, einschließlich einer Vielzahl von ersten Threads in einem lauffähigen Zustand. Leiten des Scheduler auf eine erste virtuelle Warteschlange, einschließlich eines ersten Abschnitts von der Vielzahl von ersten Threads in der ersten Warteschlange, zur Selektion des auszuführenden Thread. Wobei der erste Abschnitt der ersten Threads mit mindestens einer aktuell laufenden Anwendung assoziiert ist. Zuteilen der Ausführung des selektierten Thread durch den Hardwareprozessor.

Description

  • ALLGEMEINER STAND DER TECHNIK
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft ein Verfahren und ein System zum Thread-Scheduling. Die vorliegende Erfindung betrifft insbesondere ein Verfahren und ein System zum benutzerzentrischen Thread-Scheduling.
  • Beschreibung des Standes der Technik
  • In einem modernen Betriebssystem wird eine Laufwarteschlange aufrechterhalten, in der ein Thread als der nächste zugeteilte Kandidat zur Ausführung ausgewählt wird. Hinsichtlich Fairness ist jedem Thread eine Zeitscheibe zugewiesen, die definiert, wie lange der Thread maximal in seinem Zuteilungsintervall laufen kann. Für jeden Thread wird auch die Priorität eingestellt, um seine Ausführungsreihenfolge zu bestimmen. Der Scheduler (Zuteiler) des Betriebssystems setzt alle lauffähigen Threads in priorisierter Reihenfolge in eine Laufwarteschlange ein und nimmt den Thread mit der höchsten Priorität als den nächsten zugeteilten Kandidaten auf, der vom Prozessor auszuführen ist.
  • Das Benutzererlebnis ist ein sehr wichtiger Aspekt von Konsumelektronikgeräten, wie zum Beispiel Smartphones, Tablet-Rechner und persönliche Rechner. Die Rechenressourcen eines Konsumelektronikgeräts sind jedoch begrenzt. Wenn der Prozessor eines solchen Konsumelektronikgeräts zu viele Prozesse oder Threads gleichzeitig ausführt, spürt der Benutzer häufig offensichtliches Nachhinken.
  • Die Offenbarung des Artikels „Analysis of New Multi Level Feedback Queue Scheduler for Real Time Kernel“ von M.V. Panduranga Rao et al., erschienen in „International Journal of Computational Cognition", Vol. 8, No.3, September 2012, Seiten 5 - 16 ist hilfreich für das Verständnis der vorliegenden Erfindung. In diesem Dokument wird ein Multilevel-Scheduler mit mehreren Scheduling Queues beschrieben, wobei jede Queue einen eigenen Scheduling Algorithmus aufweisen kann. Auch die Offenbarung der US 7,536,689 B2 ist hilfreich für das Verständnis der vorliegenden Erfindung. In diesem Dokument wird ein Verfahren zur Optimierung des Scheduling von Programmthreads innerhalb eines Betriebssystems auf Basis von qualitativen Kriterien beschrieben.
  • ÜBERSICHT DER ERFINDUNG
  • Demgemäß bezieht sich die vorliegende Erfindung auf ein Verfahren und ein System zum Thread-Scheduling, die den Ausführungsplan des Prozessors auf den Vordergrundprozess und die diesbezüglichen Prozesse des Betriebssystems konzentrieren können, um ein freundliches und reibungsloses Benutzererlebnis bereitzustellen. Das durch die vorliegende Erfindung bereitgestellte Verfahren und System sind einfach und leicht zu implementieren.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung wird ein Verfahren zur Durchführung des Thread-Scheduling in einem elektronischen Gerät, das einen zur Ausführung eines Betriebssystems konfigurierten Hardwareprozessor aufweist, gemäß Anspruch 1 bereitgestellt.
  • Vorteilhafte Ausführungsformen sind der Gegenstand der zugehörigen abhängigen Ansprüche.
  • Gemäß einer anderen Ausführungsform der vorliegenden Erfindung wird ein Thread-Scheduling-System für den Einsatz in einem elektronischen Gerät gemäß Anspruch 11 bereitgestellt. Vorteilhafte Ausführungsformen sind der Gegenstand der zugehörigen abhängigen Ansprüche.
  • Figurenliste
  • Die beiliegenden Zeichnungen sind eingeschlossen, um ein weiteres Verständnis der Erfindung bereitzustellen, und sind in diese Patentschrift einbezogen und ein Bestandteil davon. Die Zeichnungen illustrieren Ausführungsformen der Erfindung und sie dienen, gemeinsam mit der Beschreibung, dem Zweck der Verdeutlichung der Grundprinzipien der Erfindung.
    • 1 ist ein schematisches Diagramm, das einen Teil eines Betriebssystems gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
    • 2 ist ein schematisches Diagramm, das einen virtuellen Verwalter gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
    • 3 bis 9 sind schematische Diagramme, die den Fluss eines Verfahrens zum Thread-Scheduling gemäß einer Ausführungsform der vorliegenden Erfindung zeigen.
    • 10 ist ein schematisches Diagramm, das ein elektronisches Gerät zum Thread-Scheduling gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Nun wird im Detail auf die vorliegenden Ausführungsformen der Erfindung Bezug genommen, für die Beispiele in den begleitenden Zeichnungen illustriert sind. Soweit möglich werden in den Zeichnungen und der Beschreibung die gleichen Bezugsnummern benutzt, um auf die gleichen oder ähnliche Teile Bezug zu nehmen.
  • 1 ist ein schematisches Diagramm, das einen Teil eines Betriebssystems 100 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Das Betriebssystem 100 wird durch einen Anwendungsprozessor oder anderen geeigneten Prozessor eines elektronischen Geräts ausgeführt. Das elektronische Gerät kann ein Smartphone, ein persönlicher digitaler Assistent (PDA), ein Tablet-Rechner, ein Notebook-Rechner oder ein persönlicher Rechner sein. Das Betriebssystem 100 umfasst einen Scheduler 110, einen Warteschlangenverwalter (QM, Queue Manager) 120, einen virtuellen Verwalter (VM, Virtual Manager) 130, eine System-Lauf-Warteschlange 140, eine System-Schlaf-Warteschlange 150 und eine Thread-Liste 160.
  • Es kann einen oder mehrere Prozesse im Betriebssystem 100 geben. Jeder Prozess kann einen oder mehrere Threads umfassen. Die Thread-Liste 160 zeichnet alle Threads im Betriebssystem 100 und den Zustand von jedem Thread auf. Der Zustand eines Thread kann laufend, lauffähig, schlafend oder blockiert sein. Der Laufend-Zustand bedeutet, dass der Thread aktuell durch den Prozessor des elektronischen Geräts ausgeführt wird. Der Lauffähig-Zustand bedeutet, dass der Thread bereit ist, durch den Prozessor ausgeführt zu werden, aber noch nicht läuft. Der Blockiert-Zustand bedeutet, dass der Thread wartet, bis ein voreingestelltes Ereignis auftritt, wie zum Beispiel eine Unterbrechung von einer Hardwarekomponente des elektronischen Geräts oder die Freigabe eines exklusiven Objekts, das zuvor von einem anderen Thread akquiriert wurde. Die System-Lauf-Warteschlange 140 zeichnet alle lauffähigen Threads auf, während die System-Schlaf-Warteschlange 150 alle blockierten Threads aufzeichnet. Die System-Lauf-Warteschlange 140 zeichnet die Threads in priorisierter Reihenfolge auf, was bedeutet, dass die Threads in der System-Lauf-Warteschlange 140 in der Reihenfolge der Priorität sortiert sind. Der erste Thread der System-Lauf-Warteschlange 140 weist die höchste Priorität auf. Die Threads in der System-Schlaf-Warteschlange 150 sind hingegen gemäß den Längen der Schlafdauer der Threads sortiert. Der erste Thread der System-Schlaf-Warteschlange 150 weist die kürzeste Schlafdauer auf.
  • Der Scheduler 110 arrangiert die Thread-Ausführung des Prozessors des elektronischen Geräts. Mit anderen Worten, der Scheduler 110 bestimmt die Ausführungsreihenfolge der Threads im Betriebssystem 100. Der QM 120 behandelt alle Anforderungen, die beabsichtigen, Threads in die System-Lauf-Warteschlange 140 und die System-Schlaf-Warteschlange 150 einzusetzen oder von diesen zu entfernen, und stellt sicher, dass die Anforderungen korrekt serialisiert werden.
  • Der VM 130 der Erfindung ist als eine mittlere Schicht zwischen dem Scheduler 110, dem QM 120, der System-Lauf-Warteschlange 140 und der System-Schlaf-Warteschlange 150 angeordnet. Der VM 130 der Erfindung interagiert mit dem Thread-Scheduler 110 und dem QM 120 anstelle der System-Lauf-Warteschlange 140 und der System-Schlaf-Warteschlange 150. Der VM 130 kann das Scheduling des Scheduler 110 auf Threads mit größerer Wichtigkeit leiten, zum Beispiel Threads, die mit Anwendungen assoziiert sind, auf die der Benutzer aktuell konzentriert ist, sodass solche Prozesse zur Ausführung priorisiert werden können. Der VM 130 kann auf die Thread-Liste 160 Bezug nehmen, um die aktuellen Zustände der Threads zu erfragen. Des Weiteren unterstützt der VM 130 die Fähigkeit, zur Laufzeit transparent für das Betriebssystem 100 installiert oder deinstalliert zu werden, was bedeutet, dass der VM 130 flexibel aktiviert oder deaktiviert werden kann.
  • Wenn der VM 130 deaktiviert ist, sind der Scheduler 110 und der QM 120 vom VM 130 unbeeinflusst und das Betriebssystem 100 verhält sich genauso wie ein herkömmliches Multitasking-Betriebssystem. In diesem Fall bewegt der Scheduler 110 die Threads, die in diesem Moment wach sein sollten, in priorisierter Reihenfolge von der System-Schlaf-Warteschlange 150 zur System-Lauf-Warteschlange 140, und der Scheduler 110 selektiert dann den ersten Thread in der System-Lauf-Warteschlange 140 als den nächsten vom Prozessor auszuführenden Thread. Der selektierte Thread kann für das Minimum seines verbleibenden Zeitquantums und/oder die Schlafdauer des ersten Thread in der System-Schlaf-Warteschlange 150 laufen.
  • Wenn der VM 130 aktiviert ist, klassifiziert der VM 130 die Threads in der System-Lauf-Warteschlange 140 in zwei Abschnitte und verwaltet das Scheduling der Thread -Ausführung durch den Prozessor mit Bezug auf die Benutzeraktivitäten, zum Beispiel aktuell laufende Vordergrundanwendung. Die Verarbeitungsdetails des VM 130 werden unten erörtert.
  • 2 ist ein schematisches Diagramm, das den VM 130 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Der VM 130 umfasst ein Schaltmodul 210, eine Steuereinheit 230, eine weiße Liste 220, eine virtuelle Lauf-Warteschlange 240 und eine virtuelle Blockier-Warteschlange 250. Das Schaltmodul 210 überwacht einige vorbestimmte Bedingungen und deaktiviert oder aktiviert den VM 130 gemäß den vorbestimmten Bedingungen. Zum Beispiel können die vorbestimmten Bedingungen, zum Beispiel gemäß Nutzung der Prozessoren, Busverkehr, Durchsätze der Prozessoren, und/oder anderen Bedingungen, die die Effizienz oder Verarbeitungspriorität beeinflussen können, definiert sein. Wenn die prozentuale Nutzung des Prozessors größer als ein erster Grenzwert ist, aktiviert das Schaltmodul 210 das Steuermodul 230 zum Einordnen von eingehenden Threads in die virtuelle Lauf-Warteschlange 240 oder die virtuelle Blockier-Warteschlange 250 und zum Umleiten des Scheduling von eingehenden Anforderungen. Wenn die prozentuale Nutzung des Prozessors kleiner als ein zweiter Grenzwert ist, deaktiviert das Schaltmodul 210 das Steuermodul 230. Das Schaltmodul 210 kann das Steuermodul 230 auch unter der Bedingung, dass der Anzeigebildschirm über eine gewisse Zeitperiode ungenutzt ist, was darauf hindeutet, dass der Benutzer möglicherweise mit dem elektronischen Gerät nicht interagiert, oder der Anzeigebildschirm ausgeschaltet ist etc., deaktivieren.
  • In einer Ausführungsform der Erfindung kann die Steuereinheit 230 das Schaltmodul 210 periodisch abfragen, um den Ein-/Aus-Zustand des Schaltmoduls 210 zu detektieren. Wenn das Schaltmodul 210 einschaltet, wird die Steuereinheit 230 aktiviert und startet die Ausführung des Verfahrens zum Thread-Scheduling, dessen Fluss in 3 bis 9 gezeigt ist. Wenn das Schaltmodul 210 ausschaltet, wird die Steuereinheit 230 deaktiviert und stoppt die Ausführung des Verfahrens zum Thread-Scheduling. In einer anderen Ausführungsform der Erfindung kann das Schaltmodul 210 der Steuereinheit 230 signalisieren, aktiviert zu sein, als Reaktion darauf, dass das Schaltmodul 210 im Ein-Zustand ist, was bedeutet, dass mindestens eine der vorbestimmten Bedingungen befriedigt ist. Desgleichen kann das Schaltmodul 210 der Steuereinheit 230 signalisieren, deaktiviert zu sein, wenn die Bedingungen freigegeben sind.
  • Wenn die Steuereinheit 230 aktiviert ist, ordnet die Steuereinheit 230 gemäß der weißen Liste 220 Threads in der System-Lauf-Warteschlange 140 in die virtuelle Lauf-Warteschlange 240 oder die virtuelle Blockier-Warteschlange 250 ein. Wenn der Eltern- oder assoziierte Prozess eines Threads in der System-Lauf-Warteschlange 140 in der weißen Liste 220 ist, wird der Thread in die virtuelle Lauf-Warteschlange 240 eingeordnet. Andernfalls wird der Thread in die virtuelle Blockier-Warteschlange 250 eingeordnet. Die weiße Liste 220 zeichnet Prozesse auf, die für den Benutzer und/oder das Betriebssystem 100 wichtig sind. In einer Ausführungsform der Erfindung kann die weiße Liste 220 alle Threads umfassen, die mit der Vordergrundanwendung, für das Betriebssystem maßgeblichen Diensten und anderen wichtigen Prozessen, die nicht unterbrochen werden können, assoziiert sind. Die Threads in der virtuellen Lauf-Warteschlange 240 sind daher jene, die aus dem Gesichtspunkt des Benutzers relativ wichtig sind, während die Threads in der virtuellen Blockier-Warteschlange 250 vergleichbar weniger wichtig sind und daher für die Bearbeitung verzögert sein können.
  • Die weiße Liste 220 kann eine statische weiße Liste und eine dynamische weiße Liste umfassen. Die statische weiße Liste kann einen oder mehrere vorbestimmte Prozesse umfassen, die für das Betriebssystem 100 entscheidend sind und in keinem Fall blockiert sein sollten, wie zum Beispiel Kernel, Dateisystem und Hardware-Gerätetreiber des Betriebssystems 100. Die statische weiße Liste ist fixiert, was bedeutet, in der statischen weißen Liste aufgelistete Prozesse würden nicht geändert oder entfernt werden. Die dynamische weiße Liste umfasst andere Prozesse, die aktuell laufen, zum Beispiel Vordergrundprozesse des Betriebssystems 100. Der Vordergrundprozess ist der Prozess, der aktuell auf dem Bildschirm des elektronischen Geräts angezeigt wird. Aus diesem Grund sollte der Vordergrundprozess höhere Priorität aufweisen als andere laufende Prozesse. Außerdem ist der Vordergrundprozess die Anwendung, die aktuell vom Benutzer benutzt wird und aktuell mit dem Benutzer interagierend ist. Prozesse von Hintergrundanwendungen, die nicht terminiert werden können, werden ebenfalls zu der dynamischen weißen Liste hinzugefügt, zum Beispiel, Audiomedien-Wiedergabe, wie etwa Musikspieler, Radio etc. Wenn ein angeforderter Dienst mit mindestens einem Prozess in der dynamischen weißen Liste assoziiert ist, wird der Prozess, der den Dienst bereitstellt, dynamisch zu der weißen Liste 220 hinzugefügt. Die weiße Liste 220 wird von der Steuereinheit 230 aufrechterhalten und bei Anwendungswechsel aktualisiert.
  • Zum Beispiel, wenn der Benutzer eine Webseite mit einer Suchmaschine durchsucht, ist die Suchmaschine der Vordergrundprozess. Wenn der Benutzer ein Zusatzprogramm der Suchmaschine anklickt, um ein gestreamtes Video zu betrachten, beginnt das Zusatzprogramm einen Prozess, um das Video herunterzuladen und zu spielen, und beginnt einen anderen Prozess, um den Audioteil des gestreamten Videos zu spielen. Da die Suchmaschine den Dienst des Zusatzprogramms anfordert und das Zusatzprogramm die Dienste des Herunterladen-Prozesses und des Audio-Wiedergabe-Prozesses anfordert, fügt die Steuereinheit 230 den Zusatzprogramm-Prozess und den Audio-Wiedergabe-Prozess zu der weißen Liste 220 hinzu. Nach Anforderungen bezüglich des Zusatzprogramms würden Herunterladen und Audio-Wiedergabe daher in die virtuelle Lauf-Warteschlange 240 platziert, sodass sie korrekt zur Ausführung zugeteilt werden können.
  • Die Steuereinheit 230 kann eine Abfrage an das Betriebssystem 100 senden, um zu wissen, welche Prozesse die Vordergrundprozesse und die Hintergrundprozesse sind. Diese Abfrage kann periodisch oder zu vorbestimmten Momenten durchgeführt werden. Zum Beispiel kann die Steuereinheit 230 die Abfrage jedes Mal senden, wenn die Steuereinheit 230 aktiviert ist, nach Empfangen einer Anforderung zum Scheduling oder Auftreten von anderen Bedingungen. Bei einem System nach dem Stand der Technik würde, wenn es Zeit ist, ein Thread-Rescheduling durchzuführen, der Scheduler 110 die System-Schlaf-Warteschlange 150 prüfen und Threads, die die Schlafperiode passiert haben, auf einen lauffähigen Zustand bringen und Threads mit höherer Priorität in der System-Lauf-Warteschlange 140 zum Scheduling auswählen. Bei der Erfindung kann die Steuereinheit 230 jedoch diese Absicht des Scheduler 110 abfangen und den Scheduler 110 umleiten, um aus der virtuellen Lauf-Warteschlange 240 einen Kandidaten-Thread zum Scheduling zu selektieren. Darüber hinaus muss, wenn ein Prozess von einem Prozess in der weißen Liste 220 zum Dienst angefordert wird, mindestens ein Thread des angeforderten Prozesses vom QM 120 in die System-Lauf-Warteschlange 140 eingesetzt werden, um den Dienst bereitzustellen. Wenn der QM 120 davor steht, einen Thread in die System-Lauf-Warteschlange 140 einzusetzen, kann die Steuereinheit 230 diese Absicht des QM 120 abfangen und den Thread gemäß der weißen Liste 220 in die virtuelle Lauf-Warteschlange 240 oder virtuelle Blockier-Warteschlange 250 platzieren.
  • Zusätzlich zur Aufrechterhaltung der Steuereinheit 230 kann das Betriebssystem 100 eine dedizierte Schnittstelle zur Anwendungsprogrammierung (API, Application Programming Interface) für die Prozesse bereitstellen, um die dynamische weiße Liste zu modifizieren. Ein Prozess kann sich selbst oder andere Prozesse durch Senden einer Anforderung an die dedizierte API zu der dynamischen weißen Liste hinzufügen. Ein Prozess kann sich auch selbst oder andere Prozesse durch Senden einer anderen Anforderung an die dedizierte API aus der dynamischen weißen Liste entfernen. Diese dedizierte API stellt mehr Flexibilität und Effizienz für den Aufbau der weißen Liste 220 bereit.
  • Die Steuereinheit 230 arbeitet, indem die für den Benutzer und das Betriebssystem 100 wichtigen Threads in der virtuellen Lauf-Warteschlange 240 gehalten werden und irrelevante Threads temporär in der virtuellen Blockier-Warteschlange 250 gehalten werden. Die Steuereinheit 230 konzentriert die Ausführungszyklen des Prozessors auf die Threads der virtuellen Lauf-Warteschlange 240, um die Reaktionen der eng mit dem Benutzer verbundenen Threads zu beschleunigen, sodass der Benutzer fühlen kann, dass alle Ressourcen ihm oder ihr dediziert sind, und ein reibungsloses Erlebnis genießen kann. Die Threads in der virtuellen Blockier-Warteschlange 250 sind temporär während der Aktivierung des virtuellen Verwalters 130 nicht zur Ausführung zugeteilt. Die Details werden in den Schritten des Verfahrens zum Thread-Scheduling erläutert, dessen Fluss in 3 bis 9 gezeigt ist.
  • 3 ist ein schematisches Diagramm, das den Fluss des Initialisierungsvorgangs des Verfahrens zum Thread-Scheduling gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Die Steuereinheit 230 führt den Fluss von 3 aus, um den VM 130 als Reaktion darauf, dass das Schaltmodul 210 durch eine vordefinierte Bedingung eingeschaltet wird, zu aktivieren. Zuerst, bei Schritt 310, bestimmt das Schaltmodul 210, ob mindestens eine einer Vielzahl von vordefinierten Bedingungen erfüllt ist. Falls ja, ist das Schaltmodul eingeschaltet. Währenddessen würden Unterbrechungen der elektronischen Geräte maskiert sein, da die Unterbrechungen während des Initialisierungsvorgangs temporär maskiert sein sollten, um in dieser Periode ein Rescheduling zu verhindern, sodass garantiert werden kann, dass alle Warteschlangen folgerichtig sind. Die vordefinierten Bedingungen können mindestens eines von Nutzung des Hardwareprozessors über einem vorbestimmten Grenzwert, Bedarf von zeitkritischen Anwendungen oder Diensten, Verkehr eines mit dem Hardwareprozessor gekoppelten Busses und Durchsatz des Hardwareprozessors umfassen.
  • Als Nächstes, bei Schritt 320, Aktivieren des VM 130 durch Abfangen der Operationen des Scheduler 110 und des QM 120 an der System-Lauf-Warteschlange 140. Nach der Installation kann die Steuereinheit 230 verschiedene Operationen des Scheduler 110 und des QM 120 an der System-Lauf-Warteschlange 140 abfangen und als Reaktion die in 5 bis 8 gezeigten Flüsse ausführen. In den in 5 bis 8 gezeigten Flüssen setzt die Steuereinheit 230 die abgefangenen Operationen an der System-Lauf-Warteschlange 140 in Operationen an der virtuellen Lauf-Warteschlange 240 und der virtuellen Blockier-Warteschlange 250 um. Jegliche Operationen an der System-Schlaf-Warteschlange 150 werden einfach ohne jeglichen Einfluss weitergegeben, da diese das Benutzererlebnis eigentlich nicht beeinflussen.
  • In Schritt 330 erzeugt der VM 130 eine weiße Liste 220, einschließlich mit aktuell auf dem elektronischen Gerät laufenden Anwendungen assoziierten Prozessen. Die weiße Liste 220 kann Prozesse umfassen, die mit der Vordergrundanwendung, systemkritischen Diensten und zeitkritischen Hintergrundanwendungen oder Diensten assoziiert sind. Der VM 130 ordnet dann gemäß der weißen Liste 220 in Schritt 340 Threads in der System-Lauf-Warteschlange 140, die Threads im lauffähigen Zustand enthalten, in die virtuelle Lauf-Warteschlange 240 und die virtuelle Blockier-Warteschlange 250 ein. Threads, die mit Prozessen in der weißen Liste assoziiert sind, werden in die virtuelle Lauf-Warteschlange 240 eingeordnet, während Threads, die nicht in der weißen Liste sind, in die virtuelle Blockier-Warteschlange 250 eingeordnet werden.
  • Als Nächstes wird, bei Schritt 350, eine Anforderung zum Scheduling eines auszuführenden Thread durch den Thread-Scheduler 110 empfangen. Die Anforderung kann empfangen werden, wenn ein Schlaf-Thread davor steht, aufzuwachen, oder die Ausführung oder das Zeitquantum eines laufenden Thread zu Ende ist. Als Reaktion auf die Anforderung maskiert der VM 130 den Thread-Scheduler 110 gegen Zugreifen auf die System-Lauf-Warteschlange 140 zur Selektion und zum Scheduling eines in Schritt 360 auszuführenden Threads. Wie oben beschrieben, würde der Thread-Scheduler 110 normalerweise einen Thread aus der System-Lauf-Warteschlange 140 gemäß der Priorität aufnehmen. In dieser Ausführungsform würde der VM 130 die Anforderung abfangen und den Thread-Scheduler 110 leiten, um einen Thread zur Ausführung aus der virtuellen Lauf-Warteschlange 240 zu selektieren, wie in Schritt 370 gezeigt. Der selektierte Thread kann vom Thread-Scheduler 110 in Schritt 380 zur Ausführung zugeteilt werden.
  • 4 ist ein schematisches Diagramm, das den zusammenfassenden Fluss des vorstehend erwähnten Verfahrens zum Thread-Scheduling gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Zuerst, bei Schritt 410, Erzeugen der weißen Liste 220 in der oben erörterten Weise. Der Vordergrundprozess wird zu der weißen Liste 220 hinzugefügt, und dann wird jeder Prozess, dessen Dienst von mindestens einem Prozess in der weißen Liste 220 angefordert wird, auch zu der weißen Liste 220 hinzugefügt. Als Nächstes, bei Schritt 420, Einordnen der Threads der System-Lauf-Warteschlange 140 in die virtuelle Lauf-Warteschlange 240 und die virtuelle Blockier-Warteschlange 250 gemäß der weißen Liste 220. Die Threads in der System-Lauf-Warteschlange 140, deren Elternprozesse in der weißen Liste 220 sind, werden in die virtuelle Lauf-Warteschlange 240 bewegt. Die Threads in der virtuellen System-Lauf-Warteschlange 240 sind in der Reihenfolge der Priorität sortiert. Der erste Thread in der virtuellen System-Lauf-Warteschlange 240 weist die höchste Priorität auf. Wenn der Eltern- oder assoziierte Prozess eines Thread in der System-Lauf-Warteschlange 140 in der weißen Liste 220 ist, wird der Thread in die virtuelle Lauf-Warteschlange 240 eingeordnet. Wenn ein Thread in die virtuelle Blockier-Warteschlange 250 eingesetzt wird, wird der aktuelle Zustand des Thread von lauffähig oder laufend auf blockiert geändert und wird die Schlafdauer des Thread auf extrem groß oder unendlich eingestellt. Als Nächstes, bei Schritt 430, als Reaktion auf das Empfangen einer mit einem Thread in der virtuellen Lauf-Warteschlange 240 korrespondierenden Anforderung, wird der Thread zur Ausführung durch den Prozessor erlaubt. Bei Schritt 440, als Reaktion auf das Empfangen einer mit einem Thread in der virtuellen Blockier-Warteschlange 250 korrespondierenden Anforderung, wird der Thread temporär von der Ausführung blockiert. Wie oben beschrieben, sind die Threads, die in die virtuelle Lauf-Warteschlange 240 eingeordnet sind, jene, die mit für den Benutzer wichtigen Prozessen assoziiert sind, und daher wird die Ausführung dieser Threads mit hoher Priorität platziert. Threads in der virtuellen Blockier-Warteschlange 250 sind jedoch nicht so wichtig für sofortige Ausführung und aufgrund der Rechenressourcenknappheit würden diese Threads vom Scheduling blockiert sein, um die Gesamtleistung und das Benutzererlebnis zu verbessern.
  • 5 ist ein schematisches Diagramm, das einen Fluss des Verfahrens zum Thread-Scheduling gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Die Steuereinheit 230 führt den Fluss in 5 aus, wenn der Scheduler 110 das Rescheduling des Prozessors durchführt. Zuerst, wenn das Rescheduling stattfindet, weckt der Scheduler 110 die Threads auf, die in der System-Schlaf-Warteschlange 150 residieren und deren begrenzte Schlafperioden abgelaufen sind. Bei Schritt 520, Umleiten des Scheduler 110, um die Threads, die vom Scheduler 110 aufgeweckt worden sind und deren Elternprozesse in der weißen Liste 220 sind, in priorisierter Reihenfolge von der System-Schlaf-Warteschlange 150 in die virtuelle Lauf-Warteschlange 240 zu bewegen. Darüber hinaus Umleiten des Scheduler 110, um die Threads, die vom Scheduler 110 aufgeweckt worden sind und deren Elternprozesse nicht in der weißen Liste 220 sind, in priorisierter Reihenfolge von der System-Schlaf-Warteschlange 150 in die virtuelle Blockier-Warteschlange 250 zu bewegen.
  • Als Nächstes, bei Schritt 520, Umleiten des Scheduler 110, um den ersten Thread der virtuellen Lauf-Warteschlange 240 als den nächsten Thread zum Ausführen zu selektieren. Bei Schritt 530, Abfangen einer vom Scheduler 110 kommenden Entscheidung. Die Entscheidung umfasst den vom Scheduler 110 selektierten Thread.
  • Als Nächstes, bei Schritt 540, Prüfen, ob der Elternprozess des vom Scheduler 110 selektierten Thread in der weißen Liste 220 ist oder nicht. Wenn der Elternprozess des vom Scheduler 110 selektierten Thread in der weißen Liste 220 ist, setzt der Fluss mit Schritt 550 fort, um den Prozessor zuzuteilen, um den vom Scheduler 110 selektierten Thread auszuführen. Wenn der Elternprozess des vom Scheduler 110 selektierten Thread nicht in der weißen Liste 220 ist, setzt der Fluss mit Schritt 560 fort, um den vom Scheduler 110 selektierten Thread in priorisierter Reihenfolge in die virtuelle Blockier-Warteschlange 250 einzusetzen, und löst dann den Selektionsvorgang des Thread 110 erneut aus, um zum Schritt 520 zurückzukehren.
  • 6 ist ein schematisches Diagramm, das einen Fluss des Verfahrens zum Thread-Scheduling gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Die Steuereinheit 230 führt den Fluss in 6 jedes Mal aus, wenn ein Thread vom QM 120 in die System-Lauf-Warteschlange 140 einzusetzen oder von der System-Lauf-Warteschlange 140 zu löschen ist. Zuerst, bei Schritt 610, Prüfen, ob die abgefangene Operation vom QM 120 eine Einsetzung oder eine Löschung ist. Wenn die abgefangene Operation eine Einsetzung eines Thread ist, setzt der Fluss mit Schritt 620 fort, um den Thread in priorisierter Reihenfolge in die virtuelle Lauf-Warteschlange 240 einzusetzen. Bei Schritt 630, Aufwecken der Threads in der virtuellen Blockier-Warteschlange 250, deren Elternprozesse in der weißen Liste 220 sind. Bei Schritt 640, Entfernen der aufgeweckten Threads von der virtuellen Blockier-Warteschlange 250. Bei Schritt 650, Einsetzen der aufgeweckten Threads in priorisierter Reihenfolge in die virtuelle Lauf-Warteschlange 240. Der Zweck der Schritte 630-650 ist es, die mit dem neuen Vordergrundprozess verbundenen Threads in die virtuelle Lauf-Warteschlange 240 zu bewegen, wenn der Vordergrundprozess gewechselt wird.
  • Bei Schritt 610, wenn die abgefangene Operation eine Löschung eines Thread ist, setzt der Fluss mit Schritt 660 fort, um den Thread einfach von der virtuellen Lauf-Warteschlange 240 zu entfernen.
  • 7 ist ein schematisches Diagramm, das einen Fluss des Verfahrens zum Thread-Scheduling gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Die Steuereinheit 230 führt den Fluss in 7 aus, wenn ein laufender Thread (der aktuell vom Prozessor ausgeführte Thread) ein exklusives Objekt anfordert, das von einem blockierten Thread in der virtuellen Blockier-Warteschlange 250 akquiriert worden ist. Das exklusive Objekt kann eine geteilte Ressource, wie zum Beispiel ein Lautsprecher oder ein Drucker, sein. Alternativ kann das exklusive Objekt ein Synchronisierungsobjekt, wie zum Beispiel ein Semaphor, ein Spinlock oder ein Mutex, sein. Es würde eine Blockierung geben, falls dieser Punkt ungelöst ist, weil, solange der VM 130 eingeschaltet ist, der blockierte Thread in der virtuellen Blockier-Warteschlange 250 niemals laufen würde, um das exklusive Objekt freizugeben. Wenn der laufende Thread auf ein exklusives Objekt zu warten hat, muss der QM 120 den Zustand des laufenden Thread ändern. Die Steuereinheit 230 kann diese vom QM 120 kommende Operation abfangen und den Besitzer des exklusiven Objekts untersuchen. Sobald der Besitzer in der virtuellen Blockier-Warteschlange 250 schlafend gefunden wird, führt die Steuereinheit 230 den Fluss in 7 aus, um die Blockierung zu vermeiden.
  • Zuerst, bei Schritt 710, Aufwecken des blockierten Thread. Bei Schritt 720, Aufwecken der Threads in der virtuellen Blockier-Warteschlange 250, deren Elternprozesse in der weißen Liste 220 sind. Bei Schritt 730, Entfernen der bei Schritt 710 und 720 aufgeweckten Threads von der virtuellen Blockier-Warteschlange 250. Bei Schritt 740, Einsetzen der bei Schritt 710 und 720 aufgeweckten Threads in priorisierter Reihenfolge in die virtuelle Lauf-Warteschlange 240.
  • 8 ist ein schematisches Diagramm, das einen Fluss des Verfahrens zum Thread-Scheduling gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Die Steuereinheit 230 führt den Fluss in 8 aus, wenn der Vordergrundprozess von einem vorangegangenen Vordergrundprozess auf einen nächsten Vordergrundprozess gewechselt wird. Zuerst, bei Schritt 810, Leeren der dynamischen weißen Liste. Da die dynamische weiße Liste die mit dem Vordergrundprozess verbundenen Prozesse aufzeichnet, muss die dynamische weiße Liste zurückgesetzt und neu gebildet werden, wenn der Vordergrundprozess gewechselt wird. Bei Schritt 820, Hinzufügen des nächsten Vordergrundprozesses in die dynamische weiße Liste. Bei Schritt 830, Aufwecken der Threads in der virtuellen Blockier-Warteschlange 250, deren Elternprozess der nächste Vordergrundprozess ist. Bei Schritt 840, Entfernen der aufgeweckten Threads von der virtuellen Blockier-Warteschlange 250. Bei Schritt 850, Einsetzen der aufgeweckten Threads in priorisierter Reihenfolge in die virtuelle Lauf-Warteschlange 240. Was die Threads betrifft, die in der dynamischen weißen Liste des vorangegangenen Vordergrundprozesses waren und noch in der virtuellen Lauf-Warteschlange 240 sind, so werden diese Threads im Fluss in 4 beim nächsten Reschedulingg des Prozesses zur virtuellen Blockier-Warteschlange 250 bewegt.
  • 9 ist ein schematisches Diagramm, das einen Fluss des Verfahrens zum Thread-Scheduling gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Die Steuereinheit 230 führt den Fluss in 9 aus, um den VM 130 abzustellen, wenn das Schaltmodul 210 durch eine voreingestellte Bedingung abgeschaltet wird. Der Fluss in 9 kann nach dem Schritt 330 in 3 ausgeführt werden.
  • Zuerst, bei Schritt 910, Maskieren der Unterbrechungen des elektronischen Geräts, um das Rescheduling zu verhindern und die Folgerichtigkeit aller Warteschlangen zu garantieren. Bei Schritt 920, Neuaufbauen der System-Lauf-Warteschlange 140 durch Vereinigen in priorisierter Reihenfolge der Threads der virtuellen Lauf-Warteschlange 240 und der virtuellen Blockier-Warteschlange 250. Die System-Lauf-Warteschlange 140 wird nach dem in 4 gezeigten Initialisierungsvorgang leer. Der Scheduler 110 und der QM 120 greifen direkt auf die System-Lauf-Warteschlange 140 zu, wenn der VM 130 abgestellt ist. Die System-Lauf-Warteschlange 140 muss daher neu aufgebaut werden. Bei Schritt 930, Deinstallieren des VM 130 durch Rückgängigmachen des Abfangens der Operationen des Scheduler 110 und des QM 120 an der System-Lauf-Warteschlange 140 bei Schritt 420 in 4. Jegliche Wirkungen des VM 130 auf den Scheduler 110, den QM 120 und das Betriebssystem 100 werden zurückgerollt. Als Nächstes, bei Schritt 940, Demaskieren der Unterbrechungen der elektronischen Geräte. Nach Schritt 940 wird der VM 130 komplett abgestellt und das Betriebssystem 100 verhält sich genauso, als ob der VM 130 nicht existiert.
  • 10 ist ein schematisches Diagramm, das ein elektronisches Gerät 1000 zum Thread-Scheduling gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Das elektronische Gerät 1000 umfasst einen Prozessor 1010 und ein Speicherungsgerät 1020. Der Prozessor 1010 kann das Betriebssystem 100, einschließlich des VM 130 und der Steuereinheit 230, ausführen. Mit anderen Worten kann der Prozessor 1010 das Verfahren zum Thread-Scheduling ausführen, dessen Fluss in 3 bis 9 gezeigt ist. Das Speicherungsgerät 1020 ist mit dem Prozessor 1010 gekoppelt. Das Speicherungsgerät 1020 kann die System-Lauf-Warteschlange 140, die System-Schlaf-Warteschlange 150, die virtuelle Lauf-Warteschlange 240, die virtuelle Blockier-Warteschlange 250 und die weiße Liste 220 speichern.
  • Zusammenfassend lässt sich sagen, die vorliegende Erfindung klassifiziert die lauffähigen Threads im Betriebssystem gemäß der Beziehung zwischen den lauffähigen Threads und dem Vordergrundprozess, und passt den Ausführungsplan des Prozessors an, um die Ausführungszyklen auf die eng mit dem Vordergrundprozess verbundenen Threads zu konzentrieren. Aus diesem Grund ist die Operation des Vordergrundprozesses reibungslos und reaktionsschnell, was die Benutzererfahrung verbessert.
  • Es wird dem Fachmann klar sein, dass verschiedene Modifikationen und Abwandlungen am Aufbau der vorliegenden Erfindung gemacht werden können, ohne vom Schutzumfang und Geist der Erfindung abzuweichen. Aus den vorstehenden Gründen ist es beabsichtigt, dass die vorliegende Erfindung Modifikationen und Abwandlungen dieser Erfindung abdeckt, vorausgesetzt, sie fallen in den Schutzumfang der folgenden Ansprüche und ihrer Äquivalente.

Claims (17)

  1. Ein Verfahren zur Durchführung des Thread-Scheduling in einem elektronischen Gerät (1000), das einen zur Ausführung eines Betriebssystems (100) konfigurierten Hardwareprozessor (1010) aufweist, wobei das Betriebssystem (100) einen Thread-Scheduler (110) zur Vorbereitung der Thread-Ausführung des Hardwareprozessors (1010) und einen Warteschlangenverwalter (120) zum Bearbeiten von Anfragen, die beabsichtigen , Threads in eine System-Lauf-Warteschlange (140) einzugliedern oder von dieser zu entfernen, und eine System-Schlaf-Warteschlange (150) beinhaltet, wobei das Verfahren Folgendes beinhaltet: Bestimmen, ob mindestens eine vordefinierte Bedingung, nämlich ob der Auslastungsgrad des Hardwareprozessors größer als ein erster Grenzwert ist, erfüllt ist; als Reaktion darauf, dass die vordefinierte Bedingung erfüllt ist, Aktivieren eines durch den Hardwareprozessor (1010) ausgeführten virtuellen Verwalters (130), der als eine mittlere Schicht zwischen dem Thread-Scheduler (110) und dem Warteschlangenverwalter (120) sowie der System-Lauf-Warteschlange (140) und der System-Schlaf-Warteschlange (150) angeordnet ist; Empfangen einer Anforderung durch den Thread-Scheduler (110) zum Scheduling eines auszuführenden Thread; Abfangen eines Zugriffs des Scheduler (110) auf die System-Lauf-Warteschlange (140), die eine Vielzahl von ersten Threads in einem lauffähigen Zustand beinhaltet, durch den virtuellen Verwalter (130); Einordnen der Threads in der System-Lauf-Warteschlange (140) durch den virtuellen Verwalter (130) in eine virtuelle Lauf-Warteschlange (240), die einen ersten Teil von der Vielzahl von ersten Threads in der System-Lauf-Warteschlange (140) zur Selektion des auszuführenden Thread beinhaltet, wobei der erste Teil der ersten Threads mit mindestens einer aktuell laufenden Anwendung assoziiert ist, auf die der Benutzer aktuell konzentriert ist, oder in eine virtuelle Blockier-Warteschlange (250), wobei die Threads in der System-Lauf-Warteschlange (240) der Priorität nach geordnet sind und Threads in der virtuellen Blockier-Warteschlange (250) während der Aktivierung des virtuellen Verwalter (130) nicht zur Ausführung gescheduled werden; Richten des Scheduling des Schedulers (110) auf die Threads in der virtuellen Lauf-Warteschlange (240) durch den virtuellen Verwalter (130); und Zuteilen des ausgewählten Thread durch den Thread-Scheduler (110) zur Ausführung durch den Hardwareprozessor (1010).
  2. Verfahren gemäß Anspruch 1, das ferner Folgendes beinhaltet: Erzeugen einer weißen Liste (220), die mit der aktuell laufenden Anwendung assoziierte Prozesse beinhaltet, durch den Hardwareprozessor (1010); und Einordnen durch den virtuellen Verwalter (130) der Vielzahl von ersten Threads auf die virtuelle Lauf-Warteschlange (240) und die virtuelle Blockier-Warteschlange (250) gemäß ihrer Abhängigkeit von der weißen Liste (220).
  3. Verfahren gemäß Anspruch 2, wobei die weiße Liste (220) mindestens einen Prozess beinhaltet, der mit der Vordergrundanwendung, systemkritischen Dienst, zeitkritischer Hintergrundanwendung oder zeitkritischen Diensten assoziiert ist.
  4. Verfahren gemäß Anspruch 2, das ferner Folgendes beinhaltet: Aktualisieren der weißen Liste (220) gemäß aktuell auf dem elektronischen Gerät (1000) laufenden Anwendungen.
  5. Verfahren gemäß Anspruch 2, das ferner Folgendes beinhaltet: Empfangen einer Anforderung zum Einsetzen eines Threads durch einen Warteschlangenverwalter (120); Abfangen von Zugriffen des Warteschlangenverwalters (120) auf die erste Warteschlange (140) durch den virtuellen Verwalter (130); Bestimmen der Threads in der virtuellen Blockier-Warteschlange (250), die mit dem eingesetzten Thread assoziiert sind, gemäß der weißen Liste durch den Hardwareprozessor; und Bewegen des eingesetzten Threads und der assoziierten Threads in der virtuellen Blockier-Warteschlange (250) in die virtuelle Lauf-Warteschlange (240) durch den Hardwareprozessor (1010).
  6. Verfahren gemäß Anspruch 2, das ferner Folgendes beinhaltet: Empfangen einer Anforderung an einen Thread in der ersten Warteschlange (140) durch den Scheduler (110); Abfangen der Anforderung durch den virtuellen Verwalter (130); Bestimmen, ob der angeforderte Thread in der virtuellen Blockier-Warteschlange (250) ist; als Reaktion darauf, dass der angeforderte Thread in der virtuellen Blockier-Warteschlange (250) ist, Bestimmen der Threads in der virtuellen Blockier-Warteschlange (250), die mit dem angeforderten Thread assoziiert sind, gemäß der weißen Liste durch den virtuellen Verwalter (130); und Bewegen des angeforderten Threads und der assoziierten Threads in der virtuellen Blockier-Warteschlange (250) in die virtuelle Lauf-Warteschlange (240) durch den Hardwareprozessor (1010).
  7. Verfahren gemäß Anspruch 2, das ferner Folgendes beinhaltet: Bestimmen einer aktuell auf dem elektronischen Gerät (1000) laufenden Vordergrundanwendung; als Reaktion darauf, dass die aktuell laufende Vordergrundanwendung gewechselt wird, Aktualisieren der weißen Liste (220) gemäß einer neuen Vordergrundanwendung; und Aktualisieren der virtuellen Lauf-Warteschlange (240) und der virtuellen Blockier-Warteschlange (250) gemäß der aktualisierten weißen Liste (220).
  8. Verfahren gemäß Anspruch 2, das ferner Folgendes beinhaltet: Bestimmen der Statusänderung einer Vielzahl von zweiten Threads in der System-Schlaf-Warteschlange (150) durch den Scheduler (110), wobei die Vielzahl von zweiten Threads in einem Schlaf-Zustand ist; als Reaktion darauf, dass sich der Status von mindestens einem der zweiten Threads ändert, Senden einer Anforderung zum Einsetzen des zweiten Threads mit Statusänderung an den Warteschlangenverwalter (120); Abfangen der Anforderung zum Einsetzen des zweiten Threads mit Statusänderung vom Warteschlangenverwalter (120) durch den virtuellen Verwalter (130); und Einsetzen des zweiten Threads mit Statusänderung in die virtuelle Lauf-Warteschlange (240) oder die virtuelle Blockier-Warteschlange (250) gemäß der weißen Liste (220).
  9. Verfahren gemäß Anspruch 1, das ferner Folgendes beinhaltet: Empfangen einer Anforderung zum Löschen eines Threads durch den Warteschlangenverwalter (120); Abfangen eines Zugriffs des Warteschlangenverwalters (120) auf die System-Lauf-Warteschlange (140) durch den virtuellen Verwalter (130); und Entfernen des gelöschten Threads aus der virtuellen Lauf-Warteschlange (240).
  10. Verfahren gemäß Anspruch 1, das ferner Folgendes beinhaltet: Bestimmen, ob die vordefinierte Bedingung freigegeben ist; als Reaktion darauf, dass die vordefinierte Bedingung freigegeben ist, Einordnen durch den virtuellen Verwalter (130) der Threads in der virtuellen Lauf-Warteschlange (240) und der virtuellen Blockier-Warteschlange (250) zurück zur System-Lauf-Warteschlange (140); und Deaktivieren des virtuellen Verwalters (130).
  11. Ein Thread-Scheduling-System für den Einsatz in einem elektronischen Gerät (1000) zur Durchführung eines Verfahrens gemäß einem der Ansprüche 1-10, das Folgendes beinhaltet: eine Systemwarteschlange, die eine System-Lauf-Warteschlange (140) zur Aufrechterhaltung einer Vielzahl von ersten Threads in einem ersten Zustand und eine System-Schlaf-Warteschlange (250) zur Aufrechterhaltung einer Vielzahl von zweiten Threads in einem zweiten Zustand beinhaltet; einen Thread-Scheduler (110), der konfiguriert ist, um eine Anforderung zum Zuteilen der Ausführung von mindestens einem der ersten Threads und Aktualisieren des Status der zweiten Threads zu erhalten; einen Warteschlangenverwalter (120), der konfiguriert ist, um eine Anforderung zum Aktualisieren der Threads in der System-Lauf-Warteschlange (140) und der System-Schlaf-Warteschlange (150) zu erhalten; und einen virtuellen Verwalter (130), der konfiguriert ist, um die vom Thread-Scheduler (110) und Warteschlangenverwalter (120) empfangene Anforderung zum Zugreifen auf die System-Lauf-Warteschlange (140) abzufangen, Threads in der System-Lauf-Warteschlange (140) und der System-Schlaf-Warteschlange (150) zu aktualisieren, und konfiguriert ist, um gemäß einer mit mindestens einer aktuell laufenden Anwendung assoziierten weißen Liste (220) die ersten Threads in der System-Lauf-Warteschlange (140) in eine virtuelle Lauf-Warteschlange (240) und eine virtuelle Block-Warteschlange (250) einzuordnen.
  12. Thread-Scheduling-System gemäß Anspruch 11, wobei der virtuelle Verwalter (130) Folgendes beinhaltet: ein Schaltmodul (210), das konfiguriert ist, um die vordefinierte Bedingung zu detektieren; und eine Steuereinheit (230), die konfiguriert ist, um als Reaktion darauf, dass die vordefinierte Bedingung erfüllt ist, aktiviert zu werden, und die weiterhin konfiguriert ist, die Anforderungen abzufangen.
  13. Thread-Scheduling-System gemäß Anspruch 12, wobei die Steuereinheit (230) ferner konfiguriert ist, um den Thread-Scheduler (110) als Reaktion darauf, dass der Thread-Scheduler (110) die Anforderung zum Zuteilen der Ausführung von mindestens einem der ersten Threads erhält, einen Zugriff auf die System-Lauf-Warteschlange (140) abzufangen, und den Thread-Scheduler (120) zur virtuellen Lauf-Warteschlange (240) zum Selektieren des auszuführenden Threads zu leiten.
  14. Thread-Scheduling-System gemäß Anspruch 12, wobei die Steuereinheit (230) ferner konfiguriert ist, um die vom Warteschlangenverwalter (120) empfangene Anforderung zum Einsetzen eines neuen Threads abzufangen, einen Zugriff des Warteschlangenverwalters (120) auf die System-Lauf-Warteschlange (140) abzufangen und den neuen Thread und die ersten Threads in der virtuellen Blockier-Warteschlange (250), die mit dem neuen Thread assoziiert sind, gemäß der weißen Liste (220), in die virtuelle Lauf-Warteschlange (240) zu bewegen.
  15. Thread-Scheduling-System gemäß Anspruch 12, wobei die Steuereinheit (230) ferner konfiguriert ist, um die virtuelle Lauf-Warteschlange (240) und die virtuelle Blockier-Warteschlange (250) zurück zur System-Lauf-Warteschlange (140) zu aktualisieren, und wobei die Steuereinheit (230) konfiguriert ist, als Reaktion darauf, dass die vordefinierte Bedingung freigegeben ist, deaktiviert zu sein.
  16. Thread-Scheduling-System gemäß Anspruch 11, wobei die weiße Liste (220) mindestens einen Prozess beinhaltet, der mit der Vordergrundanwendung, systemkritischem Dienst, zeitkritischer Hintergrundanwendung oder zeitkritischen Diensten assoziiert ist.
  17. Thread-Scheduling-System gemäß Anspruch 11, wobei der virtuelle Verwalter (130) ferner konfiguriert ist, um den Status der mindestens einen aktuell laufenden Anwendung zu bestimmen und die weiße Liste (220) als Reaktion auf einen Wechsel der mindestens einen aktuell laufenden Anwendung zu aktualisieren.
DE102013217995.2A 2013-02-07 2013-09-09 Verfahren und System zum Thread-Scheduling (Fadenzuteilung) Expired - Fee Related DE102013217995B4 (de)

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
DE102013217995A1 DE102013217995A1 (de) 2014-08-07
DE102013217995B4 true DE102013217995B4 (de) 2019-11-14

Family

ID=51206140

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013217995.2A Expired - Fee Related DE102013217995B4 (de) 2013-02-07 2013-09-09 Verfahren und System zum Thread-Scheduling (Fadenzuteilung)

Country Status (4)

Country Link
US (1) US9274832B2 (de)
CN (1) CN103984598B (de)
DE (1) DE102013217995B4 (de)
TW (1) TWI512619B (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
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 (de) * 2014-08-11 2016-02-17 Amadeus S.A.A. Automatisiertes 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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7536689B2 (en) * 2003-01-10 2009-05-19 Tricerat, Inc. Method and system for optimizing thread scheduling using quality objectives

Family Cites Families (15)

* Cited by examiner, † Cited by third party
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
US7716668B2 (en) 2002-12-16 2010-05-11 Brooktree Broadband Holding, Inc. System and method for scheduling thread execution
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
CN1740974A (zh) * 2005-09-14 2006-03-01 艾默生网络能源有限公司 一种线程调度管理方法和系统
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
CN100578459C (zh) * 2007-06-12 2010-01-06 华为技术有限公司 线程调度方法及其装置
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7536689B2 (en) * 2003-01-10 2009-05-19 Tricerat, Inc. Method and system for optimizing thread scheduling using quality objectives

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Panduranga Rao, M. V. et al.: Analysis of New Multi Level Feedback Queue Scheduler for Real Time Kernel. In: International Journal of Computational Cognition. Vol. 8, No. 3, September 2010. pp. 5 – 16 *

Also Published As

Publication number Publication date
TWI512619B (zh) 2015-12-11
CN103984598B (zh) 2017-09-29
US20140223437A1 (en) 2014-08-07
TW201432565A (zh) 2014-08-16
DE102013217995A1 (de) 2014-08-07
US9274832B2 (en) 2016-03-01
CN103984598A (zh) 2014-08-13

Similar Documents

Publication Publication Date Title
DE102013217995B4 (de) Verfahren und System zum Thread-Scheduling (Fadenzuteilung)
DE69729822T2 (de) Echtzeit-Taskzuweiser
DE102014101633B4 (de) Unterbrechung von Aufgaben zur Verwatlung von Chip-Komponenten
EP1831786B1 (de) Verfahren zur verteilung von rechenzeit in einem rechnersystem
DE102014011332B4 (de) Priorisieren von anweisungen basierend auf typ
DE112004001320B3 (de) Verfahren, System und Vorrichtung zur Verbesserung der Leistung von Mehrkernprozessoren
DE112010005473T5 (de) Opportunistisches multitasking
DE60226176T2 (de) Verfahren und programme zur einstellung von prioritätsstufen in einem datenverarbeitungssystem mit multiprogrammierung und priorisierte warteschlangenbildung
DE102008016181A1 (de) Prioritätsbasiertes Drosseln für Leistungsaufnahme-Verarbeitungsleistung-Dienstgüte
CN110489217A (zh) 一种任务调度方法及系统
CN106775699B (zh) 在异步线程中更新ui的方法及系统
DE102016118210A1 (de) Granulare Dienstqualität für Computer-Ressourcen
DE112015003769T5 (de) Anzeigen von anzeigebezogenem always-on-inhalt
DE102008062692A1 (de) Vorrichtung und Verfahren mit gesteuertem Schaltmodus
DE10393969T5 (de) Mechanismus zur Verteilung von Unterbrechungen niedrigster Priorität unter Berücksichtigung des Prozessorleistungszustands
DE102013104328A1 (de) Aufgabenzuteilung in großen und kleinen Kernen
DE102020110143A1 (de) Standortbasierte virtualisierungs-workload-platzierung
DE102010045743A1 (de) Verfahren und Vorrichtung um Turboleistung für das Event-Handling zu verbessern
DE112006000016T5 (de) Informationsterminal, Computerressourcen-Verwaltungsverfahren sowie Schaltverfahren für die Ausführungsprozedur einer virtuellen Maschine
DE102006046129A1 (de) Vorrichtung, System und Verfahren für einen ständigen Thread auf Benutzerebene
DE102005013913A1 (de) Unterbrechungsanforderungsprogramm und Mikrocomputer
DE112004001887T5 (de) Optimierung der SMI-Handhabung und -Initialisierung
DE102012105068A1 (de) Beschleunigungseinrichtung mit Unterstützung für virtuelle Maschinen
DE102015002191A1 (de) Sicherheits-Hypervisor-Funktion
DE102016203808A1 (de) Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: HTC CORPORATION, TAOYUAN CITY, TW

Free format text: FORMER OWNER: HTC CORPORATION, TAOYUAN, TW

Owner name: HTC CORPORATION, TW

Free format text: FORMER OWNER: HTC CORPORATION, TAOYUAN, TW

R082 Change of representative

Representative=s name: MURGITROYD & COMPANY, DE

R016 Response to examination communication
R016 Response to examination communication
R081 Change of applicant/patentee

Owner name: HTC CORPORATION, TAOYUAN CITY, TW

Free format text: FORMER OWNER: HTC CORPORATION, TAOYUAN CITY, TAOYUAN COUNTY, TW

Owner name: HTC CORPORATION, TW

Free format text: FORMER OWNER: HTC CORPORATION, TAOYUAN, TW

R082 Change of representative

Representative=s name: MURGITROYD & COMPANY, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee