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 User
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
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
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.
" 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
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
Sinnfreie Aussage. Denn dann existiert überhaupt kein Echzeitsystem. Von 100%iger Fehlerfreiheit geht man nie aus. Bei keinem System. Ergo: Es gibt Echtzeitsysteme.
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 metgenerally 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
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.
@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 !
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, ...)
>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...;-)
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.