Mindmap-Galerie „Wie das Programm läuft“
Dieses Buch führt Computerpraktiker in die Zusammensetzung von Computern, CPU, Binäroperationen, Speicher, Betriebssystemen, Programmausführung, Assemblierung, Hardwaresteuerung, maschinelles Lernen usw. ein und ermöglicht den Lesern ein tiefgreifendes Verständnis dafür, wie Programme verschiedene Prozesse durchlaufen Prozesse aus Quelldateien ist ein Muss für Computerbegeisterte und Praktiker.
Bearbeitet um 2024-01-18 19:32:06Einhundert Jahre Einsamkeit ist das Meisterwerk von Gabriel Garcia Marquez. Die Lektüre dieses Buches beginnt mit der Klärung der Beziehungen zwischen den Figuren. Im Mittelpunkt steht die Familie Buendía, deren Wohlstand und Niedergang, interne Beziehungen und politische Kämpfe, Selbstvermischung und Wiedergeburt im Laufe von hundert Jahren erzählt werden.
Einhundert Jahre Einsamkeit ist das Meisterwerk von Gabriel Garcia Marquez. Die Lektüre dieses Buches beginnt mit der Klärung der Beziehungen zwischen den Figuren. Im Mittelpunkt steht die Familie Buendía, deren Wohlstand und Niedergang, interne Beziehungen und politische Kämpfe, Selbstvermischung und Wiedergeburt im Laufe von hundert Jahren erzählt werden.
Projektmanagement ist der Prozess der Anwendung von Fachwissen, Fähigkeiten, Werkzeugen und Methoden auf die Projektaktivitäten, so dass das Projekt die festgelegten Anforderungen und Erwartungen im Rahmen der begrenzten Ressourcen erreichen oder übertreffen kann. Dieses Diagramm bietet einen umfassenden Überblick über die 8 Komponenten des Projektmanagementprozesses und kann als generische Vorlage verwendet werden.
Einhundert Jahre Einsamkeit ist das Meisterwerk von Gabriel Garcia Marquez. Die Lektüre dieses Buches beginnt mit der Klärung der Beziehungen zwischen den Figuren. Im Mittelpunkt steht die Familie Buendía, deren Wohlstand und Niedergang, interne Beziehungen und politische Kämpfe, Selbstvermischung und Wiedergeburt im Laufe von hundert Jahren erzählt werden.
Einhundert Jahre Einsamkeit ist das Meisterwerk von Gabriel Garcia Marquez. Die Lektüre dieses Buches beginnt mit der Klärung der Beziehungen zwischen den Figuren. Im Mittelpunkt steht die Familie Buendía, deren Wohlstand und Niedergang, interne Beziehungen und politische Kämpfe, Selbstvermischung und Wiedergeburt im Laufe von hundert Jahren erzählt werden.
Projektmanagement ist der Prozess der Anwendung von Fachwissen, Fähigkeiten, Werkzeugen und Methoden auf die Projektaktivitäten, so dass das Projekt die festgelegten Anforderungen und Erwartungen im Rahmen der begrenzten Ressourcen erreichen oder übertreffen kann. Dieses Diagramm bietet einen umfassenden Überblick über die 8 Komponenten des Projektmanagementprozesses und kann als generische Vorlage verwendet werden.
Wie läuft das Programm ab?
1.Prozessor des Programms: CPU
Es besteht aus vier Teilen: Register, Regler, Rechenwerk und Uhr. Verwenden Sie zum Verbinden aktuelle Signale.
Register: vorübergehende Speicherung von Daten und Anweisungen
Controller: Steuern Sie das Lesen von Daten und Anweisungen im Register
Uhr: Programm-Timing
Operator: Verarbeitet die aus dem Register gelesenen Daten
Die CPU ist eine Sammlung verschiedener Funktionsregister
Register können nur Maschinensprache verarbeiten
Maschinensprache wird aus einer höheren Programmiersprache kompiliert
Register 1: Programmzähler
Bestimmen Sie die Programmausführung durch Ausführen von Adressanweisungen
Register 2: Flag-Register
Operationsergebnisse speichern (positiv, negativ, Null, Überlauf, Parität)
Funktionsaufruf
Dies wird erreicht, indem der Wert des Programmzählers auf die Speicheradresse der Funktion gesetzt wird.
Verwenden Sie den Stapel, um die Anrufadresse und die Rücksprungadresse abzurufen
Array-Speicher
Verwenden Sie das Basisregister zum Speichern des Array-Inhalts und das Indexregister zum Speichern des Array-Index.
2. Daten werden binär dargestellt
Warum die binäre Darstellung verwendet wird: Im Computer werden Dioden verwendet, um zwei Situationen darzustellen: bestanden oder nicht bestanden.
Die kleinste Binäreinheit ist das Bit, das die Anzahl der Bits in einer Binärzahl darstellt.
Die Grundeinheit der Binärdatei ist Byte, ein Byte besteht aus 8 Bits
Binäre Berechnungen
Konvertierungsmethode zwischen binär und dezimal: Addieren Sie die Ergebnisse der Potenzen der Binärbits, um die Dezimalzahl zu erhalten
Die Operation von Dezimalzahlen im Computer wird zur Berechnung immer noch in Binärzahlen umgewandelt: Beispielsweise ist das Verschieben der Binärzahl um eine Position nach links gleichbedeutend mit der Multiplikation der Zahl mit 2.
Die Subtraktion innerhalb des Computers wird durch Addition implementiert, hier verwenden wir „Komplement“.
Das höchste Bit der Binärzahl ist das Vorzeichenbit, 1 steht für eine negative Zahl, 0 steht für eine positive Zahl
Wenn Sie negative Zahlen darstellen, müssen Sie zur Berechnung „Komplement“ verwenden
Um eine negative Zahl zu finden, verwenden Sie zunächst eine 8-stellige Binärzahl, um die positive Zahl darzustellen, invertieren Sie dann die Zahlen auf allen Ziffern und addieren Sie dann 1 zum Ergebnis.
Wenn bei der Additionsberechnung das höchste Bit den Berechnungsbereich überschreitet, kommt es zu einem Überlauf und der Überlaufwert wird vom Computer automatisch verworfen.
Vorzeichenlose Typen sind Binärzahlen, die alle positive Zahlen sind. Der vorzeichenbehaftete Typ entfernt das höchste Bit zur Darstellung des Vorzeichens und lässt nur n-1 Bit übrig, sodass der positive und der negative Wert die Hälfte ausmachen.
Der Unterschied zwischen logischer Rechtsverschiebung und arithmetischer Rechtsverschiebung
Logische Rechtsverschiebung: Dies entspricht dem Verschieben des Bildes nach rechts und füllt die frei gewordene Position links direkt mit 0
Arithmetische Rechtsverschiebung: Die Binärziffern werden insgesamt nach rechts verschoben und die freien Stellen werden mit 0 oder 1 aufgefüllt
Wenn der Wert ein negativer Wert ist, der durch das Einerkomplement dargestellt wird, können durch Rechtsverschiebung und Addition von 1 zum höchsten freien Bit numerische Operationen wie 1/2, 1/4, 1/8 usw. korrekt implementiert werden. Wenn es sich um eine positive Zahl handelt, addieren Sie einfach 0 zum höchsten Bit.
Binärzahlen werden in Hexadezimalzahlen umgewandelt und die Länge kann auf 1/4 des Originals reduziert werden, was prägnanter und klarer ist
Alles mit 0x am Anfang stellt den Hexadezimalwert dar.
3. Gleitkommazahlen
Bei der Verwendung von Binärwerten zur Darstellung einer Dezimalzahl ist eine genaue Darstellung nicht möglich und es kann nur ein Divisor mit einer gewissen Genauigkeit erstellt werden.
Die Darstellung von Gleitkommazahlen entspricht dem IEEE-Standard
Gleitkommazahl mit einfacher Genauigkeit (32 Bit)
Vorzeichenteil 1, Exponententeil 8, Mantissenteil 23
Gleitkommazahl mit doppelter Genauigkeit (64 Bit)
Vorzeichenteil 1, Exponententeil 11, Mantissenteil 52
Ausdrucksmethode: regulärer Ausdruck
EXCESS-System
Das EXCESS-System verhält sich so, dass negative Zahlen nicht durch ein Vorzeichen dargestellt werden müssen, indem der Mittelwert des durch den Exponententeil dargestellten Bereichs auf 0 gesetzt wird.
4.Speicher
Daten können aus dem Speicher gelesen werden und die Ausschaltinformationen verschwinden.
Es gibt 8 Datensignal-Pins, sodass 8 Bits und 1 Byte dargestellt werden können
Es gibt 10 Adresssignal-Pins, die 1024 Signale darstellen können, was 1 KB entspricht
Unterschiedliche Datentypen, selbst derselbe Wert, belegen unterschiedliche Speichergrößen (daher müssen Sie die Position der Typen so anpassen, dass sie so kompakt wie möglich sind, um bei der Definition von Variablentypen im Programm nicht die 8 Bits jeder Ebene zu verschwenden). . mit Speicher)
Zeiger
Ein Zeiger ist ebenfalls eine Variable. Er repräsentiert nicht den Wert der Daten, sondern die Adresse des Speichers, in dem die Daten gespeichert sind. Mithilfe eines Zeigers können Sie Daten an jeder angegebenen Adresse lesen und schreiben.
Array
Wird an aufeinanderfolgenden Adressen im Speicher gespeichert. Verwenden Sie den Index, um die Adresse der einzelnen Daten anzugeben.
Stapel und Warteschlangen
Stapel und Warteschlangen verwenden keine Indizes für den Zugriff auf Daten, können jedoch einen Speicherbereich in Form eines Arrays mit einer bestimmten Anzahl von Elementen aufteilen, um den internen Zugriff zu implementieren.
Stapel: Zuerst rein, zuletzt raus
Warteschlange: First In, First Out (unter Verwendung eines Ringpuffers, auf den in einem Speicher fester Größe wiederholt zugegriffen werden kann)
verlinkte Liste
Das Hinzufügen, Löschen, Ändern und Überprüfen kann bequemer sein
Binärbaum
Einfach zu suchen
Möglichkeiten, Speicher zu sparen
Geben Sie DLL-Dateien frei, um die doppelte Speicherung von Funktionen zu reduzieren
Reduzieren Sie die Größe der Programmdatei, indem Sie _stdcall aufrufen
5. Diskette
Auf der Festplatte gespeicherte Programme müssen in den Speicher geladen werden, bevor sie ausgeführt werden können. Die CPU, die für das Parsen und Ausführen des Programminhalts verantwortlich ist, muss die Speicheradresse über den internen Programmzähler angeben, bevor sie das Programm auslesen kann.
Festplatten-Caching beschleunigt den Festplattenzugriff
Virtueller Speicher: Eigentlich handelt es sich um Speicherplatz auf der Festplatte, aber dieser Speicherplatz ist in mehrere Seiten unterteilt, und der Inhalt der Seiten wird bei Bedarf kontinuierlich in den Speicher eingelesen.
Computer unterteilen Festplatten im Allgemeinen in Sektoren und speichern sie in Clustern. Unabhängig davon, wie klein eine Datei ist, muss sie ausschließlich einen Cluster belegen.
6. Daten komprimieren
Dateien werden in Bytes gespeichert
RLE-Komprimierungsalgorithmus
Es gibt Einschränkungen, wenn der Anteil wiederholter Inhalte in der Datei nicht groß ist, was dazu führt, dass die Datei erweitert wird.
Huffman-Algorithmus
Der Schlüssel zum Huffman-Algorithmus liegt darin, dass „Daten, die mehrmals vorkommen, durch eine Anzahl von Bytes von weniger als 8 Bits dargestellt werden können, und Daten, die selten verwendet werden, durch eine Anzahl von Bytes von mehr als 8 Bits dargestellt werden können.“
Verwenden Sie einen Huffman-Baum, um die Codes jedes Zeichens anzuordnen, mit hoher Häufigkeit im kurzen Bit und niedriger Häufigkeit im langen Bit, und jeder Code wird als Blattknoten des Binärbaums verwendet
Reversible Komprimierung und nicht reversible Komprimierung
7. Programmlaufumgebung
Betriebsumgebung: Betriebssystem und Computerhardware
Quellcode -> Nativer Code -> Ausführen
Windows überwindet andere Hardwareunterschiede als die CPU und ermöglicht so die Kompatibilität verschiedener Modelle mit demselben Programm
Verschiedene CPUs verwenden unterschiedliche Maschinensprachen. Wenn dasselbe Programm auf andere CPUs migriert wird, ist daher ein CPU-spezifischer nativer Code-Compiler erforderlich, um es in den entsprechenden nativen Code neu zu kompilieren.
Verwenden Sie virtuelle Maschinen, um andere Betriebssystemumgebungen zu erhalten
Virtual PC für MAC kann die Macintosh-Hardware mit der eines AT-kompatiblen Computers vergleichen, sodass Windows auf der Hardware installiert werden kann
Java virtuelle Maschine
Die Java Virtual Machine läuft, während sie Java-Bytecode nacheinander in nativen Code konvertiert.
BIOS
Das BIOS ist im ROM gespeichert und ein im Computer-Host vorinstalliertes Programm
Neben grundlegenden Steuerprogrammen wie Tastatur, Festplatte und Grafikkarte verfügt das BIOS auch über die Funktion, das „Boot-Programm“ zu starten.
8. Von der Quelldatei zur ausführbaren Datei
Zur Ausführung muss der Quellcode in nativen Code kompiliert werden
Das Wesentliche an nativem Code ist eine Folge von Hexadezimalwerten
Der Compiler ist für die Übersetzung des Quellcodes in nativen Code verantwortlich
Die .c-Datei wird nach der Kompilierung durch den Compiler zu einer .obj-Datei. Zu diesem Zeitpunkt kann das Programm immer noch nicht ausgeführt werden.
Der Connector fügt mehrere Zieldateien zusammen, um eine EXE-Datei zu generieren. Dieser Vorgang wird als Verknüpfen bezeichnet. Erst nach Eingabe des Link-Befehls kann die .exe-Datei generiert werden.
Bibliotheksdateien werden aus mehreren Zieldateien gepackt. Durch die Angabe einer Bibliotheksdatei beim Verknüpfen kann der Linker die erforderlichen Objektdateien daraus extrahieren und sie mit anderen Objektdateien verknüpfen, um eine EXE-Datei zu generieren.
Die Windows-API ist eine Programmanwendungsschnittstelle
Das Wesentliche der API ist eine Funktion. Die Zieldatei der API ist die Bibliotheksdatei der Dynamic Link Library (DLL) (sie speichert die Zieldatei nicht wirklich, sondern stellt nur den Link zur Zieldatei bereit, der zum automatischen Abrufen verwendet wird die Zieldatei, wenn das Programm ausgeführt wird)
Eine Bibliotheksdatei, die die Zieldatei selbst enthält und direkt mit der EXE-Datei verknüpft werden kann, wird als statische Linkbibliothek bezeichnet.
Zum Ausführen einer ausführbaren Datei sind Variablen und Funktionen erforderlich
In der EXE-Datei sind die den Variablen und Funktionen zugewiesenen Speicheradressen virtuell. Wenn das Programm ausgeführt wird, werden diese virtuellen Speicheradressen in tatsächliche Speicheradressen umgewandelt. Der Linker zeichnet am Anfang der EXE-Datei verschiedene Speicherorte auf, die eine Speicheradressenübersetzung erfordern. Diese Informationen werden als Verschiebungsinformationen bezeichnet.
Bereichszusammensetzung im Speicher: Variablenraum, Funktionsraum, Heap-Raum, Stapelraum
Der Stapel wird zum Speichern lokaler Variablen in Funktionen und Parametern verwendet, die übergeben werden müssen.
Der Stapelspeicher wird vom Compiler automatisch generiert oder freigegeben und erfordert keinen manuellen Vorgang.
Heap wird zum Speichern beliebiger Daten verwendet
Heap-Speicherplatz erfordert manuelle Zuweisung und Freigabe (malloc und frei) (neu und löschen)
9. Betriebssystem
Natur
Es handelt sich um ein Überwachungsprogramm mit der Funktion, Programme zu laden und auszuführen.
Portabilität
Hochrangige Programmiersprachen verwenden beim Bearbeiten des Quellcodes eine gemeinsame Sprache, aber nach dem Kompilieren von nativem Code in verschiedenen Betriebssystemen ruft das Programm Systemfunktionen innerhalb des Systems auf. Dies ist Portabilität.
Hardware-Abstraktion
Betriebssysteme und höhere Programmiersprachen abstrahieren die Hardware, sodass sich Programmierer nicht mehr um Systemaufrufe und Hardware kümmern müssen
Funktionen des Windows-Betriebssystems
Verfügbar in 32-Bit- und 64-Bit-Versionen
Stellen Sie Systemaufrufe über eine Reihe von API-Funktionen bereit
Verwenden der GUI
Möglichkeit, die Ausgabe im WYSIWYG-Format zu drucken
Bieten Sie Multitasking-Funktionen
Bereitstellung von Netzwerk- und Datenbankfunktionen
Automatische Gerätetreiberinstallation per Plug and Play
10. Assemblersprache und nativer Code
Assemblersprache
Die Assemblersprache verwendet Mnemoniken, also Anweisungen für nativen Code
In Assembler geschriebener Quellcode muss vor der Ausführung in nativen Maschinencode umgewandelt werden.
Das Programm, das Assemblersprache in nativen Code umwandelt, ist ein Assembler, und der Konvertierungsprozess wird Assembler genannt
Sie können die Muttersprache auch in die Assemblersprache konvertieren. Der Konvertierungsprozess wird als Disassemblierung bezeichnet.
Der C-Sprachcompiler kann auch C-Sprachquellcode in Assembler-Quellcode konvertieren
Es gibt zwei Arten von Anweisungen in der Assemblersprache
1. Allgemeine Anweisungen, die in nativen Code umgewandelt werden
2. Pseudoanweisungen speziell für Assembler
Pseudoanweisungen sind dafür verantwortlich, dem Assembler die Struktur des Programms und die Assemblierungsmethode mitzuteilen, daher werden sie auch Assembleranweisungen genannt.
In der Assemblersprache beginnen Kommentare mit dem #-Zeichen
Grammatik
Opcode
Gibt die Aktion des Befehls an
Operand
Gibt das Operationsobjekt der Anweisung an
Beim Ausführen des Programms wird ein Stapelplatz im Register geöffnet. Die aufgerufenen Funktionsvariablen verwenden diesen Stapel. Der Stapelplatz wird nach Programmende gelöscht.
Aufruffunktionen
Nehmen Sie die Parameter vom Stapel und führen Sie die Operation aus, speichern Sie den Rückgabewert im EAX-Register, nehmen Sie die Rückgabezieladresse vom Stapel und lassen Sie den Prozess zurückkehren
Variable
globale Variablen
Außerhalb der Funktion deklariert, können alle Funktionen im Programm darauf zugreifen
lokale Variablen
Da es innerhalb einer Funktion deklariert ist, kann nur innerhalb der Funktion darauf zugegriffen werden, in der es deklariert ist.
Zyklus
bedingter Zweig
11. Greifen Sie auf die Hardware zu
Programme greifen über das Betriebssystem auf Hardware zu
Eingabe- und Ausgabeanweisungen
I/O-Controller = Port
Ein- und Ausgabedaten vorübergehend speichern
Verwenden Sie zur Unterscheidung die Portnummer, d. h. die E/A-Adresse
Solange die Portnummer im In-Befehl und Out-Befehl angegeben ist, können Sie auf den I/O-Controller zugreifen und die Ein- und Ausgabevorgänge abschließen.
Unterbrechungsbehandlung
Unterbrechen Sie das aktuell laufende Programm und führen Sie andere Programme aus
Der E/A-Controller gibt eine Interrupt-Anfrage aus und die CPU führt die Interrupt-Verarbeitung aus. Der Interrupt-Controller wird zwischen den beiden verwendet, um sie nacheinander zur Verarbeitung an die CPU zu übergeben.
DMA
Eine Methode zur direkten Datenübertragung zwischen externen Geräten und dem Speicher, ohne dass sie von der CPU übertragen wird. Sie wird häufig in Geräten wie Netzwerken und Festplatten verwendet.
PIO
Die Art und Weise, wie Daten zwischen externen Geräten und dem Speicher über die CPU übertragen werden, wird als PIO bezeichnet
Zeigen Sie Zeichen und Bilder an
Speichern Sie die Daten im Videospeicher und zeigen Sie sie auf dem Monitor an
Die Grafikkarte verfügt über einen unabhängigen Videospeicher und eine Bildprozessor-GPU
12. Maschinelles Lernen
Konzept
Programmierer schreiben nur Lernprogramme. Der Inhalt dieses Programms besteht darin, den Computer eine große Datenmenge lesen zu lassen, dann die Eigenschaften dieser Daten zu lernen und ein Erkennungsmodell zu generieren
überwachtes Lernen
Beim überwachten Lernen geht es darum, dem Computer eine große Datenmenge mit korrekten Antworten zur Verfügung zu stellen.
Schritt
(1) Teilen Sie Lerndaten und Antwortdaten in Trainingsdaten und Testdaten auf
(2) Verwenden Sie Lernalgorithmen, um Trainingsdaten zu lernen und Modelle zu generieren
(3) Verwenden Sie Testdaten, um die Leistung des Modells zu bewerten
Algorithmen für maschinelles Lernen
Support-Vektor-Maschinen
Werkzeug
Python-Sprache
In Python werden Bibliotheken bereitgestellt, die verschiedene Funktionen im Zusammenhang mit maschinellem Lernen enthalten
Der Skriptmodus verwendet den Python-Interpreter, um vorab geschriebenen Quellcode zu interpretieren und auszuführen (Skriptmodus).
Starten Sie direkt den Python-Interpreter, geben Sie das Programm Zeile für Zeile über die Tastatur ein und interpretieren Sie die Ausführung im interaktiven Modus (interaktiver Modus) (maschinelles Lernen verwendet diesen Modus).
Kreuzvalidierung
Kreuzvalidierung ist eine Methode zur Durchführung maschinellen Lernens, bei der Trainings- und Testdaten kontinuierlich rotiert werden
Sie können überprüfen, ob die Erkennungsrate des Lernmodells aufgrund der Art der Lerndaten verzerrt ist.