mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Echtzeit


Autor: Eder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich muss Echtzeitfähigkeit für Betriebssysteme wie Windows XP
definieren und soll in weiterer Folge diese Definition mit der
Echtzeitfähigkeit für die Automatisierungstechnik vergleichen. Hat
jemand eine Idee, wo man die Definition der Echtzeitfähigkeit für
Windows XP herbekommt oder gibt es irgendwo vielleicht einen Bericht
Betriebssystem vs. Automatisierungstechnik.
Ich wäre sehr dankbar für jede Info.
Vielen Dank!
lg Eder

: Gesperrt durch Moderator
Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Echtzeit bedeutet, es gibt eine definierte maximale Reaktionszeit, die
nie überschritten werden kann.

Nach dieser Definition ist XP generell nicht echtzeitfähig, da
Programme alle anderen beliebig lange behindern können.

Um Echtzeit nachträglich auf XP auzupfropfen benötigt man spezielle
Systemerweiterungen.

Eine andere häufig praktizierte Methode ist daher, man hat eine
PC-Einschubkarte mit einem extra MC drauf, der selber alles Echtzeitige
macht und XP ist dann nur noch das GUI.

Konkrete Angaben zur Echtzeit findet man also nur bei den Herstellern
der PC-Karten oder der Echtzeitsoftware, nicht aber bei Winzigweich.


Peter

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da stimme ich Peter voll und ganz zu ;)
XP hat zwar ein gewichtetes Task-Scheduling mit Round-Robin, nur selbst
auf der Treiberebene wird die Zeit nicht durch XP bestimmt, sondern
durch den Treiber selbst :(
Daher gibt es so nette Effekte, wie 100% Systemlast samt eingefrorener
GUI bei besch* programmierten Treibern :(
Echtzeit für PC ist mit entsprechenden modifizieren Linux und BSD
Varianten möglich, z.B. http://www.realtimelinuxfoundation.org/
Es gibt kein Echtzeit XP o.ä., das wird wie Peter schon gesagt hat
durch einen Echtzeit-Controller mit extra Board realisiert.
In der Automatisierungstechnik kommen sowieso entweder reine µCs ohne
OS zum Einsatz oder Maschinen mit RT/OS bzw. vergleichbaren
Realtime-Betriebssystemen.
Da der Einsatzbereich komplett unterschiedlich ist, alleine vom Ansatz
her lassen sich die OS kaum vergleichen.
Außer man nimmt auch gleich die berühmten Äpfel und Birnen mit hinein
;)
Mein Euro,
Markus

Autor: RTC (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus und Peter ich muss Euch beide widersprechen!

Es kommt immer auf die Definition bzw. Anforderung der Echtzeit an.

>Echtzeit bedeutet, es gibt eine definierte maximale Reaktionszeit,
>die nie überschritten werden kann.

Diese Definition ist richtig!

Aber paar Beispiele sollen verdeutlichen, warum es so viele
"Mogelpackungen" bezüglich Echtzeit gibt.

1. Beispiel
Man möchte jedes Jahr mitbekommen, d.h. die Reaktionszeit muss kleiner
365 Tage sein --> XP schaft dies, in diesem Fall ist XP Echtzeitfähig!

2. Beispiel
Man möchte schalten wenn 1 Liter Wasser 80°C erreicht hat. Genauigkeit
1°C. Das Wasser wird mit einem 100W Wasserkocher erwärmt.
Hier reicht es aus, alle paar Sekunden die Temperatur zu messen.
XP schaft dies, in diesem Fall ist XP Echtzeitfähig!

3. Beispiel
Bei einem Auto-Unfall soll der Airback innerhalb 10ms auslösen.
XP --> no Change!

4. Beispiel
Bei einem Teilchenbeschleuniger soll der Crash zweier Protonen
aufgezeichnet werden. Reaktionszeit < 1fs (0,000000000000001sec).
Schaft kein Mikrocontroller bzw. Elektronik.

Wie Ihr seht, ist "echtzeitverhalten" immer eine Definition der
Anwendung (Reaktionszeit von  10^7 ... 10^-15 Sekunden).

XP ist echtzeitfähig bei Zeiten bis ca. 100ms (???), wenn es besonders
eingerichtet ist, d.h. nur wirklich notwenige Kernel-Tasks, d.h. keine
Bildschirmschoner, Virenscanner, USB-Treiber, Aktiv-X, CD-Brenner etc.
Und die Hardware muss stabil laufen.

Da jedoch ein PC (Hardware und Software (MS, Linux, etc.)). Nie 100%ig
kalkulierbar ist, sind für priore industrielle Anwendungen PC's NIE zu
empfehlen.

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"
1. Beispiel....
2. Beispiel....
"

Falsch! Windows kann auf Grund seines Taskskonzepts eben nicht
garantieren das einer der laufenden Task das komplette System nicht für
10 Jahre lahmlegen kann. D.h. ein schlecht programierter Treiber oder
eine normale Ring3 Anwendung die per SetThreadPriority() und
SetPriorityClass() auf höchster Stufe läuft, kann das komplette System
lahm legen. Wie lange dies nun dauert hängt einzigst und allein von
diesem Treiber oder Anwendung ab. Solche Anwendungen wie "mit GiveIO
mal eben die Ports direkt programmieren" sind solche Kandidaten
dafür.

Ein Echtzeitsystem muß aber GARANTIEREN können das die Antwortzeiten
innerhalb gewisser Grenzen liegen, und das kann Windows eben nicht.

Das kann auch Linux nicht und fakto keine Software überhaupt, denn
diese Garantie ist gleichermaßen eine Garantie für eine absolut
fehlerfrei Software und Hardware.

Gruß Hagen

Autor: Sven Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin...

naja, also die "Garantie" wird innerhalb des normalen Betriebs
gegeben. Das OS muss von der Anlage her "nur" dazu fähig sein,
innerhalb der Zeit zu antworten. Wenn es keine Methode gibt, die
Aufgabe/Thread/Task länger zu blockieren, ist es echtzeitfähig.

Selbst mein µC hier mit 10 Zeilen C-Code in der Endlösschleife hat
furchtbar miese Durchlaufzeiten.... wenn der Vorschlaghammer
draufgefallen ist. Aber bis dahin habe ich doch eine ziemlich gute
Vorstellung über das Zeitverhalten.

--
 Sven Johannes

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sinnfreie Aussage.
Denn dann existiert überhaupt kein Echzeitsystem.

Von 100%iger Fehlerfreiheit geht man nie aus. Bei keinem System.
Ergo: Es gibt Echtzeitsysteme.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal die englische wiki dazu:
http://en.wikipedia.org/wiki/Real_time_operating_system
Zitat:
"An RTOS facilitates the creation of a real-time system, but does not
guarantee the finished product will be real-time; this requires correct
development of the software. Nor does an RTOS necessarily have high
throughput. Rather, they guarantee that system deadlines can be
met—generally with specialized scheduling algorithms and deterministic
behavior. That is, an RTOS is valued more for how quickly and/or
predictably it can respond to an event than for the speed of work. Key
factors in an RTOS are therefore minimal interrupt and thread switching
latency."

Grob übersetzt bedeutet es, das ein Echtzeitbetriebssystem eine exakte
Vorhersage des gesamten Zeit-Verhaltens garantieren muß.
Genau das fehlt bei Windows, Linux & Co. da das Scheduling eben nicht
vorhersagbar ist !
Die Ansätze bei oben genannten Echtzeit-Linux basieren darauf, das die
Priorität des Linux selbst auf niedrigstem Niveau gehalten wird,
während die Prozesse in einem Echtzeit-Task laufen, der die höchste
Priorität hat und zusätzlich durch Einschränkung der maximalen CPU-Zeit
pro Task die Forderung nach genau berechenbaren Zeiten erfüllt.
Das ließe sich theoretisch auch mit Windows machen, wenn man denn den
Source-Code für den Scheduler ändern könnte ...
Wenn natürlich jemand eine Formel hier 'reinstellt,
wie ich berechnen kann wann mein Virenscanner mit der Überprüfung der
Datei hallo_ich_bin_ein_wurm.zip von 100MB Größe fertig ist während ich
gerade ein aktuelles 3D Spiel Spiele und mein FTP client eine aktuelle
Linux Distribution zieht, lasse ich mich gerne eines besseren belehren
;)
Mein Euro,
Markus

Autor: voge (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
WinXP ist nur mit einem Trick echtzeitfähig.
Mit solchen Aussagen wie „RTC“ das gemacht hat, dass alle 10 min. die
bestimmte Reaktion bearbeite ist. Ist WischiWashi.
Wenn du ein Echtzeitfähiges System mit Windows XP haben möchtest,
brauchst du Windows CE (was so gut wie Echtzeitfähig ist). Die zwei
Betriebssysteme laufen parallel auf einem Rechner. Kommt ein Interrupt,
so schalte WinXP sofort zu WinCE um. Hier wird der eingegangene
Interrupt bearbeitet. Die Treiber müssen natürlich sauber programmiert
sein.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@voge:
Kannst Du mir mal erklären, wie zwei Betriebssysteme gleichzeitig
laufen sollen ?
Zudem müßte sich Windows CE ja in die Treiber-Queue von XP einklinken,
um jeden einzelnen IRQ abzufangen ?
Weil ansonsten ist es wieder nicht Echtzeitfähig, da ja nach Deiner
Aussage nur die IRQs umgesetzt werden, doch was passiert wenn der nicht
für einen Echtzeittask bestimmt ist und CE nicht übernimmt ?
Dann muß doch zwangsläufig die IRQ-Routine von XP übernehmen, was
wiederum .........
Also ist Deine Aussage mehr als fragwürdig !

Autor: s4ll4c (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja, er hat aber Recht mit seiner Aussage.

Das Paradebeispiel ist Realtime Linux. Ein abgespeckter Linux Kernel hat 
Echtzeitfähigkeit. Das normale Linux läuft in einem eigenem Thread des 
abgespeckten Kernels. Interrupts werden vom Kernel behandelt und an das 
standard Linux durchgereicht.

Deshalb ist für mich RT Linux kein wirkliches Echtzeitbetriebssystem.

Ich weiss nicht, ob es so ein Projekt auch für Windows CE und Windows XP 
gibt, aber dass 2 Betriebsysteme auf einem Rechner gleichzeitig laufen 
ist nichts ungewöhnliches.

Ein anderes Beispiel ist ein virtuelles Windows XP Betriebssystem, das 
auf einem normalen Windows XP Betriebssystem läuft.  (z.B. Schutz des 
"normalen Betriebssytems" vor Viren, falscher Konfiguration, ...)

Autor: Jörg B. (manos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dir ist schon bewusst, dass das letzte Posting 11 Monate zurücklag? :)

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Dir ist schon bewusst, dass das letzte Posting 11 Monate zurücklag? :)
Wenn du jetzt auch noch vorhersagen kannst, wann das nächste von wem 
kommt, ist es Echtzeit...;-)

Autor: TJ-Anders (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum ist Windows XP,-Vista,-7 nicht Echtzeitfähig?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du deine Vorgnängerthreads gelesen?
Wenn ja, war daran etwas unklar?
Wenn ja, fang einen neuen Thread mit einer konkreten Frage an und grab 
nicht alte Leichen aus.

Danke.

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.