2. Prozesssynchronisation
|
|
|
- Pamela Bösch
- vor 9 Jahren
- Abrufe
Transkript
1 Tafelübung zu BSRvS1 2. Prozesssynchronisation Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund 1
2 Agenda Besprechung Aufgabe 1: Wecker Fortsetzung Grundlagen C-Programmierung Aufgabe 2: Prozesssynchronisation Semaphore (sem* Funktionen) Gemeinsamer Speicher (shm* Funktionen) Makefiles Signalhandler BSRvS1: Übung 02 Prozesssynchronisation 2
3 Besprechung Aufgabe 1 Foliensatz Besprechung BSRvS1: Übung 02 Prozesssynchronisation 3
4 Grundlagen C-Programmierung Foliensatz C-Einführung BSRvS1: Übung 02 Prozesssynchronisation 4
5 Semaphore, semget(2) int semget(schlüssel, Anzahl, Optionen); Abfragen oder Erzeugen von Semaphoren Schlüssel = Schlüssel, der mit einer Semaphormenge im System assoziiert ist Anzahl = Anzahl der Semaphore in der Menge Optionen = IPC_CREAT, IPC_EXCL, Zugriffsrechte; mit bitweisem ODER ( ) verknüpft Semaphore werden nicht automatisch initialisiert! Rückgabewert: -1: Fehler bei der Ausführung (z.b. eine gesuchte Semaphormenge nicht gefunden), Fehlercode in errno abgelegt id: Identifier, der von den weiteren sem* Funktionen verwendet wird benötigte Header: sys/types.h, sys/ipc.h, sys/sem.h BSRvS1: Übung 02 Prozesssynchronisation 5
6 Semaphore, semget(2), Beispiel #include <sys/types.h> #include <sys/sem.h> #include <sys/ipc.h> #include <stdio.h> #include <errno.h> #define KEY 0xcaffee /* ein Schlüssel zur Suche nach Sem.-Mengen */ #define RIGHTS 0600 /* volle Zugriffsrechte für den Besitzer*/ int main() { int semid = 0; /* gibt es schon eine Semaphorenmenge zu diesem Schlüssel? */ semid = semget(key, 0, 0); if (semid < 0) { /* nein, also erzeuge eine Menge mit einem Semaphor... */ printf( create new semaphore\n ); semid = semget(key, 1, IPC_EXCL IPC_CREAT RIGHTS); if (semid < 0) { perror( semget ); return -1; return 0; pohl@host:~/# ipcs -s Semaphore Arrays key semid owner perms nsems 0xcaffee pohl pohl@host:~/# BSRvS1: Übung 02 Prozesssynchronisation 6
7 Semaphore, semctl(2) int semctl(semid, SemNr, Kommando,...); Initialisieren, Abfragen von Semaphoren Kommandos (Auswahl): SETVAL/GETVAL Setzen/Abfragen des Semaphor SemNr SETALL/GETALL Setzen/Abfragen aller Semaphore in der Menge Id IPC_RMID Freigeben einer Semaphormenge Rückgabewerte: -1: Fehler während der Ausführung, errno enthält Fehlercode >=0: je nach Kommando erwarteter Rückgabewert BSRvS1: Übung 02 Prozesssynchronisation 7
8 Semaphore, semctl(2) Beispiel #include <sys/types.h> #include <sys/sem.h> #include <sys/ipc.h> #include <stdio.h> #include <errno.h> #define KEY 0xcaffee /* ein Schlüssel zur Suche nach Sem.-Mengen */ int main() { int semid = 0, retval = 0; /* gibt es schon eine Semaphorenmenge zu diesem Schlüssel? */ semid = semget(key, 0, 0); if (semid > 0) { /* ja, dann initialisieren wir mit 1*/ retval = semctl(semid, 0, SETVAL, (int) 1); if (retval < 0) { perror( semctl SET ); return -1; retval = semctl(semid, 0, GETVAL); if (retval < 0) { perror( semctl GET ); return -1; printf( Semaphore hat Wert %d\n, retval); semctl(semid, 0, IPC_RMID); /* Semaphormenge entfernen */ return 0; BSRvS1: Übung 02 Prozesssynchronisation 8
9 Semaphore, semop(2) int semop(semid, *Operationen, AnzahlOPs); Kann eine oder mehrere Operationen auf den Semaphoren einer Semaphormenge ausführen Atomar entweder alle Operationen, oder keine! Rückgabewerte: -1: Fehler während der Ausführung, errno enthält Fehlercode 0: Ausführung erfolgreich Zentrale Struktur: struct sembuf struct sembuf { unsigned short sem_num; /* Semaphor Nr. */ short sem_op; /* Operation auf Semaphor */ short sem_flg; /* optionale Flags */ BSRvS1: Übung 02 Prozesssynchronisation 9
10 Semaphore, semop(2), Beispiel 3 Arten von Operationen definiert: sem_op > 0: addiere Wert von sem_op auf den aktuellen Wert des Semaphors Operation wird immer durchgeführt sem_op = 0: sog. wait-for-zero Schlafen bis Semphor = 0 sem_op < 0: Semaphor >= sem_op Operation wird direkt fortgesetzt, und sem_op vom aktuellen Wert des Semaphors abgezogen Semaphor < sem_op Operation muss warten void p() { struct sembuf sop; sop.sem_num = 0; /* Semaphor 0 */ sop.sem_flg = 0; sop.sem_op = -1; /* Dekrement */ if(semop(semid, &sop, 1) == -1) { perror( semop p ); exit(-1); void v() { struct sembuf sop; /* Semaphor 0 */ sop.sem_num = 0; sop.sem_flg = 0; sop.sem_op = 1; /* Inkrement */ if(semop(semid, &sop, 1) == -1) { perror( semop v ); exit(-1); BSRvS1: Übung 02 Prozesssynchronisation 10
11 Gemeinsamer Speicher 0x Prozess 1 Prozess 2 0x x45a33b1c Shared Memory Segment 0x5516a388 0xffffffff 0xffffffff BSRvS1: Übung 02 Prozesssynchronisation 11
12 Gem. Speicher, shmget(2) int shmget(schlüssel, Größe, Optionen); Sehr ähnlich zu semget(2) Schlüssel = Schlüssel, der mit Shared-Memory-Segment assoziiert ist Größe = Größe des gemeinsamen Speicherbereiches Optionen = IPC_CREAT, IPC_EXCL, Zugriffsrechte; mit bitweisem ODER ( ) verknüpft Der Speicher wird nicht automatisch initialisiert! Rückgabewert: -1: Fehler bei der Ausführung (z.b. ein gesuchter gemeinsamer Speicher ist nicht verfügbar), Fehlercode in errno abgelegt id: Identifier, der von den weiteren shm* Funktionen verwendet wird benötigte Header: sys/ipc.h, sys/shm.h BSRvS1: Übung 02 Prozesssynchronisation 12
13 Gem. Speicher, shmget(2), Beispiel #include <sys/shm.h> #include <sys/ipc.h> #include <stdio.h> #include <errno.h> #define KEY 0xc0ffee /* ein Schlüssel für das Shared-Memory-Seg. */ #define RIGHTS 0600 /* volle Zugriffsrechte für den Besitzer*/ int main() { int shmid = 0; /* Größe, abhängig von den ausgetauschten Daten */ int size = sizeof(int[3]); /* gibt es schon den gemeinsamen Speicher? */ shmid = shmget(key, 0, 0); if (shmid < 0) { /* nein, also erzeugen wir uns einen... */ printf( create shared memory segment\n ); shmid = shmget(key, size, IPC_EXCL IPC_CREAT RIGHTS); if (shmid < 0) { perror( shmget ); return -1; return 0; pohl@host:~/# ipcs -m Shared Memory Segments key shmid owner perms nattach 0xc0ffee pohl pohl@host:~/# BSRvS1: Übung 02 Prozesssynchronisation 13
14 Gem. Speicher, shmctl(2) int shmctl(shmid, Operation, *Puffer); Operationen auf dem Gemeinsamen Speicher ausführen IPC_STAT: Abfrage von Statusinformationen (wird in den übergebenen Puffer vom Typ struct shmid_ds geschrieben) IPC_SET: Ändern von Nutzer/Gruppe, Berechtigungen (Daten aus Puffer) IPC_RMID: Freigeben des gemeinsamen Speichers Rückgabewerte: -1: Fehler bei der Ausführung, Fehlercode in errno >0: Abhängig von der jeweiligen Operation void shm_free() { if (shmctl(shmid, IPC_RMID, NULL) == -1) { perror( shmctl free ); exit (-1); BSRvS1: Übung 02 Prozesssynchronisation 14
15 Gem. Speicher, shmat(2) void *shmat(shmid, Adresse, Optionen); Gemeinsamen Speicher in den lokalen Adressraum einbinden ShmId = die von shmget zurückgelieferte Id Adresse = Adresse an der das Shared-Memory-Segment eingebunden werden soll, wenn NULL System wählt Adresse automatisch Optionen = optionale Flags benötigt zusätzlich sys/types.h Rückgabewerte: (void*) -1: Fehler bei der Ausführung, Fehlercode in errno >0: Adresse, an der das Segment eingebunden wurde BSRvS1: Übung 02 Prozesssynchronisation 15
16 Gem. Speicher, shmdt(2) int shmdt(adresse); Gemeinsamen Speicher aus dem lokalen Adressraum aushängen Adresse = Adresse, an der das Shared-Memory-Segment in den lokalen Adressraum eingebunden ist Rückgabewerte: -1: Fehler bei der Ausführung, Fehlercode in errno 0: Aushängen des gemeinsamen Speichers war erfolgreich BSRvS1: Übung 02 Prozesssynchronisation 16
17 Gem. Speicher, shm* Beispiel #include <sys/shm.h>... #define KEY 0xc0ffee /* ein Schlüssel für das Shared-Memory-Seg. */ #define RIGHTS 0600 /* volle Zugriffsrechte für den Besitzer*/ int main() { int shmid = 0, *data = NULL, size = sizeof(int[3]); shmid = shmget(key, 0, 0); if (shmid < 0) { perror( shmget ); return -1; data = (int*) shmat(shmid, NULL, 0); /* Gem. Speicher einhängen */ if (data == (void*) -1) { perror( shmat ); return -1; data[0] = 1; data[1] = 2; data[2] = 3; if (shmdt(data) == -1) { /* Gem. Speicher aushängen */ perror( shmdt ); return -1; return 0; BSRvS1: Übung 02 Prozesssynchronisation 17
18 Gem. Speicher, shm* Beispiel #include <sys/shm.h>... #define KEY 0xc0ffee /* ein Schlüssel für das Shared-Memory-Seg. */ #define RIGHTS 0600 /* volle Zugriffsrechte für den Besitzer*/ int main() { int shmid = 0, *data = NULL, size = sizeof(int[3]); shmid = shmget(key, 0, 0); if (shmid < 0) { perror( shmget ); return -1; data = (int*) shmat(shmid, NULL, 0); if (data == (void*) -1) { perror( shmat ); return -1; printf( data 1-3: %d, %d, %d\n, data[0], data[1], data[2]); if (shmdt(data) == -1) { perror( shmdt ); return -1; if (shmctl(shmid, 0, IPC_RMID) == -1) { /* Gem. Speicher freigeben */ perror( shmctl rm ); return -1; return 0; pohl@host:~/#./test data 1-3: 1, 2, 3 pohl@host:~/# BSRvS1: Übung 02 Prozesssynchronisation 18
19 Makefiles Bauen von Projekten mit mehreren Dateien Makefile Informationen wie eine Projektdatei beim Bauen des Projektes zu behandeln ist # -= Variablen =- # Name=Wert oder auch # Name+=Wert für Konkatenation CC=gcc CFLAGS=-Wall CFLAGS+=-Werror -ansi -pedantic -D_POSIX_SOURCE # -= Targets =- # Name: <benötigte Dateien und/oder andere Targets> # <TAB> Kommando # <TAB> Kommando... test_1: test_1.c test_1.h # erstes Target = Default Target $(CC) $(CFLAGS) -o test_1 test_1.c test_2: test_1 test_2.c test_2.h # test_2 braucht test_1! $(CC) $(CFLAGS) -o test_2 test_2.c clean: rm -f test_1 test_2 # Verwendung von Shell-Befehlen BSRvS1: Übung 02 Prozesssynchronisation 19
20 Targets & Abhängigkeiten test_1 test_2 test_1.c test_1.h test_2.c test_2.h # target test_1 test_1: test_1.c test_1.h... # target test_2 test_2: test_1 test_2.c test_2.h... Vergleich von Änderungsdatum der Quell- und Zieldateien Quelle jünger? Neu übersetzen! make durchläuft Abhängigkeitsgraph BSRvS1: Übung 02 Prozesssynchronisation 20
21 Makefiles und make(1) ls Makefile test_1.c test_1.h test_2.c test_2.h make gcc -Wall -Werror -ansi -pedantic -D_POSIX_SOURCE -o test_1 test_1.c make clean rm -f test_1 test_2 make test_2 gcc -Wall -Werror -ansi -pedantic -D_POSIX_SOURCE -o test_1 test_1.c gcc -Wall -Werror -ansi -pedantic -D_POSIX_SOURCE -o test_2 test_2.c Makefiles ausführen mit make <target> bei fehlendem <target> wird das Default-Target ausgeführt Optionen -f: Makefile angeben; make -f <makefile> -j: Anzahl der gleichzeitig gestarteten Jobs; make -j 3 BSRvS1: Übung 02 Prozesssynchronisation 21
22 Signalhandler, sigaction(2) int sigaction(signalnr, *neueakt, *alteakt); Im eigenen Prozess Signale verarbeiten (SIGINT, SIGSTOP, etc.) Parameter SignalNr = das Signal das behandelt werden soll *neueakt = Pointer auf struct sigaction mit den Informationen zum neuen Handler (Eingabe!) *alteakt = Pointer auf struct sigaction mit den Informationen zum vorherigen Handler (Ausgabe!), ignoriert bei Übergabe von NULL Benötigt <signal.h> Rückgabewerte: -1: Fehler bei der Ausführung, Fehlercode in errno 0: Erfolgreiche Ausführung BSRvS1: Übung 02 Prozesssynchronisation 22
23 Signalhandler struct sigaction { void (*sa_handler)(int); /* Zeiger auf die Handler-Funktion */ sigset_t sa_mask; /* Ignoriere Signale bei Behandlung */ int sa_flags; /* Optionen */ void (*sa_restorer)(void); /* veraltet -> IGNORIEREN */ #include <signal.h>... /* die Handler-Funktion für unser Signal */ void handle_abbruch(int sig) { printf("sigint gefangen: %d!\n", SIGINT==sig); exit(2); int main() { struct sigaction action; action.sa_handler = &handle_abbruch; /* die Adresse des Handlers angeben */ sigemptyset(&action.sa_mask); /* keinerlei Signale ignorieren */ if (sigaction(sigint, &action, NULL)) { /* SIGINT Handler registrieren */ perror( sigaction ); return -1; /* Rückgabewert!= 0 => Fehler! */ while(1); return 0; BSRvS1: Übung 02 Prozesssynchronisation 23
Besprechung 6. Aufgabe (timed) Semaphore. Prozess 1 Prozess 2 0x Schlüssel=IPC_PRIVATE: Segment ist prozesslokal
Überblick über die 9. Übung Überblick über die 9. Übung. Anlegen des Segments: shmget Besprechung 6. Aufgabe (timed)... /* Schlüssel */ int shmflg; /* Flags */ int shmid; /* ID des Speichersegments */
Ganze Arrays von Semaphoren können auf einmal angelegt werden. In einer Operation können mehrere Semaphore auf einmal modifiziert werden.
Übungen zur Vorlesung Betriebssysteme I Studiengang Informatik SS 05 AG Betriebssysteme FB3 Kirsten Berkenkötter Allerlei Nützliches 1 Semaphore 1.1 Allgemein Semaphore sind unter System V IPC erweitert:
Tafelübung zu BSRvS1. 3. Philosophen. Fortsetzung Grundlagen C-Programmierung
Tafelübung zu BSRvS1 3. Philosophen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund [email protected] http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/exercises/
3. Philosophen. Tafelübung zu BSRvS1. Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund
Tafelübung zu BSRvS1 3. Philosophen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund [email protected] http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/exercises/
Einführung in die Systemprogrammierung unter Linux
Einführung in die Systemprogrammierung unter Linux Systemsoftware Praktikum Inhalt Übersicht über benötigte Systemfunktionen Programmieren unter Linux Grundlegendes Message-Queue Shared Memory Semaphore
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
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
1 Vom Problem zum Programm
Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren
Systemprogrammierung.: unter Linux :.
Systemprogrammierung.: unter Linux :. Einführung in Linux 1. Das Filesystem 2. Prozesse 3. Unix Tools 4. Die Shell 1. Das Filesystem 1.1 Dateien 1.2 Ordner 1.3 Links 1.1 Dateien Alles im Filesystem sind
Programmierung in C. Grundlagen. Stefan Kallerhoff
Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/
Einführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte
FILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam
Aktuelle Fileposition ermitteln long pos; pos=ftell(fp); //aktuelle Bytenummer Filelaenge in Bytes fseek(fp,0,seek_end); pos=ftell(fp); Fileendeerkennung int rc; rc = feof (fp) //!= 0 bei Fileende // ==
Zählen von Objekten einer bestimmten Klasse
Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --
Tafelübung zu BS 4. Speicherverwaltung
Tafelübung zu BS 4. Speicherverwaltung 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/ss2015/bs/
Systemprogrammierung I - Aufgaben zur Erlangung der Klausurzulassung für Informatiker und Wirtschaftsinformatiker
Systemprogrammierung I - Aufgaben zur Erlangung der Klausurzulassung für Informatiker und Nachfolgend finden Sie die drei Aufgaben, die Sie als Zulassungsvoraussetzung für die Scheinklausur am 18.7.2001
Einführung in die Systemprogrammierung unter Linux
Einführung in die Systemprogrammierung unter Linux - 1 - Einführung in die Systemprogrammierung unter Linux Einführung in die Systemprogrammierung unter Linux - 2 - Inhalt 1. Übersicht über benötigte Systemfunktionen...
Die Programmiersprache C
Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,
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
Systemnahe Programmierung in C/C++
Systemnahe Programmierung in C/C++ Interprozesskommunikation (IPC) Knut Stolze [email protected] Lehrstuhl für Datenbanken und Informationssysteme Fakultät für Mathematik und Informatik 2006
Softwarepraktikum: Einführung in Makefiles
Softwarepraktikum: Einführung in Makefiles (Eingebettete Systeme und Robotik),, http://ai3.inf.uni-bayreuth.de /home/db_lehre/praktika/softwarepraktikum/vorbesprechung_und_einfuehrung/vortraege/makefile_tuto
Einführung in die Programmierung
Name, Vorname Matrikelnummer Probeklausur zur Vorlesung Einführung in die Programmierung WS 2008/09 Dauer: 2 Stunden Hinweise: Schreiben Sie Ihren Namen und Ihre Matrikelnummer auf dieses Deckblatt und
Einführung in die C++ Programmierung für Ingenieure
Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF
Lösungsvorschlag zum Übungsblatt 1 zur Vorlesung Informatik II / WS2001/02
Lösungsvorschlag zum Übungsblatt 1 zur Vorlesung Informatik II / WS2001/02 Prof. Dr.-Ing. Holger Vogelsang (FH-Karlsruhe) Dipl.-Inform. (FH) Gudrun Keller (FH-Karlsruhe) Dipl.-Inform. Mathias Supp (.riess
critical sections und Semaphore
Kapitel 4 critical sections und Semaphore Programme, die sich Resourcen teilen, müssen Codeabschnitte allein (exklusiv) ausführen, diese codeteile nennt man critical section. Um dies zu erreichen werden
Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe
Aufgabenstellung Für eine Hausverwaltung sollen für maximal 500 Wohnungen Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Art Baujahr Wohnung Whnginfo Nebenkosten
Informationen zur Verwendung von Visual Studio und cmake
Inhaltsverzeichnis Informationen zur Verwendung von Visual Studio und cmake... 2 Erste Schritte mit Visual Studio... 2 Einstellungen für Visual Studio 2013... 2 Nutzung von cmake... 6 Installation von
Einführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Wiederholungen - while - do-while - for
Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
Systemsoftware Praktikum Hochschule Ravensburg-Weingarten
Systemsoftware Praktikum Hochschule Ravensburg-Weingarten Erste Schritte Systemkontrolle Bibliotheken Quelltext und Doku Erste Schritte - Übersicht ssh-zugang Anjuta CVS make / gcc Erste Schritte ssh-zugang
Propädeutikum. Dipl.-Inf. Frank Güttler
Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) [email protected] Universität Leipzig Institut für Informatik Technische Informatik
Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)
C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07) 1. Aufgabe 6 Punkte Geben Sie Definitionen an für: float var; 1 a) eine float-variable var: b) einen Zeiger pvar, der float *pvar = &var; 1 auf die
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
AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b
AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität
7. Bewässerung: Mehrmals pro Woche
7. Bewässerung: Mehrmals pro Woche Eine Kultur im Erdboden muss mehrmals wöchentlich bewässert werden. 1. Erstellen Sie ein Arbeitsblatt 2. Pumpe 3. Ventilgruppe 1 4. Kulturfachregelung 5. Wasser-Anschlüsse
2. Semester, 2. Prüfung, Lösung
2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter
Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss
Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige
Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, 11.15-13.00 Uhr Bearbeitungszeit: 105 Minuten
Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, 11.15-13.00 Uhr Bearbeitungszeit: 105 Minuten Vorname: Nachname: Matrikelnummer: Legen Sie zu Beginn Ihren Studentenausweis
Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012
WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **
teamsync Kurzanleitung
1 teamsync Kurzanleitung Version 4.0-19. November 2012 2 1 Einleitung Mit teamsync können Sie die Produkte teamspace und projectfacts mit Microsoft Outlook synchronisieren.laden Sie sich teamsync hier
Umzug der abfallwirtschaftlichen Nummern /Kündigung
Umzug der abfallwirtschaftlichen Nummern /Kündigung Um sich bei ebegleitschein abzumelden/ zu kündigen sind folgende Schritte notwendig: Schritt 1: Sie erteilen bifa Umweltinstitut GmbH den Auftrag, Ihre
Programmentwicklung mit C++ (unter Unix/Linux)
Programmentwicklung mit C++ (unter Unix/Linux) Erste Schritte Der gcc - Compiler & Linker Organisation des Source-Codes & Libraries Automatische Programmgenerierung: Make Birgit Möller & Denis Williams
Modellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {
Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
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).
Netzwerkversion PVG.view
Netzwerkversion PVG.view Installationshinweise Einführung Die Programm PVG.view kann zur Netzwerkversion erweitert werden. Die Erweiterung ermöglicht, bestehende oder neu erworbene Programmlizenzen im
Ingenieurinformatik Diplom-FA (C-Programmierung)
Hochschule München, FK 03 WS 2014/15 Ingenieurinformatik Diplom-FA (C-Programmierung) Zulassung geprüft: (Grundlagenteil) Die Prüfung ist nur dann gültig, wenn Sie die erforderliche Zulassungsvoraussetzung
Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur
Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert
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
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
Enigmail Konfiguration
Enigmail Konfiguration 11.06.2006 [email protected] Enigmail ist in der Grundkonfiguration so eingestellt, dass alles funktioniert ohne weitere Einstellungen vornehmen zu müssen. Für alle, die es
5.1.4.5 Übung - Datenmigration in Windows Vista
5.0 5.1.4.5 Übung - Datenmigration in Windows Vista Einführung Drucken Sie die Übung aus und führen Sie sie durch. In dieser Übung werden Sie Windows Vista verwenden. Empfohlene Ausstattung Die folgende
5.3.2.16 Laborübung - Verwalten von virtuellem Speicher in Windows 7
5.0 5.3.2.16 Laborübung - Verwalten von virtuellem Speicher in Windows 7 Einführung Drucken Sie diese Übung aus und folgen Sie den Anweisungen. In dieser Übung werden Sie die Einstellungen des virtuellen
Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.
Starten Sie Eclipse: Abgesehen vom Kommandozeilenfenster, auf welches wir später eingehen, öffnet sich ein Dialog (in der FH vermutlich nicht, überspringen Sie in diesem Fall): Hier tragen sie Ihr Arbeitsverzeichnis
Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters
Prof. Dr. Ulrich Breitschuh Hochschule Anhalt(FH) Fachbereich Informatik Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters Hinweis: Die Aufgaben 3, 6 und 8 sind testatpichtige Aufgaben.
Die Programmiersprache C99: Zusammenfassung
Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach
Java Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
Ü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
Felder, Rückblick Mehrdimensionale Felder. Programmieren in C
Übersicht Felder, Rückblick Mehrdimensionale Felder Rückblick Vereinbarung von Feldern: typ name [anzahl]; typ name = {e1, e2, e3,..., en} Die Adressierung von Feldelementen beginnt bei 0 Die korrekte
Einführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger [email protected] WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
Simplex-Umformung für Dummies
Simplex-Umformung für Dummies Enthält die Zielfunktion einen negativen Koeffizienten? NEIN Optimale Lösung bereits gefunden JA Finde die Optimale Lösung mit dem Simplex-Verfahren! Wähle die Spalte mit
> Soft.ZIV. Maple Mathematisches Software System
> Soft.ZIV Maple Mathematisches Software System Inhaltsverzeichnis Organisation... 3 Hersteller... 3 Produkte... 3 Versionen... 3 Plattformen... 3 Lizenzierung... 3 Lizenzform... 3 Lizenzzeitraum... 3
Tutorium Rechnerorganisation
Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt
Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt AMPEL-Steuerung(en) Die Beschreibung und Programmierung der Ampel (vor allem Ampel_5) können sehr kompliziert
Print2CAD 2017, 8th Generation. Netzwerkversionen
Installation der Netzwerkversion Kazmierczak Software Print2CAD 2017, 8th Generation Print2CAD 2017, 8th Generation Netzwerkversionen Einführung Installationshinweise Die Programme von Kazmierczak Software
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
GS-Buchhalter/GS-Office 2015 Saldovorträge in folgenden Wirtschaftsjahren erfassen
GS-Buchhalter/GS-Office 2015 Saldovorträge in folgenden Wirtschaftsjahren erfassen Impressum Business Software GmbH Primoschgasse 3 9020 Klagenfurt Copyright 2014 Business Software GmbH Die Inhalte und
Lineare Gleichungssysteme
Lineare Gleichungssysteme Eines der am häufigsten auftretenden Standardprobleme der angewandten Mathematik ist das Lösen linearer Gleichungssysteme, etwa zur Netzwerkberechnung in der Elektrotechnik oder
Win-Digipet V 9.2 Premium Edition Wie bastele ich mir steuerbare Kontakte. Wie bastele ich mir steuerbare Kontakte? -Quick-And-Dirty-Lösung-
? -Quick-And-Dirty-Lösung- Vorwort Nach Anfragen aus dem Win-Digipet-Forum möchte ich folgende Quick-And-Dirty-Lösung vorstellen mit der man sich mal eben virtuelle Kontakte erstellen kann. Vorweg muß
Erweiterung AE WWS Lite Win: AES Security Verschlüsselung
Erweiterung AE WWS Lite Win: AES Security Verschlüsselung Handbuch und Dokumentation Beschreibung ab Vers. 1.13.5 Am Güterbahnhof 15 D-31303 Burgdorf Tel: +49 5136 802421 Fax: +49 5136 9776368 Seite 1
Lokales Netzwerk Wie kann ich lokal installierte Drucker im Netzwerk für andere Nutzer freigeben? Frage:
Wie kann ich lokal installierte Drucker im Netzwerk für andere Nutzer freigeben? Frage: Ich möchte, dass ein Drucker von verschiedenen Rechnern aus genutzt werden kann. Wie kann ich eine Druckerfreigabe
Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 13 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
I N S T A L L A T I O N S A N L E I T U N G
I N S T A L L A T I O N S A N L E I T U N G A O D B E D I E N U N G S A N L E I T U N G Diese Anleitung wird Ihnen Schritt für Schritt bei der Instalation vom Print Manager und beim Ausdruck Ihres ersten
EMC SourceOne TM für Microsoft SharePoint 7.1 Archivsuche Kurzreferenz
EMC SourceOne TM für Microsoft SharePoint 7.1 Archivsuche Kurzreferenz Verwenden Sie die Archivsuche zur Suche nach und Wiederherstellung von SharePoint-Inhalten, die in EMC SourceOne archiviert wurden.
Übung zur Vorlesung Programmieren in C
Übung zur Vorlesung Programmieren in C 6 Pointers Marvin Gülker Ruhruniversität Bochum Wintersemester 2015/2016 Marvin Gülker (Ruhruniversität Bochum) 6 Pointers Wintersemester 2015/2016 1 / 29 Gliederung
Import und Export von Übergängern
Import und Export von Übergängern SibankPLUS bietet Ihnen eine komfortable Schnittstelle, um den Wechsel der Schüler nach der Stufe 4 von der Grundschule auf eine weiterführende Schule zu verarbeiten.
Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 5 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
Anleitung zur Installation von PGP auf MacOSx
Anleitung zur Installation von PGP auf MacOSx Download und Installation 1. Beginnen wir mit dem Download des Tools GPG Suite auf der Website: https://gpgtools.org/ 2. Die.dmg-Datei anschließend entpacken
<script type="text/javascript"> <! <%= page(page.searchsuggestionsscript) %> // > </script>
1. Intelligente AutoComplete Funktion für die Volltextsuche 1.1. JQuery einbinden Falls Sie in Ihrem Shop bereits JQuery verwenden, so überprüfen Sie bitte, ob Sie alle notwendigen Dateien eingebunden
Übung 9 - Lösungsvorschlag
Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe
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.
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
WORKFLOW DESIGNDOKUMENT
Architectural Design WORKFLOW DESIGNDOKUMENT Softwareentwicklung Praktikum, Übungsbeispiel 2 Gruppe 86 Andreas Hechenblaickner [0430217] Daniela Kejzar [0310129] Andreas Maller [0431289] Gruppe 86 Seite
Informatik Grundlagen, WS04, Seminar 13
Informatik Grundlagen, WS04, Seminar 13 Informatik Informatik Grundlagen, Seminar 13 WS04 1 Was wir heute besprechen Nachbesprechen von Übungsblatt 11 Rekursion Grundprinzipien Übung Besprechung Übungsblatt
Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6)
Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6) 1. Loggen Sie sich im Administratorbereich ein und gehen Sie auf Extension > Extension Manager 2. Wählen Sie Install languages 3. Klicken Sie
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()
Übersicht Programmablaufsteuerung
Übersicht Programmablaufsteuerung Konditionale Verzweigung: if - else switch-anweisung Schleifenkonstrukte: while, do - while for Schleife Sprung-Anweisungen: break, continue, goto, return Anweisungen
Objektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
Angewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens SS2013 Inhalt Projekt Vorlesung: praktische Implementierung üben Ein und
Mediator 9 - Lernprogramm
Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop
