Galleria mappe mentale Come funziona il programma
Questo libro introduce ai professionisti del settore la composizione di computer, CPU, operazioni binarie, memoria, sistemi operativi, esecuzione di programmi, assemblaggio, controllo hardware, apprendimento automatico, ecc., consentendo ai lettori di avere una comprensione approfondita di come i programmi attraversano varie fasi. processi da file sorgente. Running in Your Computer è un libro scientifico popolare da leggere per gli appassionati e i professionisti del computer.
Modificato alle 2024-01-18 19:32:06Questa è una mappa mentale su una breve storia del tempo. "Una breve storia del tempo" è un'opera scientifica popolare con un'influenza di vasta portata. Non solo introduce i concetti di base della cosmologia e della relatività, ma discute anche dei buchi neri e dell'espansione dell'universo. questioni scientifiche all’avanguardia come l’inflazione e la teoria delle stringhe.
Dopo aver letto "Il coraggio di essere antipatico", "Il coraggio di essere antipatico" è un libro filosofico che vale la pena leggere. Può aiutare le persone a comprendere meglio se stesse, a comprendere gli altri e a trovare modi per ottenere la vera felicità.
"Il coraggio di essere antipatico" non solo analizza le cause profonde di vari problemi nella vita, ma fornisce anche contromisure corrispondenti per aiutare i lettori a comprendere meglio se stessi e le relazioni interpersonali e come applicare la teoria psicologica di Adler nella vita quotidiana.
Questa è una mappa mentale su una breve storia del tempo. "Una breve storia del tempo" è un'opera scientifica popolare con un'influenza di vasta portata. Non solo introduce i concetti di base della cosmologia e della relatività, ma discute anche dei buchi neri e dell'espansione dell'universo. questioni scientifiche all’avanguardia come l’inflazione e la teoria delle stringhe.
Dopo aver letto "Il coraggio di essere antipatico", "Il coraggio di essere antipatico" è un libro filosofico che vale la pena leggere. Può aiutare le persone a comprendere meglio se stesse, a comprendere gli altri e a trovare modi per ottenere la vera felicità.
"Il coraggio di essere antipatico" non solo analizza le cause profonde di vari problemi nella vita, ma fornisce anche contromisure corrispondenti per aiutare i lettori a comprendere meglio se stessi e le relazioni interpersonali e come applicare la teoria psicologica di Adler nella vita quotidiana.
Come funziona il programma?
1. Processore del programma: CPU
Si compone di quattro parti: registro, controller, unità aritmetica e orologio. Utilizza i segnali attuali per connetterti.
Registro: conservazione temporanea di dati e istruzioni
Controller: controlla la lettura dei dati e delle istruzioni nel registro
Orologio: temporizzazione del programma
Operatore: opera sui dati letti dal registro
La CPU è una raccolta di vari registri funzionali
I registri possono gestire solo il linguaggio macchina
Il linguaggio macchina è compilato da un linguaggio di programmazione di alto livello
Registro 1: contatore del programma
Determinare l'esecuzione del programma eseguendo istruzioni di indirizzo
Registro 2: registro delle bandiere
Salvataggio dei risultati dell'operazione (positivo, negativo, zero, overflow, parità)
chiamata di funzione
Ciò si ottiene impostando il valore del contatore del programma sull'indirizzo di memorizzazione della funzione.
Utilizza lo stack per ottenere l'indirizzo di chiamata e l'indirizzo di ritorno
Archiviazione di array
Utilizzare il registro base per memorizzare il contenuto dell'array e il registro indice per memorizzare l'indice dell'array.
2. I dati sono rappresentati in binario
Perché viene utilizzata la rappresentazione binaria: all'interno del computer, i diodi vengono utilizzati per rappresentare due situazioni: superato o fallito.
L'unità più piccola del binario è il bit, che rappresenta il numero di bit in un numero binario.
L'unità di base del binario è il byte, un byte è composto da 8 bit
Calcoli binari
Metodo di conversione da binario a decimale: aggiungi i risultati delle potenze di bit binari per ottenere il numero decimale
L'operazione dei numeri decimali nel computer viene ancora convertita in numeri binari per il calcolo: ad esempio, spostare il numero binario a sinistra di una posizione equivale a moltiplicare il numero per 2.
La sottrazione all'interno del computer viene implementata utilizzando l'addizione, qui usiamo "complemento"
Il bit più alto del binario è il bit del segno, 1 rappresenta un numero negativo, 0 rappresenta un numero positivo
Quando si rappresentano numeri negativi, è necessario utilizzare il "complemento" per calcolare
Per trovare un numero negativo, utilizza prima un numero binario di 8 cifre per rappresentare il numero positivo, quindi inverti i numeri su tutte le cifre e infine aggiungi 1 al risultato.
Quando si calcola l'addizione, se il bit più alto supera l'intervallo di calcolo, andrà in overflow e il computer scarterà automaticamente il valore di overflow.
I tipi senza segno sono numeri binari che sono tutti numeri positivi. Il tipo con segno toglie il bit più alto per rappresentare il segno, lasciando solo n-1 bit, quindi i valori positivi e negativi rappresentano la metà.
La differenza tra spostamento a destra logico e spostamento a destra aritmetico
Spostamento logico a destra: equivale a spostare l'immagine a destra, riempiendo direttamente la posizione lasciata libera a sinistra con 0
Spostamento aritmetico a destra: le cifre binarie vengono spostate completamente a destra e le posizioni vacanti vengono riempite con 0 o 1
Se il valore è un valore negativo rappresentato dal complemento di uno, spostando a destra e aggiungendo 1 al bit più alto lasciato libero, è possibile implementare correttamente operazioni numeriche come 1/2, 1/4, 1/8, ecc. Se è un numero positivo, aggiungi semplicemente 0 al bit più alto.
I numeri binari vengono convertiti in numeri esadecimali e la lunghezza può essere ridotta a 1/4 dell'originale, il che è più conciso e chiaro
Qualunque cosa con 0x all'inizio rappresenta il valore esadecimale.
3. Numeri in virgola mobile
Quando si utilizza il binario per rappresentare un decimale, è impossibile ottenere una rappresentazione accurata ed è possibile creare solo un divisore con un intervallo di precisione.
La rappresentazione dei numeri in virgola mobile è lo standard IEEE
Numero in virgola mobile a precisione singola (32 bit)
Segno parte 1, esponente parte 8, mantissa parte 23
Numero in virgola mobile a doppia precisione (64 bit)
Segno parte 1, esponente parte 11, mantissa parte 52
Metodo di espressione: espressione regolare
Sistema in ECCESSO
Il sistema EXCESS si comporta in modo tale che i numeri negativi non debbano essere rappresentati da un segno impostando su 0 il valore medio dell'intervallo rappresentato dalla parte esponente.
4.Memoria
I dati possono essere letti dalla memoria e le informazioni sullo spegnimento scompaiono.
Sono presenti 8 pin del segnale dati, quindi può rappresentare 8 bit e 1 byte
Sono presenti 10 pin di segnale di indirizzo, che possono rappresentare 1024 segnali, ovvero 1K
Tipi di dati diversi, anche dello stesso valore, occupano dimensioni di memoria diverse (quindi, per non sprecare gli 8 bit di ogni livello quando si definiscono i tipi di variabili nel programma, è necessario regolare la posizione dei tipi in modo che siano il più compatti possibile .utilizzando la memoria)
puntatore
Anche un puntatore è una variabile. Ciò che rappresenta non è il valore dei dati, ma l'indirizzo della memoria in cui sono archiviati i dati. Utilizzando un puntatore, è possibile leggere e scrivere dati a qualsiasi indirizzo specificato.
vettore
Memorizzato in indirizzi consecutivi in memoria. Utilizzare l'indice per indicare l'indirizzo di ciascun dato.
pile e code
Stack e code non utilizzano indici per accedere ai dati, ma possono dividere un'area di memoria sotto forma di array con un certo numero di elementi per implementare l'accesso interno.
Stack: il primo entrato, l'ultimo uscito
Coda: first in, first out (utilizzando un ring buffer, a cui è possibile accedere ripetutamente in una memoria di dimensione fissa)
lista collegata
Può essere più conveniente aggiungere, eliminare, modificare e controllare
Albero binario
Facile da cercare
Modi per risparmiare memoria
Condividi file DLL per ridurre l'archiviazione duplicata delle funzioni
Riduci le dimensioni del file di programma chiamando _stdcall
5. Disco
I programmi archiviati su disco devono essere caricati in memoria prima di poter essere eseguiti. La CPU, che è responsabile dell'analisi e dell'esecuzione del contenuto del programma, deve specificare l'indirizzo di memoria tramite il contatore del programma interno prima di poter leggere il programma.
La memorizzazione nella cache del disco accelera l'accesso al disco
Memoria virtuale: in realtà è spazio su disco, ma questo spazio è diviso in più pagine e il contenuto delle pagine viene letto continuamente nella memoria quando è richiesta l'esecuzione.
I computer generalmente dividono i dischi in settori e li memorizzano in cluster. Non importa quanto piccolo sia un file, deve occupare esclusivamente un cluster.
6. Comprimi i dati
I file vengono archiviati in byte
Algoritmo di compressione RLE
Sono previste delle restrizioni. Se la proporzione del contenuto ripetuto nel file non è elevata, il file si espanderà.
Algoritmo di Huffman
La chiave dell'algoritmo di Huffman è che "i dati che appaiono più volte possono essere rappresentati da un numero di byte inferiore a 8 bit, e i dati che vengono utilizzati raramente possono essere rappresentati da un numero di byte superiore a 8 bit".
Utilizzare un albero di Huffman per disporre i codici di ciascun carattere, con alta frequenza nel bit corto e bassa frequenza nel bit lungo, e ciascun codice viene utilizzato come nodo foglia dell'albero binario
Compressione reversibile e compressione non reversibile
7. Ambiente di esecuzione del programma
Ambiente operativo: sistema operativo e hardware del computer
Codice sorgente->Codice nativo->Esegui
Windows supera le differenze hardware diverse dalla CPU, consentendo a diversi modelli di essere compatibili con lo stesso programma
CPU diverse utilizzano linguaggi macchina diversi. Pertanto, quando lo stesso programma viene migrato su altre CPU, è necessario un compilatore di codice nativo specifico della CPU per ricompilarlo nel codice nativo corrispondente.
Utilizzare le macchine virtuali per ottenere altri ambienti del sistema operativo
Virtual PC per MAC può far sembrare l'hardware Macintosh un computer compatibile con AT, consentendo l'installazione di Windows sull'hardware.
Macchina virtuale Java
La macchina virtuale Java viene eseguita convertendo il codice byte Java uno per uno in codice nativo.
BIOS
Il BIOS è archiviato nella ROM ed è un programma preintegrato nell'host del computer
Oltre ai programmi di controllo di base come tastiera, disco e scheda grafica, il BIOS ha anche la funzione di avviare il "programma di avvio"
8. Dal file sorgente al file eseguibile
Il codice sorgente deve essere compilato in codice nativo per essere eseguito
L'essenza del codice nativo è una sequenza di valori esadecimali.
Il compilatore è responsabile della traduzione del codice sorgente in codice nativo
Il file .c diventa un file .obj dopo essere stato compilato dal compilatore. In questo momento, il programma non può ancora essere eseguito.
Il connettore unisce più file di destinazione per generare un file EXE. Questo processo viene chiamato collegamento. Solo dopo aver immesso il comando link è possibile generare il file .exe.
I file di libreria vengono assemblati da più file di destinazione. Specificando un file di libreria durante il collegamento, il linker può estrarre da esso i file oggetto richiesti e collegarli ad altri file oggetto per generare un file EXE.
L'API di Windows è un'interfaccia dell'applicazione del programma
L'essenza dell'API è una funzione. Il file di destinazione dell'API è il file di libreria della libreria di collegamento dinamico (DLL) (in realtà non memorizza il file di destinazione, ma fornisce solo il collegamento al file di destinazione, che viene utilizzato per ottenerlo automaticamente. il file di destinazione quando il programma è in esecuzione)
Un file di libreria che contiene il file di destinazione stesso e può essere collegato direttamente al file EXE è chiamato libreria di collegamento statico.
Le variabili e le funzioni sono necessarie per eseguire un file eseguibile
Nel file EXE, gli indirizzi di memoria allocati alle variabili e alle funzioni sono virtuali Quando il programma viene eseguito, questi indirizzi di memoria virtuale verranno convertiti in indirizzi di memoria effettivi. Il linker registrerà varie posizioni che richiedono la conversione dell'indirizzo di memoria all'inizio del file EXE. Queste informazioni vengono chiamate informazioni di rilocazione.
Composizione dell'area in memoria: spazio variabile, spazio funzionale, spazio heap, spazio stack
Lo stack viene utilizzato per archiviare variabili locali in funzioni e parametri che devono essere passati.
Lo spazio dello stack viene generato o rilasciato automaticamente dal compilatore e non richiede operazioni manuali.
L'heap viene utilizzato per archiviare dati arbitrari
Lo spazio heap richiede l'allocazione e il rilascio manuali (malloc e gratuito) (nuovo ed eliminato)
9. Sistema operativo
Natura
È un programma di monitoraggio con la funzione di caricare ed eseguire programmi.
portabilità
I linguaggi di programmazione di alto livello utilizzano un linguaggio comune durante la modifica del codice sorgente, ma dopo aver compilato il codice nativo in diversi sistemi operativi, il programma richiama le funzioni di sistema all'interno del sistema.
Astrazione hardware
I sistemi operativi e i linguaggi di programmazione di alto livello astraggono l'hardware in modo che i programmatori non debbano più preoccuparsi delle chiamate di sistema e dell'hardware
Caratteristiche del sistema operativo Windows
Disponibile nelle versioni a 32 e 64 bit
Fornire chiamate di sistema tramite una serie di funzioni API
Utilizzando la GUI
Può stampare l'output in formato WYSIWYG
Fornire funzionalità multitasking
Fornire funzioni di rete e database
Installazione automatica dei driver del dispositivo tramite Plug and Play
10. Linguaggio Assembly e codice nativo
linguaggio assembly
Il linguaggio assembly utilizza i mnemonici, che sono istruzioni per il codice nativo
Il codice sorgente scritto in linguaggio assembly deve essere convertito in codice macchina nativo prima di poter essere eseguito.
Il programma che converte il linguaggio assembly in codice nativo è un assembler e il processo di conversione è chiamato assembly
Puoi anche convertire il linguaggio nativo in linguaggio assembly. Il processo di conversione è chiamato disassemblaggio.
Il compilatore del linguaggio C può anche convertire il codice sorgente del linguaggio C in codice sorgente del linguaggio assembly
Esistono due tipi di istruzioni nel linguaggio assembly
1. Istruzioni generali che verranno convertite in codice nativo
2. Pseudo-istruzioni specifiche per l'assemblatore
Le pseudo-istruzioni hanno il compito di comunicare all'assemblatore la struttura del programma e il metodo di assemblaggio, quindi sono anche chiamate istruzioni dell'assemblatore.
Nel linguaggio assembly, i commenti che iniziano con il segno # sono
grammatica
codice operativo
Indica l'azione del comando
operando
Indica l'operazione oggetto dell'istruzione
Durante l'esecuzione del programma, uno spazio nello stack verrà aperto nel registro. Le variabili della funzione chiamate utilizzeranno questo stack. Lo spazio nello stack verrà cancellato al termine del programma.
Funzioni di chiamata
Prendi i parametri dallo stack ed esegui l'operazione, memorizza il valore restituito nel registro eax, prendi l'indirizzo di destinazione del ritorno dallo stack e lascia che il processo ritorni
variabile
variabili globali
Dichiarata all'esterno della funzione, tutte le funzioni del programma possono accedervi
variabili locali
Dichiarato all'interno di una funzione, è possibile accedervi solo all'interno della funzione in cui è dichiarato.
ciclo
ramo condizionale
11. Accedi all'hardware
I programmi accedono all'hardware tramite il sistema operativo
Istruzioni di input e output
Controller I/O = porta
Memorizza temporaneamente i dati di input e output
Utilizzare il numero di porta per distinguere, ovvero l'indirizzo I/O
Finché il numero di porta è specificato nei comandi in e out, è possibile accedere al controller I/O e completare le operazioni di input e output.
Gestione delle interruzioni
Mettere in pausa il programma attualmente in esecuzione ed eseguire altri programmi
Il controller I/O emette una richiesta di interruzione e la CPU esegue l'elaborazione dell'interruzione. Il controller dell'interruzione viene utilizzato tra i due per passarla alla CPU per l'elaborazione a sua volta.
DMA
Un metodo di trasmissione dei dati tra dispositivi esterni e memoria direttamente senza essere trasferiti dalla CPU. Viene comunemente utilizzato in dispositivi come reti e dischi.
PIO
Il modo in cui i dati vengono trasferiti tra dispositivi esterni e memoria tramite la CPU è chiamato PIO
Visualizza caratteri e immagini
Memorizzare i dati nella memoria video e visualizzarli sul monitor
La scheda grafica dispone di memoria video indipendente e GPU del processore di immagini
12. Apprendimento automatico
concetto
I programmatori scrivono programmi solo per l'apprendimento. Il contenuto di questo programma è consentire al computer di leggere una grande quantità di dati, quindi apprendere le caratteristiche di questi dati e generare un modello di riconoscimento.
apprendimento supervisionato
L'apprendimento supervisionato consiste nel fornire al computer una grande quantità di dati con risposte corrette.
fare un passo
(1) Dividere i dati di apprendimento e i dati di risposta in dati di addestramento e dati di test
(2) Utilizzare algoritmi di apprendimento per apprendere i dati di addestramento e generare modelli
(3) Utilizzare i dati di test per valutare le prestazioni del modello
Algoritmi di apprendimento automatico
Supporta macchine vettoriali
attrezzo
Linguaggio Python
In Python sono fornite librerie contenenti varie funzioni correlate al machine learning
La modalità script utilizza l'interprete Python per interpretare ed eseguire il codice sorgente precompilato (modalità script)
Avvia direttamente l'interprete Python, inserisci il programma riga per riga tramite la tastiera e interpreta l'esecuzione della modalità interattiva (modalità interattiva) (l'apprendimento automatico utilizza questa modalità)
Convalida incrociata
La convalida incrociata è un metodo per eseguire l'apprendimento automatico che ruota continuamente i dati di training e test
Puoi verificare se il tasso di riconoscimento del modello di apprendimento è distorto a causa del tipo di dati di apprendimento.