-
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.