Übungen Datenverarbeitungstechnik 2017/18 Reiner Doll, Technikerschule München http://portal.ts-muenchen.de mail@reinerdoll.de
Übungen sind theoretisch zu lösende Aufgaben, die die besprochenen Themengebiete im Stil einer Prüfungsaufgabe behandeln. Praktika sind Praxisaufgaben, die meist an der Laboranlage (digitale Fabrik) realisiert werden sollen. Die Praktika sollen in Zusammenarbeit mit den Fächern Steuerungstechnik und Datenverarbeitung dazu führen, daß die Laboranlage am Jahresende lauffähig ist. Lösen Sie die Aufgabe unbedingt selbst, bevor Sie in den Lösungsvorschlag schauen. Ansonsten können Sie sich die Zeit sparen, und gehen besser zum Baden!
Inhalt Übung : Semaphroe 1 Hilfsblatt Dualsystem 3 Übung : Memory Managment 4 Praktikum : Profinet I/O 13 Praktikum : OPC ua Übung : Petrinetz Übung : Handshake
Übung : Semaphore Betrachten wir noch einmal den MES-Rechner, der im Multithreading die Laboranlage führt. Er kann aus dem Thread, der das Linearmodul steuert, und aus dem Thread, der das Vertikalmodul steuert, das Bandmodul zur Tätigkeit beauftragen. Die Codestücke hierfür lauten so : Linearmodul : Private Sub linearmodul() Do band.order = 8 //Auftrag setzen (8 = Öffne Schranke1) band.write_order() //Auftrag schreiben band.start_module() //Modul starten Do //warten, bis Modul fertig band.read_state() Loop Until band.state = "ready" Vertikalmodul : Private Sub vertikalmodul() Do band.order = 9 //Auftrag setzen (9 = Öffne Schranke2) band.write_order() //Auftrag schreiben band.start_module() //Modul starten Do //warten, bis Bandmodul fertig band.read_state() Loop Until band.state = "ready" 1
Aufgabe : Versuchen Sie, diesen Visual-Basic ähnlichen Code soweit zu verstehen, daß Sie die Steuerlogik für das Bandmodul durchschauen. Überlegen Sie, wie es hier zu einer Race-Condition oder einem Deadlock kommen könnte. Nun setzen Sie geeignete Semaphore, um dies zu verhindern! 2
Hilfsblatt zum Dualsystem 2 n Bytes Speichergröße 0 1 1 2 2 4 3 8 4 16 5 32 6 64 7 128 8 256 9 512 10 1024 1 kb 11 2048 2 kb 12 4096 4 kb 13 8192 8 kb 14 16384 16 kb 15 32768 32 kb 16 65536 64 kb 17 131072 128 kb 18 262144 265 kb 19 524288 512 kb 20 1048576 1 MB 21 2097152 2 MB 22 4194304 4 MB 23 8388608 8 MB 24 16777216 16 MB 25 33554432 32 MB 26 67108864 64 MB 27 134217728 128 MB 28 268433456 256 MB 29 536870912 512 MB 30 1073741824 1 GB 3
Übung : memory management Erste Aufgabe Wir betrachten eine Task in einem Rechner mit stark vereinfachtem Adresssystem : - Der Prozessor hat 12 bit Adressbreite - Die Daten werden byteorganisiert gelesen - Der Rechner hat 2 kb Hauptspeicher - Die Festplatte und damit die MMU ist in 1kB-pages organisiert 1. Wie groß ist der adressierbare Speicherbereich? 2. Wieviele pages kann die MMU im RAM halten? 3. Geben Sie eine Zeile der pagetable dieser MMU an 4. Wieviele pages tragen die Kennzeichnung PB=0? 4
Zweite Aufgabe Wir betrachten eine Task in einem Rechner mit stark vereinfachtem Adresssystem : - Der Prozessor hat 32 bit Adressbreite - Die Daten werden Byteorganisiert gelesen - Der Rechner hat 512 MB Hauptspeicher - Die Festplatte ist in 4kB-pages organisiert 1. Wie groß ist der adressierbare Speicherbereich? 2. Wieviele pages kann die MMU im RAM halten? 3. Geben Sie eine Beispielzeile aus der pagetable an 4. Wieviele pages tragen die Kennzeichnung PB=0? Ein kleiner Schritt in Richtung Realität : Nun sollen 32 laufende Tasks betrachtet werden. Als Hardware wird nun ein 64bit-System benutzt, und es werden 8GB RAM eingebaut. Die paging-strategie soll working set sein, wobei bei jedem paging error 1% der zur Verfügung stehenden Seitenzahl pro Task geladen werden soll. 5. Wieviele Seiten umfasst der bei jedem paging-error umgeladene Speicherbereich? 5