kramann.info
© Guido Kramann

Login: Passwort:










COACH2
1 Planung
2 Architektur
3 Anzeige
4 EEPROM
5 I2C
..5.1 MasterSendByte
..5.2 MasterSend2Bytes
..5.3 MasterReceiveByte
..5.4 MasterReceive2Bytes
6 UART
7 DFT
8 FFT
9 Planung2
10 Klassen
..10.1 AnzeigeTaster
..10.2 RS232
..10.3 MotorServo
..10.4 Drehgeber
..10.5 Sensor
..10.6 Funk
11 Adaption
..11.1 Programmiertechnik
..11.2 Evoopt
12 Fuzzy
..12.1 Uebungsaufgabe
..12.2 Fuzzygroesse
..12.3 Fuzzyset
..12.4 Lookuptable
13 Skript
..13.1 Funkkorrektur
..13.2 Skriptsprachen
..13.3 Anforderungen
..13.4 Agentensysteme
..13.5 Implementierung
..13.6 Experimente
14 Gesamtkonzept
..14.1 Skripterweiterung
..14.2 Makroverhalten
67 Echtzeitsysteme
..67.1 Einfuehrung
....67.1.1 Echtzeit
....67.1.2 Korrektheit
....67.1.3 Hardware
....67.1.4 Ziele
....67.1.5 Synchronprogramm
..67.2 Threads
....67.2.1 Java
....67.2.2 Synchronisierung
..67.3 COACH
....67.3.1 Kaskadenregler
....67.3.2 Zeitebene1
....67.3.3 Zeitebene2
....67.3.4 Zeitebene3
....67.3.5 Puck
....67.3.6 Puckschwarm
..67.4 RTAIlab
....67.4.1 Slax
....67.4.1 USB_Stick
....67.4.2 Sinus
..67.5 Semaphor
....67.5.1 Laufkatze
....67.5.2 Java
....67.5.3 Semaphor
..67.6 Audio
....67.6.1 wav
....67.6.2 Linux
..67.7 Lookup
....67.7.1 Fuzzy
....67.7.2 PWM
..67.8 NeuronaleNetze
....67.8.1 Neuron
....67.8.2 Backpropagation
....67.8.3 Umsetzung
....67.8.4 Winkelerkennung
..67.9 Internetprogrammierung
....67.9.1 Codegenerierung
....67.9.2 PHP_Programmierung
....67.9.3 PHP_OOP
....67.9.4 Java
....67.9.5 UDP
..67.10 DFT
..67.11 FFT
..67.12 Zustandsmaschine
..67.13 Fuzzy
....67.13.1 Fuzzylogik
....67.13.2 FuzzyRegler
....67.13.3 Uebung9
....67.13.5 Softwareentwicklung
......67.13.5.1 AgileSoftwareentwicklung
......67.13.5.2 FuzzyRegler
......67.13.5.3 Uebung
....67.13.6 Umsetzung
......67.13.6.1 FuzzyRegler
......67.13.6.2 Simulation
......67.13.6.3 Optimierung
......67.13.6.4 Uebung
....67.13.7 Haengependel
......67.13.7.1 Haengependel
......67.13.7.2 Simulation
......67.13.7.3 FuzzyRegler
......67.13.7.4 Optimierer
......67.13.7.5 Genetisch
....67.13.8 Information
....67.13.9 Energie

67.2 Parallelisierung von Prozessen

  • Wie am Beispiel des Echtzeitlinux bereits dargestellt, sorgt bei PCs ein Scheduler dafür, dass die verfügbare Prozeßzeit in Zeitscheiben aufgeteilt wird und diese abhängig von der Priorität der aktiven Prozesse auf diese verteilt wird.
  • Die Abarbeitung eines einzelnen Programmes erfolgt dadurch nicht kontinuierlich, sondern in kleine Zeitabschnitte aufgeteilt.
  • Diverse Programmiersprachen bieten die Möglichkeit, den eigenen Prozeß in mehrere Prozesse aufzuspalten/zu gabeln "fork" und festzulegen, welche Codeteile welchem Prozeß zugeordnet werden sollen.
  • Solche parallel ablaufende Teilprozesse werden als Threads bezeichnet.
  • Wenn diese Teilprozesse weitgehend unabhängig voneinander ablaufen, spricht man auch von nebenläufigen Prozessen.
  • Thread heißt wörtlich übersetzt Garn/Faden/Strang, womit angezeigt wird, dass auch wenn die Abarbeitung des Threads stückweise geschieht, es dahinter einen zusammenhängenden Prozeß gibt. Die Zeitscheiben verschiedener Threads sind sozusagen wie die Fäden eines Stoffes in der Zeit miteinander verwoben.
  • Alternativ zu Thread wird auch der Begriff Task (Aufgabe) verwendet.

Softwareentwurf bei Echtzeitsystemen

  • Bei einem Echtzeitsystem treten in der Regel eine Vielzahl an Aufgaben auf, die durch geeignete Teilprogramme erledigt werden sollten.
  • Solche Module werden dann genauer unter folgenden Aspekten untersucht:
  • Wie lange dauert die Abarbeitung der einzelnen Module?
  • Bestehen Abhängigkeiten zwischen den Modulen, benötigt Modul A beispielsweise Daten, die von Modul B bereitgestellt werden müssen?
  • Lassen sich voneinander unabhängige Module parallel abarbeiten?
  • Lassen sich Module, die sehr lange zu ihrer Abarbeitung benötigen in eine Folge kleinerer Module zerlegen?
  • Lassen sich die so entstandenen Teilmodule parallelisieren?
  • Oder spezieller: Können mehrere Teilprozesse M1, M2, M3 parallel Berechnungen ausführen, die dann, wenn alle drei fertig sind von einem Folgeprozeß verwendet werden können. Müssen diese Teilprozesse wieder zusammengeführt werden "join".
  • Den Ablauf diverser Module/Teilprozesse kann man mit Hilfe s.g. Prozeßfluss-Graphen visualisieren:
Verwendung von Prozeßfluss-Graphen zur Visualisierung des Zusammenspiels verschiedener Teilprozesse.

Bild 67.2-1: Verwendung von Prozeßfluss-Graphen zur Visualisierung des Zusammenspiels verschiedener Teilprozesse.