Multithreading per MFC unter W2K auf Dual-Prozessor-PC

Größe: px
Ab Seite anzeigen:

Download "Multithreading per MFC unter W2K auf Dual-Prozessor-PC"

Transkript

1 Labor für Computertechnik Leitung : Prof. Dr. T. Risse Wintersemester 2002 / 2003 Multithreading per MFC unter W2K auf Dual-Prozessor-PC Von Peter Klammer TI 8 I und Jens Gardewin TI 8 I Vortragsdatum :

2 I. Vorwort Diese Ausarbeitung wurde im Rahmen des Labors für Computertechnik erstellt, um einen kleinen Eindruck vom Aufwand zu vermitteln den Entwickler von Betriebssystemen, Anwendungen und Compilern gleichermaßen betreiben, um Multithreading unter Microsoft Foundation Classes und Windows 2000 zu ermöglichen. Wir setzen Grundkenntnisse im Bereich der Betriebssysteme und im Programmieren voraus, da wir im Rahmen dieses Dokumentes lediglich eine kurze Zusammenfassung der Grundlagen liefern können. Im Rahmen unserer Arbeit ist ein Test-Programm entstanden, welches hier näher vorgestellt werden wird und die Grundlage unserer abschleißenden Beurteilung von Multithreading bildet. Seite 2 von 32 Datum:

3 II. Inhaltsverzeichnis I. Vorwort...2 II. Inhaltsverzeichnis Begriffserklärung Was ist ein Thread? Mechanismen zum Speicherschutz (vor gegenseitigem Zugriff) Was ist ein Semaphor? Was versteht man unter einer Mutex? Was ist ein Software-Monitor? Allgemeines zu Events Event - Realisierung und Fairness : Critical Section (administratives Sperren) Abschließender Vergleich der vorangegangenen Mechanismen : Scheduling Threading unter Windows Priorisierung von Threads unter Windows Priorisierung von Threads in zwei Stufen Wie uns Windows dazwischenfunkt! Prioritätsstufen unter Windows Ändern von Prioritäten Ändern von Prioritäten im Task - Manager Kommando zur Prioritätsänderung Thread Zustandsfolge unter Windows Grundlagen zum Threading in Visual C++ 6.0/.NET Wie wird ein Thread unter Visual C++ repräsentiert? Der Unterschied zwischen einem Arbeits- und einem Windowthread Erstellen eines Arbeitsthreads Zerstören eines Threads Seite 3 von 32 Datum:

4 4.4. Pro und Contra der Benutzung von (mehreren) Threads Semaphore, Mutex und Critical Sections als Klassendefinition der MFC Das Beispielprogramm Einführung Funktionsweise Messmethode / Genauigkeit Ergebnis Single Prozessor Dual Prozessor Multiprozessorsysteme Der Source-Code Fazit Vorteile Nachteile Sonderfall Hyperthreading des Pentium IV Ausblick Quellen...32 Seite 4 von 32 Datum:

5 1. Begriffserklärung 1.1 Was ist ein Thread? Threads sind als kleine berechenbare Bestandteile eines Prozesses zu verstehen. Beachte 1: Beachte 2: Bei Prozesswechsel wird der Adressraum gewechselt, bei Thread -Wechsel innerhalb eines Prozesses nicht! Bei einem Mehrprozessorsystem kann das Betriebssystem die Threads eines Prozesses von verschiedenen Prozessoren ausführen lassen ( Parallelarbeit!) 1.2. Mechanismen zum Speicherschutz (vor gegenseitigem Zugriff) Die beschriebenen Synchronisierungsmassnahmen sind in vielfacher Hinsicht schwerfällig und undurchsichtig. Wenn ein Thread sich in einem kritischen Abschnitt befindet, sollten nicht die anderen Threads ständig um Erlaubnis zum Eintritt in den kritischen Abschnitt fragen. Es sollte möglich sein, die wartenden Threads zu deaktivieren, bis sie durch die Fertig-Meldung des seinen kritischen Abschnitt verlassenden Threads aufgeweckt werden. Der wechselseitige Ausschluss sollte nicht im Anwenderprogramm kodiert sondern mit den Stammfunktionen (primitives) des Nucleus garantiert werden, so ist dieser Prozess unteilbar und kann nicht unterbrochen werden (Grundvoraussetzung) Was ist ein Semaphor? Ein Zähler, mit dem sich ein wechselseitiger Ausschluss realisieren lässt, der einen kritischen Abschnitt schützt. Solange man den Zähler noch inkrementieren kann, so dass er eine bestimmte Maximalzahl nicht überschreitet, darf man die geteilte Ressource verwenden, ansonsten muss man warten. Seite 5 von 32 Datum:

6 Ist der Maximalwert = 1, so spricht man von einem binären Semaphor, und derjenige, der den Zähler zuletzt inkrementiert hat,,,besitzt'' das Semaphor. Welches somit ähnlich einem Staffelstab mit Prozesswechsel seinen Eigentümer zum aktuellen Läufer wechselt, während sich alle anderen mit dem vorherigen Läufer zusammen auf der Bank ausruhen. Semaphore können mit Monitoren implementiert werden Die Umkehrung gilt ebenfalls. Somit sind Semaphore und Monitore hinsichtlich ihrer Synchronisationsfähigkeiten gleich mächtig Was versteht man unter einer Mutex? Mutex ist ein Kunstwort aus Mutual und Exclusion (gegenseitiger Ausschluss). Ein Mutex ist vom Semaphor abgeleitet und besitzt nur zwei Zustände. Daher wird es oft als binäres Semaphor bezeichnet. Das Mutex gehört zur zu teilenden Ressource! Eine Mutex wird in Systemen benötigt, bei denen eine Ressource (z.b. Variable, Gerät u.a.) von verschiedenen Modulen abwechselnd benutzt werden soll. Der Teil der Instruktionen, in dem Benutzung der Ressource erfolgt, wird als kritischer Abschnitt (critical section) bezeichnet. Eine Mutex wird dabei von jedem der Module am Anfang eines kritischen Abschnitts gesperrt, so dass kein anderes Modul auf die Ressource zugreifen kann. Am Ende des kritischen Abschnitts wird die Mutex wieder freigegeben. Dies geschieht durch Lock und Unlock Befehle auf die zu schützende Ressource Was ist ein Software-Monitor? Ein Monitor ist ein Objekt, das Daten und Methoden/Prozeduren enthält. Damit ein Thread in den Monitor eindringen kann, muss dieser ein monitor entry aufrufen. Viele Threads können Monitor entry's desselben Monitors aufrufen; der wechselseitige Aussschluss bleibt garantiert. Nur ein Thread ist gleichzeitig im Innern des Monitors. Threads, die in einen Monitor eintreten wollen der Seite 6 von 32 Datum:

7 bereits besetzt ist, müssen warten. Die Prozeduren/Methoden eines Monitors können auf globale Daten zugreifen. Die lokalen Daten des Monitors sind aber von aussen nicht zugänglich (verstecken von Information). Vorteile : vollständige Datenabstraktion vollständiger wechselseitiger Ausschluss zwischen allen seinen Operationen Im Innern eines Monitors ist es aber unter Umständen nötig, dass ein Thread wartet. Ein solcher Thread wird, durch den Monitor, aus dem Monitor ausgelagert. Auf diese Weise bleibt der Monitor nicht blockiert und ein anderer Thread kann in den Monitor eintreten. Falls ein anderer Thread den Wartenden weckt, so kann diese, sobald der Monitor frei ist, diesen wieder betreten. Abbildung 1: Critical Section Für die Synchronisation im Innern des Monitors müssen folgende Bedingungen gelten: - Während dem Wecken darf keine anderer Thread dazwischen treten. Seite 7 von 32 Datum:

8 - Um zu verhindern, dass die 'Weckbedingung' durch den noch aktiven Thread wieder geändert wird, verlangt man, dass die Steuerung sofort an den aufgeweckten Thread übergeht. Das bedeutet, dass wartende Threads eine höhere Priorität gegenüber dem neu eingetretenen haben Allgemeines zu Events Prozesse warten auf Ereignisse (engl.: events), die von anderen Prozessen bzw. deren Threads ausgelöst werden. Events dienen zur Prozess- und somit ebenfalls zur Threadkommunikation, bzw. deren Synchronisation. Events sind Objekte vom Typ Monitor. Mehrere Threads können auf ein Ereignis warten: beim Eintreten des Ereignisses werden entweder alle Threads oder nur ein Thread aufgeweckt. das Ereignis geht verloren, wenn keiner wartet Event - Realisierung und Fairness : 1. Fairness bei Monitor-Freigabe: im Monitor blockierte Threads haben Vorrang vor eintrittswilligen Prozessen 2. signal-and-wait: Ein aus wait aufgeweckter Prozess übernimmt den Monitor, und der aufweckende Prozess blockiert in signal (!). Begründung: Monitorübergabe ohne Zustandsänderung. 3. signal-and-continue: Ein aus wait aufgeweckter Prozess übernimmt Monitor erst dann, wenn der aufweckende Prozess ihn freigibt. Begründung: Effizienz. 4. signal-and-return: signal ist mit Verlassen des Monitors verbunden. Begründung: Vorteile von 2 und 3. Seite 8 von 32 Datum:

9 1.2.4 Critical Section (administratives Sperren) Ein vom Programmierer selbst geschützter Bereich wird als atomar gekennzeichnet. D.h. dieser Abschnitt darf nicht von anderen Threades oder Prozessen unterbrochen werden und der Speicherbereich gehört exklusiv zu diesem Abschnitt. Der betreffende Thread kann nicht unterbrochen und sein zugewiesener Speicherbereich nicht betreten werden, bevor der Thread nicht beendet oder unterbrochen wurde. Diese Möglichkeit ist bei richtigem gebrauch höchst effizient, aber auch gefährlich bei Fehlern! Der Schutz dieses Speicherbereiches wird meist durch einen Mutex als einfachstes Mittel realisiert. Auch andere Mechanismen zum Schutz vor fehlerhaftem Speicherzugriff sind denkbar, hier werden auch die von vielen Betriebssystemen implementierten Ereignisse verwendet Abschließender Vergleich der vorangegangenen Mechanismen : Mutex: eignet sich lediglich um einzelne Ressourcen nacheinander mehreren Threads zur Verfügung zu stellen. Semaphor: Mächtiges, wenn auch einfaches Werkzeug um Threads zu organisieren, bei richtiger Anwendung wird nicht vergessen einen wartenden Thread auszuführen. Monitor: Erste konsequente Entwicklung eines Objekts, welches Threads und Prozesse überwacht, richtig eingesetzt eine gute Methode. Ereignisse: Sonderform der Monitore, oft implementiertes Mittel (auch in Windows 2000), um Prozesse und Threads zu kontrollieren und dient zur Kommunikation unter Prozessen und Threads. Seite 9 von 32 Datum:

10 1.3 Scheduling Die am häufigsten verwendete Methode in modernen Betriebssystemen um Prozesse und Threads für den Nutzer fast gleichzeitig auszuführen. So bedeutet Multitasking nicht, dass Anwendungen tatsächlich gleichzeitig den Prozessor verwenden, sondern vielmehr, das die zugehörigen Threads nacheinander die CPU verwenden können. Diesen Ablauf steuert im Betriebssystem eine Software, die Scheduler genannt wird, dem Anwender wird diese Ablaufsteuerung verborgen. Unter Windows 2000 z.b. kann man sich im Task - Manager lediglich die Ausführungszeiten ansehen. Den zeitlichen Gebrauch der CPU kann der Anwender lediglich durch Verändern der Prioritäten der Prozesse ändern (dies wird später genauer erläutert). Allgemein gilt : Je höher die Priorität, desto mehr Zeit wird einem Prozess bzw. Thread zur Verfügung gestellt. Abbildung 2: Scheduling Es müssen nicht immer alle Threads eines Prozesses unmittelbar nacheinander ausgeführt werden. Bestandteile eines Prozesses können vom Scheduler nach Bedarf zerstückelt und aufgeteilt werden, d.h. der Prozess 5 kann durchaus noch einen Thread e haben, der später erst verarbeitet wird. Seite 10 von 32 Datum:

11 Der Scheduler bedient sich hierzu der vorher erläuterten Verfahren und aktiviert immer nur einen Thread je verfügbarer Ressource. Da in Multiprozessor-Systemen mehrere Prozessoren zur Verfügung stehen, kann man sich dort vereinfacht zwei Zeitscheiben vorstellen. Jedoch muss von beiden ein Sektor von mindestens 10% für die Kommunikation unter den CPUs abgezogen werden. Dieser Overhead ist leider unvermeidbar. 2. Threading unter Windows 2000 Allgemeine Übersicht wie Threading unter Windows 2000 funktioniert. Da wir nun die allgemeinen Begrifflichkeiten und grundlegenden Fakten erarbeitet haben, wird hier nun speziell darauf eingegangen wie Threads unter Windows 2000 manipuliert werden können. Um die Manipulation der Prioritäten genauer zu verstehen werden aber zunächst noch die folgenden zwei Unterpunkte zu Windows 2000 aufgeführt. Dies soll Ihr Verständnis vertiefen und Ihnen die Interna der Priorisierung in diesem Betriebssystem näher bringen. 2.1 Priorisierung von Threads unter Windows 2000 Threads lassen sich ihrer Priorität entsprechend ordnen und damit in ihrer Ausführung beeinflussen. So wird ein Thread A durch einen anderen Thread B mit einer höheren Priorität unterbrochen. Somit erfolgt eine Kontextänderung (Wechsel) zum Thread B und dieser wechselt in den Zustand breit. Seite 11 von 32 Datum:

12 Windows 2000 kennt 32 Prioritätsstufen, diese sind von 0 bis 31 durchnummeriert, wobei 31 die höchst mögliche Prioritätsstufe ist. Vereinfacht lässt sich sagen: Der Bereich 0 bis 15 wird dynamisch vergeben, oberhalb fallen die Prioritäten in den so genannten Echtzeitbereich Priorisierung von Threads in zwei Stufen Die Basispriorität : o Diese Priorität erbt der Thread von seinem Prozess also: HOCH, HÖHER ALS NORMAL, NORMAL, NIEDRIGER ALS NORMAL, NIEDRIG oder IDLE Die relative Priorität : o Sie ergänzt die Basispriorität um weitere Stufen: ZEITKRITISCH, MAXIMAL, ANGEHOBEN, NORMAL, ABGESENKT, MINIMAL oder IDLE. o Idle bezeichnet die Prioritätsstufe 0. Solche Threads werden nur ausgeführt, wenn keine anderen Aufgaben anstehen. Die später noch erwähnte Basis-Prioritätsstufe Echtzeit kann nur von Administratoren und entsprechend berechtigten Benutzern ausgeführt werden und ist daher für die Anwendungsprogrammierung kritisch Wie uns Windows dazwischenfunkt! Im dynamischen Bereich (0-15), kann die Priorität vom Betriebssystem frei angepasst werden, d.h. Veränderungen von Prioritäten ohne Rückfragen oder Information des Benutzers. Prioritäten im Echtzeitbereich (15-31) werden nicht angetastet. Seite 12 von 32 Datum:

13 2.1.3 Prioritätsstufen unter Windows 2000 So entsteht eine Kombination der Prozess - Priorität und der relativen Thread-Priorität, die in der folgenden Tabelle zusammengefasst wird: Prozess-Priorität System Echtzeit System Hoch Höher als Normal Niedriger als Niedrig Idle Kern Dienste normal Normal Zeitkritisch Maximal Angehoben Normal Abgesenkt Minimal Die fett gedruckten Zahlen entsprechen den Prioritäten die durch den Task - Manager zugeteilt oder angegeben werden. Für System- und Idle- Prozesse kann leider keine genauere Angabe gemacht werden, diese Stufen lassen sich als Anwender überhaupt nicht verändern! Die Thread -Prioritäten wirken auf IRQL 0 oder 1, d.h. Threads werden nicht durch Interrupts behindert. Das Scheduling der Threads findet auf IRQL 2 statt. Es handelt sich hierbei ausschließlich um Software-IRQs! Seite 13 von 32 Datum:

14 2.2 Ändern von Prioritäten Die Prioritäten der laufenden Prozesse und der dazugehörigen Threads lassen sich im Task - Manager ändern. Ausnahme bilden die Echtzeitprioritäten, denn hierzu ist zusätzlich das Systemrecht ANHEBEN DER ZEITPLANUNGSPRIORITÄT notwendig. Sollten Sie nicht über diese Berechtigung verfügen, ist die maximal erreichbare Prioritätsstufe Hoch. In den Standardeinstellungen von Windows 2000 ist diese Berechtigung lediglich den Administratoren vorbehalten. Wenn Sie einer Anwendung direkt beim Start eine Priorität zuweisen möchten, dann verwenden Sie bitte das Kommando start mit dem entsprechenden Parameter z.b. aus dem Ausführungs-Fenster, oder der Kommandozeile Ändern von Prioritäten im Task - Manager Abbildung 3: Taskmanager Seite 14 von 32 Datum:

15 2.2.2 Kommando zur Prioritätsänderung Das Kommando: start /abovenormal notepad ruft den Editor Notepad mit der Priorität HÖHER ALS NORMAL auf. Die Arbeit mit der Kommandozeile erfordert unter Windows 2000 in der Regel die Eingabe der englischen Bezeichnungen (sind in der Hilfe zu start zu finden). Seite 15 von 32 Datum:

16 3. Thread Zustandsfolge unter Windows 2000 Es wird immer der Thread ausgeführt, der die höchste Priorität hat und Bereit ist. Die folgende Grafik soll das Scheduling und den Wechsel der Ausführungszustände näher veranschaulichen: Abbildung 4: Zustandsfolgediagram Ein Thread kann sich nach erfolgreicher Initialisierung in folgenden Zuständen befinden : Bereit: Diese Threads warten auf Ausführung (gestaffelt nach ihrer Priorität) Standby : Für Multiprozessorsysteme!! Thread ist einem Prozessor zugewiesen und wartet auf Ausführung. Ausgeführt: Bezeichnet den momentan aktiven Thread mit höchster Priorität. Bleibt solange aktiv: o bis der Kernel ihn unterbricht, um einen Thread höherer Priorität auszuführener beendet wird o er sich in den Wartezustand begibt, da er von anderen Daten abhängig ist Seite 16 von 32 Datum:

17 4. Grundlagen zum Threading in Visual C++ 6.0/.NET 4.1. Wie wird ein Thread unter Visual C++ repräsentiert? Abbildung 5: Hierarchy Chart (Auszug) Ein Thread wird unter Visual C++ als CWinThread Klasse realisiert. Zu bemerken ist hierbei, dass diese Klasse eine übergeordnete Klasse zur CWinApp Klasse darstellt. Eine CWinApp Klasse repräsentiert innerhalb eines Visual C++ Projektes die eigentliche Hauptklasse, vergleichbar der Main() Funktion von anderen C++ Dialekten, von der alle anderen Vorgänge, wie zum Beispiel das Öffnen des/der Dialogfenster, oder des Anwendungsfensters, gestartet bzw. gesteuert werden. Beim Programmstart wird als erstes eine CWinApp Klasse erstellt. Da die CWinApp Klasse von der CWinThread Klasse geerbt hat, ist die erstellte CWinApp Klasse auch eine Seite 17 von 32 Datum:

18 CWinThread Klasse, die innerhalb von Visual C++ einen Thread darstellt. Das bedeutet beim Erstellen einer CWinApp Klasse wird auch ein neuer Thread erstellt, in dem alle von der Klasse aufgerufenen Funktionen durchgeführt werden. Als Besonderheit von Visual C++ ist zu erwähnen, dass alle Dialogfenster in einem eigenen Thread gestartet werden, eventuell darunter liegende Dialogfelder (-threads) bleiben dadurch in ihrem eigenen Thread voll funktionsfähig Der Unterschied zwischen einem Arbeits- und einem Windowthread Die MFC unterscheidet zwischen zwei Formen von Threads: Ein Windowthread: Diese Form wird fast immer im Rahmen eines Dialogfeldes automatisch erstellt. Vom Programmier erwartet der Compiler kein weiteres Zutun, um das dazugehörige CWinThread Objekt zu erstellen. Ferner wird es automatisch beim schließen des Dialogs zerstört. Ein Arbeitsthread: Diese Form wird immer durch den Programmierer erstellt, und dient dazu, z.b. aufwendige Berechnungen im Hintergrund unabhängig von Dialog ausführen zu lassen. Dieses Objekt wird automatisch zerstört, wenn die Arbeit (die dem Thread übergebene Funktion) beendet ist Erstellen eines Arbeitsthreads Ein Arbeitsthread wird durch ein Compilermakro automatisch erstellt. Das Makro hat folgende Syntax: CWinThread* AfxBeginThread( AFX_THREADPROC pfnthreadproc, LPVOID pparam, int npriority = THREAD_PRIORITY_NORMAL, UINT nstacksize = 0, Seite 18 von 32 Datum:

19 DWORD dwcreateflags = 0, LPSECURITY_ATTRIBUTES lpsecurityattrs = NULL ); Die Variablen haben dabei folgende Bedeutung: AFX_THREADPROC pfnthreadproc : Der Zeiger(!) auf die im Thread auszuführende Funktion. LPVOID pparam : Ein Zeiger auf eine Datenstruktur für die aufzurufende Funktion. Es findet hier keine Typenprüfung statt, so dass die Typüberprüfung durch den Programmierer stattfinden muss. int npriorty = THREAD_PRIORITY_NORMAL : Mit diesem Parameter stellt man die Priorität des Threads ein. DWORD dwcreateflags = 0 :Mit diesem Parameter kann man einstellen, wie das Objekt erstellt werden soll. Man kann zum Beispiel ein Thread erstellen, der nach der Erstellung noch nicht gestartet wird, um ihm über die Mitgliedsfunktionen noch weitere Parameter mitgeben zu können. Alle anderen Parameter sollten in einem normalen Programm so bleiben wie sie sind, denn sie setzen sehr gute Kenntnisse in Windows 2000/XP voraus Zerstören eines Threads In der Standardeinstellung wird das CWinThread Klasse automatisch, nach Beendigung der in ihr gestarteten Funktion, zerstört. Dadurch gehen die RETURN Werte der im Thread ausgeführten Funktion verloren, so dass man das Schüsselwort RETURN in diesem Zusammenhang nicht als Ergebnisrückgabe nutzen kann. Stattdessen verwendet man den Zeiger LPVOID pparam. Wie oben ausgeführt zeigt dieser Zeiger auf eine Datenstruktur, die die Parameter der Funktion, sowie das Ergebnis der Funktion enthalt. Da die Datenstruktur vor dem Aufruf des AfxBeginThread Makros erstellt wird, ist sie auch nach Beendigung der Funktion noch vorhanden. So dass das Ergebnis innerhalb der Struktur weiterverwendet werden kann. Seite 19 von 32 Datum:

20 4.4. Pro und Contra der Benutzung von (mehreren) Threads Pro o Aufwendige Arbeitsvorgänge behindern bzw. blockieren keine Dialogfelder o Unterstützung von Mehrprozessorsystemen, speziell ist hier Hyperthreading (PentiumIV) zu erwähnen. o Durch die Nutzung von Mehrprozessorssystem und mehreren Threads verkürzt sich die Rechenzeit beträchtlich. Contra o Die Programmierung wird im Vergleich zu einem Singlethread sehr aufwendig. Zwei Dinge sind zu bedenken: Voneinander abhängige Threads, z.b. Arbeits- und Dialogthread, müssen über Events miteinander kommunizieren, so dass das Dialogfeld beispielsweise die neuen, im Hintergrund berechneten Werte anzeigt. Die Datensicherheit muss explizit vom Programmierer gewährleistet werden. Die einzigste MFC Unterstützung sind hier bei die aus EBS bekannten Semaphore, Mutex, und Critical Sections. Seite 20 von 32 Datum:

21 4.5. Semaphore, Mutex und Critical Sections als Klassendefinition der MFC Semaphore, Mutex und Critical Sections sind unter der MFC als von CSyncObject abgeleitete Klassen realisiert. Abbildung 6: Hierachy Chart (Auszug) CCriticalSection Diese Klasse verhindert, dass ein im Sourcecode markierter Bereich von mehr als einem Thread zu gleich ausgeführt wird. CEvent dieses Objekt dient zum Nachrichtenaustausch zwischen den Threads. CMutex repräsentiert das aus dem EBS Unterricht bekannte MUTEX CSemaphore repräsentiert das aus dem EBS Unterricht wiederum bekannte Semaphore. Wobei hier ausdrücklich zu bemerken ist, dass sich die MFC bzw. der Compiler überhaupt nicht darum kümmert, ob Ressourcen bzw. Variablen gleichzeitig von mehren Threads gelesen oder beschrieben werden. Das ist ausdrücklich Sache des Programmierers. Seite 21 von 32 Datum:

22 5. Das Beispielprogramm 5.1. Einführung Um nun die Funktionsweise und die Performancesteigerung ermitteln zu können, wurde das Programm Threading geschrieben. Es handelt sich dabei um ein einfaches dialogbasiertes Visual C++ - Programm Funktionsweise Zur Erläuterung wurde ein einfaches Programm geschrieben, welches das Flächenintregral einer halben Sinusschwingung ausrechnet. Verwendet wurde hier ein sehr einfacher Algorithmus: 1,2 1 0,8 0,6 0,4 0, , , ,5236 0, , ,0472 1, , ,5708 1, , ,0944 2, , , , , ,14159 Abbildung 7: Sinusalgorithmus Als erstes wird die Fläche eines Streifens unterhalb der Sinuskurve berechnet. Anschließend wird die Fläche eines Streifens oberhalb der Sinuskurve berechnet. Nun werden diese Flächen addiert und anschließend durch 2 geteilt, um den Mittelwert der beiden Flächen zu erhalten. Seite 22 von 32 Datum:

23 Der Rechenvorgang wird dabei in \1\2\4\8\16\32 Threads aufgeteilt und jeweils in den drei höchsten Prioritätsstufen (Normal, Hoch und Echtzeit) ausgeführt. Angegeben wird jeweils die komplette Berechnungsdauer (bis die gesamte Fläche berechnet wurde) in Millisekunden Messmethode / Genauigkeit Die Berechnungszeit für den auf die mehreren Threads aufgeteilte Flächenintregral wird auf zwei Arten bestimmt. Zum einen mit Hilfe des im Windows - Kernel enthaltenen Timers. Dieser Timer zählt die Anzahl der Millisekunden nach dem Start von Windows. Dieser Timer ist unter Win9x/ME auf etwa eine Millisekunde genau. Unter Windows 2000/XP beträgt die Genauigkeit nur noch etwa 5 Millisekunden. So dass nun der so genannte high-resolution performance counter genutzt wird. Dieser Timer ist prozessorbasierend und ist auf manchen Systemen gar nicht und wenn äußerst unterschiedlich implementiert. Allen ist einzig gemein, dass es Zähler sind, die zeitabhängig hoch gezählt werden. Die tatsächliche Zeit wird bei diesem Timer mit Hilfe von zwei Funktionen bestimmt. Die erste Funktion bestimmt die Zahl des Counters, die zweite die Anzahl der Zählschritte (Counts) pro Sekunde. Teilt man das Ergebnis der ersten Funktion durch das Ergebnis der zweiten Funktion so erhält man den Wert des Counters in Sekunden. Aufgrund der äußerst unterschiedlichen Implementierung dieses Counters kann man keine Angaben zu dessen Genauigkeit machen. Sie beträgt auf dem Entwicklungssystem (AMD AthlonXP 1700+, KT266A) beispielsweise 2,79*10-7 s entsprechend 2,79*10-4 ms. Die Endergebnisse der Test waren selbst unter unterschiedlichsten Einflüssen reproduzierbar. Selbst der Einsatz eines CPU-Kühlers wie CPU-Idle hat keinen Einfluss auf das Ergebnis. Lediglich Abweichungen von etwa 20 ms waren zu bemerken, was bei einer Berechnungszeit von 1 s aber zu vernachlässigen ist Ergebnis Bevor nun der Sourcecode erklärt wird, möchte ich das Ergebnis vorweg nehmen, um die nicht C++ - Interessierten nicht weiter zu langweilen. Als erstes wird das Ergebnis eines Single Prozessors dargestellt. Hier bei handelt es sich um einen AMD AthlonXP mit 1466 MHz, 512 MByte DDR-RAM, und einem KT266A Chipsatz. Als Betriebssystem kam Windows 2000 Pro SP3 zum Einsatz Seite 23 von 32 Datum:

24 Single Prozessor Abbildung 8: Ergebnis auf einem AMD AthlonXP mit 1466 Mhz, 512 MByte DDR-RAM Wie zu sehen ist, ergibt sich kein Performancevorteil durch das Multithreading. Bei den beiden Prioritätsstufen Highest und Time Critical läuft die Berechnung in mehren Threads genauso schnell ab, als ob diese in einem Thread gestartet wird. Dieses Ergebnis konnte bei einem ein Prozessorsystem so erwartet werden. Wo sollte die zusätzliche Rechenleistung auch herkommen? Interessanter ist vielmehr, dass der Overhead der Threadwechsel auf Prozessorebene bei aktuellen Prozessoren so gering ist, dass dieser fast nicht mehr messbar ist. In der Prioritätsstufe Normal stellt sich eine scheinbare Performancesteigerung durch Multithreading ein. Dies lässt sich folgendermaßen erklären. Da Normale Thread sich die Rechenleistung mit allen anderen normalen Threads (denen der Tray-Icons, Systemdienste...) teilen müssen, kann man sich durch mehrere Threads zusätzliche Rechenleistung erschleichen. Unter Win2K erhält ein Thread eine bestimmte vorgegebene Rechenzeit. Wenn diese dann abgelaufen ist, ist der nächste Thread im Scheduling dran. Hat man nun 32 statt 1 Thread erhält man die 32 fache Rechenzeit. Da beim Scheduling Threads mit höherer Priorität bevorzugt werden, funktioniert dies in höheren Stufen nicht mehr, da es nicht mehr so viele Nebenthreads gibt, so dass Seite 24 von 32 Datum:

25 sich so die Rechenleistung wieder gleichmäßig aufteilt. Ferner ist festzustellen, dass man selbst mit 32 normalen Threads nicht die Rechenleistung eines highest Threads erreicht Dual Prozessor Nun folgt das Ergebnis eines Dual Prozessor Systems. Hierbei handelte es sich um ein Dual Pentium III B 600 MHz, 256 MByte SD-RAM und einem Intel BX Chipsatz. Als Betriebssystem kam wiederum Windows 2000 Pro SP3 zum Einsatz: Abbildung 9: Dual Pentium IIIB 600Mhz, 256 Mbyte SD-RAM Bei der normalen Prioritätsstufe stellt sich nicht der erwartete Performancevorteil ein. Aufgrund der oben beschriebenen Tatsache, dass es noch viele normale Nebenthreads gibt, geht die Rechleistung bzw. Rechenzeit für all die anderen Prozesse/Threads verloren. Erst durch das Aufteilen auf 32 Threads und entsprechender Rechenzeit Zuteilung erreicht man eine Halbierung der Rechenzeit. Es kann aber nicht sicher gesagt werden, ob sich durch die Aufteilung auf zwei Prozessoren oder nur um den oben beschrieben Effekt handelt. Bei den beiden anderen Prioritätsstufen stellt sich das erwartete Ergebnis ein. Beim Aufteilen in mehrere Threads halbiert sich die Rechenzeit. Allerdings stellt sich hier die Ideallösung dar, da alle Threads unabhängig von einander arbeiten. Treten Abhängigkeiten auf, d.h. ein Thread muss auf Seite 25 von 32 Datum:

26 das Ergebnis eines anderen warten, oder es entstehen Ressourcenkonflikte, zwei Threads wollen etwa ein Gerät benutzen, bricht dieser Performancevorteil zusammen. Im schlimmsten Fall erreicht man nur noch die Geschwindigkeit eines ein Prozessorsystems Multiprozessorsysteme Auf Multiprozessorsystem sollte sich ein ähnliches Verhalten wie zu einstellen. Die Anzahl der Threads zur Berechnung sollte für eine optimale Ausnutzung der Performance gleich oder größer der Anzahl von den Prozessoren im System sein. Leider konnte dies mangels eines Multiprozessorsystems (4 oder mehr Prozessoren) nicht verifiziert werden Der Source-Code Hier sollen nun Auszüge gezeigt werden, die die Anwendung des Multithreading im Testprogramm zeigen. Als erstes der Datentyp SUebergabe der zur Parameterübergabe genutzt wird. struct SUebergabe { double ngrenzeunten; }; untere Grenze des zu berechenden Flächenintregrals obere Grenze des zu berechenden Flächenintregrals double ngrenzeoben; long ncount; Anzahl der zuberechenden Streifen double nergebnis; das zurückgegebene Ergebnis Als nächstes folgt die Berechnungsfunktion, die jeweils von den CWinThread Objekten gestartet wird. UINT FSimpSin(LPVOID pparam ) { Diese Funktion berechnet Fläche unterhalb der Sinuskurve. Die Grenzen werden als Parameter über den Zeiger pparam übergeben. Interne Variabelen double nschrittweite = 0; Breite eines Streifens bei Integration double nzwischenl = 0; Ergebnis des Streifen Bezugspunkt linke Kante double nzwischenr = 0; Ergebnis des Streifen Bezugspunkt rechte Kante double nergebnis = 0; Das Endergebnis double nwert = 0; Aktuelle zu berechnender Wert SUebergabe* Param = (SUebergabe*)pParam; Übergebenen Zeiger in einsprechenden Typ umwandeln nschrittweite = (Param->nGrenzeOben - Param->nGrenzeUnten)/Param->nCount; Schrittweite berechnen nwert = Param->nGrenzeUnten; Anfangswert festlegen Seite 26 von 32 Datum:

Technische Informatik II

Technische Informatik II Institut für Technische Informatik und Kommunikationsnetze Technische Informatik II Übung 1: Prozesse und Threads Aufgabe 1: Prozesse und Threads a) Wie verhält sich eine Applikation die aus mehreren Prozessen

Mehr

Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus

Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus Zur Erinnerung: Threads Programmierung (fortgeschrittene Konzepte) Threads, Monitore, Semaphore und speisende en Wolf-Ulrich Raffel (uli@wuraffel.de) Möglichkeiten, Threads zu definieren Bildung einer

Mehr

Dämon-Prozesse ( deamon )

Dämon-Prozesse ( deamon ) Prozesse unter UNIX - Prozessarten Interaktive Prozesse Shell-Prozesse arbeiten mit stdin ( Tastatur ) und stdout ( Bildschirm ) Dämon-Prozesse ( deamon ) arbeiten im Hintergrund ohne stdin und stdout

Mehr

6. Tutorium zu Softwaretechnik I

6. Tutorium zu Softwaretechnik I 6. Tutorium zu Softwaretechnik I Parallelität und Testen Michael Hoff 01.07.2014 INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum

Mehr

Betriebssystembau (BSB)

Betriebssystembau (BSB) Betriebssystembau (BSB) 6. Übung http://ess.cs.tu-.de/de/teaching/ws2013/bsb/ Olaf Spinczyk olaf.spinczyk@tu-.de http://ess.cs.tu-.de/~os AG Eingebettete System Informatik 12, TU Dortmund Agenda Vorstellung

Mehr

RTEMS- Echtzeitbetriebssystem

RTEMS- Echtzeitbetriebssystem RTEMS- Echtzeitbetriebssystem Name: Hussein Hammoud Matrikel- Nr.: 230768 Studiengang: Technische Informatik Fach: Projekt Eingebettete Kommunikation Technische Universität Berlin Sommersemester 2006 RTEMS-

Mehr

POSIX Echtzeit: Kernel 2.6 und Preempt-RT

POSIX Echtzeit: Kernel 2.6 und Preempt-RT POSIX Echtzeit: Kernel 2.6 und Preempt-RT Slide 1 - http://www.pengutronix.de - 21.01.2007 Echtzeit-Systemplanung Wenn das zeitliche Verhalten spezifiziert ist, kann auch spezifiziert werden, welche Applikationsteile

Mehr

CPU-Scheduling - Grundkonzepte

CPU-Scheduling - Grundkonzepte CPU-Scheduling - Grundkonzepte Sommersemester 2015 Seite 1 Gesamtüberblick 1. Einführung in Computersysteme 2. Entwicklung von Betriebssystemen 3. Architekturansätze 4. Interruptverarbeitung in Betriebssystemen

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Prozesse und Scheduling

Prozesse und Scheduling Betriebssysteme für Wirtschaftsinformatiker SS04 KLAUSUR Vorbereitung mit Lösungen / Blatt 1 Prozesse und Scheduling Aufgabe 1 : Scheduling Gegeben seien die folgenden Prozesse und die Längen des jeweiligen

Mehr

leave: mov flag, 0 ; 0 in flag speichern: Lock freigeben ret

leave: mov flag, 0 ; 0 in flag speichern: Lock freigeben ret Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

Approximationsalgorithmen

Approximationsalgorithmen Ausarbeitung zum Thema Approximationsalgorithmen im Rahmen des Fachseminars 24. Juli 2009 Robert Bahmann robert.bahmann@gmail.com FH Wiesbaden Erstellt von: Robert Bahmann Zuletzt berarbeitet von: Robert

Mehr

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen Seite 8 A UFGABE 11 INTERP ROZEßKOMMUNIKATION Das folgende Petrinetz zeigt zwei verkoppelte Prozesse P1 und P2. Die Transitionen a und b beschreiben Aktionen von P1, die Transitionen c und d Aktionen von

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008 PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik

Mehr

Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008

Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008 Name: Matrikel-Nr: Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008 Bitte schreiben Sie leserlich und antworten Sie kurz und präzise. 1. Zeichnen Sie das Schichten-Modell eines Computersystems und markieren

Mehr

CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik)

CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik) Prof. Dr. Th. Letschert CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik) Vorlesung 7 Th Letschert FH Gießen-Friedberg Ressourcen Verwaltung passive Ressourcen aktive Ressourcen

Mehr

Rechnernutzung in der Physik. Betriebssysteme

Rechnernutzung in der Physik. Betriebssysteme Rechnernutzung in der Physik Betriebssysteme 1 Betriebssysteme Anwendungsprogramme Betriebssystem Treiber BIOS Direkter Zugriff von Anwenderprogrammen auf Hardware nur in Ausnahmefällen sinnvoll / möglich:

Mehr

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

Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) von einem Rechner abgearbeitet. Prozessverwaltung Prozesse Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) von einem Rechner abgearbeitet. Prozesse sind Abfolgen von Aktionen, die unter Kontrolle

Mehr

Kapitel 4. Monitore und wechselseitiger Ausschluss

Kapitel 4. Monitore und wechselseitiger Ausschluss Seite 1 Kapitel 4 Monitore und wechselseitiger Ausschluss Prof. Dr. Rolf Hennicker 28.05.2015 4.1 Interferenzen Seite 2 Parallel ablaufende Prozesse können sich gegenseitig (störend) beeinflussen. Beispiel

Mehr

Timm M. Steinbeck und Arne Wiebalck Lehrstuhl für Technische Informatik Universität Heidelberg. Prozess-Monitoring auf CPU-Takt Ebene

Timm M. Steinbeck und Arne Wiebalck Lehrstuhl für Technische Informatik Universität Heidelberg. Prozess-Monitoring auf CPU-Takt Ebene Timm M. Steinbeck und Arne Wiebalck Lehrstuhl für Technische Informatik Universität Heidelberg Prozess-Monitoring auf CPU-Takt Ebene Einleitung Unser Arbeitsgebiet: ALICE Teilchenphysik Experiment Cluster

Mehr

Einführung in COM. 04.04.2006 Seite 1

Einführung in COM. 04.04.2006 Seite 1 Einführung in COM 04.04.2006 Seite 1 Ziele Sie kennen die Funktion der Registry für COM Sie können die Struktur eines COM-Objekts erklären Sie können erklären, wie ein remote-server gestartet wird 04.04.2006

Mehr

Einführung in die Echtzeitbetriebssysteme

Einführung in die Echtzeitbetriebssysteme Einführung in die Echtzeitbetriebssysteme Hauptseminararbeit in dem Studiengang B.Sc. Informatik von Maximilian von Piechowski Technische Hochschule Mittelhessen Inhaltsverzeichnis 1 Was versteht man unter

Mehr

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

Begriff: Scheduling Planung, Schedule Plan. Verplanung der CPU-Zeit an die Threads (bzw. Prozesse) 5 CPU-Scheduling Im folgenden wird von Threads gesprochen. Bei Systemen, die keine Threads unterstützen, ist der einzige "Thread" eines Prozesses gemeint. Früher wurde dieser Thread synonym mit dem Begriff

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Fragestellung: Wie viele CPU Kerne sollte eine VM unter Virtualbox zugewiesen bekommen?

Fragestellung: Wie viele CPU Kerne sollte eine VM unter Virtualbox zugewiesen bekommen? Fragestellung: Wie viele CPU Kerne sollte eine VM unter Virtualbox zugewiesen bekommen? Umgebung Getestet wurde auf einem Linux-System mit voller invis-server Installation, auf dem eine virtuelle Maschine

Mehr

Welche der folgenden Aussagen gelten? a) Im allgemeinen gilt: ein Deadlock tritt auf gdw. der Resource-Allocation Graph einen Zykel

Welche der folgenden Aussagen gelten? a) Im allgemeinen gilt: ein Deadlock tritt auf gdw. der Resource-Allocation Graph einen Zykel Aufgabe 1 (5 Punkte) (Multiple Choice) Beantworten Sie folgende Fragen durch Ankreuzen der richtigen Antwort. Für jede falsche Antwort wird ein Punkt abgezogen (es werden minimal 0 Punkte vergeben). Welche

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Sowohl RTX64 als auch RTX bieten harten Echtzeitdeterminismus und symmetrische Multiprocessing- Fähigkeiten (SMP).

Sowohl RTX64 als auch RTX bieten harten Echtzeitdeterminismus und symmetrische Multiprocessing- Fähigkeiten (SMP). Produktbeschreibung Februar 2014 RTX RTOS-Plattform Mit der RTX-Echtzeitsoftware von IntervalZero wird aus Microsoft Windows ein Echtzeitbetriebssystem (RTOS). RTX64 von IntervalZero unterstützt 64-Bit-Betriebssysteme

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

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

Ausarbeitung im Rahmen der PG Autolab zum Thema: OSEK 1 -OS. geschrieben von Oliver Botschkowski Ausarbeitung im Rahmen der PG Autolab zum Thema: OSEK 1 -OS geschrieben von Oliver Botschkowski 1 Offene Systeme und deren Schnittstelle für die Elektronik im Kraftfahrzeug 1 Oliver Botschkowski - OSEK-OS

Mehr

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

B.5 Prozessverwaltung B.5. Prozessverwaltung. 2002 Prof. Dr. Rainer Manthey Informatik II 1 Prozessverwaltung Prozessverwaltung 2002 Prof. Dr. Rainer Manthey Informatik II 1 Prozesse Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) ) von einem Rechner abgearbeitet.

Mehr

Übung zu Grundlagen der Betriebssysteme. 7. Übung 27.11.2012

Übung zu Grundlagen der Betriebssysteme. 7. Übung 27.11.2012 Übung zu Grundlagen der Betriebssysteme 7. Übung 27.11.2012 Threads Thread (Faden des (Kontrollflusses)): ist ein sequentieller Abarbeitungsablauf (Kontrollfluss) innerhalb eines Prozesses. Umfasst ein

Mehr

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans...

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans... Erste Schritte Dieser Teil der Veranstaltung gibt einen ersten Eindruck der Programmierung mit C++. Es wird ein erstes Gefühl von Programmiersprachen vermittelt, ohne auf die gezeigten Bestandteile genau

Mehr

5. Threads, Serverprozesse und Benachrichtigungen

5. Threads, Serverprozesse und Benachrichtigungen 5. Threads, Serverprozesse und Benachrichtigungen Threads allgemein Threads in Android: Handler und Messages Services: Local, Remote, Binding Benachrichtigungen Entwicklung mobiler Anwendungen Europäische

Mehr

12. ArcView-Anwendertreffen 2010. Workshop Programmierung in ArcGIS. Daniel Fuchs. Wo kann eigene Programmierung in ArcGIS verwendet werden?

12. ArcView-Anwendertreffen 2010. Workshop Programmierung in ArcGIS. Daniel Fuchs. Wo kann eigene Programmierung in ArcGIS verwendet werden? Wo kann eigene Programmierung in ArcGIS verwendet werden? 12. ArcView-Anwendertreffen 2010 Workshop Programmierung in ArcGIS Daniel Fuchs 1) Makros für die Automatisierung einzelner Arbeitsschritte im

Mehr

Installationsanleitung Netzwerklizenzen Vectorworks 2014

Installationsanleitung Netzwerklizenzen Vectorworks 2014 Installationsanleitung Netzwerklizenzen Vectorworks 2014 Beginnt Ihre Seriennummer mit einem G, lesen Sie hier weiter. Beginnt Ihre Seriennummer mit einem C, lesen Sie bitte auf Seite 4 weiter. Installation

Mehr

Rechnerarchitektur und Betriebssysteme (CS201): Semaphor, Monitor, Deadlocks, Re-Entrance

Rechnerarchitektur und Betriebssysteme (CS201): Semaphor, Monitor, Deadlocks, Re-Entrance Rechnerarchitektur und Betriebssysteme (CS201): Semaphor, Monitor, Deadlocks, Re-Entrance 5. November 2013 Prof. Dr. Christian Tschudin Departement Mathematik und Informatik, Universität Basel Repetition

Mehr

Microsoft Office SharePoint Services Workflow Limitierungen

Microsoft Office SharePoint Services Workflow Limitierungen Microsoft Office SharePoint Services Workflow Limitierungen Dorner Stefan, namics AG April 2007 Inhaltsverzeichnis Allgemeines... 3 Workflow Foundation Thread Pool-Modelle... 5 DefaultWorkflowSchedulerService...

Mehr

Systeme I: Betriebssysteme Kapitel 7 Scheduling. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 7 Scheduling. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 7 Scheduling Maren Bennewitz Version 23.01.2013 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen

Mehr

Projekt für Systemprogrammierung WS 06/07

Projekt für Systemprogrammierung WS 06/07 Dienstag 30.01.2007 Projekt für Systemprogrammierung WS 06/07 Von: Hassan Bellamin E-Mail: h_bellamin@web.de Gliederung: 1. Geschichte und Definition 2. Was ist Virtualisierung? 3. Welche Virtualisierungssoftware

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Systeme 1. Kapitel 5. Scheduling

Systeme 1. Kapitel 5. Scheduling Systeme 1 Kapitel 5 Scheduling Scheduling Verteilung und Zuweisung von begrenzten Ressourcen an konkurrierende Prozesse Beispiel: -> Zeitablaufsteuerung Zwei Prozesse zur gleichen Zeit rechenbereit auf

Mehr

Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation

Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation 09.05.15 1 Literatur [6-1] http://php.net/manual/de/book.sockets.php [6-2] http://de.wikipedia.org/wiki/socket_(software) [6-3] http://php.net/manual/de/book.network.php

Mehr

Von der UML nach C++

Von der UML nach C++ 22 Von der UML nach C++ Dieses Kapitel behandelt die folgenden Themen: Vererbung Interfaces Assoziationen Multiplizität Aggregation Komposition Die Unified Modeling Language (UML) ist eine weit verbreitete

Mehr

3 Task-Leiste Ziele des Kapitels:

3 Task-Leiste Ziele des Kapitels: 3 Task-Leiste Ziele des Kapitels: $ Die Task-Leiste ist ein zentrales Element von Windows 95. Dieses Kapitel zeigt Ihnen, wie Sie die Task-Leiste bei Ihrer Arbeit mit Windows 95 sinnvoll einsetzen können.

Mehr

Vorbereitung zur Prüfung Echtzeitbetriebssysteme

Vorbereitung zur Prüfung Echtzeitbetriebssysteme Vorbereitung zur Prüfung Echtzeitbetriebssysteme Zugelassene Hilfsmittel: Taschenrechner Bitte verwenden Sie keinen roten Farbstift! 1. Echtzeitbetriebssysteme - Allgemein (15 Punkte) 1.1. Warum setzen

Mehr

Java-IDE-Vergleich Seite 1 / 5

Java-IDE-Vergleich Seite 1 / 5 Java-IDE-Vergleich Seite 1 / 5 Java-IDEs im Vergleich 1. Getestete IDEs: Borland JBuilder 3 Professional Edition IBM Visual Age 3 Entry Edition Sun Forte 1.01 Community Edition Microsoft Visual J++ 6.0

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

Echtzeitfähige Ereignisgetriebene Scheduling-Strategien

Echtzeitfähige Ereignisgetriebene Scheduling-Strategien Friedrich-Alexander-Universität Erlangen-Nürnberg Ausgewählte Kapitel eingebetteter Systeme Echtzeitfähige Ereignisgetriebene Scheduling-Strategien Sven Kerschbaum 1. Einführung Bei einem eingebetteten

Mehr

183.579, SS2012 Übungsgruppen: Do., 14.6. Mi., 20.6.2012

183.579, SS2012 Übungsgruppen: Do., 14.6. Mi., 20.6.2012 VU Technische Grundlagen der Informatik Übung 8: Systemsoftware und Netzwerke 183.579, SS2012 Übungsgruppen: o., 14.6. Mi., 20.6.2012 ufgabe 1: Virtual Memory Zeichnen Sie ein System das Paging zur Speicherverwaltung

Mehr

13. Übung mit Musterlösung

13. Übung mit Musterlösung 13. Übung mit Musterlösung 1 Lösung 1 Teil 1.Multiple Choice) Bewertung: Ein Punkt für richtige Antwort, für jede falsche Antwort ein Punktabzug. a) Für die Exponentialverteilung ist die Zeit bis zum nächsten

Mehr

Einführung in die OPC-Technik

Einführung in die OPC-Technik Einführung in die OPC-Technik Was ist OPC? OPC, als Standartschnittstelle der Zukunft, steht für OLE for Process Control,und basiert auf dem Komponentenmodel der Firma Microsoft,dem Hersteller des Betriebssystems

Mehr

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

A Kompilieren des Kernels... 247. B Lineare Listen in Linux... 251. C Glossar... 257. Interessante WWW-Adressen... 277. Literaturverzeichnis... 1 Einführung................................................ 1 1.1 Was ist ein Betriebssystem?............................... 1 1.1.1 Betriebssystemkern................................ 2 1.1.2 Systemmodule....................................

Mehr

Kurzanleitung für die mobile Novell Messenger 3.0.1-App

Kurzanleitung für die mobile Novell Messenger 3.0.1-App Kurzanleitung für die mobile Novell Messenger 3.0.1-App Mai 2015 Novell Messenger 3.0.1 und höher ist für unterstützte ios-, Android- und BlackBerry-Mobilgeräte verfügbar. Da Sie an mehreren Standorten

Mehr

BLECHCENTER Plus. Installationsanweisung. Hilfe für Anwender

BLECHCENTER Plus. Installationsanweisung. Hilfe für Anwender Hilfe für Anwender IBE Software GmbH; Friedrich-Paffrath-Straße 41; 26389 Wilhelmshaven Fon: 04421-994357; Fax: 04421-994371; www.ibe-software.de; Info@ibe-software.de Vorwort Installationen von Programmen

Mehr

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer

Mehr

Parallele und funktionale Programmierung Wintersemester 2013/14. 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr

Parallele und funktionale Programmierung Wintersemester 2013/14. 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr Aufgabe 8.1: Zeigerverdopplung Ermitteln Sie an folgendem Beispiel den Rang für jedes Listenelement sequentiell und mit dem in der Vorlesung vorgestellten parallelen

Mehr

Tutorium Java Ein Überblick. Helge Janicke

Tutorium Java Ein Überblick. Helge Janicke Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren

Mehr

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen Um die maximale Sicherheit für das Betriebssystem und Ihre persönlichen Daten zu gewährleisten, können Sie Programme von Drittherstellern

Mehr

VB.net Programmierung und Beispielprogramm für GSV

VB.net Programmierung und Beispielprogramm für GSV VB.net Programmierung und Beispielprogramm für GSV Dokumentation Stand vom 26.05.2011 Tel +49 (0)3302 78620 60, Fax +49 (0)3302 78620 69, info@me-systeme.de, www.me-systeme.de 1 Inhaltsverzeichnis Vorwort...2

Mehr

Hinweise zur Verwendung von myfactory unter Windows XP mit Service Pack 2

Hinweise zur Verwendung von myfactory unter Windows XP mit Service Pack 2 Hinweise zur Verwendung von myfactory unter Windows XP mit Service Pack 2 Durch Verbesserungen der Sicherheitsstandards seitens Microsoft sind mit der Installation des Service Pack 2 für XP zum fehlerfreien

Mehr

EXPANDIT. ExpandIT Client Control Kurzanleitung. utilities. be prepared speed up go mobile. Stand 14.11.07

EXPANDIT. ExpandIT Client Control Kurzanleitung. utilities. be prepared speed up go mobile. Stand 14.11.07 ExpandIT Client Control Kurzanleitung Stand 14.11.07 Inhaltsverzeichnis ExpandIT Client Control 3 Installationshinweise 3 System-Voraussetzungen 3 Installation 3 Programm starten 6 Programm konfigurieren

Mehr

Aufgabenstellung und Zielsetzung

Aufgabenstellung und Zielsetzung Aufgabenstellung und Zielsetzung In diesem Szenario werden Sie eine Bestellung, vorliegend im XML-Format, über einen Web-Client per HTTP zum XI- System senden. Dort wird die XML-Datei mittels eines HTTP-Interfaces

Mehr

ecomat 100 Typ R 360 Ergänzung zur Dokumentation: Systemhandbuch (Stand August 1999)

ecomat 100 Typ R 360 Ergänzung zur Dokumentation: Systemhandbuch (Stand August 1999) Ergänzung zur Dokumentation: Systemhandbuch ecomat 100 Typ R 360 (Stand August 1999) Die nachfolgend beschriebenen Funktionen sind in der Dokumentation des Systemhandbuches ecomat 100 Typ R 360 mit Stand

Mehr

Einführung in VisualBasic for Applications. Stefan Mahlitz

Einführung in VisualBasic for Applications. Stefan Mahlitz Einführung in VisualBasic for Applications Stefan Mahlitz Stefan Mahlitz Einführung in VBA 27.08.00 Inhaltsverzeichnis 1. Grundlagen der VisualBasic for Applications (VBA) Programmierung...2 1.1 Variablen,

Mehr

Parallelverarbeitung mit Ruby

Parallelverarbeitung mit Ruby Fachhochschule Wiesbaden - Fachbereich DCSM Parallelverarbeitung mit Ruby Prozess-Ebene Multithreading 04.12.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 1 Fachhochschule

Mehr

Einrichten der Outlook-Synchronisation

Einrichten der Outlook-Synchronisation Das will ich auch wissen! - Kapitel 3 Einrichten der Outlook-Synchronisation Inhaltsverzeichnis Überblick über dieses Dokument... 2 Diese Kenntnisse möchten wir Ihnen vermitteln... 2 Diese Kenntnisse empfehlen

Mehr

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 28 Testklasse public class TestGirokonto { public static void main(string[] args) { // erzeuge neues Konto Girokonto einkonto = new Girokonto();

Mehr

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()

Mehr

Echtzeit-Linux mit dem RT-Preemption-Patch

Echtzeit-Linux mit dem RT-Preemption-Patch Echtzeit-Linux mit dem RT-Preemption-Patch IT-Klinger Andreas Klinger ak@it-klingerde 22072008 Der RT-Preemption-Patch integriert sich beinahe nahtlos in den Standard-Kernel und bietet Echtzeitfähigkeit

Mehr

Zeiterfassung-Konnektor Handbuch

Zeiterfassung-Konnektor Handbuch Zeiterfassung-Konnektor Handbuch Inhalt In diesem Handbuch werden Sie den Konnektor kennen sowie verstehen lernen. Es wird beschrieben wie Sie den Konnektor einstellen und wie das System funktioniert,

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

TimePunch. TimePunch Command. Benutzerhandbuch 14.08.2013. TimePunch KG, Wormser Str. 37, 68642 Bürstadt

TimePunch. TimePunch Command. Benutzerhandbuch 14.08.2013. TimePunch KG, Wormser Str. 37, 68642 Bürstadt TimePunch TimePunch Command Benutzerhandbuch 14.08.2013 TimePunch KG, Wormser Str. 37, 68642 Bürstadt Dokumenten Information: Dokumenten-Name Benutzerhandbuch, TimePunch Command Revisions-Nummer 37 Gespeichert

Mehr

Effiziente Java Programmierung

Effiziente Java Programmierung Effiziente Java Programmierung Seminar Implementierung moderner virtueller Maschinen am Beispiel von Java SS 2009 von Reinhard Klaus Losse 20. Mai 2009 Gliederung Definition Effizienz Werkzeuge zum Messen

Mehr

Einführung in die Programmierung mit Qt

Einführung in die Programmierung mit Qt Einführung in die Programmierung mit Qt Dr. Ralf Schüler 5.11.2009 Was ist Qt? sprich: [kju:t] Klassenbibliothek für C++ (ferner Java, Python u.a.) sehr umfangreich: GUI, Stringverarbeitung, reguläre Ausdrücke,

Mehr

Dipl.-Inf. J. Richling Wintersemester 2003/2004. Weiche Echtzeit

Dipl.-Inf. J. Richling Wintersemester 2003/2004. Weiche Echtzeit Dipl.-Inf. J. Richling Wintersemester 2003/2004 Weiche Echtzeit Wiederholung - Resultat/Wert-Funktion "harte" Echtzeit Wert Zeit Wert Zeit Wert Deadline Zeit "weiche" Echtzeit Wert Deadline Zeit Deadline

Mehr

Betriebssysteme Kap A: Grundlagen

Betriebssysteme Kap A: Grundlagen Betriebssysteme Kap A: Grundlagen 1 Betriebssystem Definition DIN 44300 Die Programme eines digitalen Rechensystems, die zusammen mit den Eigenschaften dieser Rechenanlage die Basis der möglichen Betriebsarten

Mehr

5.3.3.7 Übung - Überwachen und Verwalten von Systemressourcen in Windows XP

5.3.3.7 Übung - Überwachen und Verwalten von Systemressourcen in Windows XP 5.0 5.3.3.7 Übung - Überwachen und Verwalten von Systemressourcen in Windows XP Einführung Drucken Sie diese Übung aus und führen Sie sie durch. In dieser Übung verwenden Sie administrative Tools zur Überwachung

Mehr

ChatServer. Unser Server

ChatServer. Unser Server ChatServer Wir wollen einen universell verwendbaren Server programmieren, der die wichtigsten Funktionen eines Chat-Servers erfüllt: es soll ein 'Threaded TCP Server' sein Clients können sich mit Port

Mehr

Quickstart. Nero BackItUp. Ahead Software AG

Quickstart. Nero BackItUp. Ahead Software AG Quickstart Nero BackItUp Ahead Software AG Informationen zu Urheberrecht und Marken Das Nero BackItUp Benutzerhandbuch und alle Inhalte sind urheberrechtlich geschützt und Eigentum von Ahead Software.

Mehr

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

Task A Zündung. Task B Einspritzung. Task C Erfassung Pedalwert. J. Schäuffele, Th. Zurawka: Automotive Software Engineering, Vieweg, 2003 Task! evt. parallel zu bearbeitende Ausführungseinheit! Beispiel: Task A Zündung Task B Einspritzung Task C Erfassung Pedalwert Zeit t J. Schäuffele, Th. Zurawka:, Vieweg, 2003 Echtzeitbetriebssysteme

Mehr

Betriebssysteme (BTS)

Betriebssysteme (BTS) 9.Vorlesung Betriebssysteme (BTS) Christian Baun cray@unix-ag.uni-kl.de Hochschule Mannheim Fakultät für Informatik Institut für Betriebssysteme 10.5.2007 Exkursion Die Exkursion wird am Freitag, den 18.5.2007

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Dokumentation Einrichtung des Netzwerkes und der Ordnerfreigabe für Manny/MannyQt unter Windows Vista / Windows 7

Dokumentation Einrichtung des Netzwerkes und der Ordnerfreigabe für Manny/MannyQt unter Windows Vista / Windows 7 Dokumentation Einrichtung des Netzwerkes und der Ordnerfreigabe für Manny/MannyQt unter Windows Vista / Windows 7 1. Einleitung...2 2. Einrichten der Arbeitsgruppe und des Computernamen...2 2.1 Windows

Mehr

DeskSave 8.2. - Aufruf mit Kommandozeilenparametern möglich - Automatisches Restaurieren bei Auflösungswechsel, Programmstart oder Rückkehr aus

DeskSave 8.2. - Aufruf mit Kommandozeilenparametern möglich - Automatisches Restaurieren bei Auflösungswechsel, Programmstart oder Rückkehr aus DeskSave 8.2 (c) 1998-2008 Thorsten Blauhut DeskSave ist ein anwenderfreundliches Tool, mit dem man das Icon-Layout des Desktops sichern und bei Bedarf wieder restaurieren kann. Eigenschaften: - Sicherung

Mehr

Inhalt 1 Inbetriebnahme 2 Erläuterungen zum Gateway 3 Bedienung der App 4 Hinweise zur Fehlerbehebung. 1 - Inbetriebnahme. 1.1 - Gateway anschließen

Inhalt 1 Inbetriebnahme 2 Erläuterungen zum Gateway 3 Bedienung der App 4 Hinweise zur Fehlerbehebung. 1 - Inbetriebnahme. 1.1 - Gateway anschließen Inhalt 1 Inbetriebnahme 2 Erläuterungen zum Gateway 3 Bedienung der App 4 Hinweise zur Fehlerbehebung 1 - Inbetriebnahme Nachdem Sie die WeatherHub App von TFA Dostmann aus dem Apple App Store oder dem

Mehr

2.4 Das erste C++-Programm *

2.4 Das erste C++-Programm * 2.4 Das erste C++-Programm * 11 2.4 Das erste C++-Programm * Den besten Lernerfolg erzielen Sie, wenn Sie alle Beispiele dieses Buchs selbst nachvollziehen. Sie können hierzu einen Compiler verwenden,

Mehr

Hello World in Java. Der Weg zum ersten Java-Programm

Hello World in Java. Der Weg zum ersten Java-Programm Vorwort Hello World in Java Der Weg zum ersten Java-Programm Diese Anleitung wurde unter Windows XP verfasst. Grundsätzlich sollte sie auch unter späteren Windows Versionen wie Windows Vista oder Windows

Mehr

6.Vorlesung Betriebssysteme Hochschule Mannheim

6.Vorlesung Betriebssysteme Hochschule Mannheim Christian Baun 6.Vorlesung Betriebssysteme Hochschule Mannheim SS2011 1/40 6.Vorlesung Betriebssysteme Hochschule Mannheim Christian Baun Karlsruher Institut für Technologie Steinbuch Centre for Computing

Mehr

9 Verteilte Verklemmungserkennung

9 Verteilte Verklemmungserkennung 9 Verteilte Verklemmungserkennung 9.1 Grundlagen Für die Existenz einer Verklemmung notwendige Bedingungen Exklusive Betriebsmittelbelegung Betriebsmittel können nachgefordert werden Betriebsmittel können

Mehr

Effizientes Memory Debugging in C/C++

Effizientes Memory Debugging in C/C++ Effizientes Memory Debugging in C/C++ Adam Szalkowski Embedded Computing Conference 2014 Ursachen/ Symptome Debugging Tools Ursachen / Symptome Was habe ich falsch gemacht? Was kann denn passieren im schlimmsten

Mehr

Outlook-Umstellung. Inhalt. Änderungen an diesem Dokument

Outlook-Umstellung. Inhalt. Änderungen an diesem Dokument Outlook-Umstellung (im Rahmen der Exchange-Server-Umstellung am 15.-17.04.2005) Inhalt Outlook-Umstellung... 1 Inhalt... 1 Änderungen an diesem Dokument... 1 Einleitung... 2 Hilfe... 2 Automatische Umstellung...

Mehr

Embedded OS für ARM Cortex Microcontroller

Embedded OS für ARM Cortex Microcontroller Embedded OS für ARM Cortex Microcontroller RTOS Design, Timinganalyse und Test mit Core Simulation und Hardware Debugger Entscheidende Fragen für oder gegen RTOS Lohnt sich der Einsatz eines RTOS auch

Mehr

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

Inhaltsverzeichnis. 2.4 Thread-Systeme. 2.1 Was ist ein Prozess? 2.2 Scheduling. 2.3 Interprozesskommunikation Inhaltsverzeichnis Systemprogrammierung - Kapitel 2 Prozessverwaltung 1/21 2.1 Was ist ein Prozess? Definition Prozesszustände Prozesskontrollblöcke 2.4 Thread-Systeme Sinn und Zweck Thread-Arten Thread-Management

Mehr

www.dolphinsecure.de Kinder im Internet? Aber mit Sicherheit! Installationsanleitung Windows Seite

www.dolphinsecure.de Kinder im Internet? Aber mit Sicherheit! Installationsanleitung Windows Seite www.dolphinsecure.de Kinder im Internet? Aber mit Sicherheit! 1 Installationsanleitung Windows Willkommen bei Dolphin Secure Auf den folgenden n werden Sie durch die Installation der Kinderschutz-Software

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

Programmiertechnik II

Programmiertechnik II Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen

Mehr

Convision IP-Videoserver und die Sicherheitseinstellungen von Windows XP (SP2)

Convision IP-Videoserver und die Sicherheitseinstellungen von Windows XP (SP2) Inhalt Convision IP-Videoserver und die Sicherheitseinstellungen von Windows XP (SP2)... 1 1. Die integrierte Firewall von Windows XP... 2 2. Convision ActiveX und Internet Explorer 6... 3 3. Probleme

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr