Preview only show first 10 pages with watermark. For full document please download

Manual 9806806

   EMBED


Share

Transcript

B | V-1 Schichtenstruktur 1 Semantische L¨ ucke Gliederung Systemprogrammierung 1 Semantische L¨ ucke Fallstudie 2 Mehrebenenmaschinen Maschinenhierarchie Maschinen und Prozessoren Entvirtualisierung 3 Zusammenfassung Rechnerorganisation: Schichtenstruktur Wolfgang Schr¨ oder-Preikschat Lehrstuhl Informatik 4 23. Mai 2013 c wosch (Lehrstuhl Informatik 4) B | V-1 Schichtenstruktur Systemprogrammierung SP1 # SS 2013 1 / 27 B | V-1 Schichtenstruktur 1 Semantische L¨ ucke Verschiedenheit zwischen Quell- und Zielsprache Faustregel:  Quellsprache → h¨ oheres Zielsprache → niedrigeres c wosch (Lehrstuhl Informatik 4)  Systemprogrammierung 1 Semantische L¨ ucke SP1 # SS 2013 2 / 27 1.1 Fallstudie Beispiel: Matrizenmultiplikation Abstraktionsniveau Problemraum L¨osungsraum (Mathematik) (Informatik) Semantische L¨ucke (engl. semantic gap, [6]) The difference between the complex operations performed by high-level constructs and the simple ones provided by computer instruction sets. It was in an attempt to try to close this gap that computer architects designed increasingly complex instruction set computers. gedanklich gemeint“ ist ein Verfahren aus der linearen Algebra ” sprachlich ge¨außert“ auf verschiedenen Ebenen der Abstraktion ” Kluft zwischen gedanklich Gemeintem und sprachlich Ge¨außertem c wosch (Lehrstuhl Informatik 4) Systemprogrammierung SP1 # SS 2013 3 / 27 c wosch (Lehrstuhl Informatik 4) Systemprogrammierung SP1 # SS 2013 4 / 27 B | V-1 Schichtenstruktur 1 Semantische L¨ ucke B | V-1 Schichtenstruktur 1.1 Fallstudie Ebene mathematischer Sprache: Lineare Algebra a11 a12 a21 a22 Skalarprodukt oder inneres Produkt“ ”      b11 b12 a11 b11 + a12 b21 a11 b12 + a12 b22 · = b21 b22 a21 b11 + a22 b21 a21 b12 + a22 b22 Zwei Matrizen werden multipliziert, indem die Produktsummenformel auf Paare aus einem Zeilenvektor der ersten und einem Spaltenvektor der zweiten Matrix angewandt wird. Produktsummenformel f¨ur C = A × B: Ci,j = P k B | V-1 Schichtenstruktur ausgelegt als Unterprogramm: Prozedur 7→ C function vi multiply.c: Quellmodul erstellen Systemprogrammierung 1 Semantische L¨ ucke SP1 # SS 2013 5 / 27 addl -16(%ebp),%edi .p2align 4,,7 .p2align 3 .L4: movl 12(%ebp),%eax xorl %edx,%edx movl $0,(%esi,%ebx,4) leal (%eax,%ebx,4),%ecx .p2align 4,,7 .p2align 3 .L3: movl (%ecx),%eax addl $400,%ecx imull (%edi,%edx,4),%eax addl $1,%edx addl %eax,(%esi,%ebx,4) cmpl $100,%edx Systemprogrammierung Systemprogrammierung 1 Semantische L¨ ucke SP1 # SS 2013 6 / 27 1.1 Fallstudie Ebene informatischer Sprache: Unix-Dialekt“ a.out [3, 1] ” jne .L3 addl $1,%ebx cmpl $100,%ebx jne .L4 addl $400,-16(%ebp) addl $400,%esi cmpl $40000,-16(%ebp) jne .L2 addl $4,%esp popl %ebx popl %esi popl %edi popl %ebp ret .size multiply, .-multiply .ident "GCC: (Debian 4.3.2-1.1) 4.3.2" .section .note.GNU-stack,"",@progbits Kompilierung der Quelle in ein semantisch ¨aquivalentes Programm gcc -O6 -S -DN=100 multiply.c: C function 7→ ASM/x86 ¨ Schalter -S: Ubersetzung der Quelle vor der Assemblierung beenden c wosch (Lehrstuhl Informatik 4) c wosch (Lehrstuhl Informatik 4) B | V-1 Schichtenstruktur 1.1 Fallstudie Ebene informatischer Sprache: ASM [3, 2] .file "multiply.c" .text .p2align 4,,15 .globl multiply .type multiply,@function multiply: pushl %ebp movl %esp,%ebp pushl %edi pushl %esi pushl %ebx subl $4,%esp movl 16(%ebp),%esi movl $0,-16(%ebp) .L2: movl 8(%ebp),%edi xorl %ebx,%ebx typedef int Matrix [N][N]; void multiply (const Matrix a, const Matrix b, Matrix c) { unsigned int i, j, k; for (i = 0; i < N; i++) for (j = 0; j < N; j++) { c[i][j] = 0; for (k = 0; k < N; k++) c[i][j] += a[i][k] * b[k][j]; } } Konkretisierung der Multiplikation von zwei N × N Matrizen: c = a × b Aik · Bkj c wosch (Lehrstuhl Informatik 4) 1.1 Fallstudie Ebene informatischer Sprache: C Multiplikation von zwei 2 × 2 Matrizen:  1 Semantische L¨ ucke SP1 # SS 2013 7 / 27 Assemblierung der kompilierten Quelle und Ausgabeaufbereitung 1 2 as multiply.s: ASM/x86 7→ a.out/x86 (Binde-/Lademodul) od -x a.out ; auf x86-Prozessoren ausf¨ uhrbarer Bin¨arkode c wosch (Lehrstuhl Informatik 4) Systemprogrammierung SP1 # SS 2013 8 / 27 B | V-1 Schichtenstruktur 1 Semantische L¨ ucke B | V-1 Schichtenstruktur 1.1 Fallstudie Verschiedenheit zwischen Quell- und Zielsprache Ci,j = Ebene der Programmiersprache C ; 5 Komplexschritte welches Problem behandelt wird, ist (f¨ ur Experten) noch erkennbar Ebene der Assembliersprache ASM ; 35+n Elementarschritte welches Problem behandelt wird, ist (eigentlich) nicht erkennbar Ebene der Maschinensprache x86 ; 97 Bytes Programmtext welches Problem behandelt wird, ist u ¨berhaupt nicht mehr erkennbar die semantische L¨ ucke ist (nahezu) unendlich groß 9 / 27 2 3 1 Vorverarbeitung des Quellmoduls cpp(1) 2 Kompilierung der vorverarbeiteten Quelle gcc(1) 3 Assemblierung des (zwischenzeitlich) erzeugten Aggregats as(1) 4 Bindung assemblierter Objektmodule zum Lademodul ld(1) c wosch (Lehrstuhl Informatik 4) B | V-1 Schichtenstruktur 2 Mehrebenenmaschinen Systemprogrammierung 2 Mehrebenenmaschinen SP1 # SS 2013 10 / 27 2.1 Maschinenhierarchie Aufgabenstellung 7→ Programml¨osung Gliederung 1 ? Aik · Bkj ⇐⇒ 5589E5 . . . 5F5DC3 Umwandlung ins ausf¨uhrbare Programm meint viele Arbeitsg¨ange: die semantische L¨ ucke ist vergleichsweise sehr groß B | V-1 Schichtenstruktur k Abstraktion half, sich auf das Wesentliche konzentrieren zu k¨onnen eine virtuelle Maschine zur Matrizenmultiplikation entstand die schrittweise abgebildet wurde auf die reale Maschine x86“ ” die semantische L¨ ucke ist vergleichsweise klein SP1 # SS 2013 P Die Diskrepanz zwischen der vom Menschen skizzierten L¨osung des Problems und dem dazu korrespondierenden, von einem Prozessor ausf¨ uhrbaren Maschinenprogramm ist betr¨achtlich. eine semantische L¨ ucke ist eigentlich nicht vorhanden Systemprogrammierung 1.1 Fallstudie Zwischenzusammenfassung (Forts.) Ebene der Modellsprache Lineare Algebra“ ; 1 Produktsummenformel ” welches Problem behandelt wird, ist (nahezu) offensichtlich c wosch (Lehrstuhl Informatik 4) 1 Semantische L¨ ucke [Problem] Hochsprache ⇑ semantische L¨ ucke ⇓ CPU-Steuerinformationen [Ausf¨ uhrung] Semantische L¨ ucke Fallstudie Mehrebenenmaschinen Maschinenhierarchie Maschinen und Prozessoren Entvirtualisierung Breite der semantischen L¨ ucke variiert: bei gleich bleibendem Problem mit der Plattform (dem System) bei gleich bleibender Plattform mit dem Problem (der Anwendung) L¨ uckenschluss ist ganzheitlich zu sehen Semantische L¨ucke schrittweise schließen durch hierachisch angeordnete virtuelle Maschinen Programml¨osungen auf die reale Maschine abbilden [4] Zusammenfassung Prinzip divide et impera ( teile und herrsche“): einen Gegner“ in ” ” leichter besiegbare Untergruppen“ aufspalten ” c wosch (Lehrstuhl Informatik 4) Systemprogrammierung SP1 # SS 2013 11 / 27 c wosch (Lehrstuhl Informatik 4) Systemprogrammierung SP1 # SS 2013 12 / 27 B | V-1 Schichtenstruktur 2 Mehrebenenmaschinen B | V-1 Schichtenstruktur 2.1 Maschinenhierarchie Hierarchie virtueller Maschinen [5, S. 3] 2 Mehrebenenmaschinen 2.1 Maschinenhierarchie Programme sorgen f¨ur die Maschinenabbildung Kompilierer (engl. compiler) und Interpretierer (engl. interpreter) ¨ Interpretation und Ubersetzung (Kompilierung, Assemblierung): Ebene n virtuelle Maschine Mn mit Maschinensprache Sn .. . 2 .. . virtuelle Maschine M2 mit Maschinensprache S2 1 virtuelle Maschine M1 mit Maschinensprache S1 0 reale Maschine M0 mit Maschinensprache S0 c wosch (Lehrstuhl Informatik 4) B | V-1 Schichtenstruktur Programme in Sn werden von einem auf einer tieferen Maschine laufenden Interpreter gedeutet oder in Programme tieferer Maschinen u ¨bersetzt .. . Programme in S2 werden von einem auf M1 bzw. M0 laufenden Interpreter gedeutet oder nach S1 bzw. S0 u ¨bersetzt Programme in S1 werden von einem auf M0 laufenden Interpreter gedeutet oder nach S0 u ¨bersetzt Programme in S0 werden direkt von der Hardware ausgef¨ uhrt Systemprogrammierung 2 Mehrebenenmaschinen SP1 # SS 2013 13 / 27 Software Assembliersprachenebene Übersetzung (Assemblierer) und Bindung (Binder) Maschinenprogrammebene 2 Befehlssatzebene Hardware/Firmware partielle Interpretation (Betriebssystem) Mikroarchitekturebene Ausführung 0 digitale Logikebene c wosch (Lehrstuhl Informatik 4) Systemprogrammierung SP1 # SS 2013 ggf. Vor¨ ubersetzung durch einen Kompilierer, um Programme in eine f¨ ur die Interpretation g¨ unstigere Repr¨asentation zu bringen z.B. Pascal P-Code, Java Bytecode, x86-Befehle c wosch (Lehrstuhl Informatik 4) Systemprogrammierung 2 Mehrebenenmaschinen SP1 # SS 2013 14 / 27 2.2 Maschinen und Prozessoren Assembliersprachenebene (symbolischer Maschinenkode) [GRA] bietet niedere Programmiersprachen“ zur konkreten, ” CPU-spezifischen Formulierung von Programml¨osungen Programme bestehen aus Pseudobefehle, mnemonisch ausgelegte Maschinenbefehle (ISA), symbolisch bezeichnete Operanden (Speicheradressen, Register) und Adressierungsarten Interpretation (Mikroprogramm) oder Ausführung 1 z.B. Basic, Perl, C, sh(1) problemorientierte Programmiersprachenebene [AuD/PFP] bietet h¨ ohere Programmiersprachen“ zur abstrakten, ” problemorientierten Formulierung von Programml¨osungen Programme setzen sich zusammen aus Konstrukten zur Selektion und Iteration, zur Formulierung von Sequenzen, Blockstrukturen, Prozeduren, zur Beschreibung von elementaren und abstrakten Datentypen und (getypten) Operatoren problemorientierte Sprachenebene 3 In|ter|pret lat. (Ausleger, Erkl¨arer, Deuter) ein in Hard-, Firm- oder Software realisierter Prozessor, f¨ uhrt Programme einer bestimmten Quellsprache direkt“ aus ” Softwaremaschine: Kompilierer/Assemblierer (Binder) Übersetzung (Kompilierer) 4 {Ada, C, C++, Eiffel, Modula, Fortran, Pascal, . . . } 7→ Assembler aber ebenso: C++ 7→ C 7→ Assembler B | V-1 Schichtenstruktur 2.2 Maschinen und Prozessoren Hardware/Software-Hierarchie von Rechensystemen [4] 5 Kom|pi|la|tor lat. (Zusammentr¨ager) ein Softwareprozessor, transformiert Programme einer Quellsprache in semantisch ¨aquivalente Programme einer Zielsprache 15 / 27 c wosch (Lehrstuhl Informatik 4) Systemprogrammierung SP1 # SS 2013 16 / 27 B | V-1 Schichtenstruktur 2 Mehrebenenmaschinen B | V-1 Schichtenstruktur 2.2 Maschinen und Prozessoren 2 Mehrebenenmaschinen 2.2 Maschinen und Prozessoren Softwaremaschine: Teilinterpretierer 7→ Betriebssystem Firm-/Hardwaremaschine: Interpretierer Maschinenprogrammebene (bin¨arer Maschinenkode) [SP] legt Betriebsarten des Rechners fest, verwaltet Betriebsmittel und steuert bzw. u ¨berwacht die Abwicklung von Programmen Programme bestehen aus Systemaufrufe (an das Betriebssystem) und Maschinenbefehle (ISA) Befehlssatzebene (engl. instruction set architecture, ISA) implementiert das Programmiermodell der CPU Betriebssysteme ko-implementieren“ Maschinenprogrammebenen ” zum großen Teil kodiert in problemorientierte Programmiersprachen vorwiegend C, zunehmend auch C++, kaum Java zum kleinen Teil kodiert in Assembliersprachen c wosch (Lehrstuhl Informatik 4) B | V-1 Schichtenstruktur Systemprogrammierung 2 Mehrebenenmaschinen SP1 # SS 2013 17 / 27 z.B. CISC, RISC, VLIW, SMT (HTT) Programme bestehen aus Mikroanweisungen oder Konstrukten einer Hardwarebeschreibungssprache (z.B. VHDL, SystemC) Mikroarchitekturebene [GTI] beschreibt den Aufbau der Operations- und Steuerwerke, der Zwischenspeicher und die Befehlsverarbeitung Programme setzen sich zusammen aus den Konstrukten einer Hardwarebeschreibungssprache (z.B. VHDL, SystemC) c wosch (Lehrstuhl Informatik 4) B | V-1 Schichtenstruktur 2.2 Maschinen und Prozessoren Hardwaremaschine: Ausf¨uhrende [GTI/GRA] Systemprogrammierung 2 Mehrebenenmaschinen SP1 # SS 2013 18 / 27 2.2 Maschinen und Prozessoren Abstraktionsniveau vs. Semantische L¨ucke digitale Logikebene (Boolsche Algebra) [GST/GTI] bildet auf Basis von Transistoren, Gattern, Schaltnetzen und Schaltwerken die wirkliche Hardware des Rechners Programme bestehen aus Elementen der Schaltalgebra semantische Lücke 6 Problemebene 5 problemorientierte Sprachenebene 4 Assembliersprachenebene 3 Maschinenprogrammebene 2 Befehlssatzebene 1 Mikroarchitekturebene 0 digitale Logikebene UND, ODER und NICHT bzw. NAND oder NOR maximale Flexibilit¨at minimale Benutzerfreundlichkeit maximale Distanz von sehr vielen Problemdom¨anen c wosch (Lehrstuhl Informatik 4) Systemprogrammierung SP1 # SS 2013 19 / 27 c wosch (Lehrstuhl Informatik 4) Systemprogrammierung SP1 # SS 2013 20 / 27 B | V-1 Schichtenstruktur 2 Mehrebenenmaschinen B | V-1 Schichtenstruktur 2.3 Entvirtualisierung 2 Mehrebenenmaschinen 2.3 Entvirtualisierung ¨ Abbildung durch Ubersetzung Abbildung durch Interpretation Ebene 5 7→ Ebene 4 (Kompilierung) Ebene 5 -Befehle 1:N“ in Ebene 4 -Befehle u ¨bersetzen ” Ebene 3 7→ Ebene 2 (Teilinterpretation, auch partielle Interpretation) Ebene 3 -Befehle typ- und zustandsabh¨angig verarbeiten: ein Hochsprachenbefehl als Sequenz von Assembliersprachenbefehlen eine semantisch ¨aquivalente Befehlsfolge generieren (a) als Folgen von Ebene 2 -Befehlen ausf¨ uhren Systemaufrufe annehmen und befolgen (synchrone/asynchrone) Programmunterbrechungen behandeln sensitive Ebene 2 -Befehle emulieren im Zuge der Transformation ggf. Optimierungsstufen durchlaufen (b) ein Ebene 3 -Befehl aktiviert ggf. ein Ebene 2 -Programm Ebene 4 7→ Ebene 3 (Assemblierung und Binden) Ebene 4 -Befehle 1:1“ in Ebene 3 -Befehle u ¨bersetzen ” Ebene 2 7→ Ebene 1 (Interpretation) Ebene 2 -Befehle als Folgen von Ebene 1 -Befehlen ausf¨ uhren ein Quellmodul in ein Objektmodul umwandeln mit Bibliotheken zum Maschinenprogramm zusammenbinden symbolischen Maschinenkode ( Mnemoniks“) aufl¨ osen ” Abruf- und Ausf¨ uhrungszyklus (engl. fetch-execute-cycle) der CPU in bin¨aren Maschinenkode umwandeln c wosch (Lehrstuhl Informatik 4) B | V-1 Schichtenstruktur Systemprogrammierung 2 Mehrebenenmaschinen 1:1“ auf Ebene 2 -Befehle abbilden (nach unten durchreichen“) ” ” ein Ebene 2 -Befehl l¨ost Ebene 1 -Steueranweisungen aus SP1 # SS 2013 21 / 27 c wosch (Lehrstuhl Informatik 4) B | V-1 Schichtenstruktur 2.3 Entvirtualisierung ¨ Ubersetzung und Interpretation durch Prozessoren Systemprogrammierung 2 Mehrebenenmaschinen SP1 # SS 2013 22 / 27 2.3 Entvirtualisierung Zeitpunkte der Abbildungsvorg¨ange Bezogen auf das jeweils zu interpretierende/¨ ubersetzende Programm Ebene 5 ; Kompilierer Interpretation von Konstrukten/Anweisungen einer Hochsprache“ ” Ebene 4 ; Assemblierer und Binder Interpretation von Anweisungen einer Assembliersprache Ebene 3 ; Betriebssystem Interpretation von Systemaufrufen und sensitiven Ebene 2 -Befehlen Ausf¨ uhrung von Ebene 3 -Programmen (durch Teilinterpretation) Ebene 2 ; Zentraleinheit (CPU) Interpretation von Instruktionen (an die ALU, FPU, MMU, . . . ) Systemprogrammierung zur Laufzeit (Ebene 5 7→ Ebene 1 ) ; dynamisch ¨ bedarfsorientierte Ubersetzung (engl. just in time compilation) Binden (engl. dynamic linking) bindendes Laden (engl. linking loading, dynamic loading) Teilinterpretation Interpretation Betriebssysteme entvirtualisieren zur Laufzeit Ausf¨ uhrung von Ebene 2 -Programmen c wosch (Lehrstuhl Informatik 4) vor Laufzeit (Ebene 5 7→ Ebene 3 ) ; statisch Vorverarbeitung (engl. preprocessing) Vor¨ ubersetzung (engl. precompilation) ¨ Ubersetzung: Kompilierung, Assemblierung Binden (engl. static linking) dynamisches Binden, bindendes Laden, Teilinterpretation SP1 # SS 2013 23 / 27 c wosch (Lehrstuhl Informatik 4) Systemprogrammierung SP1 # SS 2013 24 / 27 B | V-1 Schichtenstruktur B | V-1 Schichtenstruktur 3 Zusammenfassung Gliederung 3 Zusammenfassung Res¨umee Strukturierte Organisation von Rechensystemen 1 2 3 Semantische L¨ ucke Fallstudie semantische L¨ ucke Kluft zwischen gedanklich Gemeintem und sprachlich Ge¨außertem“ ” schrittweise schließen: kleine Schritte zum großen Ziel. . . Mehrebenenmaschinen Maschinenhierarchie Maschinen und Prozessoren Entvirtualisierung Hierarchie virtueller (auch: abstrakter) Maschinen Ebene i 7→ Ebene i−1 durch Programme, f¨ ur i > 1 Maschinenprogrammebene (Ebene 3 ) 7→ Betriebssystem Entvirtualisierung gedachte, unwirkliche, scheinbare Maschinen konkretisieren vor oder zur Programmlaufzeit stattfindende Arbeitsg¨ange Zusammenfassung c wosch (Lehrstuhl Informatik 4) B | V-1 Schichtenstruktur ¨ Ubersetzung und Interpretation in den verschiedensten Facetten Systemprogrammierung 3 Zusammenfassung SP1 # SS 2013 25 / 27 3.1 Bibliographie Literaturverzeichnis [1] Chamberlain, S. ; Taylor, I. L.: Using ld: The GNU Linker. Boston, MA, USA: Free Software Foundation, Inc., 2003 [2] Elsner, D. ; Fenlason, J. : Using as: The GNU Assembler. Boston, MA, USA: Free Software Foundation, Inc., Jan. 1994 [3] Ritchie, D. M.: /* You are not expected to understand this. */. http://cm.bell-labs.com/cm/cs/who/dmr/odd.html, 1975 [4] Tanenbaum, A. S.: Multilevel Machines. In: Structured Computer Organization[5], Kapitel 7, S. 344–386 [5] Tanenbaum, A. S.: Structured Computer Organization. Prentice-Hall, Inc., 1979. – 443 S. – ISBN 0–130–95990–1 [6] http: // www. hyperdictionary. com/ computing/ semantic+ gap c wosch (Lehrstuhl Informatik 4) Systemprogrammierung SP1 # SS 2013 27 / 27 c wosch (Lehrstuhl Informatik 4) Systemprogrammierung SP1 # SS 2013 26 / 27