RTOS Einführung. Version: Datum: Autor: Werner Dichler

Ähnliche Dokumente
Echtzeitprogrammierung und Echtzeitverhalten von Keil RTX. Frank Erdrich Semester AI 7

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Grundlagen Rechnerarchitektur und Betriebssysteme

Literatur. Betriebssysteme - WS 2015/16 - Teil 13/Scheduling 2

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Domänenmodell: Fadenkommunikation und -synchronisation

Performance Messungen von FreeRTOS und

Prozesse und Prozessmanagement des BS. 1 Unterschied Prozess, Threads. 1.1 Prozess. 1.2 Threads

Ausarbeitung im Rahmen der PG Autolab zum Thema: OSEK 1 -OS. geschrieben von Oliver Botschkowski

Task A Zündung. Task B Einspritzung. Task C Erfassung Pedalwert. J. Schäuffele, Th. Zurawka: Automotive Software Engineering, Vieweg, 2003

OSEK / OSEKtime Ausgewählte Kapitel eingebetteter Systeme

Musterlösung Prüfung WS 01/02

Operating System Kernels

Übung I Echtzeitbetriebssysteme

Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )

Systemsoftware (SYS) Fakultät für Informatik WS 2007/2008 Christian Baun. Übungsklausur

Teil 3: Konzepte von Betriebssystemen

Datentechnik. => Das Rechenergebnis ist nur dann sinnvoll, wenn es rechtzeitig vorliegt. Die Zeit muß daher beim Programmdesign berücksichtigt werden.

Betriebssysteme G: Parallele Prozesse (Teil A: Grundlagen)

Einführung. Anwendung. logischer Adreßraum. Kontrollfluß (Thread) = CPU führt Instruktionen aus. Was charakterisiert einen Kontrollfluß?

Der Scheduler von Windows 2000 Konzepte und Strategien

Test (Lösungen) Betriebssysteme, Rechnernetze und verteilte Systeme

5. Foliensatz Betriebssysteme und Rechnernetze

Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner. Übung 5: Semaphoren

Praktische Lernkarten zum Ausschneiden, Zusammenkleben und Sammeln :-) zur Prüfungsvorbereitung Diplomprüfung. Betriebssysteme

Technische Informatik II

OSEK / OSEKtime - ein Vergleich

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

(a) Wie unterscheiden sich synchrone und asynchrone Unterbrechungen? (b) In welchen drei Schritten wird auf Unterbrechungen reagiert?

Dämon-Prozesse ( deamon )

Ausgewählte Kapitel eingebetteter Systeme

Begriff: Scheduling Planung, Schedule Plan. Verplanung der CPU-Zeit an die Threads (bzw. Prozesse)

Vorbereitung zur Prüfung Echtzeitbetriebssysteme

Übungen zur Vorlesung

Echtzeit-Multitasking

OSEK-OS. Oliver Botschkowski. PG AutoLab Seminarwochenende Oktober AutoLab

Echtzeit-Multitasking

Systemsoftware (SYS) Fakultät für Informatik WS 2008/2009 Christian Baun. Übungsklausur

Der Scheduler von Windows Konzepte und Strategien

Seminar: Mobile Geräte QNX Einführung

Betriebssysteme Betriebssysteme und. Netzwerke. Netzwerke Theorie und Praxis

Systeme 1. Kapitel 5. Scheduling

Technische Informatik 1

Betriebssystembau (BSB)

A Kompilieren des Kernels B Lineare Listen in Linux C Glossar Interessante WWW-Adressen Literaturverzeichnis...

Inhaltsverzeichnis. 2.4 Thread-Systeme. 2.1 Was ist ein Prozess? 2.2 Scheduling. 2.3 Interprozesskommunikation

Einführung in die Echtzeitbetriebssysteme

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Entwurf und Implementierung einer Prozessinterkommunikation für Multi-Core CPUs Workshop Echtzeit 2013

Betriebssysteme. Teil 13: Scheduling

RealTime Linux. Paul Seidel Seminar Prozessteuerung und Robotik WS 08/09 Lehrstuhl BS und Middleware Prof. Polze Hasso-Plattner-Institut Potsdam

Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) von einem Rechner abgearbeitet.

Übersicht. Monoprozessor-Scheduling. Einführung Anforderungen und Thread-Typen Zustandsmodelle

Übung zu Grundlagen der Betriebssysteme. 11. Übung

Parallele Prozesse. Prozeß wartet

RTEMS- Echtzeitbetriebssystem

Betriebssysteme. 4y Springer. Eine kompakte Einführung mit Linux. Albrecht Achilles. Mit 31 Abbildungen

Evaluierung der QoS-Unterstützung in TAO/ACE. Großer Beleg - Zwischenstand. Ansgar Konermann 16. Juli 2002

Echtzeitscheduling (1)

VORSTELLUNG DER DIPLOMARBEIT

Windows CE. Process Control and Robotics. Fabian Garagnon

Wechselseitiger Ausschluss in verteilten Systemen / Elektionsalgorithmen. Özden Urganci Ulf Sigmund Ömer Ekinci

B.5 Prozessverwaltung B.5. Prozessverwaltung Prof. Dr. Rainer Manthey Informatik II 1

Aufbau eines Echtzeit-Betriebssystems für Embedded Systems

Betriebssysteme. Tutorium 2. Philipp Kirchhofer

Übung zu Grundlagen der Betriebssysteme. 10. Übung

, SS2012 Übungsgruppen: Do., Mi.,

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software

6. Juni VO Prüfung Betriebssysteme. Ges.)(100) 1.)(35) 2.)(20) 3.)(45) Bitte verwenden Sie nur dokumentenechtes Schreibmaterial!

Betriebssysteme Teil 11: Interprozess-Kommunikation

OSEK/OSEKtime OS. Friedrich Alexander Universität Erlangen-Nürnberg. Wilhelm Haas 15. Juli 2006

Technische Informatik II

Aufbau eines modernen Betriebssystems (Windows NT 5.0)

Threads and Scheduling

Betriebssysteme (BTS)

5) Realzeitscheduling

Softwarelösungen: Versuch 4

Scheduling in Echtzeitbetriebssystemen. Prof. Dr. Margarita Esponda Freie Universität Berlin

Linux RT-Preempt Echtzeitkenngrößen ermitteln und testen. Embedded Testing 2017 Thomas Maierhofer Consulting

OSEKtime - Time-Triggered OSEK/OS

Embedded OS für ARM Cortex Microcontroller

CPU-Scheduling - Grundkonzepte

2. Aufgabenblatt Threads

Verteilte Systeme. Verteilte Systeme. 5 Prozeß-Management SS 2016

Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008

Basisinformationstechnologie I Wintersemester 2011/ November 2011 Betriebssysteme

Übungen zur Vorlesung

Scheduler. Optimierung des Schedulings. Gliederung. Allgemeine Ziele. Synchronisationsprotokolle

Real-Time Operating Systems Ein Überblick

Systeme I: Betriebssysteme Kapitel 7 Scheduling. Maren Bennewitz

4. Übung - Rechnerarchitektur/Betriebssysteme

1.5 Betriebssysteme für RT- Anwendungen: Echtzeitbetriebssysteme

Zusammenfassung Modul 223

Windows 2000 Scheduler

> Übung Betriebssysteme Globalübung 3 Michel Steuwer Wintersemester 2012/13

Moderne Betriebssysteme. Kapitel 8. Kapitel 8. Folie: 1. Multiprozessorsysteme. Autor: Andrew S. Tanenbaum

Round-Robin Scheduling (RR)

msw / Kern MiniOS 1/14 Betriebssysteme Einige Begriffe und Grundlagen Anhang zu "MiniOS, ein Minibetriebssystem für Mikrocontroller"

Transkript:

RTOS Einführung Version: 0.0.1 Datum: 20.07.2013 Autor: Werner Dichler

Inhalt Inhalt... 2 RTOS... 3 Definition... 3 Anforderungen... 3 Aufgaben... 3 Eigenschaften... 4 Einteilung der Betriebssysteme... 5 Kernel Design... 6 Dispatcher... 6 Task Zustände... 7 Scheduling Mechanismen... 7 Synchronisation... 8 Kommunikation... 12 Seite 2 von 12

RTOS Definition RTOS = Real Time Operating System Der Begriff Echtzeit beschreibt in der Datenverarbeitung die Eigenschaft, dass bei der Eingabe, Verarbeitung und Ausgabe die zeitlichen Anforderungen, welche durch das System vorgegeben sind, erfüllt werden müssen. Anforderungen Rechtzeitigkeit... unabhängig von der Schnelligkeit Gleichzeitigkeit... scheinbar gleichzeitiges Abarbeiten von Tasks Determiniertheit... bei jeder Kombination von Eingangsgrößen ist die Reaktionszeit in festen zeitlichen Grenzen vorhersagbar Unterbrechbar durch Interrupts und Traps m P i C i... Anzahl der periodischen Ereignisse... Auftritts-Periode des Ereignisses i... Abarbeitungs-Zeit des Ereignisses i Formel 1 Echtzeitfähigkeit Ein System ist Echtzeitfähig wenn obige Forderung erfüllt wird. Wenn z.b. drei Ereignisse mit den Eigenschaften unterhalb verarbeitet werden müssen, ergibt sich ein Grad der Auslastung U von 0.85. Das bedeutet, dass das System noch Echtzeitfähig ist. P 1 = 100ms, C 1 = 50ms U 1 = 0.5 P 2 = 200ms, C 2 = 30ms U 2 = 0.15 P 3 = 500ms, C 3 = 100ms U 3 = 0.2 Aufgaben Ein echtzeitfähiges Betriebssystem sollte die oben genannten Anforderungen erfüllen. Für die Erfüllung ergeben sich einige Aufgaben. Meistens wird mit einem Betriebssystem des Weiteren versucht, das System mit einer Architektur zu versehen. Somit entstehen weitere Abstrahierungsstufen, welche bei großen Systemen den Überblick fördern. Taskverwaltung... ausführen, anlegen, löschen Speicherverwaltung... anfordern, freigeben Synchronisationsmöglichkeiten... Unterbrechungen unterbinden Kommunikationsmöglichkeiten... Kommunikation zwischen Tasks Abstrahierung der Hardware... Hardware Abstraction Layer (HAL), Treiber Seite 3 von 12

Eigenschaften Bei der Auswahl eines Betriebssystems bzw. bei der Implementierung eines eigenen Betriebssystems ist der Overhead, der durch demselben verursacht wird, ein wichtiges Kriterium. Große und mächtige Betriebssysteme haben oft den Nachteil, dass sie selbst viele Ressourcen in Anspruch nehmen. Dem gegenüber sind kleinere Betriebssysteme Leichtgewichte. Diese bieten dafür keine umfangreiche Funktionalität, welche die Entwicklungsarbeit erleichtern würde. Programmspeicher-Bedarf RAM-Bedarf Dauer eines Task-Wechsels Seite 4 von 12

Einteilung der Betriebssysteme Synchrone Programmierung Die Verarbeitung wird in Zeitscheiben aufgeteilt. Jede Zeitscheibe hat eine definierte maximale Dauer und einen bestimmten Startzeitpunkt. Die Ausführung der Teilprogramme darf die Dauer einer Zeitscheibe nicht überschreiten. Bild 1 Synchrone Programmierung Kooperatives Multitasking Die Verarbeitung wird in Tasks aufgeteilt. Dabei muss ein Task-Wechsel vom aktuell laufenden Task zugelassen werden. Bild 2 kooperatives Multitasking Preemptives Multitasking Die Verarbeitung wird in Tasks aufgeteilt. Jeder Task kann jeder Zeit durch höher-priore Tasks unterbrochen werden. Bild 3 preemtives Multitasking Seite 5 von 12

Kernel Design Bild 4 Kernel Design Dispatcher Der Dispatcher übergibt den nächsten Task, der als nächster für die Ausführung ausgewählt wurde, die Kontrolle über den Prozessor. Vor dem Task Wechsel muss der zuvor laufende Tasks gesichert werden (Stack, Register und Position im Programm). Bild 5 Bsp. für Task Kontext speichern/wiederherstellen Seite 6 von 12

Task Zustände Ein aktiver Task kann unterschiedliche Zustände annehmen. Mit der Information des Zustandes kann das Betriebssystem die Ausführung besser organisieren. Somit wird ein Task, der auf ein Ereignis wartet, nicht aufgerufen, solange das Ereignis nicht eingetreten ist. Laufend (Running)... wird zur Zeit ausgeführt Bereit (Ready)... zur Ausführung bereit Wartend (Waiting)... wartet auf ein Ereignis, Ressource,... Ruhend (Idle)... Periode abgeschlossen, wartet auf nächste Periode Bild 6 Zustandsübergänge Scheduling Mechanismen Der Scheduler ist für das optimale Zuteilen des Prozessors zuständig. Die zur Ausführung bereiten Tasks werden nach unterschiedlichen Kriterien priorisiert (zugewiesene Priorität in Verbindung mit weiteren Eigenschaften). Grundsätzlich sollten die Tasks mit hoher Wichtigkeit schnell abgearbeitet werden. Des Weiteren sollten keine Tasks zu lange nicht abgearbeitet werden, also nicht verhungern. Earliest Deadline First... Task mit frühesten Deadline hat höchste Priorität (Deadline wird im Design festgelegt) Rate Monotonic Scheduling... kürzeste Periode hat höchste Priorität (Periode und Laufzeit wird im Design festgelegt) Deadline Monotonic Scheduling... Priorität aufgrund relativer Deadlines Round Robin Scheduling... abwechselnde Abarbeitung Ein statisches Scheduling ist bei einer Überlast stets vorhersagbar. Das dynamische Scheduling ermöglicht höhere Prozessor-Auslastungen, produziert aber ein unvorhersehbares Verhalten. Seite 7 von 12

Synchronisation Synchronisations-Mechanismen ermöglichen das Verriegeln eines Programmabschnittes, der nicht unterbrochen werden darf. Es gibt unterschiedliche Gründe, wodurch eine Verriegelung notwendig wird. Grundsätzlich wird sie benötigt, wenn zwei unterschiedliche Task auf die selbe Ressource zugreifen und eine Race Condition entstehen könnte. Bild 7 Race Condition Beispiel An dem Beispiel oberhalb kann man erkennen, dass eine Race Condition auf Ebene der Hochsprache nicht einfach zu identifizieren ist. Bei dem Beispiel wird die Zähler-Variable statt zweimal nur einmal erhöht, da der Task 1 den veralteten Wert erhöht und zurück schreibt. Das Debuggen von einer Race Condition ist nur schwierig möglich. Das Auftreten einer Race Condition hängt stark von der Ausführungsfolge der Tasks ab. Da das Debuggen selbst das Laufzeitverhalten verändert, tritt die Race Condition nur mehr mit einer sehr geringen Wahrscheinlichkeit auf. Semaphore / Mutex Mit einem Semaphore kann eine Ressource in Anspruch genommen werden. Der Semaphore ist so Konfiguriert, dass die Ressource je nach Anzahl der gleichzeitigen Verfügbarkeit verwendet werden kann. Stellt die Ressource z.b. ein Puffer mit 5 Elementen dar, so kann die Ressource 5 mal in Anspruch genommen werden. Wurde die Ressource zur Gänze in Anspruch genommen, so wird der nächste Task informiert bzw. gleich ruhend gestellt. Ein Mutex (Mutual Exclusion) ist ein Semaphore mit einem Zähler gleich 1. Also gleichzusetzen mit einem binären Semaphore. use()... Beanspruchen einer Ressource; wenn nicht frei, wird Task ruhend gestellt unuse()... Freigabe der Ressource request()... Abfrage ob Ressource frei; wenn frei, wird die Ressource in Anspruch genommen Seite 8 von 12

Bild 8 Mutex Critical Section Bei der Critical Section wird üblicherweise der Scheduler deaktiviert. Somit kann der aktuell laufende Task von anderen höher-prioren Tasks nicht unterbrochen werden. Hardware Interrupts werden dennoch ausgeführt. Da innerhalb einer Critical Section der Scheduler zur Gänze deaktiviert ist, sollte der Einsatz auf möglichst kurze und zeitkritische Abschnitte beschränkt werden. Eine Critical Section ist gegenüber einem Semaphore oder Mutex schneller und verursacht somit selbst weniger Overhead. enter_cs()... eine Critical Section betreten leaf_cs()... eine Critical Section verlassen Bild 9 Critical Section Seite 9 von 12

Deadlock Werden in einem Programmabschnitt mehrere Ressourcen gleichzeitig verwendet, so kann es zu einem zusätzlichen Problem führen - einem Deadlock. Bei einem Deadlock haben sich zwei Task, die die gleichen Ressourcen verwenden möchten, in einem Zustand gebracht, wo beide Tasks blockiert und nicht mehr lauffähig sind. Bild 10 Deadlock Beispiel Deadlock Bedingungen: Eine Ressource kann genau einem Task zugeordnet sein bzw. noch verfügbar sein. Tasks können mehrere Ressourcen anfordern. Die Ressourcen können nur vom eigenen Task freigegeben werden. Es müssen mehrere Tasks auf eine Ressource des anderen Tasks warten. Wird eine der Bedingungen für Deadlocks nicht erfüllt, so können sie einfach vermieden werden: Alle benutzten Ressourcen auf einmal anfordern. Ressourcen durchnummerieren und immer in gleicher Reihenfolge anfordern. Beim Anfordern immer nur eine Anfrage machen. Ist die Ressource nicht frei, werden sämtliche bereits angeforderten Ressourcen wieder freigegeben. Seite 10 von 12

Prioritätsinversion Blockiert ein nieder-priorer Task einen anderen höher-prioren Task durch die Verwendung einer Ressource, so kann die Dauer der Blockierung noch Verlängert werden, wenn ein etwas höherpriorer Task abgearbeitet wird. Somit kann es vorkommen, dass ein sehr wichtiger Task lange verzögert wird. Bild 11 Prioritätsinversion Die Verzögerung kann Verhindert werden indem der niedrig-priore Task die Priorität des wartenden hoch-prioren Tasks übernimmt. Nachdem der zwischenzeitlich aufgestufte Task die belegte Ressource freigibt, verringert sich wieder dessen Priorität und er kann wieder von etwas höher-prioren Tasks unterbrochen werden. Diesen Vorgang nennt man Prioritätsvererbung. Bild 12 Prioritätsvererbung Seite 11 von 12

Kommunikation Betriebssysteme bieten unterschiedliche Möglichkeiten an, um Informationen zwischen den Tasks auszutauschen. Die angebotenen Mechanismen sind oft bereits geschützt vor Race Conditions. Somit kann der zusätzliche Implementierungsaufwand minimieren werden, der andernfalls immer durchzuführen wäre. Shared Memory Ein Shared Memory ist ein bestimmter Speicherbereich, der von mehreren Tasks verwendet werden kann. Bei der Verwendung dieses Speichers ist der Zugriff nicht geregelt. Somit muss man selbst dafür sorgen, dass keine Race Condition entsteht. Ein Shared Memory kann als Block oder als Ring-Puffer ausgeführt werden. Mailbox Eine Mailbox wird vom Betriebssystem verwaltet und ist als FIFO ausgeführt. Die Größe und Anzahl der Mails ist begrenzt. CreateMB()... Mailbox anlegen (Anzahl und Größe der Mails festlegen) PutMail()... Mail eintragen GetMail()... Mail abrufen Message Queue Eine Message Queue entspricht einer Mailbox, wobei ein Pointer übergeben wird. Somit können Nachrichten mit unterschiedlicher Größe ausgetauscht werden. Der Empfänger muss im Anschluss der Verwendung der Daten die Message löschen. CreateMsgQueue()... Message Queue anlegen (Anzahl der Nachrichten festlegen) SendMsg()... Nachricht versenden ReceiveMsg()... Nachricht empfangen Event Mit Hilfe eines Events kann einem Task mitgeteilt werden, dass ein Ereignis aufgetreten ist. Ein Task der auf ein Ereignis wartet benötigt keine Prozessor-Ressourcen. SignalEvent()... Signalisiert ein Event an einen ausgewählten Task WaitEvent()... Warten auf einen/mehreren Event/s WaitEventTimed()... Warten auf einen/mehreren Event/s, mit Timeout Seite 12 von 12