Shared-Memory Programmiermodelle
|
|
|
- Gertrud Bach
- vor 8 Jahren
- Abrufe
Transkript
1 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 eines neuen Kind-Prozesses (komplette Kopie des Elternprozesses zum Zeitpunkt der Erzeugung) wait: Elternprozess kann auf Terminierung der Kindprozesse warten Kommunikation der Prozesse über Signale, Sockets und ggf. auch über ein gemeinsames Speichersegment, das durch Systemfunktionen wie z.b. shmget, shmat, shmdet und shmop kontrolliert wird Threadmodell: mehrere unabhängige Kontrollflüsse in einem Programm bilden jeweils einen Thread Threads teilen sich einen globalen Adressraum Implementierung von Threads durch Bibliotheken, z.b. Pthreads (POSIX-Threads) für Unix 28 Shared-Memory Programmiermodelle (Forts.) Möglichkeiten der Implementierung eines Scheduling für Threads: 1) auf Anwender-Ebene: alle Anwender-Threads werden durch eine Bibliothek in einem Prozess realisiert; Vorteil: sehr schneller Thread- Wechsel ohne Beteiligung des Betriebssystems; Nachteil: kein Thread- Wechsel möglich, wenn ein Thread durch E/A-Operation blockiert ist 2) auf Betriebssystem-Ebene: jeder Anwender-Thread entspricht einem Kernel-Thread ( Leight-Weight Process, LWP); Vorteil: Zuordnung mehrerer Prozessoren zu Threads; Nachteil: nicht jedes Betriebssystem unterstützt Kernel-Threads! Beispiel: Linux Threads, Windows NT 3) auf Anwender- und Betriebssystem-Ebene: der Scheduler der Thread- Bibliothek bildet Anwender-Threads auf Betriebssystem-Threads ab; Scheduler des Betriebssystems bildet letztere ggf. auf Prozessoren ab Beispiel: Solaris 2 29
2 Thread-Programmierung Möglichkeiten der Arbeitsverteilung auf Threads: Master/Slave: ein Master-Thread steuert Programm, erzeugt mehrere Slave-Threads und verteilt Arbeit gleichmäßig auf Threads Pipelining: Thread i produziert Daten für Thread i +1 Pool: mehrere Threads holen sich nach Abarbeitung einer Aufgabe eine neue Aufgabe aus einem Aufgaben-Pool Divide-and-Conquer: jeder Thread erzeugt rekursiv einen weiteren Thread, bis Aufgabe ausreichend fein zerlegt ist Wettbewerb: jeder Thread führt eine andere Strategie aus jeder Thread hat Zugriff auf alle globalen Variablen und dynamisch erzeugte Objekte im globalen Adressraum, besitzt jedoch lokalen Laufzeitstack für private Variablen explizite Synchronisation beim Zugriff auf globale Variablen über Semaphore (Mutex-Variablen) 30 Posix Threads (Pthreads) ANSI/IEEE Standard (1995) zur betriebssystem-unabhängigen Thread-Programmierung das Thread-Scheduling ist jedoch betriebssystem-abhängig! Generierung eines Threads: int pthread_create (pthread_t *thread-id, const pthread_attr_t *attr, void *(*start_func) (void*), void *arg) mit thread-id : eindeutige Identifikation des erzeugten Threads attr : Datenstruktur, mit der einige Attribute des zu erzeugenden Threads festgelegt werden können, ansonsten NULL start_func : Name einer Startfunktion, die Thread nach Erzeugung ausführen soll arg : ein Parameter für Funktion start_func 31
3 Pthreads (Forts.) maximale Anzahl erzeugbarer Threads ist systemabhängig, jedoch mindestens 64 (gemäß POSIX-Standard) blockierendes Warten auf Beendigung eines Threads: int pthread_join (pthread_t thread-id, void **return_value) ein Thread kann seinen eigenen Bezeichner erfahren: pthread_t pthread_self(void) ein Thread terminiert bei Ende der in pthread_create angegebenen Startfunktion vorzeitig durch expliziten internen Aufruf der Funktion void pthread_exit (void *return_value) wenn er durch anderen Thread explizit abgebrochen wird: int pthread_cancel(pthread_t thread) wenn erzeugender Eltern-Thread terminiert 32 Pthreads Beispiel 1: Hello World #include <stdio.h> #define NUM_THREADS 5 void *PrintHello( void *id ) { printf( Hello World from Thread %d\n, id); pthread_exit( (void*) 0 ); main( int argc, char *argv[] ) { int status, t; pthread_t tids[num_threads]; for (t=0; t< NUM_THREADS, t++) { printf( Creating thread %d\n, t); if (pthread_create(&tids[t], NULL, PrintHello, (void*) t)!= 0){ printf( Error in pthread_create!\n"); exit(1); for (t=0; t< NUM_THREADS, t++) { if (pthread_join(tids[t], (void**)&status)!= 0) { printf( Error in pthread_join!\n"); exit(1); if (status == 0) printf( Thread %d terminated correctly.\n, t); 33
4 Pthreads Beispiel 2: Matrix-Multiplikation double X[DIM][DIM], M[DIM][DIM], Y[DIM][DIM]; typedef struct {int row; int col; work_t; void* matmult(void* arg) { int i; work_t *work = (work_t*) arg; Y[work->row][work->col]=0; for (i=0; i < DIM; i++) Y[work->row][work->col] += X[work->row][i] * M[i][work->col]; int main( int argc, char *argv[] ) { int i,j; work_t work[dim][dim]; pthread_t tid[dim][dim]; for (i=0; i < DIM; i++) for (j=0; j < DIM; j++) { work[i][j].row = i; work[i][j].col = j; pthread_create(&tid[i][j], NULL, matmult,(void*) &work[i][j]); for (i=0; i < DIM; i++) for (j=0; j < DIM; j++) pthread_join(tid[i][j], NULL); 34 Pthreads (Forts.) Koordination von Threads durch Mutex-Variablen: Deklaration einer Mutex-Variablen für einen gegenseitigen Ausschluß pthread_mutex_t *mutex Initialisierung einer Mutex-Variablen (Default mit attr=null) int pthread_mutex_init (pthread_mutex_t *mutex, const pthread_mutexattr_t *attr) Thread, der zuerst eine gemeinsame Datenstruktur modifizieren möchte, sperrt zuvor die zugehörige Mutex-Variable int pthread_mutex_lock (pthread_mutex_t *mutex) ruft ein anderer Thread diese Funktion mit der gleichen Mutex-Variablen auf, so wird er blockiert, bis Mutex-Variable wieder frei ist nach Beendigung des Zugriffs gibt Thread die zugehörige Mutex- Variable wieder frei: int pthread_mutex_unlock (pthread_mutex_t *mutex) Test, ob Mutex-Variable bereits durch einen anderen Thread belegt ist: int pthread_mutex_trylock (pthread_mutex_t *mutex) 35
5 Pthreads Beispiel 3: Skalarprodukt #define NUMTHRDS 4 #define VECLEN double a[veclen]; double b[veclen]; double sum; pthread_mutex_t mutexsum; /* already initialized in main */ void *dotprod(void *tid) { int i, len, start, end; double mysum = 0; len = VECLEN / NUMTHRDS; start = (int) tid * len; end = start + len; for (i=start; i<end ; i++) /* compute local part of dot product */ mysum += (a[i] * b[i]); pthread_mutex_lock (&mutexsum); sum += mysum; /* critical region */ pthread_mutex_unlock (&mutexsum); pthread_exit((void*) 0); 36 Pthreads (Forts.) Koordination von Threads durch Bedingungsvariablen: Deklaration einer Bedingungsvariablen: pthread_cond_t *cond Initialisierung einer Bedingungs-Variablen (Default mit attr=null): int pthread_cond_init (pthread_cond_t *cond, const pthread_condattr_t *attr) Thread wird blockiert, bis die zu cond gehörende Bedingung eintritt: int pthread_cond_wait (pthread_cont_t *cond, pthread_mutex_t *mutex) jede Bedingungsvariable ist mit einer Mutex-Variable assoziiert: vor pthread_cond_wait muss daher pthread_mutex_lock(mutex) aufgerufen werden; während einer Blockierung ist mutex jedoch frei! Sobald Bedingung in einem anderen Thread erfüllt ist, kann dieser einen oder alle bzgl. der Variablen cond blockierten Threads aufwecken: int pthread_cond_signal (pthread_cond_t *cond) int pthread_cond_broadcast (pthread_cond_t *cond) 37
6 Pthreads Beispiel 4: Thread-Pool #define NUM_THREADS 10 #define MAX_TASKS 100 typedef struct { pthread_mutex_t lock; pthread_cond_t empty, not_full; /*... further variables for task queue ( not shown here )... */ work_t; void main() { int i; work_t *work; pthread_t tids[num_threads]; pthread_mutex_init(work->lock); pthread_cond_init(work->empty); pthread_cond_init(work->not_full); for (i=0; i < NUM_THREADS; i++) { pthread_create(&tids[i], NULL, (void*) worker, (void*) work); 38 Pthreads Beispiel 4: Thread-Pool (Forts.) void worker(work_t *work) { while (TRUE) { pthread_mutex_lock(work->lock); while (work->num_of_tasks == 0) pthread_cond_wait(work->not_empty, work->lock); /*... get next job from task queue ( not shown here )... */ if (work->num_of_tasks == MAX_TASKS) pthread_cond_broadcast(work->not_full); work->num_of_tasks--; pthread_mutex_unlock(work->lock); /*... start next job from task queue ( not shown here )... */ void insert_job (work_t *work) { pthread_mutex_lock(work->lock); while (work->num_of_tasks == MAX_TASKS) pthread_cond_wait(work->not_full, work->lock); if (work->num_of_tasks == 0) pthread_cond_signal(work->not_empty); /*... put job in task queue ( not shown here )... */ work->num_of_tasks++; pthread_mutex_unlock(work->lock); 39
Besprechung 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
Parallele Programmierung
Parallele Programmierung PThreads OpenMP MPI Übung: Architektur Paralleler Rechnersysteme WS08/09 J.Simon 1 PThread Programmierung Übung: Architektur Paralleler Rechnersysteme WS08/09 J.Simon 2 1 PThreads
RTEMS- Echtzeitbetriebssystem
RTEMS- Echtzeitbetriebssystem Name: Hussein Hammoud Matrikel- Nr.: 230768 Studiengang: Technische Informatik Fach: Projekt Eingebettete Kommunikation Technische Universität Berlin Sommersemester 2006 RTEMS-
fork () Hans-Georg Eßer, Hochschule München Betriebssysteme I, SS 2008 2. Prozesse (2/2) Folie 4
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]: SAS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)
PROGRAMMIEREN MIT UNIX/Linux-SYSTEMAUFRUFEN
PROGRAMMIEREN MIT UNIX/Linux-SYSTEMAUFRUFEN UNIX/Linux-Interprozesskommunikation, zugehörige Systemaufrufe und Kommandos 7. UNIX/Linux-Shared Memory 8. (Benannte) Pipes UNIX/Linux-IPC-Mechanismen Nachrichtenbasierter
C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.
C-Crash-Kurs Eine kurze, keinesfalls erschöpfende Einführung in die Sprache C für Studierende, die eine strukturierte imperative Programmiersprache beherrschen. Die Vorstellung erfolgt am Beispiel von
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
4. Parallelprogrammierung
4. Parallelprogrammierung AlDaBi Prak4kum David Weese 2010/11 Enrico Siragusa WS 2011/12 Inhalt Einführung in Parallelität OpenMP Bemerkungen zur P- Aufgabe EINFÜHRUNG IN PARALLELITÄT Folien z.t. aus VL
Beispiel 3. Shared Memory und Explizite Synchronisation. Daniel Prokesch. 27. April 2015. Überblick. Shared Memory. Semaphore. Ressourcenverwaltung
3 e 3 und Explizite Synchronisation Daniel Prokesch Institut für Technische Informatik Technische Universität Wien 27. April 2015 1 2 3 e Bisher betrachtet... Implizite Synchronisation Blockierende Lese-
Lab 13: Multi Processor Systems II
Lab 13: Multi Processor Systems II 1. Können Sie sich erklären warum die Summe nicht 200% ergibt? Warum entspricht die Auslastung nicht 100% pro Prozessor? 100% ist die gesamte Auslastung vom System alle
Übung zu Grundlagen der Betriebssysteme. 8. Übung 04.12.2012
Übung zu Grundlagen der Betriebssysteme 8. Übung 04.12.2012 Threads Thread (Faden des (Kontrollflusses)): ist ein sequentieller Abarbeitungsablauf (Kontrollfluss) innerhalb eines Prozesses. Umfasst ein
Musterlösung Prüfung SS 2002
Musterlösung Prüfung SS 2002 Fach: I4neu (SEE, KOS, GRS, BTS) Teilprüfung: Betriebssystem Tag: 2.7.2002 8:15 12:15 Raum 1006 Bearbeitungszeit: 72 Minuten Name:... Matr.Nr.:... Punkte:... Note:... Hilfsmittel:
Speicherbasierte Kommunikation (T) Realisierung von Semaphoren (T) Shared Memory (P) Synchronisation mittels Semaphoren (P)
Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom 26.11. Foliensatz 5 Speicherbasierte Kommunikation (T) Realisierung von Semaphoren (T) Shared Memory (P) Synchronisation mittels Semaphoren
Ü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
Übersicht. Einführung in die Programmierung. main. main. main. main. Speicherverwaltung. Definition nach ANSI C:
Übersicht Einführung in die Programmierung Bachelor of Science die -Funktion Prof. Dr. Rethmann Fachbereich Elektrotechnik und Informatik Hochschule Niederrhein WS 009/0 Einführung in die Programmierung
Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller
Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit, 08:00 09:30 Uhr (90 min) Aufgabenblätter 14 Seiten (einschl. Deckblatt) erreichbare Punktzahl 54 zugelassene
2. Prozesssynchronisation
Tafelübung zu BSRvS1 2. Prozesssynchronisation Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund [email protected] http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/exercises/
NEBEN - LÄUFIGE PROG RAM -
carsten VOGT NEBEN - LÄUFIGE PROG RAM - M IERUNG EIN ARBEITSBUCH MIT UNIX/LINUX UND JAVA EXTRA: Mit kostenlosem E-Book Im Internet: Programmbeispiele, Lösungen zu den Aufgaben und Zusatzmaterialien Vogt
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
Embedded-Linux-Seminare. Linux als Betriebssystem
Embedded-Linux-Seminare Linux als Betriebssystem http://www.embedded-linux-seminare.de Diplom-Physiker Peter Börner Spandauer Weg 4 37085 Göttingen Tel.: 0551-7703465 Mail: [email protected]
#define N 5 // Anzahl der Philosophen. while (TRUE) { // Der Philosoph denkt
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)
Architektur paralleler Rechnersysteme - Effiziente HPC Systeme -
Architektur paralleler Rechnersysteme - Effiziente HPC Systeme - WS 12/13 Nr. L.079.05706 Master-Studiengang Informatik, V2/Ü1 www.uni-paderborn.de/pc2 Vorlesung: Architektur Paralleler Rechnersysteme
Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff
Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind
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
Software Engineering für moderne, parallele Plattformen. 6. Parallelität in C/C++ Dr. Victor Pankratius. Dr. Victor Pankratius
Software Engineering für moderne, parallele Plattformen 6. Parallelität in C/C++ IPD Tichy- Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe
Architektur paralleler Rechnersysteme - Effiziente HPC Systeme -
Architektur paralleler Rechnersysteme - Effiziente HPC Systeme - WS 13/14 Nr. L.079.05722 Master-Studiengang Informatik, V2/Ü1 www.uni-paderborn.de/pc2 Vorlesung: Architektur Paralleler Rechnersysteme
Einführung in die C-Programmierung
Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).
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....................................
Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm
Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i
Dr. Monika Meiler. Inhalt
Inhalt 11 Dynamische Feldvereinbarung... 11-2 11.1 Dynamische Vereinbarung von Vektoren... 11-3 11.2 Dynamische Vereinbarung von Matrizen... 11-5 11.3 Die Kommandozeile... 11-8 Propädeutikum 11-1/8 11
Lösung Übungszettel 6
Lösungen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik SS 03 AG Betriebssysteme FB3 Kirsten Berkenkötter Lösung Übungszettel 6 1 Aufgabe 1: Parallel-Server 1.1 Client #include
II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
2 Funktionen für die Verwaltung von Kontexten
Übungen zur Vorlesung Betriebssysteme Projekt 2 Nicht-präemptive User-Level-Thread-Bibliothek (Version 1.10) 1 Einführung In diesem Projekt sollen Sie eine einfache, nicht-präemptive User-Level-Thread-Bibliothek
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
Der Goopax Compiler GPU-Programmierung in C++ ZKI AK-Supercomputing, Münster, 27.03.2014, Ingo Josopait
Der Goopax Compiler GPU-Programmierung in C++ AMD R9 290X: 5.6 TFLOPS (SP MulAdd) Programmierung ~10000 Threads Entwicklungsumgebungen Entwicklungsumgebungen CUDA, OpenCL Compiler: kernel GPU Maschinencode
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
1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
Monitore. Klicken bearbeiten
Sascha Kretzschmann Institut für Informatik Monitore Formatvorlage und deren Umsetzung des Untertitelmasters durch Klicken bearbeiten Inhalt 1. Monitore und Concurrent Pascal 1.1 Warum Monitore? 1.2 Monitordefinition
Kapitel 2 Prozesse und Threads
Kapitel 2 Prozesse und Threads 2.1 Prozesse 2.2 Threads 2.3 Interprozesskommunikation 2.4 Klassische Probleme der Interprozesskommunikation 2.5 Scheduling Prozesse Das Prozessmodell Unterschied Prozess
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
Verteilte Systeme CS5001
Verteilte Systeme CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Client-Server-Anwendungen: Vom passiven (shared state) Monitor zum aktiven Monitor Monitor (Hoare, Brinch-Hansen,
Objektbasierte Entwicklung
Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit
Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein ([email protected].
Java Crashkurs Kim-Manuel Klein ([email protected]) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
2A Basistechniken: Weitere Aufgaben
2A Basistechniken: Weitere Aufgaben 2A.3 Programmierung unter UNIX/Linux 1. Gegeben sind einige Ausschnitte von C-Programmen, die unter UNIX/Linux ausgeführt werden sollen. Beantworten Sie die zugehörigen
b) Gegeben sei folgende Enumeration: enum SPRACHE {Deutsch, Englisch, Russisch};
Aufgabe 1: (15 Punkte) Bei den Multiple-Choice-Fragen ist jeweils nur eine richtige Antwort eindeutig anzukreuzen. Auf die richtige Antwort gibt es die angegebene Punktzahl. Wollen Sie eine Multiple-Choice-Antwort
Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper ([email protected])
HMExcel Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper ([email protected]) Inhalt 1. Einleitung...1 2. Beispiele...2 2.1. Daten in ein Tabellenblatt schreiben...2
boost::asio-bibliothek 238
boost::asio-bibliothek 238 Die von Christopher M. Kohlhoff seit 2003 entwickelte Bibliothek bietet eine für C++ geeignete Schnittstelle auf Basis der BSD-Sockets. Das bedeutet, dass prinzipiell auch alle
Das Monitorkonzept Brinch-Hansen
Das Monitorkonzept (nach Hoare/Brinch Brinch-Hansen 1974) Nur ein Prozess bzw. Thread kann zu einem bestimmten Zeitpunkt im Monitor aktiv sein => gegenseitiger Ausschluss, mutual exclusion. Geschützte
Moderne Betriebssysteme. Kapitel 8. Kapitel 8. Folie: 1. Multiprozessorsysteme. Autor: Andrew S. Tanenbaum
Moderne Betriebssysteme Kapitel 8 Multiprozessorsysteme Kapitel 8 Folie: 1 Multiprozessorsysteme Autor: Andrew S. Tanenbaum Pearson Studium 2009 2 3 4 5 6 7 Betriebssystemarten für Multiprozessoren Jede
Arten der Synchronisation. Koordination nebenläufiger Prozesse. Koordinierung. Reihenschaltung. Einseitige Synchronisation
Koordination nebenläufiger Prozesse Arten der Synchronisation Systemaufrufe Programmverwaltung Zugriffskontrolle Dateiverwaltung Ein /Auslagerung Vernetzung Ein /Ausgabe Fadenverwaltung Koordination Prozesseinplanung
Betriebssystembau (BSB)
Betriebssystembau (BSB) 6. Übung http://ess.cs.tu-.de/de/teaching/ws2013/bsb/ Olaf Spinczyk [email protected] http://ess.cs.tu-.de/~os AG Eingebettete System Informatik 12, TU Dortmund Agenda Vorstellung
Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz
Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 20.11.2013 1 Begrüßung Heute ist Tag der offenen Tür Willkommen allen Schülerinnen und Schülern! 2 Wdhlg.: Attributinformationen in
Architektur Verteilter Systeme Teil 2: Prozesse und Threads
Architektur Verteilter Systeme Teil 2: Prozesse und Threads 21.10.15 1 Übersicht Prozess Thread Scheduler Time Sharing 2 Begriff Prozess und Thread I Prozess = Sequentiell ablaufendes Programm Thread =
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang
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
PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl
PROGRAMMIEREN MIT C Allgemeine hinweise Alles was hier beschrieben wird, soll auch ausprobiert werden. Warum C? Weil die coolen Dinge mit C am einfachsten gehen. Das werden wir in den folgenden Übungen
Betriebssysteme. 4y Springer. Eine kompakte Einführung mit Linux. Albrecht Achilles. Mit 31 Abbildungen
Albrecht Achilles 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Betriebssysteme Eine kompakte Einführung mit Linux
Betriebssysteme KU - Einführungstutorium
Betriebssysteme KU - Einführungstutorium SWEB-Tutoren irc://irc.at.euirc.net/bs Teamwork Arbeitsaufteilung? Zeiteinteilung? Codeeinteilung? Kommunikation! Kommunikation Kommunikation mit dem Team Gruppentreffen
Klausur zur Vorlesung Grundlagen der Betriebssysteme WS 2011 / 2012
Name: Matrikelnummer: Studiengang: INF CV IM Lehramt BSc MSc BEd MEd Diplom Klausur zur Vorlesung Grundlagen der Betriebssysteme WS 0 / 0 Montag, den. Februar 0, 09: Uhr 0: Uhr Prof. Dr. D. Zöbel, Dipl.
Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks)
Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungsziele: Skript: 1. Definieren einer dynamischen Datenstruktur 2. Dynamische Speicher Speicherallokation 3. Implementierung eines
Rechnerorganisation Tutorium Nr. 1
Rechnerorganisation Tutorium Nr. 1 Tutorium 3 Nicholas Kjär - [email protected] 20. April 2015 INSTITUT FÜR INFORMATIK KIT University of the State of Baden-Wuerttemberg and National Laboratory of the
Übung zu Grundlagen der Betriebssysteme. 3. Übung 30.10.2012
Übung zu Grundlagen der Betriebssysteme 3. Übung 30.10.2012 Aufgabe 1 Schließen Sie sich über die URL http://userpages.uni-koblenz.de/~mips/bs/anmeldung/ Bearbeitungsgruppen bestehend aus 3 Teilnehmern
Dienstspezifikation nach RFC 2396 193
Dienstspezifikation nach RFC 2396 193 Für die Kombination aus Rechnernamen (oder alternativ einer IP-Adresse) und einer Portnummer gibt es mit RFC 2396 einen Standard: hostport host [ : port ] host hostname
Interaktive Simulationen Lektion 1/3: Event-Driven Design und Signals
MÜNSTER Interaktive Simulationen Lektion 1/3: Event-Driven Design und Signals Prof. Dr. Christian Engwer & Andreas Buhr 16. April 2014 MÜNSTER Interaktive Simulationen 2 /22 Normales C++ Programm Programmstruktur
Organisatorisches. Einführung in die Programmierung in C Hochschule Regensburg 13.03.2012.-13.07.2012 Universitätsstraße 31, 93053 Regensburg
Organisatorisches Einführung in die Programmierung in C Hochschule Regensburg 13.03.2012.-13.07.2012 Universitätsstraße 31, 93053 Regensburg Prof. Dr. Jan Dünnweber Wenn Sie kommen...... kommen Sie pünktlich
Betriebssysteme (BTS)
13.Vorlesung Betriebssysteme (BTS) Christian Baun [email protected] Hochschule Mannheim Fakultät für Informatik Institut für Betriebssysteme 31.5.2007 Wiederholung vom letzten Mal Deadlocks und Verhungern
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
Betriebssysteme (BS)
Betriebssysteme (BS) Prozesse Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund [email protected] http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2011/bs/
Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)
Ein Prozess kann unmittelbar vom Zustand 1. Running in den Zustand Ready 2. Running in den Zustand Blocked 3. Ready in den Zustand Running Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition) Der Adressraum
Eine Einführung in C-Funktionen
Eine Einführung in C-Funktionen CGK-Proseminar 2014 Philip Gawehn 04.07.2014, Hamburg Inhaltsverzeichnis 1 Einleitung 2 2 Grundlagen 2 2.1 Der Aufbau einer Funktion....................... 2 2.2 Schlüsselwörter.............................
Modellierung und Programmierung
Modellierung und Programmierung Dr. Martin Riplinger 19.12.2012 IAM Institut für Angewandte Mathematik Funktionszeiger: Vorüberlegungen Funktionsaufrufe sind bis jetzt im Code mit Name explizit angegeben
^ Springer Vi eweg. Grundkurs Betriebssysteme. Synchronisation, Prozesskommunikation, Virtualisierung. Architekturen, Betriebsmittelverwaltung,
Peter Mandl Grundkurs Betriebssysteme Architekturen, Betriebsmittelverwaltung, Synchronisation, Prozesskommunikation, Virtualisierung 4. Auflage ^ Springer Vi eweg 1 Einführung 1 1.1 Computersysteme 1
Ein- und Ausgabe von Paketen für Netzwerkverbindungen 208
Ein- und Ausgabe von Paketen für Netzwerkverbindungen 208 Zwischen Dienste-Anbietern und ihren Klienten auf dem Netzwerk besteht häufig ein ähnliches Verhältnis wie zwischen einer Shell und dem zugehörigen
Primitive Datentypen
Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.
Computergrundlagen Programmieren in C
Computergrundlagen Programmieren in C Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2013/14 Die Sprache C D. M. Ritchie, 1941 2011 Entwickelt 1971-1973 aktueller Standard:
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
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
MPI-Programmierung unter Windows mit MPICH2. Installieren von MPICH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen. Christian Terboven
MPI-Programmierung unter Windows mit MPIH2 Installieren von MPIH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen hristian Terboven Rechen- und Kommunikationszentrum RWTH Aachen 1 02/2007 luster-installationsworkshop
Softwarelösungen: Versuch 4
Softwarelösungen: Versuch 4 Nichtstun in Schleife wird ersetzt durch zeitweilige Zurücknahme der Anforderung, um es anderen Prozessen zu erlauben, die Ressource zu belegen: /* Prozess 0 */ wiederhole flag[0]
Deklarationen in C. Prof. Dr. Margarita Esponda
Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.
Proseminar Nichtsequentielle Programmiersprachen - alt und neu Einführung
Proseminar Nichtsequentielle Programmiersprachen - alt und neu Einführung Peter Löhr Nichtsequentielle Programme Nichtsequentielle Programme (concurrent programs): Prozesse, Threads, Tasks,... sind eigenständige
Parallele Programmierung mit OpenMP
Parallele Programmierung mit OpenMP - Eine kurze Einführung - 11.06.2003 RRZN Kolloquium SS 2003 1 Gliederung 1. Grundlagen 2. Programmiermodell 3. Sprachkonstrukte 4. Vergleich MPI und OpenMP 11.06.2003
Einführung in die Programmierung Konstanten, dynamische Datenstrukturen. Arvid Terzibaschian
Einführung in die Programmierung Arvid Terzibaschian 1 Konstanten 2 Motivation Unveränderliche, wichtige Werte mathematische Konstanten z.b. PI String-Konstanten wie z.b. häufige statische Meldungen mögliche
GUI Programmierung mit GTK
LinuxFocus article number 295 http://linuxfocus.org GUI Programmierung mit GTK by Özcan Güngör About the author: Ich benutze Linux seit 1997. Freiheit, Flexibilität, Open
2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)
Inhaltsverzeichnis XII
1 Einführung... 1 1.1 Computersysteme... 1 1.1.1 Einführung... 2 1.1.2 Aufgabe von Betriebssystemen... 3 1.1.3 Grundlegende Hardwaremodelle... 3 1.1.4 CPU-Registersatz... 7 1.1.5 Multicore-Prozessoren
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:
Systemprogrammierung unter UNIX System V / Linux
Studiengang Angewandte Informatik Systemprogrammierung unter UNIX System V / Linux Systemsoftware Praktikum Prof. Dr. S. Keller Ausgabe: 19.03.2004 Anzahl der Seiten: 27 Angewandte Informatik Praktikum
Einstieg in die Informatik mit Java
1 / 14 Einstieg in die Informatik mit Java Swing Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 14 1 Einführendes Beispiel 2 Eigenschaften von Swing 3 Typisches Swing-Applet
Steffen Heinzl Markus Mathes. Middleware in Java
Steffen Heinzl Markus Mathes Middleware in Java Leitfaden zum Entwurf verteilter Anwendungen - Implementierung von verteilten Systemen über JMS - Verteilte Objekte über RMI und CORBA Mit 50 Abbildungen
Wiederholung: Semaphore (nicht gähnen!) Vorlesung Betriebssysteme II. Implementierung (Pseudocode) der P()-Operation.
Wiederholung: Semaphore (nicht gähnen!) Vorlesung Betriebssysteme II Thema 2: Synchronisation Robert Baumgartl 17. 03. 2014 Abstrakter Datentyp (Zähler und Warteschlange) Operationen: P(): probieren und
