DE60317500T2 - Weniger aufwendige kontextumschaltung in mit statischen prioritäten gesteuerten betriebssystemen - Google Patents

Weniger aufwendige kontextumschaltung in mit statischen prioritäten gesteuerten betriebssystemen Download PDF

Info

Publication number
DE60317500T2
DE60317500T2 DE60317500T DE60317500T DE60317500T2 DE 60317500 T2 DE60317500 T2 DE 60317500T2 DE 60317500 T DE60317500 T DE 60317500T DE 60317500 T DE60317500 T DE 60317500T DE 60317500 T2 DE60317500 T2 DE 60317500T2
Authority
DE
Germany
Prior art keywords
tasks
task
resource
context
priority
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 - Lifetime
Application number
DE60317500T
Other languages
English (en)
Other versions
DE60317500D1 (de
Inventor
David Lake
John Tuffen
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.)
Livedevices Ltd
Original Assignee
Livedevices Ltd
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 Livedevices Ltd filed Critical Livedevices Ltd
Priority claimed from PCT/GB2003/001609 external-priority patent/WO2003091878A2/en
Application granted granted Critical
Publication of DE60317500D1 publication Critical patent/DE60317500D1/de
Publication of DE60317500T2 publication Critical patent/DE60317500T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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
    • 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/461Saving or restoring of program or task context
    • G06F9/463Program control block organisation
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]

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)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf Verfahren und Systeme zur Verringerung der Speicher- oder Prozessorbenutzung in Betriebssystemen, die von auf statischer Priorität basierender Ablaufsteuerung (Scheduling) Gebrauch machen, insbesondere bei der Verringerung der Notwendigkeit zur Ressourcenspeicherung bei Kontextwechseln bzw. -umschaltungen zwischen Tasks. Ausführungsformen der vorliegenden Erfindung sind von besonderer Relevanz für das technische Gebiet eingebetteter bzw. integrierter Vorrichtungen bzw. Bauelemente und ihrer Steuerung, da diese in Anbetracht des begrenzten Bereichs erforderlicher Funktionen im allgemeinen auf statischer Priorität basierende Ablaufsteuerung verwenden. Ausführungsformen der vorliegenden Erfindung können in Verbindung mit einer Erfindung verwendet werden, die in der gleichzeitig anhängigen U.K.-Patentanmeldung Nr. 0209800.2 des vorliegenden Anmelders vom 30. April 2002 offenbart ist, von der eine Kopie mit der vorliegenden Anmeldung eingereicht wird.
  • In einem Betriebssystem, das um auf statischer Priorität basierender Ablaufsteuerung herum basiert (Systeme, in denen die Prioritätsreihenfolge bzw. -ordnung von Tasks offline festgelegt wird und konstant bleibt) existiert irgend eine externe Beschreibung der Aufgaben- beziehungsweise Taskingstruktur des Systems, die verwendet wird, um Datenstrukturen zu erzeugen, die die Tasks und ihre Prioritäten beschreiben. Diese Datenstrukturen werden am vorteilhaftesten offline durch ein "Konfigurationswerkzeug" oder ein anderes Programm berechnet und verwendet, um das System zu initialisieren, wenn es hochfährt. Tasks in einem derartigen Betriebssystemen können zu jeder Zeit aktiviert werden, aber beginnen nicht abzulaufen, bis sie der ablauffähige Task mit der höchsten Priorität in dem System sind. Sie laufen weiter ab (auch wenn sie durch andere Tasks höherer Priorität unterbrochen werden können, wobei an diesem Punkt ein Kontextwechsel stattfindet), bis ihre Arbeit getan ist, und enden dann.
  • Anwendungen, die unter Verwendung derartiger Betriebssysteme aufgebaut sind, bestehen typischerweise aus einer Vielzahl simultaner Tasks, von denen jeder auf eine vorbestimmte Priorität eingestellt ist. Ausführungsformen der vorliegenden Erfindung beziehen sich darauf, die Menge an Kontext zu verringern, die gespeichert werden muss, wenn ein Kontextwechsel bzw. eine Kontextumschaltung zwischen zwei beliebigen Tasks durchgeführt wird.
  • Die vorliegende Erfindung wird in Hinblick auf ihre Anwendung auf ein Betriebssystem mit einer Tasksemantik mit einem einzelnen Stapel, Einmalausführung und Durchlauf bis zur Fertigstellung (single-stack, single-shot, run-to-completion task semantics) beschrieben, obwohl sie allgemein auf andere Formen von Taskingmodellen anwendbar ist.
  • Man betrachte ein System, das von irgendeiner Software- oder Hardwareressource Gebrauch macht, die für jeden Task so "erscheinen" muss, als wäre sie unter seiner exklusiven Kontrolle (zum Beispiel eine nicht ablaufinvariante Software-Fließkommaimplementierung, ein Satz von Hardware-Fließkommaregistern oder ein Satz von Akkumulatoren eines digitalen Signalprozessors). Wir bezeichnen die Sammlung von Daten, die geladen und gespeichert werden müssen, um jedem Task seine eigene Sicht derartiger Ressourcen zu geben, als einen "Ressourcenkontext", da dieser zusätzlich zu dem normalen Taskkontext ist.
  • In einem herkömmlichen System würden diese Ressourcen beim Eintritt in jeden Task gespeichert und wiederhergestellt, wenn der Task verlassen wird. Dies bedeutet, dass es für jedes System eine zusätzliche Speicherbenutzung von einem "Ressourcenkontext" pro Task in dem System geben würde.
  • Clement, B. J. et al., "Scheduling high-level tasks among cooperative agents", Multi-Agent Systems, 1998, Poc. Int. Conf. Paris, 3. bis 7. Juli 1998, IEEE Corp. Soc., 3. Juli 1998, Seiten 96 bis 103 offenbart ein Verfahren zur Gruppierung oder Zusammenlagerung von Tasks, um so Ressourcenkontexte beim Wechseln zu verringern.
  • Saksena, M. et al., "Scalable Real-Time System Design Using Preemption Thresholds", Bericht des 21. IEEE Echtzeitsystemymposiums, IEEE Piscataway, 2000, Seiten 25 bis 34 offenbart die Integration von Zeitfolgeanalyseergebnissen mit Ergebnissen von einem Betriebssystem-Konfigurationswerkzeug.
  • US 6,052,707 offenbart präemptives Multitasking mit kooperativen Gruppen von Tasks.
  • Gemäß einem ersten Aspekt der vorliegenden Erfindung wird ein Verfahren zur Verringerung von Speicher- oder Prozessorbenutzung in einem Betriebssystem bereitgestellt, das auf statischer Priorität basierende Ablaufsteuerung für Tasks verwendet, wie es in Anspruch 1 beansprucht ist.
  • Andere Aspekte von Ausführungsformen der Erfindung werden unten beschrieben und in den verbleibenden Ansprüchen beansprucht.
  • Das Softwareprodukt kann in jeder geeigneten Form oder Sprache vorliegen und kann auf einem Datenträger gespeichert sein, wie etwa einer Diskette, einer optischen Platte, einer Flashspeichervorrichtung oder irgendeiner anderen Art von Datenträger.
  • Wir werden zuerst die Bedeutung von "Hülle" (wrapper) und "Zuteiler" (dispatcher) diskutieren, wie sie nachfolgend in der vorliegenden Anmeldungen verwendet werden, bevor wir potenti elle Implementierungen von Ausführungsformen der Erfindung diskutieren.
  • Eine "Hülle" bzw. ein "Wrapper" ist in dieser Anmeldung als ein Fragment von Programmcode definiert, das einen Task einkapselt und an seiner Stelle durch das zu Grunde liegende Betriebssystem aufgerufen wird. Wenn wir zum Beispiel einen Task "Task 1" betrachten, dessen "Eintritt" (die Funktion, die nützliche Arbeit ausführt) wie folgt definiert ist:
    Figure 00040001
    können wir es unter manchen Umständen (zum Beispiel wenn Laden oder Speichern von Kontext erforderlich ist) wünschen, ihn durch eine Hülle zu ersetzen:
    Figure 00040002
  • Ein "Zuteiler" bzw. "Dispatcher" führt im Wesentlichen dieselben Aktivitäten durch, aber anstatt dass die Taskeintrittfunktion ersetzt ist, ist das Betriebssystem selbst modifiziert, um die Vor- und Nach-Task-Aufrufe durchzuführen. Zum Beispiel könnten wir den folgenden Code innerhalb des Betriebssystems finden:
    Figure 00040003
    Figure 00050001
  • Die Beschreibung dieser Erfindung konzentriert sich auf die Verwendung von Hüllen, auch wenn ein Ansatz ähnlich zu diesem, der aber modifizierte Formen der Betriebssystem-Zuteilerfunktion verwendet, ebenfalls möglich ist.
  • Lassen Sie uns nun ein Beispiel einer unoptimierten Konfiguration eines Systems betrachten, das Taskhüllen verwendet. Lassen Sie uns annehmen, dass ein System wie folgt deklariert ist (wobei höhere Zahlen eine höhere Priorität implizieren):
    • Task a Priorität 1;
    • Task b Priorität 2;
    • Task c Priorität 3;
    • Task d Priorität 4;
    • Task e Priorität 5;
  • Trivialerweise würde dieses System fünf "Ressourcenkontexte" benötigen – einen für jeden der Tasks a, b, c, d und e, um ihre Ressourcen in diesen zu speichern, wenn sie durch Tasks höherer Priorität unterbrochen werden. Jeder Task würde durch eine "Hülle" geschützt sein, die sicherstellt, dass der "Ressourcenkontext" in den geeigneten Puffer gespeichert würde, und der Betriebssystemzuteiler bzw. -dispatcher würde diese anstatt der Taskeintrittfunktion aufrufen – zum Beispiel würde der Systemzuteiler, anstatt unmittelbar zu "Task d Eintritt" zu springen, eine Hülle aufrufen:
    Figure 00060001
    (In diesem Fall zeigen wir, dass die Hülle in einer C-artigen Sprache erzeugt ist und die Deklaration des "Ressourcenkontexts" selbst enthält – obwohl diese auch in Assemblersprache mit geeignetem Code und geeigneten Datendeklarationen erzeugt werden könnte oder durch Aufruf verschiedener Varianten oder Zweige der Betriebssystem-Zuteilerfunktion herbeigeführt werden könnte).
  • Der Systemzuteiler könnte in diesem Fall eine Tabelle von Funktionszeigern verwenden, um zu entscheiden, welche Funktion für jeden Task aufgerufen werden soll. In einer hypothetischen Assemblersprache könnte sich dies wie folgt darstellen:
    • Task Eintritt_Tab: ÖFFENTLICH
    • .Zeiger Task_a_Eintritt_Hülle
    • .Zeiger Task_b_Eintritt_Hülle
    • .Zeiger Task_c_Eintritt_Hülle
    • .Zeiger Task_d_Eintritt_Hülle
    • .Zeiger Task_e_Eintritt_Hülle
  • Aber lassen Sie uns annehmen, dass nur drei der Tasks von Ressourcen Gebrauch machen, die gespeichert und wiederhergestellt werden müssen – die Systembeschreibung wird modifiziert in:
    • Task a Priorität 1 verwendet FK;
    • Task b Priorität 2 verwendet FK;
    • Task c Priorität 3;
    • Task d Priorität 4 verwendet FK;
    • Task e Priorität 5;
  • In diesem System ist die Deklaration "verwendet FK" hinzugefügt, um anzugeben, dass ein Task den Fließkomma-Koprozessor verwendet. Wenn ein Task nicht explizit erwähnt, dass er irgendetwas verwendet, das einen "Ressourcenkontext" erfordert, dann wird keiner bereitgestellt (und es ist keine Hülle erforderlich – das Betriebssystem (BS) kann die Eintrittfunktion des Tasks unmittelbar aufrufen).
  • Eine logische Folgerung des obigen besteht darin, dass der Task niedrigster Priorität, der eine gemeinsam genutzte Ressourcen verwendet, keine Hülle bereitstellen muss, um diesen Kontext zu laden oder zu speichern – da der Unterbrecher (preemter) den Kontext speichert und nicht der Unterbrochene (preemptee. Die äußerste Ausweitung hiervon ist es, dass jedes System, in dem nur ein Task eine gemeinsam genutzte Ressource verwendet, keine Hülle oder Speicherung erfordert, da es nichts anderes gibt, was die Ressource verwendet, um ihn zu unterbrechen (pre-empt).
  • Dies bedeutet, dass nur zwei Ressourcenkontexte und Hüllen erzeugt werden müssen (für Task b und Task d). In diesem Fall könnte die Zuteilungstabelle wie folgt aussehen:
    • Task Eintritt Tab: ÖFFENTLICH
    • .Zeiger Task_a_Eintritt # keine Notwendigkeit für Hülle – Unterbrecher speichert
    • .Zeiger Task_b_Eintritt Hülle # erfordert Hülle, kann a unterbrechen
    • .Zeiger Task_c_Eintritt # keine Notwendigkeit für Hülle – kein FK
    • .Zeiger Task_d_Eintritt_Hülle # erfordert Hülle, kann b unterbrechen
    • .Zeiger Task_e_Eintritt # keine Notwendigkeit für eine Hülle
  • Hieran kann eine weitere Optimierung vorgenommen werden. Man nehme an, dass wir einen Mechanismus haben, um festzustellen, dass zwei Tasks in gegenseitigem Ausschluss (Mutual Exclusion) zueinander ablaufen (das heißt für ein Paar von Tasks x und y, dass auch dann, wenn x von höherer Priorität als y ist, x niemals y unterbrechen kann).
  • Man betrachte diese Systembeschreibung, die die Tasks a und b in gegenseitigen Ausschluss bringt:
    • Task a Priorität 1 verwendet FK;
    • Task b Priorität 2 verwendet FK;
    • Task c Priorität 3;
    • Task d Priorität 4 verwendet FK;
    • Task e Priorität 5;
    • Mutex a, b;
  • Unter der Voraussetzung, dass die Tasks a und b sich in gegenseitigem Ausschluss befinden, können wir daher einen weiteren Ressourcenkontext und eine weitere Hülle entfernen – nur Task d muss den "Ressourcenkontext" speichern und wiederherstellen, da er der einzige Task höherer Priorität ist, der den Status der gemeinsam genutzten Ressourcen beeinflussen kann, so dass in diesem Fall nur Task d mit einer Hülle und einem "Ressourcenkontext" erzeugt werden würde.
  • Es ist darauf hinzuweisen, dass Tasks oder dergleichen dann, wenn sie dieselbe Priorität teilen, in derselben Weise behandelt werden können, als wenn sie sich in gegenseitigem Ausschluss befinden.
  • Man betrachte auch diese Variante:
    • Task a Priorität 1 verwendet FK;
    • Task b Priorität 2;
    • Task c Priorität 3 verwendet FK;
    • Task d Priorität 4 verwendet FK;
    • Task e Priorität 5;
    • Mutex c, d;
  • In diesem System ist es klar, dass beide Tasks c und d eine Hülle benötigen, um den Kontext zu speichern, aber sie können denselben Ressourcenkontext gemeinsam nutzen, da sie sich in gegenseitigem Ausschluss befinden. Die Hüllen können von der Form sein:
    Figure 00090001
  • Auch wenn wir in dieser Beschreibung nur Tasks diskutieren, ist dieses Schema einheitlich unter der Voraussetzung auf Unterbrechungsdienstroutinen (Interrupt Service Routines, ISR) erweiterbar, dass wir eine Unterbrechungsprioritätsreihenfolge feststellen können – so würde jede ISR, die eine bestimmte Ressource verwendet, diese Ressource speichern und wiederher stellen müssen, wenn sie durch eine andere Unterbrechung bzw. einen anderen Interrupt höherer Priorität unterbrochen werden könnte. (Unterbrechungen bzw. Interrupts mit derselben Priorität aber einer unterschiedlichen Entscheidungsreihenfolge werden als in einer Gruppe gegenseitigen Ausschlusses befindlich betrachtet).
  • Ein Algorithmus, der durch ein Offline-Konfigurationswerkzeug zur Festlegung von Ressourcenkontexten und Hüllen verwendet werden könnte, könnte wie folgt sein:
    Figure 00100001
    Figure 00110001
    Figure 00120001
  • Es ist ersichtlich, dass dieser Algorithmus lediglich ein Beispiel einer Art und Weise ist, um Ressourcenkontexte festzulegen. Ausführungsformen der vorliegenden Erfindung können diesen Algorithmus oder jeden anderen geeigneten Algorithmus oder jedes andere geeignete Verfahren verwenden, das denselben oder einen ähnlichen Effekt erzielt.
  • Eine einfache Erweiterung dieses Ansatzes würde es jedem Gerät ermöglichen, mehrere gemeinsam genutzte Ressourcen zu verwenden, wobei optimale Hüllen für jeden Task auf Basis der Ressource(n) erzeugt werden, die er verwendet – man betrachte zum Beispiel das folgende System, das Fließkommaregister und eine digitale Signalprozessoreinheit (DSP-Einheit) hat:
    • Task a Priorität 1 verwendet FK;
    • Task b Priorität 2 verwendet DSP, FK;
    • Task c Priorität 3 verwendet FK;
    • Task d Priorität 4 verwendet DSP;
    • Task e Priorität 5 verwendet DSP, FK;
    • Task f Priorität 6 verwendet FK;
  • In diesem System:
    Task a benötigt keine Hülle (da der Unterbrecher die Ressourcen speichert)
    Task b benötigt eine Hülle, die nur den "FK"-Kontext speichert (er ist der Task niedrigster Priorität, der den "DSP"-Kontext verwendet, so dass er ihn nicht speichern muss)
    Task c benötigt eine Hülle, die nur den "FK"-Kontext speichert
    Task d benötigt eine Hülle, die nur den "DSP"-Kontext speichert (er ist der erste unterbrechende Task, der ihn verwendet)
    Task e benötigt eine Hülle, die beide Kontexte speichert
    Task f benötigt eine Hülle, die nur den "FK"-Kontext speichert.
  • Derartige Hüllen können automatisch aus Codeskeletten erzeugt werden, die durch den Benutzer des Konfigurationswerkzeugs bereitgestellt werden.
  • Das Verfahren des ersten Aspekts kann ferner umfassen, dass Ergebnisse von einem Zeitfolgeanalysewerkzeug (timing analysis tool) mit einem Betriebssystem-Konfigurationswerkzeug in einer solchen Weise integriert werden, dass dann, wenn es durch das Zeitfolgeanalysewerkzeug gezeigt wird, dass ein bestimmter Task niemals einen anderen Task oder andere Tasks unterbricht, mit dem bzw. mit denen er um eine Ressource streitet, nur ein einziger Ressourcenkontext erzeugt wird, wobei der einzige Ressourcenkontext durch die Tasks gemeinsam genutzt wird.
  • Die Rechenvorrichtung des zweiten Aspekts kann ferner ein Zeitfolgeanalysewerkzeug aufweisen, das angepasst ist, um Zeitfolgeanalyseergebnisse mit Ergebnissen von einem Betriebssystem-Konfigurationswerkzeug in einer solchen Weise zu integrieren, dass dann, wenn es durch das Zeitfolgeanalysewerkzeug gezeigt wird, dass ein bestimmter Task niemals einen anderen Task unterbricht, mit dem er um eine Ressource streitet, nur ein einziger Ressourcenkontext erzeugt wird, wobei der einzige Ressourcenkontext durch die Tasks gemeinsam genutzt wird.
  • Das Softwareprodukt des dritten Aspekt kann angepasst sein, um Ergebnisse von einem Zeitfolgeanalysewerkzeug mit einem Betriebssystem-Konfigurationswerkzeug in einer solchen Weise zu integrieren, dass dann, wenn es durch das Zeitfolgeanalysewerkzeug gezeigt wird, dass ein bestimmter Task niemals einen anderen Task unterbricht, mit dem er um eine Ressource streitet, nur ein einziger Ressourcenkontext erzeugt wird, wobei der einzige Ressourcenkontext durch die Tasks gemeinsam genutzt wird.
  • Mit anderen Worten können die Ergebnisse einer Zeitfolgeanalyse, die in ihrer Natur heuristisch sein kann, anstelle von oder zusätzlich zu Ergebnissen von einer formalen Ablaufsteuerbarkeitsanalyse verwendet werden, um Tasks als effektiv in gegenseitigem Ausschluss befindlich zu kennzeichnen. Auf diese Weise wird eine Vervielfältigung von Ressourcenkontexten und/oder Hüllen vermieden.
  • Es ist darauf hinzuweisen, dass eine Zeitfolgeanalyse mit Hilfe eines Zeitfolgeanalysewerkzeugs erhalten werden kann, das Verfahren, wie etwa ratenmonotone Analyse (Rate Monotonic Analysis) und Erweiterungen davon anwendet, um unter anderem festzustellen, wann ein gegebener Task ablaufen könnte, die letzte Zeit festzustellen, zu der der gegebene Task enden könnte, und festzustellen welche anderen Tasks den gegebenen Task möglicherweise unterbrechen können.
  • Man nehme zum Beispiel das folgende einfache periodische System:
    Task t1 Priorität 1 alle 20 Ticks Dauer 5 Ticks Versatz 0 Ticks verwendet FK;
    Task t2 Priorität 2 alle 20 Ticks Dauer 5 Ticks Versatz 2 Ticks verwendet FK;
  • Das Ausführungsprofil dieses Systems ist in 1 der beigefügten Zeichnungen gezeigt. In diesem System unterbricht Task t2 immer Task t1 zwei "Ticks" in seinen Ablauf, wobei das System zu Task t1 zurückkehrt, nachdem t2 nach fünf "Ticks" aufgehört hat, abzulaufen. Da beide Tasks eine Verwendung der Fließkommaregister teilen, muss Task t2 daher ihren Kontext laden und speichern.
  • Man betrachte jedoch das folgende System:
    Task t1 Priorität 1 alle 20 Ticks Dauer 5 Ticks Versatz 0 Ticks verwendet FK;
    Task t2 Priorität 2 alle 20 Ticks Dauer 5 Ticks Versatz 10 Ticks verwendet FK;
  • Das Ausführungsprofil dieses Systems ist in 2 der beigefügten Zeichnungen gezeigt. In diesem System unterbricht Task t2 niemals Task t1 – ein Zeitfolgeanalysewerkzeug kann daher berechtigterweise den Schluss ziehen, dass die Tasks in gegenseitigem Ausschluss ablaufen können, und durch automatische Hinzufügung der Deklaration
    Mutex t1, t2;
    zu der Systemdeklaration kann dies die Erzeugung von Hüllen und Kontextspeicherinformationen für diese zwei Tasks verhindern.
  • Der Ansatz ist auf jede Form von Analyse erweiterbar, die demonstrieren kann, dass für jedes Paar von Tasks x, y keine Bedingung existiert, unter der die Tasks einander unterbrechen können.
  • Zum Beispiel zeigt ein veröffentlichtes Dokument des Standes der Technik mit dem Titel: "How embedded applications using an RTOS can stay within an-chip memory limits" [Robert Davis, Nick Merriam und Nigel Tracey, Tagungsbericht der Sitzung in Arbeit und industrielle Erfahrung, Euromicro-Konferenz über Echtzeitsysteme, Juni 2000.] wie Ablaufsteuerbarkeitsanalyse verwendet werden kann, um Tasks in Mutexe zu sammeln, während sichergestellt wird, dass alle Tasktermine eingehalten werden. Es ist einfach, diese Verfahren so zu erweitern, dass Mutexerzeugung die Kombination von Stapelgröße und Kontextspeicherbereichen minimiert, indem diejenigen Tasks, die ansonsten separate Kontextspeicherbereiche erfordern würden, in Mutexe gruppiert werden.
  • Die bevorzugten Merkmale der Erfindung sind auf alle Aspekte der Erfindung anwendbar und können in jeder möglichen Kombination verwendet werden.
  • Überall in der Beschreibung und den Ansprüchen dieser Spezifikation bedeuten die Wörter "aufweisen" bzw. "umfassen" und "enthalten" und Variationen der Wörter, zum Beispiel "aufweisend" bzw. "umfassend" und "aufweist" bzw. "umfasst", "einschließlich, aber nicht darauf beschränkt" und sind nicht dazu beabsichtigt (und tun es nicht), andere Komponenten, ganze Zahlen, Teile, Hilfsmittel oder Schritte auszuschließen.

Claims (11)

  1. Verfahren zum Verringern der Speicher- oder Prozessorbenutzung in einem Betriebssystem, das präemptive Ablaufsteuerung mit statischer Priorität verwendet, wobei die Ablaufsteuerung eine Vielzahl von Prioritäten aufweist, die einer Vielzahl von Tasks zugeordnet sind, von den jeder einen jeweiligen Ressourcenkontext hat, und wobei die Prioritäten offline festgelegt worden sind, dadurch gekennzeichnet, dass für eine bestimmte Ressource Daten für entsprechende Ressourcenkontexte, die von dem Betriebssystem beim Ausführen der Tasks benötigt werden, bestimmt werden, indem bestimmt wird, welche der Tasks erfordern, dass Ressourcenkontexte zur Verwendung der bestimmten Ressource gespeichert und wiederhergestellt werden, wobei Hüllen oder Zuteiler nur für Tasks vorgesehen werden, die solche Ressourcenkontexte speichern und wiederherstellen müssen, und dadurch, dass der Schritt des Bestimmens von einem oder mehreren von dem Folgenden abhängt: a. Identifizieren von einem der Tasks mit einer niedrigsten Priorität für die bestimmte Ressource und Schließen, dass jeder derartige identifizierte Task nicht ein Task ist, der eine entsprechende Hülle oder einen entsprechenden Zuteiler benötigt, um einen Ressourcenkontext zu speichern und wiederherzustellen, und b. Identifizieren von einem der Tasks, dessen Verwendung der bestimmen Ressource sich mit Verwendungen der Ressource durch einen anderen Task gegenseitig ausschließt, wobei das Identifizieren das Identifizieren von zumindest einem Paar von Tasks der Vielzahl von Tasks umfasst, die einander gegenseitig ausschließend betrieben werden können, und Schließen, das zumindest das Paar von Tasks unter Verwendung gemeinsam genutz ten Codes betrieben werden kann, um einen Ressourcenkontext zu speichern und wiederherzustellen.
  2. Verfahren nach Anspruch 1, bei dem die Schritte des Identifizierens von einem der Tasks der Vielzahl von Tasks mit einer niedrigsten Priorität und des Schließens, dass jeder derartige identifizierte Task nicht ein Task ist, der eine entsprechende Hülle oder einen entsprechenden Zuteiler benötigt, um einen Ressourcenkontext zu speichern und wiederherzustellen, die Schritte aufweisen, einen Task der Vielzahl von Tasks mit einer niedrigsten jeweiligen Priorität in Bezug auf zumindest eine erste gemeinsam genutzte Ressource zu identifizieren und zu schließen, dass der identifizierte Task nicht ein Task ist, der eine Hülle oder einen Zuteiler benötigt, um einen Ressourcenkontext in Bezug auf die zumindest erste gemeinsam genutzte Ressource zu speichern und wiederherzustellen.
  3. Verfahren nach Anspruch 1, bei dem der Schritt des Identifizierens von zumindest einem Paar von Tasks der Vielzahl von Tasks, die sich gegenseitig ausschließend betrieben werden können, und des Schließens, dass zumindest das Paar von Tasks unter Verwendung des gemeinsam genutzten Codes betrieben werden kann, um einen Ressourcenkontext zu speichern und wiederherzustellen, die Schritte aufweist, zumindest ein Paar von Tasks der Vielzahl von Tasks zu identifizieren, die in Bezug auf eine gemeinsam genutzte Ressource einander gegenseitig ausschließend betrieben werden können, und zu schließen, dass zumindest das Paar von Tasks unter Verwendung des gemeinsam genutzten Codes betrieben werden kann, um einen Ressourcenkontext in Bezug auf die gemeinsam genutzte Ressource zu speichern und wiederherzustellen.
  4. Verfahren nach einem der Ansprüche 1 und 3, bei dem der Schritt des Identifizierens von zumindest dem Paar von Tasks der Vielzahl von Tasks, die in Bezug auf eine gemeinsam genutzte Ressource oder anderweitig einander gegenseitig ausschließend betrieben werden können, den Schritt aufweist, diejenigen Tasks der Vielzahl von Tasks zu bestimmen, die niemals zusammen laufen werden, wobei das Bestimmen eine Zeitfolgeanalyse oder eine Ablaufsteuerbarkeitsanalyse des Betriebssystems verwendet.
  5. Verfahren nach einem der Ansprüche 1 bis 4, das den Schritt aufweist, eine einzelne Ressourcenkontextdeklaration zur Verwendung durch das zumindest eine Paar einander gegenseitig ausschließend betreibbarer Tasks zu definieren.
  6. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Tasks Unterbrechungsdienstroutinen sind.
  7. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Schritte des Identifizierens die Schritte aufweisen, Hüllen oder Zuteiler zum Speichern und Wiederherstellen eines Ressourcenkontexts der jeweiligen Ressourcenkontexte für alle Tasks der Vielzahl von Tasks zuzuweisen, redundante Kontexte zusammenzuführen und redundante Hüllen oder Zuteiler zum Speichern und Wiederherstellen eines Ressourcenkontexts der jeweiligen Ressourcenkontexte zu entfernen.
  8. System mit einem Mittel zum Implementieren eines Verfahrens nach einem der vorhergehenden Ansprüche.
  9. Computerprogramm mit Code, der ausgestaltet ist, um bei der Ausführung ein Verfahren oder System nach einem der vorhergehenden Ansprüche zu implementieren.
  10. Computerlesbarer Speicher, der ein Computerprogramm nach einem der vorhergehenden Ansprüche speichert.
  11. Rechenvorrichtung, die einen Speicher, einen Prozessor und ein Betriebssystem aufweist, das präemptive Ablaufsteuerung mit statischer Priorität einer Vielzahl von Tasks verwendet, wobei jeder Task einen jeweiligen Ressourcenkontext und eine jeweilige Ausführungspriorität hat, wobei die Rechenvorrichtung gemäß einem Verfahren nach einem der Ansprüche 1 bis 7 erzeugte Hüllen oder Zuteiler speichert, die vorgesehen sind, um einen Ressourcenkontext der jeweiligen Ressourcenkontexte nur für diejenigen Tasks zu speichern und wiederherzustellen, die dazu in der Lage sind, einen anderen Task oder Code zu blockieren, und wobei die Rechenvorrichtung angepasst ist, um diese Hüllen oder Zuteiler auszuführen.
DE60317500T 2002-04-25 2003-04-16 Weniger aufwendige kontextumschaltung in mit statischen prioritäten gesteuerten betriebssystemen Expired - Lifetime DE60317500T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GB0209479A GB2387931A (en) 2002-04-25 2002-04-25 Reduced-overhead context-saving in static priority scheduled operating systems
GB0209479 2002-04-25
US146654 2002-05-14
US10/146,654 US7082607B2 (en) 2002-04-25 2002-05-14 Reduced-overhead context-saving in static priority scheduled operating systems
PCT/GB2003/001609 WO2003091878A2 (en) 2002-04-25 2003-04-16 Reduced overhead context-saving in static priority scheduled operating systems

Publications (2)

Publication Number Publication Date
DE60317500D1 DE60317500D1 (de) 2007-12-27
DE60317500T2 true DE60317500T2 (de) 2008-10-02

Family

ID=9935502

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60317500T Expired - Lifetime DE60317500T2 (de) 2002-04-25 2003-04-16 Weniger aufwendige kontextumschaltung in mit statischen prioritäten gesteuerten betriebssystemen

Country Status (4)

Country Link
US (1) US7082607B2 (de)
EP (1) EP1770517A3 (de)
DE (1) DE60317500T2 (de)
GB (2) GB2411751A (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003099675A (ja) * 2001-09-20 2003-04-04 Sony Corp 課金対象機器の管理システムおよび管理方法、管理装置、課金対象機器、記録媒体、プログラム
US7752622B1 (en) * 2005-05-13 2010-07-06 Oracle America, Inc. Method and apparatus for flexible job pre-emption
US7844968B1 (en) 2005-05-13 2010-11-30 Oracle America, Inc. System for predicting earliest completion time and using static priority having initial priority and static urgency for job scheduling
US8214836B1 (en) 2005-05-13 2012-07-03 Oracle America, Inc. Method and apparatus for job assignment and scheduling using advance reservation, backfilling, and preemption
US7984447B1 (en) 2005-05-13 2011-07-19 Oracle America, Inc. Method and apparatus for balancing project shares within job assignment and scheduling
WO2008040077A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Multiple communication networks for multiple computers
US7752484B2 (en) * 2006-10-24 2010-07-06 Sap Ag On-demand wrappers of application data with session failover recovery
US8473956B2 (en) * 2008-01-15 2013-06-25 Microsoft Corporation Priority based scheduling system for server
US9015724B2 (en) * 2009-09-23 2015-04-21 International Business Machines Corporation Job dispatching with scheduler record updates containing characteristics combinations of job characteristics
US9652282B2 (en) * 2011-11-08 2017-05-16 Nvidia Corporation Software-assisted instruction level execution preemption
US9632844B2 (en) 2013-12-12 2017-04-25 International Business Machines Corporation Non-preemption of a group of interchangeable tasks in a computing device

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0052713B1 (de) * 1980-11-20 1988-04-27 International Business Machines Corporation ProzeBverwaltungssystem zum Einplanen von Arbeitsanforderungen in einem Datenverarbeitungssystem
US5553002A (en) * 1990-04-06 1996-09-03 Lsi Logic Corporation Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, using milestone matrix incorporated into user-interface
JPH05127926A (ja) * 1991-10-31 1993-05-25 Nec Corp タスク制御装置
US5388219A (en) * 1992-03-02 1995-02-07 International Business Machines Corporation Efficient channel and control unit for host computer
CA2131406C (en) 1993-09-21 2002-11-12 David D'souza Preemptive multi-tasking with cooperative groups of tasks
DE69622832T2 (de) * 1995-05-05 2003-04-10 Apple Computer Vorrichtung und verfahren für kooperative unterbrechungen in einer preemptiven prozessablauffolgeplanungsumgebung
US5799188A (en) 1995-12-15 1998-08-25 International Business Machines Corporation System and method for managing variable weight thread contexts in a multithreaded computer system
US6427162B1 (en) * 1996-05-02 2002-07-30 Sun Microsystems, Inc. Separate code and data contexts: an architectural approach to virtual text sharing
DE69738646T2 (de) * 1996-08-28 2008-11-13 Hitachi, Ltd. Verfahren zur Ausführung eines Prozesses und Betriebsmittelzugriffsverfahren in einem Computer-System
US6438573B1 (en) * 1996-10-09 2002-08-20 Iowa State University Research Foundation, Inc. Real-time programming method
US5954792A (en) * 1996-12-30 1999-09-21 Cadence Design Systems, Inc. Method for schedule validation of embedded systems
US5949994A (en) * 1997-02-12 1999-09-07 The Dow Chemical Company Dedicated context-cycling computer with timed context
US6343338B1 (en) * 1997-04-01 2002-01-29 Microsoft Corporation System and method for synchronizing disparate processing modes and for controlling access to shared resources
US6061709A (en) * 1998-07-31 2000-05-09 Integrated Systems Design Center, Inc. Integrated hardware and software task control executive
EP1785863A3 (de) * 2000-02-29 2007-07-18 Fujitsu Limited Ein Dividierer mit Übertragsicherstellungsaddierer und Volladdierer
US6823472B1 (en) * 2000-05-11 2004-11-23 Lsi Logic Corporation Shared resource manager for multiprocessor computer system
US6721948B1 (en) * 2000-06-30 2004-04-13 Equator Technologies, Inc. Method for managing shared tasks in a multi-tasking data processing system
US20020133530A1 (en) * 2001-03-15 2002-09-19 Maarten Koning Method for resource control including resource stealing
US6904483B2 (en) * 2001-03-20 2005-06-07 Wind River Systems, Inc. System and method for priority inheritance

Also Published As

Publication number Publication date
DE60317500D1 (de) 2007-12-27
EP1770517A2 (de) 2007-04-04
GB2411751A (en) 2005-09-07
GB0511395D0 (en) 2005-07-13
GB2387931A (en) 2003-10-29
US7082607B2 (en) 2006-07-25
US20030204554A1 (en) 2003-10-30
GB0209479D0 (en) 2002-06-05
EP1770517A3 (de) 2007-05-23

Similar Documents

Publication Publication Date Title
DE60217157T2 (de) Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts
DE2714805C2 (de)
DE60317500T2 (de) Weniger aufwendige kontextumschaltung in mit statischen prioritäten gesteuerten betriebssystemen
DE2722099C2 (de)
DE69933515T2 (de) Peripherieprozessor
DE4410775C2 (de) Steuergerät und Arbeitsverfahren eines Betriebssystems für dieses Steuergerät
DE69839194T2 (de) Gerät und verfahren zum initieren hardwarevorrangsmanagement durch softwarekontrollierten registerzugriff
DE2611892C2 (de) Mikroprogramm-Steueranordnung
DE2722124A1 (de) Anordnung zum feststellen des prioritaetsranges in einem dv-system
DE3228405A1 (de) Emulator zur erzeugung einer folge von steuersignalen
WO2006045806A2 (de) Verfahren und vorrichtung zur steuerung eines rechnersystems
DE3121742A1 (de) Mikroprogrammsteuerverfahren und -einrichtung zu dessen durchfuehrung
EP0657044B1 (de) Verfahren zum betrieb eines rechnersystems mit mindestens einem mikroprozessor und mindestens einem coprozessor
DE3700800C2 (de) Einrichtung zur Erzeugung eines Unterbrechungspunktes in einem Mikroprozessor
EP3080668A1 (de) Verfahren zur beeinflussung eines steuerprogramms eines steuergeräts
DE69836056T2 (de) Prozessor mit verringerter Zahl von bedingten Befehlen
DE2235802A1 (de) Verfahren und einrichtung zur pruefung nichtlinearer schaltkreise
DE2622140C3 (de) Einrichtung zur Steuerung manueller Operationen
EP0433315A1 (de) Schaltungsanordnung zur addition oder subtraktion von im bcd-code oder dual-code codierten operanden
DE19727480C1 (de) Computersystem mit Unterbrechungssteuerung
DE2722981B2 (de) Digitales Filter für binäre Signale
DE102012208753A1 (de) Mikrocomputer mit einzelkern
DE19910620C2 (de) Vorrichtung zur Durchführung von Rechenvorgängen
EP1915674B1 (de) Verfahren und vorrichtung zur steuerung eines rechnersystems mit wenigstens zwei ausführungseinheiten und mit wenigstens zwei gruppen von internen zuständen
DE102005051101A1 (de) Verfahren zum Implementieren von Software-Timern und Datenverarbeitungssystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition