14.06.2014 Aufrufe

PDF-File - Institut für Robotik und Prozessinformatik - Technische ...

PDF-File - Institut für Robotik und Prozessinformatik - Technische ...

PDF-File - Institut für Robotik und Prozessinformatik - Technische ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Umdruck zur Vorlesung<br />

<strong>Prozessinformatik</strong><br />

Sommersemester 2007<br />

Prof. Dr. F. M. Wahl<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong><br />

<strong>Technische</strong> Universität Braunschweig<br />

http://www.cs.tu-bs.de/rob/pi<br />

Vorlesung: Prof. Dr. F. M. Wahl<br />

Fr. 8 00 - 9 30 , PK 4.3<br />

Tel. 0531-391 7451<br />

Sprechst<strong>und</strong>e: Fr. 11 00 - 12 00<br />

Übung: Torsten Kröger<br />

Do. 13 15 - 14 45 , SN 22.1<br />

Tel. 0531-391 7462<br />

Sprechst<strong>und</strong>e: Do. 10 00 - 11 00


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 2 -<br />

Literatur<br />

[1] Abel, Dirk. Petri-Netze für Ingenieure. Springer-Verlag (ISBN 3-540-51814-2), 1990.<br />

[2] Herrtwich, Ralf Guido <strong>und</strong> Hommel, Günter. Nebenläufige Programme. Springer-Verlag (ISBN<br />

3-540-57783-1), 1994.<br />

[3] Laplante, Phillip A. Real-Time Systems Design and Analysis. IEEE Press (ISBN 0-7803-3400-<br />

0), 1997.<br />

[4] Schnieder, Eckehard. <strong>Prozessinformatik</strong>. Vieweg (ISBN 3-528-03358-4), 1993.<br />

[5] Zöbel, Dieter <strong>und</strong> Albrecht, Wolfgang. Echtzeitsysteme – Gr<strong>und</strong>lagen <strong>und</strong> Techniken. Thomson<br />

Publishing (ISBN 3-8266-0150-5), 1995.<br />

Ferner:<br />

[1] Burns, Alan <strong>und</strong> Wellings, Andy. Real-Time Systems and their Programming Languages.<br />

Addison-Wesley (ISBN 0-201-1752-9), 1990.<br />

[2] Dorn, Jürgen. Wissensbasierte Echtzeitplanung. Vieweg (ISBN 3-528-04752-6), 1989.<br />

[3] Cheng, Albert M.K., Real-Time Systems, Wiley-Interscience (ISBN 0-471-18406-3), 2002.<br />

[4] Ho, Yu-Chi. Discrete event dynamic systems: analyzing complexity and performance. IEEE<br />

Press (ISBN 0-87942-281-5), 1992.<br />

[5] Jacobsen, Erik. Einführung in die Prozessdatenverarbeitung. Hanser (ISBN 3446-15531-7),<br />

1989.<br />

[6] Kleinrock, Leonard. Queuing Systems: Theory. John Wiley & Sons (ISBN 0471491101), 1996.<br />

[7] Kopetz, Hermann. Real-Time Systems – Design Principles for Distributed Embedded<br />

Applications. Kluwer Academic Publishers (ISBN 0-7923-9894-7), 1997.<br />

[8] Krishna, C.M. and Kang, G. Shin. Real-Time Systems. McGrawHill (ISBN 0-07-057043-4),<br />

1997.<br />

[9] Marsan, M. Ajmone. Stochastic Petri-Nets: An Elementary Introduction. In Grzegoz Rozenberg,<br />

editor, Advances in Petri Nets 1989, Lecture Notes in Computer Science, pages 1-29.<br />

Springer-Verlag (ISBN 3-540-52494-0), 1989.<br />

[10] Motus, Leo and Rodd, Michael G. Timing Analysis of Real-Time Software. Pergamon (Elsevier<br />

Science Inc.) (ISBN 0-08-0420257), 1994.<br />

[11] Tannenbaum, Andrew. Modern Operating Systems. Prentice Hill (ISBN 0130926418), 2001<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 3 -<br />

Paketverteilanlage<br />

Förderbänder<br />

Geschwindigkeit v Abstand L<br />

Motor der Weiche<br />

Lichtschranke<br />

Strichcodeleser<br />

Prozeßrechner<br />

D/A<br />

Embedded Systems im Kfz<br />

Autoradio<br />

Navigationssystem<br />

Motorregelung<br />

(Benzinverbrauch,<br />

Schadstoffausstoß)<br />

Boardcomputer<br />

Diagnosesystem<br />

Kommunikation<br />

CAN Bus<br />

Crash-Sensoren<br />

Airback<br />

ASR<br />

ABS<br />

Rührkesselreaktor<br />

Rohstoff 1<br />

Ventil<br />

Rohstoff 2<br />

Ventil<br />

Druck<br />

Temperatur<br />

Kühlung<br />

Druck<br />

Druck<br />

Ventil<br />

Endprodukt<br />

Kühlflüssigkeit<br />

Fahrerloses Transportsystem<br />

CCD camera<br />

CCD camera<br />

VMEBus rack<br />

Datacube<br />

MaxVideo 200<br />

static obstacle<br />

Sun SPARCstation<br />

mobile robot dynamic obstacle<br />

radio link<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 4 -<br />

aus: Zöbel/Albrecht, Echzeitsysteme<br />

International Thompson Publishing, 1995<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 5 -<br />

Auszug aus DIN 44300 (1985)<br />

Realzeitbetrieb ist ein Betrieb eines Rechensystems, bei dem<br />

Programme zur Verarbeitung anfallender Daten ständig bereit sind,<br />

derart, dass die Verarbeitungsergebnisse innerhalb einer vorgegebenen<br />

Zeitspanne Verfügbar sind. Die Daten können je nach Anwendungsfall<br />

nach einer zeitlich zufälligen Verteilung oder zu vorherbestimmten<br />

Zeitpunkten anfallen.<br />

Zur Prozesskopplung<br />

Materie<br />

Energie<br />

<strong>Technische</strong>r<br />

Prozess<br />

Nebenprodukte/Abfall<br />

Produkt<br />

Messwerte<br />

(Sensorik)<br />

Prozessdaten<br />

Prozessrechensystem<br />

Steuersignale<br />

(Aktorik)<br />

Produktdaten<br />

(Menge, Qualität)<br />

Kopplung an<br />

übergeordnete<br />

Rechner<br />

Produktziele<br />

Ist-Daten<br />

d. Produktion<br />

Protokolle<br />

(Betriebsdaten)<br />

Prozesswarte<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 6 -<br />

PC-Basierte Robotersteuerung<br />

Software<br />

Hardware<br />

CAN-Interface<br />

I/O-Interface<br />

Ist-Position<br />

Soll-Position<br />

CAN-Bus<br />

Regler (n)<br />

Regler (n+m)<br />

Regler (2)<br />

Encoder<br />

Servo-<br />

Umrichter<br />

Aktor m<br />

(...)<br />

Regler (n+1)<br />

Aktortreiber (m)<br />

Aktortreiber (1)<br />

Anwenderprogramm<br />

(Roboteraufgabe)<br />

Echtzeit-Middleware (z.B. MiRPA)<br />

Regler (1)<br />

Sensortreiber (n+m)<br />

Sensortreiber (2)<br />

Roboter-Arbeitszelle<br />

Aktor 1<br />

(z.B. Greifer)<br />

Sensor n<br />

(...)<br />

Sensor 2<br />

(z.B. Abstand)<br />

Sensor 1<br />

(z.B. Kraft/Moment)<br />

Sensortreiber (1)<br />

Positionsregler<br />

Robotertreiber<br />

Hybrider Regler<br />

Bahnplaner<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 7 -<br />

Hardwarezugriff bei monolithischer<br />

Architektur<br />

Win32<br />

Subsystem<br />

Win32<br />

Client<br />

DeviceIoControl()<br />

User Mode<br />

Kernel Mode<br />

I/O-Manager<br />

Erzeugt I/O Request Packet (IRP)<br />

<strong>und</strong> ruft Treiber auf<br />

Vervollständigt IRP<br />

<strong>und</strong> sendet Return Status<br />

Hardware<br />

UPM-Architektur<br />

geschützter<br />

Speicher<br />

Hardwaretreiber<br />

GUI-<br />

Manager<br />

Applikation Applikation<br />

E/A-<br />

Manager<br />

...<br />

Mikrokernel<br />

geschützter<br />

Speicher<br />

Dateisystem Gerätetreiber<br />

Netzwerktreiber<br />

Treiber für<br />

Grafik<br />

Hardware<br />

Flache Architektur<br />

Applikation<br />

Applikation<br />

Gemeinsame Adressierung des Speichers ohne Speicherschutz!<br />

Dateisystem Grafikunterstützung E/A-Manager<br />

Gerätetreiber Netzwerktreiber Grafiktreiber usw...<br />

Hardware<br />

Monolithische Architektur<br />

Applikation<br />

Applikation<br />

geschützter<br />

Speicher<br />

Dateisystem Grafikunterstützung E/A-Manager<br />

monolithischer Kernel<br />

Gerätetreiber Netzwerktreiber Grafiktreiber usw...<br />

Hardware<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 8 -<br />

Zum Context-Switch<br />

Zur Deklaration von Prozessen<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 9 -<br />

Beispiel: Rechnergestütztes Fertigungssystem<br />

aus: Rembold/Levi, Realzeitsysteme zur<br />

Prozessautomatisierung, Hanser-Verlag, 1994<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 10 -<br />

Zustandsübergänge von Prozessen<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 11 -<br />

Zeitverlauf für ein Ereignis im Prozess P<br />

Verteiltes Realzeitsystem<br />

Zum Abtasttheorem: Unterabtastung<br />

Zyklische Messwerterfassung<br />

Realzeitbetriebssysteme...<br />

mC/OS, R&D Books Miller Freeman Inc.; mITRON, TRON Association - ITRON Technical Committee; AIX, IBM; AMX, KADAK Products Ltd; Ariel,<br />

Microware Systems Corporation; ARTOS, Locamation; ASP6x, DNA Enterprises, Inc.; Brainstorm Object eXecutive, Brainstorm Engineering Company;<br />

Byte-BOS, Byte-BOS Integrated Systems; C Executive, JMI Software Systems Inc.; Chimera, The Robotics <strong>Institut</strong>e Carnegie Mellon University;<br />

ChorusOS, Sun Microsystems; CMX, CMX Company; CORTEX, Australian Real Time Embedded Systems (ARTESYS); CREEM, GOOFEE Systems;<br />

CRTX, StarCom; DDC-I Ada Compiler Systems (DACS), DDC-I, Inc.; Diamond, 3L; eCos, Cygnus Solutions; Embedded DOS 6-XL, General Software,<br />

Inc.; EOS, Etnoteam S.p.A.; ERCOS EK, ETAS GmbH & Co.KG; EUROS, Dr. Kaneff Engineering Consultants; Fusion OS, Pacific Softworks; Granada,<br />

Ingenieursbureau B-ware; Harmony Real-Time OS, <strong>Institut</strong>e for Information Technology, National Research Council of Canada; Helios, Perihelion<br />

Distributed Software; HP-RT, Hewlett-Packard; Hyperkernel, Imagination Systems, Inc.; Inferno, Lucent Technologies; INTEGRITY, Green Hills Software,<br />

Inc.; INtime (real-time Windows NT), iRMX, Radisys Corp.; IRIX, Silicon Graphics, Inc.; iRMX III, RadiSys Corporation; ITS OS, In Time Systems<br />

Corporation; JBed, Oberon microsystems, Inc.; JOS, JARP micro operating system; Joshua, David Moore; LP-RTWin Toolkit, LP Elektronik GmbH; LP-<br />

VxWin, LP Elektronik GmbH; LynxOS, Lynx Real-Time Systems; MC/OS runtime environment, Mercury Computer Systems, Inc.; MotorWorks, Wind<br />

River Systems Inc.; MTEX, Telenetworks; NevOS, Microprocessing Technologies; Nucleus PLUS, Accelerated Technology Inc.; OS-9, Microware Systems<br />

Corp.; OS/Open, IBM Microelectronics North American Regional Sales Office; OSE, Enea OSE Systems; OSEK/VDX, Universität Karlsruhe; PDOS, Eyring<br />

Corporation Systems; PERC - Portable Executive for Reliable Control, NewMonics; pF/x, Forth, Inc.; PowerMAX OS, Concurrent Computer Corporation;<br />

Precise/MQX, Precise Software Technologies Inc; PRIM-OS, SSE Czech <strong>und</strong> Matzner; pSOS, pSOSystem, Integrated Systems, Inc.; PXROS, HighTec<br />

EDV Systeme GmbH; QNX, QNX Software Systems, Ltd.; QNX/Neutrino, QNX Software Systems, Ltd.; Real-time Extension (RTX) for Windows NT,<br />

VenturCom, Inc.; Real-Time Software, Encore Real Time Computing Inc.; REALTIME CRAFT, TECSI; Realtime ETS Kernel, Phar Lap Software, Inc.;<br />

RMOS, Siemens AG; Roadrunner, Cornfed Systems, Inc.; RT-Linux, New Mexico Tech; RT-mach, Carnegie Mellon University; RTEK, Motorola; RTEMS,<br />

OAR Corporation; RTKernel-C, On Time Informatik GmbH; RTMX O/S, RTMX Inc.; RTOS-UH/PEARL, Universität Hannover; RTTarget-32, On Time<br />

Informatik GmbH; RTX-51, RTX-251, RTX-166, Keil Software; RTXC, Embedded System Products, Inc.; RTXDOS, Technosoftware AG; RxDOS, Api<br />

Software; Smx, Micro Digital, Inc.; SoftKernel, Microdata Soft; SORIX 386/486, Siemens AG; SPOX, Spectron Microsystems, Inc.; SunOS, Solaris, Sun<br />

Microsystems, Inc.; Supertask!, U S Software; SwiftOS, Forth, Inc.; ThreadX, Express Logic, Inc.; Tics, Tics Realtime; TNT Embedded Tool Suite, Phar<br />

Lap Software, Inc.; Tornado/VxWorks, Wind River Systems Inc.; TSX-32, S&H Computer Systems, Inc.; UNOS, Charles River Data Systems, Inc;<br />

velOSity, Green Hills Software, Inc.; VERSAdos Real-Time Operating System, Linden Technologies, Inc.; Virtuoso, Eonic Systems; VRTX, Microtec<br />

Research; Windows CE, Microsoft Inc.; XOS/IA-32, Nexilis Communications Corp.; XTAL, Axe, Inc.<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 12 -<br />

Zur Unterbrechung von Prozessen<br />

aus: Herrtwich, Hommel, Nebenläufige<br />

Programme, Springer Verlag, 1994<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 13 -<br />

Zeitlicher Ablauf von Unterbrechungsmechanismen<br />

aus: Herrtwich, Hommel, Nebenläufige<br />

Programme, Springer Verlag, 1994<br />

T1<br />

T2<br />

T3<br />

T4<br />

T5<br />

Durchlaufzeit (propagation time)<br />

Latenzzeit (latency time)<br />

Erkennungszeit (identification time)<br />

Ausführungszeit (computation time)<br />

Rückkehrzeit (return time)<br />

T1 + T2 + T3 : Reaktionszeit (reaction time)<br />

T1 + T2 + T3 +T4 : Antwortzeit (response time)<br />

T3 + T4 + T5 : Unterbrechungszeit (interrupt time)<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 14 -<br />

Planung der Prozessorvergabe (Scheduling)<br />

Einzuplanende Prozesse<br />

P1<br />

P2<br />

P3<br />

Zeit<br />

P1<br />

P2<br />

P3<br />

P1<br />

P2<br />

P1<br />

P3<br />

P2<br />

P1<br />

P2<br />

P3<br />

P3<br />

P1<br />

P3<br />

P2<br />

P1<br />

P2<br />

P3<br />

P2<br />

P1<br />

P3<br />

P3<br />

P1<br />

P2<br />

P1<br />

P3<br />

P2<br />

P2<br />

P3<br />

P1<br />

P3<br />

P2<br />

P1<br />

Planen durch Suchen<br />

Einzuplanende Prozesse<br />

P1<br />

Frist(P1)<br />

P2<br />

Frist(P2)<br />

Zeit<br />

Zeit<br />

Planen nach Spielräumen<br />

(Prozesswechsel bei unterbrechbaren Prozessen)<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 15 -<br />

m1<br />

m2<br />

m1<br />

m2<br />

Planen nach Fristen <strong>und</strong> Spielräumen für zwei Prozessoren<br />

Beispiel 1 Beispiel 2<br />

0 2 4 6 8 10<br />

t<br />

0 2 4 6 8 10<br />

Planen nach Fristen<br />

Planen nach Fristen<br />

m1<br />

m2<br />

Planen nach Spielräumen<br />

Planen nach Spielräumen<br />

m1<br />

m2<br />

t<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 16 -<br />

Prioritätsbasiertes Planen<br />

aus: Witzak, Echtzeitbetriebssysteme,<br />

Franzis, 2000<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 17 -<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 18 -<br />

Priority Ceiling (1)<br />

Kritischer Abschnitt,<br />

geschützt durch S 0 mit prio(P ) 3<br />

Kritischer Abschnitt,<br />

geschützt durch S 1 mit prio(P ) 2<br />

0<br />

S gesperrt<br />

S freigegeben<br />

0<br />

Kritischer Abschnitt,<br />

geschützt durch S 2<br />

mit prio(P) 2<br />

P 3<br />

Prozesspriorität<br />

P 2<br />

S gesperrt<br />

2<br />

Blockiert durch P 1<br />

(versucht S zu sperren)<br />

1<br />

S gesperrt<br />

S freigegeben<br />

1<br />

1<br />

1<br />

S gesperrt<br />

S gesperrt<br />

2<br />

S freigegeben<br />

2<br />

2<br />

S freigegeben<br />

S freigegeben<br />

1<br />

P 1<br />

t 0 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8<br />

Zeit<br />

t 0<br />

t 1<br />

t 2<br />

t 3<br />

t 4<br />

t 5<br />

t 6<br />

t 7<br />

t 8<br />

Die Ausführung von Prozess P 1 beginnt, der dann S 2 sperrt.<br />

P 2 startet <strong>und</strong> unterbricht P 1 wegen höherer Priorität.<br />

P 2 versucht den durch S 1 geschützten kritischen Abschnitt durch den nichtunterbrechbaren Aufruf P(S 1 ) zu<br />

verwenden. Jedoch ist die Priorität von P 2 nicht höher als die Priority Ceiling des Semaphors S 2 . Das System<br />

unterbricht P 2 ohne S 1 zu sperren. P 1 erbt die Priorität von P 2 <strong>und</strong> wird fortgesetzt. Anmerkung: P 2 wird<br />

außerhalb seiner kritischen Abschnitte blockiert. Da P 2 S 1 nicht sperrt, sondern selber blockiert, wird einer<br />

potenziellen Verklemmung (Deadlock) zwischen P 2 <strong>und</strong> P 1 vorgebeugt.<br />

P 1 befindet sich immer noch in einem kritischen Abschnitt während ein Prozess P 3 mit höherer Priorität<br />

initiiert wird. P 1 wird blockiert. Später wird S 0 durch P 3 gesperrt. Da die Priorität von P 3 höher ist als die<br />

Priority Ceiling des gesperrten Semaphors S 2 , darf P 3 S 0 sperren. P 3 betritt den durch S 0 geschützten<br />

Bereich während P 1 weiterhin blockiert bleibt.<br />

P 3 hat den durch S 0 geschützten Bereich mit dem Aufruf V(S 0 ) verlassen <strong>und</strong> beendet sich. Die<br />

Ausführung von P 1 wird fortgesetzt, weil P 2 immer noch durch P 1 blockiert wird <strong>und</strong> nicht ausgeführt<br />

werden kann. P 1 sperrt S 1 .<br />

P 1 gibt S 1 frei.<br />

P 1 gibt S 2 frei <strong>und</strong> erhält seine ursprüngliche Priorität zurück. Nun hat P 2 die höchste Priorität <strong>und</strong> wird<br />

fortgesetzt, wodurch P 1 wieder unterbrochen wird. P 2 sperrt S 1 , führt den verschachtelten kritischen<br />

Abschnitt aus <strong>und</strong> gibt S 1 wieder frei. Danach wird auch S 2 wieder freigegeben <strong>und</strong> der Code aus dem<br />

nichtkritischen Abschnitt wird ausgeführt.<br />

P 2 beendet seine Ausführung <strong>und</strong> P 1 wird fortgesetzt.<br />

P 1 beendet sich.<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 19 -<br />

Priority Ceiling (2)<br />

Kritischer Abschnitt,<br />

geschützt durch S 0 mit prio(P ) 3<br />

Kritischer Abschnitt,<br />

geschützt durch S 1 mit prio(P ) 3<br />

Blockiert durch P 1<br />

(versucht S zu sperren)<br />

0<br />

S gesperrt<br />

0<br />

S gesperrt<br />

1<br />

Kritischer Abschnitt,<br />

geschützt durch S 2<br />

mit prio(P) 2<br />

P 3<br />

Prozesspriorität<br />

P 2<br />

Blockiert durch P 1<br />

(versucht S zu sperren)<br />

2<br />

S 2<br />

gesperrt S 1<br />

gesperrt S 1<br />

freigegeben S 2<br />

freigegeben<br />

2<br />

S gesperrt<br />

S freigegeben<br />

2<br />

P 1<br />

t 0<br />

t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 9 t 10<br />

Zeit<br />

t 0<br />

Die Ausführung von Prozess P 1 beginnt, der dann S 2 sperrt.<br />

t 1 P 2 startet <strong>und</strong> unterbricht P 1 .<br />

t 2 P 2 versucht auf den durch S 2 geschützten Abschnitt zuzugreifen, der jedoch noch durch P 1 gesperrt ist. P 1<br />

wird mit der Priorität von P 2 fortgeführt.<br />

t 3<br />

t 4<br />

t 5<br />

P 1 sperrt S 1 . P 1 darf S 1 sperren, da es kein Semaphor S * gibt, das von anderen Prozessen P * blockiert wird.<br />

P 1 befindet sich immer noch im durch S 1 geschützten Abschnitt, während P 3 , ein Prozess mit höherer<br />

Priorität, gestartet wird <strong>und</strong> damit P 1 unterbricht. Dies ist möglich, da die Priorität von P 3 höher ist als die<br />

von P 1 , der zur Zeit die von P 2 geerbte Priorität aufweist.<br />

P 3 versucht auf den durch S 0 geschützten Abschnitt zuzugreifen. S 0 ist zur Zeit von keinem anderen<br />

Prozess in Verwendung, trotzdem wird P 3 von P 1 blockiert, da die Priorität von P 3 nicht höher ist als die<br />

Priority Ceiling des Semaphors S 1 . P 1 bekommt die Priorität von P 3 vererbt <strong>und</strong> wird im durch S 1<br />

geschützten Abschnitt fortgesetzt.<br />

t 6 P 1 gibt S 1 wieder frei <strong>und</strong> bekommt wieder die vorher geerbte Priorität von P 2 zugewiesen. P 3 unterbricht P 1<br />

aufgr<strong>und</strong> höherer Priorität. Jetzt kann P 3 S 0 in Anspruch nehmen <strong>und</strong> fortgeführt werden. Später wird S 0<br />

wieder freigegeben, S 1 wird gesperrt <strong>und</strong> später auch wieder freigegeben.<br />

t 7<br />

t 8<br />

t 9<br />

P 3 beendet sich, <strong>und</strong> P 1 wird mit der Priorität von P 2 fortgeführt.<br />

P 1 verlässt den durch S 2 geschützten Bereich, gibt ihn wieder frei <strong>und</strong> erhält seine ursprüngliche Priorität<br />

wieder. Nun kann P 2 auf den durch S 2 geschützten Abschnitt zugreifen. Aufgr<strong>und</strong> der höheren Priorität wird<br />

also P 1 von P 2 blockiert. Später wird S 2 von P 2 wieder freigegeben <strong>und</strong> unkritischer Code ausgeführt.<br />

P 2 beendet sich, wodurch die Ausführung von P 1 wieder aufgenommen werden kann.<br />

t 10 P 1 beendet sich.<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 20 -<br />

Strichcodeleser<br />

Lesen<br />

Buchen<br />

Drucken<br />

Lagerverwaltung<br />

Drucker<br />

Einfaches Buchungssystem<br />

Konkurrenzsituation im Eisenbahnverkehr<br />

- (Chinesische) Philosophen:<br />

Denken oder Essen<br />

- Jeder hat ein Stäbchen,<br />

zum Essen braucht man<br />

zwei<br />

- Wer hat wann Zugriff<br />

auf sein rechtes <strong>und</strong><br />

linkes Stäbchen?<br />

Speisende Philosophen<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 21 -<br />

Strichcode<br />

Lesen<br />

Buchen<br />

Drucken<br />

Ein einfaches Buchungssystem (1)<br />

Einseitige Synchronisation<br />

Mehrseitige Synchronisation<br />

aus: Herrtwich, Hommel, Nebenläufige<br />

Programme, Springer Verlag, 1994<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 22 -<br />

Ein einfaches Buchungssystem (2)<br />

Implementierung des Buchungssystems mit Semaphoren<br />

aus: Herrtwich, Hommel, Nebenläufige<br />

Programme, Springer Verlag, 1994<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 23 -<br />

Synchronisation mit<br />

Barrieren<br />

#include <br />

#include <br />

#include <br />

#include <br />

pthread_barrier_t barrier; // barrier synchronization object<br />

int main () // ignore arguments<br />

{<br />

time_t now;<br />

// create a barrier object with a count of 3<br />

pthread_barrier_init( &barrier, NULL, 3 );<br />

// start up two threads, thread1 and thread2<br />

pthread_create( NULL, NULL, thread1, NULL );<br />

pthread_create( NULL, NULL, thread2, NULL );<br />

// at this point, thread1 and thread2 are running<br />

// now wait for completion<br />

time( &now );<br />

printf("main() waiting for barrier at %s", ctime( &now ));<br />

pthread_barrier_wait( &barrier );<br />

// after this point, all three threads have completed.<br />

}<br />

time( &now );<br />

printf("barrier in main() done at %s", ctime( &now ));<br />

return( 0 );<br />

void *thread1( void *not_used )<br />

{<br />

time_t now;<br />

time( &now );<br />

printf("thread1 starting at %s", ctime( &now ));<br />

// do the computation<br />

// let's just do a sleep here...<br />

sleep(20);<br />

pthread_barrier_wait (&barrier);<br />

}<br />

// after this point, all three threads have completed.<br />

time( &now );<br />

printf("barrier in thread1() done at %s", ctime( &now ));<br />

return();<br />

void *thread2 (void *not_used)<br />

{<br />

time_t now;<br />

time( &now );<br />

printf("thread2 starting at %s", ctime( &now ));<br />

// do the computation<br />

// let's just do a sleep here...<br />

sleep( 40 );<br />

pthread_barrier_wait( &barrier );<br />

}<br />

// after this point, all three threads have completed.<br />

time( &now );<br />

printf("barrier in thread2() done at %s", ctime( &now ));<br />

return();<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 24 -<br />

#include <br />

#include <br />

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;<br />

pthread_cond_t cond = PTHREAD_COND_INITIALIZER;<br />

int condition = 0;<br />

int count = 0;<br />

int consume( void )<br />

{<br />

while( 1 )<br />

{<br />

pthread_mutex_lock( &mutex );<br />

while( condition == 0 )<br />

pthread_cond_wait( &cond, &mutex );<br />

printf( "Consumed %d\n", count );<br />

condition = 0;<br />

pthread_cond_signal( &cond );<br />

pthread_mutex_unlock( &mutex );<br />

}<br />

}<br />

Synchronisation mit<br />

Zustandsvariablen<br />

return( 0 );<br />

void* produce( void * arg )<br />

{<br />

while( 1 )<br />

{<br />

pthread_mutex_lock( &mutex );<br />

while( condition == 1 )<br />

pthread_cond_wait( &cond, &mutex );<br />

printf( "Produced %d\n", count++ );<br />

condition = 1;<br />

pthread_cond_signal( &cond );<br />

pthread_mutex_unlock( &mutex );<br />

}<br />

return( 0 );<br />

}<br />

int main( void )<br />

{<br />

pthread_create( NULL, NULL, &produce, NULL );<br />

return consume();<br />

}<br />

Synchronisation mit<br />

Schlossvariablen<br />

#include <br />

#include <br />

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;<br />

int count = 0;<br />

void* function1( void* arg )<br />

{<br />

int tmp = 0;<br />

}<br />

while( 1 )<br />

{<br />

pthread_mutex_lock( &mutex );<br />

tmp = count++;<br />

pthread_mutex_unlock( &mutex );<br />

printf( "Count is %d\n", tmp );<br />

}<br />

// snooze for 1 second<br />

sleep( 1 );<br />

return( 0 );<br />

void* function2( void* arg )<br />

{<br />

int tmp = 0;<br />

}<br />

while( 1 )<br />

{<br />

pthread_mutex_lock( &mutex );<br />

tmp = count--;<br />

pthread_mutex_unlock( &mutex );<br />

printf( "** Count is %d\n", tmp );<br />

}<br />

//snooze for 2 seconds<br />

sleep( 2 );<br />

return( 0 );<br />

int main( void )<br />

{<br />

pthread_create( NULL, NULL, &function1, NULL );<br />

pthread_create( NULL, NULL, &function2, NULL );<br />

// Let the threads run for 60 seconds.<br />

sleep( 60 );<br />

}<br />

return( 0 );<br />

RECEIVE<br />

blocked<br />

MsgSend()<br />

MsgReceive()<br />

MsgReply()<br />

or MsgError()<br />

READY<br />

MsgSend()<br />

SEND<br />

blocked<br />

MsgReceive()<br />

Threadzustände bei<br />

send-receive-reply-<br />

Vorgängen<br />

This thread<br />

Other thread<br />

MsgReply()<br />

or MsgError()<br />

REPLY<br />

blocked<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 25 -<br />

aus: Herrtwich, Hommel, Nebenläufige<br />

Programme, Springer Verlag, 1994<br />

Zur Implementierung von Schlossalgorithmen<br />

Inkorrekte Lösung Lösung mit<br />

unteilbarer<br />

Vertauschoperation<br />

Lösung mit<br />

Unterbrechungsabschaltung<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 26 -<br />

Petri-Netze: Beispiele<br />

Speisende Philosophen<br />

Koordination kooperierender Roboter<br />

Industrielles Produktionssystem<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 27 -<br />

Petrinetze: Beispiele <strong>und</strong> Erreichbarkeitsgraph<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 28 -<br />

Kontakt<br />

Schalten einer<br />

Transition<br />

Petri-Netz <strong>und</strong><br />

Überdeckungssgraph<br />

Petri-Netz <strong>und</strong><br />

Erreichbarkeitsgraph<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 29 -<br />

Hierarchische Organisation von Petri-Netzen<br />

Farbige Petrinetze<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl


Umdruck zur Vorlesung <strong>Prozessinformatik</strong>, SS 2007 - 30 -<br />

Vernetzung von Steuergeräten,<br />

Sensoren <strong>und</strong> Aktoren im Kfz<br />

Quelle: Volkswagen AG<br />

• Kühlerlüfter-SG<br />

• ABS/ESP-Steuergerät<br />

• ZV-Steuergerät<br />

• Diebstahlwarnanlage<br />

• Türsteuergeräte<br />

• SG-Memorysitz<br />

• Klima-SG<br />

• SG-Reifendruckkontrolle<br />

• Einparkhilfe<br />

• Innenraumüberwachung<br />

• Navigationssystem<br />

• Airbag-SG<br />

• Zentralelektrik<br />

• Wegfahrsperre<br />

• Kombi-SG<br />

• Memoryspiegel<br />

• Motor-SG<br />

• Getriebe-SG<br />

• Dynamische LWR<br />

<strong>Institut</strong> für <strong>Robotik</strong> <strong>und</strong> <strong>Prozessinformatik</strong>, TU Braunschweig<br />

Prof. Dr. Wahl

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!