Multithread Programming
|
|
- Erich Jesko Scholz
- vor 6 Jahren
- Abrufe
Transkript
1 Vorlesung Rechnerarchitektur 2 Seite 150 Threads versus Processes Processes execute in separate address spaces (schwergewichtige Prozesse) communicate via IPC mechanisms (sockets, pipes, signals) Thread execute in a common address space (leichtgewichtige Prozesse) communicate via shared memory (global shared variables) The thread model takes a process and divides it into two parts: One contains resources used across the whole program (processwide information) such as programm instructions and global data. This part is still referred as process. The other contains information related to the execution state, such as the program conter, a stack and local data. This part is referred to as a thread. Why use threads? Creating a new process (fork and exec under UNIX) can be expensive and time consuming. A call into the operating system must be performed, which involves context switching rescheduling and a lot more activities. The entire process must be replicated (a new address space). The communication and synchronization must be performed over address space boundaries and thus involves the operating system kernel. Every synchronization and communication is a very expensive trap into the OS. Threads can be created without replicating an entire process. Only the execution state must be created. Creating a thread is done in the user space (same address space) rather than in kernel space. Communication is done via shared variables and also synchronization stays within the user address space by using synchronization variables and mutual exclusion. Using threads is much more efficient than processes. Threads can be implemented at the operating system level or at the user level. Thread at user level are realized by a thread library which handles threads whichout the involvement of the operating system, e.g. the thread scheduling is performed as a user thread within the user process. Thread switching is thus much faster than a process switch.
2 Vorlesung Rechnerarchitektur 2 Seite 151 Implementations PThreads POSIX threads IEEE Standard POSIX Section c Mach Threads Based on the functions supplied by the MACH Kernel NT Threads Windows NT specific Qt Threads Built-in thread support in the Qt library and Linuxthreads (Posix-conform), Solaris-Threads, NPTL, NGTL, PThreads language extension by library C-Language + thread function library + headerfile programming types function calls platform independend Goals exploiting potential parallelism overlapping I/O latencies handle asynchronous events real-time scheduling
3 Vorlesung Rechnerarchitektur 2 Seite 152 Execution Models The boss/worker model A single thread, the boss, accepts input for the entire program. Based on that input, the boss passes off specific tasks to one or more worker threads. The peer model In the peer ( Gleichberechtigte ) model, also known as the workcrew model, one thread must create all the other peer threads when the program starts. This thread subsequently acts as just another peer thread that work attracts, or suspends itself waiting for the other peers to finish. The pipeline model In the pipeline mode, each threads works at a different stage in the processing chain. All the pipeline assumptions must be met (s.a. RA1). Virtual Address Space Registers SP PC GPR0 GPR1 Thread 1 do_one_thing() i j x Stack Registers SP PC GPR0 GPR1 Thread 2 do_another_thing() i j x Stack Identity PID UID GID GPR1 Thread main main() do_one_thing() do_another_thing() Text Resources Open Files Locks Sockets r1 r2 Data Heap
4 Vorlesung Rechnerarchitektur 2 Seite 153 Example Program (sequential version) #include <stdio.h> void do_one_thing(int *); void do_another_thing(int *); void do_wrap_up(int, int); int r1 = 0, r2 = 0; void main() do_one_thing( &r1 ); do_another_thing( &r2 ); do_wrap_up(r1, r2); void do_one_thing(int *pnum_times) int i, j, x; for (i=0; i<4; i++) printf("doing one thing\n"); for (j=0; j<10000; j++) x += i; // wait some time (*pnum_times)++; void do_another_thing(int *pnum_times) int i, j, x; for (i=0; i<4; i++) printf("doing another thing\n"); for (j=0; j<10000; j++) x += i; // wait some time (*pnum_times)++; void do_wrap_up(int one_times, int another_times) int total; total = one_times + another_times; printf("wrap up: one thing %d, another %d, total %d\n", one_times, another_times, total);
5 Vorlesung Rechnerarchitektur 2 Seite 154 Example Program (threaded version) #include <stdio.h> #include <pthread.h> void do_one_thing(int *); void do_another_thing(int *); void do_wrap_up(int, int); int r1 = 0, r2 = 0; main() pthread_t thread1, thread2; pthread_create(&thread1, // 1 parameter NULL, // 2 parameter (void *) do_one_thing, // 3 parameter (void *) &r1); // 4 parameter pthread_create(&thread2, NULL, (void *) do_another_thing, (void *) &r2); pthread_join(thread1, NULL); //wait for termination of thread pthread_join(thread2, NULL); //wait for termination of thread do_wrap_up(r1, r2); // functions from last example Man-pages int pthread_create( pthread_t * thread, pthread_attr_t * attr, void * (*start_routine)(void *), void * arg); int pthread_join( pthread_t th, void **thread_return);
6 Vorlesung Rechnerarchitektur 2 Seite 155 Posix-Threads (1) sind unabhängige Befehlssequenzen innerhalb eines Prozesse teilen sich alle Resourcen (Speicher, Filedeskriptoren,) eines Prozesses Vorteile erhöhter Durchsatz Ausnutzung von Shared-Memory-Systemen mit mehreren Prozessoren, vermeiden von Deadlocks Einbindung Deklarationen in pthread.h Linken der Library libpthread Erzeugen eines Threads int pthread_create( pthread_t *thread, const pthread_attr_t *attr, void *(*start_fkt)(void *), void *arg); thread liefert die Thread-ID des gestarteten Threads attr enthält Attribute des Threads (wenn NULL, werden Default-Werte angenommen, ansonsten Scheduling und detachstate einstellbar) start_fkt arg
7 Vorlesung Rechnerarchitektur 2 Seite 156 Posix-Threads (2) Beenden eines Threads void pthread_exit(void *status); status kann von einen wartenden Thread verarbeitet werden. Ein return aus der Startroutine beendet Threads ebenso. Warten auf die Beendigung eines Threads int pthread_join(pthread_t thread, void **status); Weitere Funktionen pthread_t pthread_self(); // liefert eigene ID int pthread_equal(pthread_t t1,pthread_t t2); // vergleicht zwei Threads
8 Vorlesung Rechnerarchitektur 2 Seite 157 Posix-Threads (3) The Producer/Consumer Example The Producer and Consumer in the following example share data through a common data object. If neither the Producer nor the Consumer makes any effort whatsoever to ensure that the Consumer is getting each value produced once and only once (whithout while loop). However, let s assume for a moment that these two threads make no arrangements for synchronization and talk about the potential problems that might arise in that situation. One problem arises when the Producer is quicker than the Consumer and generates two numbers before the Consumer has a chance to consume the first one. Thus the Consumer would skip a number because it is overwritten before it could be consumed. Another problem that might arise is when the Consumer is quicker than the Producer and consumes the same value twice. data = i write data i = data read = 1 count = 0 Producer void producer(int *arg) int i, n = *arg; for (i=1; i<=n; i++) ; while (count == 1) ; data = i; count = 1; Consumer void consumer(int *arg) int i = 0, n = *arg; while (1) ; while (count == 0) ; i = data; count = 0; produced++; consumed++; if (i == n) return; Problem weakly ordered Speicherzugriffe: Laufen die Threads Consumer und Producer nebenläufig, so kann es passieren, dass der Consumer einen bereits geänderten count Wert sieht, aber noch die alten Daten verwenden würde --> Synchronisation durch eine Speicherbarriere notwendig (PowerPC620 special instruction sync to force all issued store instruction to complete)
9 Vorlesung Rechnerarchitektur 2 Seite 158 Posix-Threads (4) Producer/Consumer: Erweiterung der Speicherzelle zur Datenweitergabe in einen Ringpuffer. #define next(x) (( (x) + 1) % BUF_SIZE) data buf[buf_size]; int rdptr = 0, wrptr = 0; rdptr Queue wrptr + buffer size Producer while (work_to_do) buf[wrptr] = produce(); while (next(wrptr)==rdptr) (); wrptr = next(wrptr); Consumer while (work_to_do) while (wrptr == rdptr) (); consume(buf[rdptr]); rdptr = next(rdptr); (wrptr == rdptr) empty ring buffer queue (next(wrptr)==rdptr) full ring buffer queue Es existiert immer ein leerer Buffer, in den geschreiben werden kann! Problem Sobald mehr als ein Producer oder auch mehr als ein Consumer eingesetzt wird, funktioniert das Programm nicht mehr, da das Lesen und Ändern des wrptr oder des rdptr nicht atomar erfolgen. Lösung: Synchronisation Siehe auch:
10 Vorlesung Rechnerarchitektur 2 Seite 159 Posix-Threads (5) Mutex - garantiert die exclusive Ausführung kritischer Code-Sequenzen Das Mutexobjekt mutex wird mittels pthread_mutex_lock() gesperrt. Sollte der Mutex schon gelockt sein, blockiert der aufrufende Thread bis der Mutex verfügbar ist. pthread_mutex_t mutex; int pthread_mutex_lock(pthread_mutex_t *mutex); int pthread_mutex_trylock(pthread_mutex_t *mutex); //EBUSY if locked int pthread_mutex_unlock(pthread_mutex_t *mutex); Initialisierung int pthread_mutex_init( pthread_mutex_t *mutex, const pthread_mutexattr_t *attr); //dynamic pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; //static Löschen eines Mutex int pthread_mutex_destroy(pthread_mutex_t *mp); Lock/Unlock int pthread_mutex_trylock(pthread_mutex_t *mp); int pthread_mutex_lock(pthread_mutex_t *mp); int pthread_mutex_unlock(pthread_mutex_t *mp); Ein Thread, welcher einen Mutex lockt, ist sein Besitzer. Nur der Besitzer kann einen Mutex unlocken.
11 Vorlesung Rechnerarchitektur 2 Seite 160 Posix-Threads (6) Consumer/Producer mit Mutex Producer while (work_to_do) pthread_mutex_lock(&mutex); buf[wrptr] = produce(); while (next(wrptr)==rdptr) ; wrptr = next(wrptr); pthread_mutex_unlock(&mutex); Consumer while (work_to_do) pthread_mutex_lock(&mutex); while (wrptr == rdptr) ; consume(buf[rdptr]); rdptr = next(rdptr); pthread_mutex_unlock(&mutex); Problem: Das Beispiel funktioniert dann nicht, wenn der Consumer auf eine leere Queue testet, oder der Producer auf eine volle Queue trift. Die Semaphore-Variable wird dann nicht mehr freigegeben. Vorsicht bei der Verwendung automatischer Variablen als Argumente bzw. Ergebnissen von Threads: pthread_t t; void *g(int *i) int res; // Speicherplatz im Stack!!! /* berechnet irgendwas, benutzt dabei *i, Ergebnis in res */ return &res; // das geht nicht gut! Warum? void f() int a = 7; pthread_create(&t, NULL, g, &a); // auch das geht nicht gut! Warum?
12 Vorlesung Rechnerarchitektur 2 Seite 161 Posix-Threads (7) Condition Variable - warten auf Ereignisse Initialisierung pthread_cond_t cond; int pthread_cond_init( pthread_cond_t *cond, const pthread_condattr_t *attr); pthread_cond_t cond = PTHREAD_COND_INITIALIZER; Löschen int pthread_cond_destroy(pthread_cond_t *cond); Warten auf ein Ereignis int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex); Blockiert den aufrufenden Thread bis ein anderer Thread das Eintreten des Ereignisses cond signalisiert. Der Mutex mutex wird unlocked bei Aufruf von pthread_cond_wait und wieder gelockt, bevor die Funktion beendet wird. Signalisieren int pthread_cond_signal(pthread_cond_t *cond); Busy-wait ohne Condition-Variable for(;;) pthread_mutex_lock(mutex); if (cond) break; pthread_mutex_unlock(mutex); <hier ist die Bedingung erfüllt> pthread_mutex_unlock(mutex); Nachteile: verbraucht sehr viel Resourcen, verlangt Programmierdisziplin Version mit Condition-Variable pthread_mutex_lock(mutex); pthread_cond_wait(cond,mutex); <hier ist die Bedingung erfüllt> pthread_mutex_unlock(mutex); Es ist möglich, daß ein pthread_cond_signal mehr als einen Thread aufweckt, ebenso kann ein pthread_cond_wait scheitern. Daher sollte nach dem Aufruf von pthread_cond_wait getestet werden, ob die Bedingung auch wirklich erfüllt ist.
13 Vorlesung Rechnerarchitektur 2 Seite 162 Posix-Threads (8) Beispiel FIFO-Queue für Datenpointer. Es soll für beliebig viele Thread möglich sein, Pointer in das FIFO einzufügen bzw. zu entnehmen. #include <unistd.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #include <pthread.h> #define QSIZE 10 /* number of pointers in the queue */ typedef struct pthread_mutex_t buf_lock; /* lock the structure */ int start_idx; /* start of valid data */ int num_full; /* # of full locations */ pthread_cond_t notfull; /* full -> not full condition */ pthread_cond_t notempty; /* empty -> notempty condition */ void *data[qsize]; /* Circular buffer of pointers */ circ_buf_t; circ_buf_t *new_cb() circ_buf_t *cbp; cbp = (circ_buf_t *) malloc(sizeof (circ_buf_t)); if (cbp == NULL) return (NULL); pthread_mutex_init(&cbp->buf_lock, NULL); pthread_cond_init(&cbp->notfull, NULL); pthread_cond_init(&cbp->notempty, NULL); cbp->start_idx = 0; cbp->num_full = 0; return (cbp); void delete_cb(circ_buf_t *cbp) pthread_mutex_destroy(&cbp->buf_lock); pthread_cond_destroy(&cbp->notfull); pthread_cond_destroy(&cbp->notempty); free(cbp); new_cd legt einen neuen Puffer an und initialisiert den Mutex buf_lock und die Condition-Variables notfull und notempty. delete_cb löscht den Mutex und die Condition-Variables und anschließend den Puffer.
14 Vorlesung Rechnerarchitektur 2 Seite 163 Posix-Threads (9) void put_cb_data(circ_buf_t *cbp, void *data) pthread_mutex_lock(&cbp->buf_lock); /* wait while the buffer is full */ while (cbp->num_full == QSIZE) pthread_cond_wait(&cbp->notfull, &cbp->buf_lock); cbp->data[(cbp->start_idx + cbp->num_full) % QSIZE] = data; cbp->num_full += 1; pthread_cond_signal(&cbp->notempty); pthread_mutex_unlock(&cbp->buf_lock); void *get_cb_data(circ_buf_t *cbp) void *data; pthread_mutex_lock(&cbp->buf_lock); /* wait while there's nothing in the buffer */ while (cbp->num_full == 0) pthread_cond_wait(&cbp->notempty, &cbp->buf_lock); data = cbp->data[cbp->start_idx]; cbp->start_idx = (cbp->start_idx + 1) % QSIZE; cbp->num_full -= 1; pthread_cond_signal(&cbp->notfull); pthread_mutex_unlock(&cbp->buf_lock); return (data); put_cb_data fügt einen Datenpointer data in den Puffer cbp ein. Dazu wird wie folgt vorgegangen: Zuerst wird der Puffer gelockt. Dann wird gewartet, bis Platz im Puffer ist. Anschließend wird das Datum in den Puffer eingefügt, evtl. wartenden Threads signalisiert, daß der Puffer jetzt nicht leer ist, und schließlich wird der Lock auf den Puffer wieder freigegeben. get_cb_data liefert das älteste Datum im Puffer. Dazu wird zuerst der Puffer gelockt. Dann wird gewartet, bis der Puffer nicht leer ist. Anschließend wird das Datum dem Puffer entnommen, evtl. wartenden Threads signalisiert, daß der Puffer jetzt nicht voll ist, und zuletzt wird der Puffer freigegeben und das Datum zurückgeliefert.
PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes
PThreads Prozesse und Threads Ein Unix-Prozess hat IDs (process,user,group) Umgebungsvariablen Verzeichnis Programmcode Register, Stack, Heap Dateideskriptoren, Signale message queues, pipes, shared memory
MehrConcurrency and Processes of Pthreads
Concurrency and Processes of Pthreads Pthreads Pthreads is a POSIX standard for describing a thread model, it specifies the API and the semantics of the calls. POSIX: Portable Operating System Interface
MehrShared-Memory Programmiermodelle
Shared-Memory Programmiermodelle mehrere, unabhängige Programmsegmente greifen direkt auf gemeinsame Variablen ( shared variables ) zu Prozeßmodell gemäß fork/join Prinzip, z.b. in Unix: fork: Erzeugung
MehrThreads Einführung. Zustände von Threads
Threads Einführung Parallelität : Zerlegung von Problemstellungen in Teilaufgaben, die parallelel ausgeführt werden können (einfachere Strukturen, eventuell schneller, Voraussetzung für Mehrprozessorarchitekturen)
MehrPOSIX-Threads. Aufgabe 9 SP - Ü U10.1
U10 10. Übung U10 10. Übung POSIX-Threads Aufgabe 9 U10.1 U10-1 Motivation von Threads U10-1 Motivation von Threads UNIX-Prozesskonzept: eine Ausführungsumgebung (virtueller Adressraum, Rechte, Priorität,...)
MehrSoftwaresysteme I Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2007 U9.fm
U9 9. Übung U9 9. Übung U9-1 Überblick Besprechung Aufgabe 6 (printdir) Posix-Threads U9.1 U9-2 Motivation von Threads U9-2 Motivation von Threads UNIX-Prozesskonzept: eine Ausführungsumgebung (virtueller
MehrU9-3 Vergleich von Thread-Konzepten. U9-2 Motivation von Threads. U9-3 Vergleich von Thread-Konzepten (2) U9-1 Überblick
U9 9. Übung U9 9. Übung U9-1 Überblick Besprechung Aufgabe 6 (printdir) Posix-Threads U9.1 User-Level Threads: Federgewichtige Prozesse Realisierung von Threads auf Anwendungsebene innerhalb eines Prozesses
MehrU8-1 Motivation von Threads. U8-2 Vergleich von Thread-Konzepten. U8-2 Vergleich von Thread-Konzepten (2) Motivation
U8 POSIX-Threads U8 POSIX-Threads U8-1 Motivation von Threads U8-1 Motivation von Threads Motivation Thread-Konzepte UNIX-Prozesskonzept: eine Ausführungsumgebung (virtueller Adressraum, Rechte, Priorität,...)
MehrU8 POSIX-Threads U8 POSIX-Threads
U8 POSIX-Threads U8 POSIX-Threads Motivation Thread-Konzepte pthread-api pthread-koordinierung U8.1 U8-1 Motivation von Threads U8-1 Motivation von Threads UNIX-Prozesskonzept: eine Ausführungsumgebung
MehrThreads. Foliensatz 8: Threads Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015
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)
MehrLinux Prinzipien und Programmierung
Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2014 1 / 28 Kritische Bereiche bei Threads Deadlocks Conditions/Semaphore 2 / 28 Beispiel aus der letzten Vorlesung
MehrEchtzeitbetriebssysteme (am Beispiel QNX) Dr. Stefan Enderle HS Esslingen
Echtzeitbetriebssysteme (am Beispiel QNX) Dr. Stefan Enderle HS Esslingen 3. QNX Neutrino Microkernel 3.1 Einführung Der Neutrino-Kernel (Betriebssystemkern) implementiert (nur) die wichtigsten Teile des
MehrAufgabe 9: recgrep rekursive, parallele Suche (letzte Aufgabe)
U6 6. Übung (Mathematik / Technomathematik) U6 6. Übung (Mathematik / Technomathematik) Besprechung Aufgabe 4 (halde) Besprechung Aufgabe 5 (crawl) Besprechung der Mini-Klausur POSIX-Threads Motivation
MehrThreads. Netzwerk - Programmierung. Alexander Sczyrba Jan Krüger
Netzwerk - Programmierung Threads Alexander Sczyrba asczyrba@cebitec.uni-bielefeld.de Jan Krüger jkrueger@cebitec.uni-bielefeld.de Übersicht Probleme mit fork Threads Perl threads API Shared Data Mutexes
MehrExercise (Part XI) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1
Exercise (Part XI) Notes: The exercise is based on Microsoft Dynamics CRM Online. For all screenshots: Copyright Microsoft Corporation. The sign ## is you personal number to be used in all exercises. All
MehrWie man heute die Liebe fürs Leben findet
Wie man heute die Liebe fürs Leben findet Sherrie Schneider Ellen Fein Click here if your download doesn"t start automatically Wie man heute die Liebe fürs Leben findet Sherrie Schneider Ellen Fein Wie
Mehr11: Echtzeitbetriebssystem ucos-ii
11: Echtzeitbetriebssystem ucos-ii Sie lernen anhand aufeinander aufbauender Übungen, welche Möglichkeiten ein Echtzeitbetriebssystem wie das ucosii bietet und wie sich damit MC-Applikationen realisieren
Mehr(Prüfungs-)Aufgaben zum Thema Scheduling
(Prüfungs-)Aufgaben zum Thema Scheduling 1) Geben Sie die beiden wichtigsten Kriterien bei der Wahl der Größe des Quantums beim Round-Robin-Scheduling an. 2) In welchen Situationen und von welchen (Betriebssystem-)Routinen
MehrFEBE Die Frontend-Backend-Lösung für Excel
FEBE Die Frontend--Lösung für FEBE Die Frontend--Lösung für FEBE.pptx 8.04.206 0:43 FEBE Die Frontend--Lösung für Nutzer A alle_aufträge neuer_auftrag Auftragsänderung Nutzer B alle_aufträge neuer_auftrag
MehrAufgabenblatt 5 Musterlösung
Prof. Dr. rer. nat. Roland Wismüller Aufgabenblatt 5 Musterlösung Vorlesung Betriebssysteme I Wintersemester 2017/18 Aufgabe 1: Implementierung von Threads (Bearbeitung zu Hause) Der größte Vorteil ist
MehrExercise (Part V) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1
Exercise (Part V) Notes: The exercise is based on Microsoft Dynamics CRM Online. For all screenshots: Copyright Microsoft Corporation. The sign ## is you personal number to be used in all exercises. All
MehrIntroduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016
to to May 2016 to What is Programming? All computers are stupid. All computers are deterministic. You have to tell the computer what to do. You can tell the computer in any (programming) language) you
MehrSAMPLE EXAMINATION BOOKLET
S SAMPLE EXAMINATION BOOKLET New Zealand Scholarship German Time allowed: Three hours Total marks: 24 EXAMINATION BOOKLET Question ONE TWO Mark There are three questions. You should answer Question One
MehrData Structures. Christian Schumacher, Info1 D-MAVT Linked Lists Queues Stacks Exercise
Data Structures Christian Schumacher, chschuma@inf.ethz.ch Info1 D-MAVT 2013 Linked Lists Queues Stacks Exercise Slides: http://graphics.ethz.ch/~chschuma/info1_13/ Motivation Want to represent lists of
MehrLevel 1 German, 2014
90886 908860 1SUPERVISOR S Level 1 German, 2014 90886 Demonstrate understanding of a variety of German texts on areas of most immediate relevance 9.30 am Wednesday 26 November 2014 Credits: Five Achievement
MehrCreating OpenSocial Gadgets. Bastian Hofmann
Creating OpenSocial Gadgets Bastian Hofmann Agenda Part 1: Theory What is a Gadget? What is OpenSocial? Privacy at VZ-Netzwerke OpenSocial Services OpenSocial without Gadgets - The Rest API Part 2: Practical
MehrDIBELS TM. German Translations of Administration Directions
DIBELS TM German Translations of Administration Directions Note: These translations can be used with students having limited English proficiency and who would be able to understand the DIBELS tasks better
MehrExercise (Part II) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1
Exercise (Part II) Notes: The exercise is based on Microsoft Dynamics CRM Online. For all screenshots: Copyright Microsoft Corporation. The sign ## is you personal number to be used in all exercises. All
Mehr4 Threads. FH Regensburg BT/SS04 Betriebssysteme Wirtschaftsinformatik. 4.1 Allgemein
4 Threads 4.1 Allgemein Prozessmodell: Zwei unabhängige Eigenschaften eines Prozesses: Er hat Resourcen: Adressen, Daten, geöffnete Dateien und ist ausführbar Thread: hat keine eigenen Resourcen (ausser
MehrMATLAB driver for Spectrum boards
MATLAB driver for Spectrum boards User Manual deutsch/english SPECTRUM SYSTEMENTWICKLUNG MICROELECTRONIC GMBH AHRENSFELDER WEG 13-17 22927 GROSSHANSDORF GERMANY TEL.: +49 (0)4102-6956-0 FAX: +49 (0)4102-6956-66
MehrVGM. VGM information. HAMBURG SÜD VGM WEB PORTAL USER GUIDE June 2016
Overview The Hamburg Süd VGM Web portal is an application that enables you to submit VGM information directly to Hamburg Süd via our e-portal Web page. You can choose to enter VGM information directly,
MehrProgrammiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften
Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder
MehrLevel 1 German, 2016
90886 908860 1SUPERVISOR S Level 1 German, 2016 90886 Demonstrate understanding of a variety of German texts on areas of most immediate relevance 2.00 p.m. Wednesday 23 November 2016 Credits: Five Achievement
MehrLevel 1 German, 2012
90886 908860 1SUPERVISOR S Level 1 German, 2012 90886 Demonstrate understanding of a variety of German texts on areas of most immediate relevance 9.30 am Tuesday 13 November 2012 Credits: Five Achievement
MehrMemory Models. 17. September 2012
Memory Models 17. September 2012 Here Be Dragons In addition, programming idioms used by some programmers and used within Sun s Java Development Kit is not guaranteed to be valid according the existing
MehrBetriebssysteme Teil 11: Interprozess-Kommunikation
Betriebssysteme Teil 11: Interprozess-Kommunikation 19.12.15 1 Übersicht Grundbegriffe Shared Memory Pipelines Messages Ports Sockets 2 Grundbegriffe Interprocess-Kommunikation = Austausch von Daten über
MehrWhere are we now? The administration building M 3. Voransicht
Let me show you around 9 von 26 Where are we now? The administration building M 3 12 von 26 Let me show you around Presenting your company 2 I M 5 Prepositions of place and movement There are many prepositions
MehrAbstrakte C-Maschine und Stack
Abstrakte C-Maschine und Stack Julian Tobergte Proseminar C- Grundlagen und Konzepte, 2013 2013-06-21 1 / 25 Gliederung 1 Abstrakte Maschine 2 Stack 3 in C 4 Optional 5 Zusammenfassung 6 Quellen 2 / 25
MehrNEWSLETTER. FileDirector Version 2.5 Novelties. Filing system designer. Filing system in WinClient
Filing system designer FileDirector Version 2.5 Novelties FileDirector offers an easy way to design the filing system in WinClient. The filing system provides an Explorer-like structure in WinClient. The
MehrLevel 2 German, 2016
91126 911260 2SUPERVISOR S Level 2 German, 2016 91126 Demonstrate understanding of a variety of written and / or visual German texts on familiar matters 2.00 p.m. Tuesday 29 November 2016 Credits: Five
MehrRECHNUNGSWESEN. KOSTENBEWUßTE UND ERGEBNISORIENTIERTE BETRIEBSFüHRUNG. BY MARTIN GERMROTH
RECHNUNGSWESEN. KOSTENBEWUßTE UND ERGEBNISORIENTIERTE BETRIEBSFüHRUNG. BY MARTIN GERMROTH DOWNLOAD EBOOK : RECHNUNGSWESEN. KOSTENBEWUßTE UND Click link bellow and free register to download ebook: RECHNUNGSWESEN.
MehrKonkret - der Ratgeber: Die besten Tipps zu Internet, Handy und Co. (German Edition)
Konkret - der Ratgeber: Die besten Tipps zu Internet, Handy und Co. (German Edition) Kenny Lang, Marvin Wolf, Elke Weiss Click here if your download doesn"t start automatically Konkret - der Ratgeber:
Mehrconst Zwei Schlüsselwörter bei der Deklaration von Variablen und Member-Funktionen haben wir noch nicht behandelt: const und static.
const Zwei Schlüsselwörter bei der Deklaration von Variablen und Member-Funktionen haben wir noch nicht behandelt: const und static. Eine const Variable kann ihren Wert nicht ändern: const double pi =
MehrMarkus Klußmann, Amjad Saadeh Institut für Informatik. Pthreads. von Markus Klußmann und Amjad Saadeh. Pthreads
Markus Klußmann, Amjad Saadeh Institut für Informatik Pthreads von Markus Klußmann und Amjad Saadeh Pthreads Inhalt - Was sind Threads? - Prozess vs. Thread - Kurzer Überblick POSIX - Threads im Betriebssystem
MehrKilly Literaturlexikon: Autoren Und Werke Des Deutschsprachigen Kulturraumes 2., Vollstandig Uberarbeitete Auflage (German Edition)
Killy Literaturlexikon: Autoren Und Werke Des Deutschsprachigen Kulturraumes 2., Vollstandig Uberarbeitete Auflage (German Edition) Walther Killy Click here if your download doesn"t start automatically
MehrRegistration of residence at Citizens Office (Bürgerbüro)
Registration of residence at Citizens Office (Bürgerbüro) Opening times in the Citizens Office (Bürgerbüro): Monday to Friday 08.30 am 12.30 pm Thursday 14.00 pm 17.00 pm or by appointment via the Citizens
MehrJava Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation
Java Tools JDK http://www.oracle.com/technetwork/java/javase/ Downloads IDEs Java SE 8 Java SE 8 Documentation Eclipse http://www.eclipse.org IntelliJ http://www.jetbrains.com/idea/ NetBeans https://netbeans.org/
MehrUnit 4. The Extension Principle. Fuzzy Logic I 123
Unit 4 The Extension Principle Fuzzy Logic I 123 Images and Preimages of Functions Let f : X Y be a function and A be a subset of X. Then the image of A w.r.t. f is defined as follows: f(a) = {y Y there
MehrMartin Luther. Click here if your download doesn"t start automatically
Die schönsten Kirchenlieder von Luther (Vollständige Ausgabe): Gesammelte Gedichte: Ach Gott, vom Himmel sieh darein + Nun bitten wir den Heiligen Geist... der Unweisen Mund... (German Edition) Martin
MehrPONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB
Read Online and Download Ebook PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB DOWNLOAD EBOOK : PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: Click link bellow
MehrThe process runs automatically and the user is guided through it. Data acquisition and the evaluation are done automatically.
Q-App: UserCal Advanced Benutzerdefinierte Kalibrierroutine mit Auswertung über HTML (Q-Web) User defined calibration routine with evaluation over HTML (Q-Web) Beschreibung Der Workflow hat 2 Ebenen eine
MehrA Classification of Partial Boolean Clones
A Classification of Partial Boolean Clones DIETLINDE LAU, KARSTEN SCHÖLZEL Universität Rostock, Institut für Mathematik 25th May 2010 c 2010 UNIVERSITÄT ROSTOCK MATHEMATISCH-NATURWISSENSCHAFTLICHE FAKULTÄT,
MehrProgrammier-Befehle - Woche 10
Funktionen Rekursion Selbstaufruf einer Funktion Jeder rekursive Funktionsaufruf hat seine eigenen, unabhängigen Variablen und Argumente. Dies kann man sich sehr gut anhand des in der Vorlesung gezeigten
Mehrp^db=`oj===pìééçêíáåñçêã~íáçå=
p^db=`oj===pìééçêíáåñçêã~íáçå= Error: "Could not connect to the SQL Server Instance" or "Failed to open a connection to the database." When you attempt to launch ACT! by Sage or ACT by Sage Premium for
Mehrprorm Budget Planning promx GmbH Nordring Nuremberg
prorm Budget Planning Budget Planning Business promx GmbH Nordring 100 909 Nuremberg E-Mail: support@promx.net Content WHAT IS THE prorm BUDGET PLANNING? prorm Budget Planning Overview THE ADVANTAGES OF
MehrZWISCHEN TRADITION UND REBELLION - FRAUENBILDER IM AKTUELLEN BOLLYWOODFILM (GERMAN EDITION) BY CHRISTINE STöCKEL
Read Online and Download Ebook ZWISCHEN TRADITION UND REBELLION - FRAUENBILDER IM AKTUELLEN BOLLYWOODFILM (GERMAN EDITION) BY CHRISTINE STöCKEL DOWNLOAD EBOOK : ZWISCHEN TRADITION UND REBELLION - FRAUENBILDER
MehrU6-1 Organisatories. U6-2 Motivation von Threads. U6-3 Vergleich von Thread-Konzepten. Organisatorisches
U6 6. Übung U6 6. Übung U6-1 Organisatories U6-1 Organisatories Organisatorisches Zusätzliche Tafelübung zur S1-Klaurvorbereitung Besprechung Aufgabe 5 (crawl) OSIX-Threads Motivation Thread-Konzepte am
Mehrv+s Output Quelle: Schotter, Microeconomics, , S. 412f
The marginal cost function for a capacity-constrained firm At output levels that are lower than the firm s installed capacity of K, the marginal cost is merely the variable marginal cost of v. At higher
MehrWas heißt Denken?: Vorlesung Wintersemester 1951/52. [Was bedeutet das alles?] (Reclams Universal-Bibliothek) (German Edition)
Was heißt Denken?: Vorlesung Wintersemester 1951/52. [Was bedeutet das alles?] (Reclams Universal-Bibliothek) (German Edition) Martin Heidegger Click here if your download doesn"t start automatically Was
MehrFinite Difference Method (FDM)
Finite Difference Method (FDM) home/lehre/vl-mhs-1-e/folien/vorlesung/2a_fdm/cover_sheet.tex page 1 of 15. p.1/15 Table of contents 1. Problem 2. Governing Equation 3. Finite Difference-Approximation 4.
MehrONLINE LICENCE GENERATOR
Index Introduction... 2 Change language of the User Interface... 3 Menubar... 4 Sold Software... 5 Explanations of the choices:... 5 Call of a licence:... 7 Last query step... 9 Call multiple licenses:...
MehrFunktion der Mindestreserve im Bezug auf die Schlüsselzinssätze der EZB (German Edition)
Funktion der Mindestreserve im Bezug auf die Schlüsselzinssätze der EZB (German Edition) Philipp Heckele Click here if your download doesn"t start automatically Download and Read Free Online Funktion
Mehr!! Um!in!ADITION!ein!HTML51Werbemittel!anzulegen,!erstellen!Sie!zunächst!ein!neues! Werbemittel!des!Typs!RichMedia.!!!!!!
HTML5&Werbemittel/erstellen/ Stand:/06/2015/ UminADITIONeinHTML51Werbemittelanzulegen,erstellenSiezunächsteinneues WerbemitteldesTypsRichMedia. Hinweis:// DasinADITIONzuhinterlegende RichMedia1Werbemittelbestehtimmer
MehrWorx Landroid - Software Update
Worx Landroid - Software Update WORX Landroid Software Update für Anwender 30.04.2015 Website: www.worxlandroid.com Direct Direkter Link Link for auf the Update: Update: https://www.worxlandroid.com/en/software-update
MehrMock Exam Behavioral Finance
Mock Exam Behavioral Finance For the following 4 questions you have 60 minutes. You may receive up to 60 points, i.e. on average you should spend about 1 minute per point. Please note: You may use a pocket
MehrTube Analyzer LogViewer 2.3
Tube Analyzer LogViewer 2.3 User Manual Stand: 25.9.2015 Seite 1 von 11 Name Company Date Designed by WKS 28.02.2013 1 st Checker 2 nd Checker Version history Version Author Changes Date 1.0 Created 19.06.2015
MehrConcept. Chapter. Locking daemon over CIFS for OpenOffice.org. Verantwortlich
FOSS-Group GmbH Bismarckallee 9 4D-79098 Freiburg i.br Tel. +41 (0)61 751 72 80 Fax +41 (0)61 751 78 79 www.foss-group.eu Mail: info@foss-group.eu Concept OSBD Chapter Locking daemon over CIFS for OpenOffice.org
MehrRTEMS- Echtzeitbetriebssystem
RTEMS- Echtzeitbetriebssystem Name: Hussein Hammoud Matrikel- Nr.: 230768 Studiengang: Technische Informatik Fach: Projekt Eingebettete Kommunikation Technische Universität Berlin Sommersemester 2006 RTEMS-
MehrIch habe eine Nachricht für Sie
Ich habe eine Nachricht für Sie Even on a well-planned trip whether holiday or business changes can happen to the planned schedule. In such an event, it s essential to be able to cope with the new arrangements.
MehrWalter Buchmayr Ges.m.b.H.
Seite 1/10 Chapter Description Page 1 Advantages 3 2 Performance description 4 3 Settings 5 4 Options 6 5 Technical data 7 6 Pictures 8 http://members.aon.at/buchmayrgmbh e-mail: walter.buchmayr.gmbh@aon.at
MehrExercise 6. Compound Types and Control Flow. Informatik I für D-MAVT. M. Gross, ETH Zürich, 2017
Exercise 6 Compound Types and Control Flow Daniel Bogado Duffner Slides auf: Informatik I für D-MAVT bodaniel@student.ethz.ch n.ethz.ch/~bodaniel Agenda Recap/Quiz Structures Unions Enumerations Loops
MehrContext-adaptation based on Ontologies and Spreading Activation
-1- Context-adaptation based on Ontologies and Spreading Activation ABIS 2007, Halle, 24.09.07 {hussein,westheide,ziegler}@interactivesystems.info -2- Context Adaptation in Spreadr Pubs near my location
MehrKursbuch Naturheilverfahren: Curriculum der Weiterbildung zur Erlangung der Zusatzbezeichnung Naturheilverfahren (German Edition)
Kursbuch Naturheilverfahren: Curriculum der Weiterbildung zur Erlangung der Zusatzbezeichnung Naturheilverfahren (German Edition) Click here if your download doesn"t start automatically Kursbuch Naturheilverfahren:
MehrFachübersetzen - Ein Lehrbuch für Theorie und Praxis
Fachübersetzen - Ein Lehrbuch für Theorie und Praxis Radegundis Stolze Click here if your download doesn"t start automatically Fachübersetzen - Ein Lehrbuch für Theorie und Praxis Radegundis Stolze Fachübersetzen
MehrLevel 2 German, 2013
91126 911260 2SUPERVISOR S Level 2 German, 2013 91126 Demonstrate understanding of a variety of written and / or visual German text(s) on familiar matters 9.30 am Monday 11 November 2013 Credits: Five
MehrOperating Systems Principles C11
Humboldt University Computer Science Department Operating Systems Principles C11 Lab 0 - Auswertung Make Das Unix-Tool make bietet die Möglichkeit mehrere, voneinander unabhängige Jobs (z.b. das Übersetzen
MehrGridMate The Grid Matlab Extension
GridMate The Grid Matlab Extension Forschungszentrum Karlsruhe, Institute for Data Processing and Electronics T. Jejkal, R. Stotzka, M. Sutter, H. Gemmeke 1 What is the Motivation? Graphical development
MehrUser-Level-Threads (Koroutinen) Realisierung von Threads auf Benutzerebene innerhalb eines Prozesses
52 Überblick über die 12. Übung Überblick über die 12. Übung 54 Vergleich von Prozeß und Thread-Konzepten mehrere UNIX-Prozesse mit gemeinsamen Speicherbereichen POSIX-Threads Bewertung: + echte Parallelität
MehrCNC ZUR STEUERUNG VON WERKZEUGMASCHINEN (GERMAN EDITION) BY TIM ROHR
(GERMAN EDITION) BY TIM ROHR READ ONLINE AND DOWNLOAD EBOOK : CNC ZUR STEUERUNG VON WERKZEUGMASCHINEN (GERMAN EDITION) BY TIM ROHR PDF Click button to download this ebook READ ONLINE AND DOWNLOAD CNC ZUR
MehrTop-Antworten im Bewerbungsgespräch für Dummies (German Edition)
Top-Antworten im Bewerbungsgespräch für Dummies (German Edition) Rob Yeung Click here if your download doesn"t start automatically Top-Antworten im Bewerbungsgespräch für Dummies (German Edition) Rob Yeung
MehrCABLE TESTER. Manual DN-14003
CABLE TESTER Manual DN-14003 Note: Please read and learn safety instructions before use or maintain the equipment This cable tester can t test any electrified product. 9V reduplicated battery is used in
MehrVGM. VGM information. HAMBURG SÜD VGM WEB PORTAL - USER GUIDE June 2016
Overview The Hamburg Süd VGM-Portal is an application which enables to submit VGM information directly to Hamburg Süd via our e-portal web page. You can choose to insert VGM information directly, or download
MehrKonstruktor/Destruktor
1/23 Konstruktor/Destruktor Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/23 Outline 1 2 3/23 Inhaltsverzeichnis 1 2
MehrSagen und Geschichten aus dem oberen Flöhatal im Erzgebirge: Pfaffroda - Neuhausen - Olbernhau - Seiffen (German Edition)
Sagen und Geschichten aus dem oberen Flöhatal im Erzgebirge: Pfaffroda - Neuhausen - Olbernhau - Seiffen (German Edition) Dr. Frank Löser Click here if your download doesn"t start automatically Sagen und
Mehriid software tools QuickStartGuide iid USB base driver installation
iid software tools QuickStartGuide iid software tools USB base driver installation microsensys Nov 2016 Introduction / Einleitung This document describes in short form installation of the microsensys USB
MehrSoftwareschnittstellen
P4.1. Gliederung Rechnerpraktikum zu Kapitel 4 Softwareschnittstellen Einleitung, Component Object Model (COM) Zugriff auf Microsoft Excel Zugriff auf MATLAB Zugriff auf CATIA Folie 1 P4.2. Einleitung
MehrDas Zeitalter der Fünf 3: Götter (German Edition)
Das Zeitalter der Fünf 3: Götter (German Edition) Trudi Canavan Click here if your download doesn"t start automatically Das Zeitalter der Fünf 3: Götter (German Edition) Trudi Canavan Das Zeitalter der
MehrOracle AWR und ASH Analyse und Interpretation
Oracle AWR und ASH Analyse und Interpretation Seminarunterlage Version: 2.02 Version 2.02 vom 11. März 2013 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen
MehrPONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB
Read Online and Download Ebook PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB DOWNLOAD EBOOK : PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: Click link bellow
MehrPONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB
Read Online and Download Ebook PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB DOWNLOAD EBOOK : PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: Click link bellow
MehrEin Stern in dunkler Nacht Die schoensten Weihnachtsgeschichten. Click here if your download doesn"t start automatically
Ein Stern in dunkler Nacht Die schoensten Weihnachtsgeschichten Click here if your download doesn"t start automatically Ein Stern in dunkler Nacht Die schoensten Weihnachtsgeschichten Ein Stern in dunkler
MehrProgrammentwicklung ohne BlueJ
Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie
MehrWP2. Communication and Dissemination. Wirtschafts- und Wissenschaftsförderung im Freistaat Thüringen
WP2 Communication and Dissemination Europa Programm Center Im Freistaat Thüringen In Trägerschaft des TIAW e. V. 1 GOALS for WP2: Knowledge information about CHAMPIONS and its content Direct communication
MehrMitglied der Leibniz-Gemeinschaft
Methods of research into dictionary use: online questionnaires Annette Klosa (Institut für Deutsche Sprache, Mannheim) 5. Arbeitstreffen Netzwerk Internetlexikografie, Leiden, 25./26. März 2013 Content
MehrBesprechung Aufgabe 5 (crawl) POSIX-Threads. Problem: UNIX-Prozesskonzept ist für viele heutige Anwendungen unzureichend
U7 6. Übung U7 6. Übung U7-1 Motivation von Threads U7-1 Motivation von Threads Besprechung Aufgabe 5 (crawl) OSIX-Threads Motivation Thread-Konzepte pthread-ai Koordinierung UNIX-rozesskonzept: eine Ausführungsumgebung
MehrEinsatz einer Dokumentenverwaltungslösung zur Optimierung der unternehmensübergreifenden Kommunikation
Einsatz einer Dokumentenverwaltungslösung zur Optimierung der unternehmensübergreifenden Kommunikation Eine Betrachtung im Kontext der Ausgliederung von Chrysler Daniel Rheinbay Abstract Betriebliche Informationssysteme
MehrGeschichte der Philosophie im Überblick: Band 3: Neuzeit (German Edition)
Geschichte der Philosophie im Überblick: Band 3: Neuzeit (German Edition) Franz Schupp Click here if your download doesn"t start automatically Geschichte der Philosophie im Überblick: Band 3: Neuzeit (German
MehrDynamische Programmiersprachen. David Schneider david.schneider@hhu.de STUPS - 25.12.02.50
Dynamische Programmiersprachen David Schneider david.schneider@hhu.de STUPS - 25.12.02.50 Organisatorisches Aufbau: Vorlesung 2 SWS Übung Kurzreferat Projekt Prüfung Übung wöchentliches Aufgabenblatt in
MehrMicrocontroller VU Exam 1 (Programming)
Microcontroller VU 182.694 Exam 1 (Programming) Familienname/Surname: Vorname/First name: MatrNr/MatrNo: Unterschrift/Signature: Vom Betreuer auszufullen/to be lled in by supervisor Funktioniert? Kommentar
MehrHIR Method & Tools for Fit Gap analysis
HIR Method & Tools for Fit Gap analysis Based on a Powermax APML example 1 Base for all: The Processes HIR-Method for Template Checks, Fit Gap-Analysis, Change-, Quality- & Risk- Management etc. Main processes
Mehr