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 ...
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