Galerie de cartes mentales Comment fonctionne le programme
Ce livre présente la composition des ordinateurs, du processeur, des opérations binaires, de la mémoire, des systèmes d'exploitation, de l'exécution des programmes, de l'assemblage, du contrôle du matériel, de l'apprentissage automatique, etc. aux informaticiens, permettant aux lecteurs d'avoir une compréhension approfondie de la façon dont les programmes passent par diverses étapes. processus à partir de fichiers sources. Running in Your Computer est un livre scientifique de vulgarisation incontournable pour les passionnés d’informatique et les praticiens.
Modifié à 2024-01-18 19:32:06Cent ans de solitude est le chef-d'œuvre de Gabriel Garcia Marquez. La lecture de ce livre commence par l'analyse des relations entre les personnages, qui se concentre sur la famille Buendía et raconte l'histoire de la prospérité et du déclin de la famille, de ses relations internes et de ses luttes politiques, de son métissage et de sa renaissance au cours d'une centaine d'années.
Cent ans de solitude est le chef-d'œuvre de Gabriel Garcia Marquez. La lecture de ce livre commence par l'analyse des relations entre les personnages, qui se concentre sur la famille Buendía et raconte l'histoire de la prospérité et du déclin de la famille, de ses relations internes et de ses luttes politiques, de son métissage et de sa renaissance au cours d'une centaine d'années.
La gestion de projet est le processus qui consiste à appliquer des connaissances, des compétences, des outils et des méthodologies spécialisés aux activités du projet afin que celui-ci puisse atteindre ou dépasser les exigences et les attentes fixées dans le cadre de ressources limitées. Ce diagramme fournit une vue d'ensemble des 8 composantes du processus de gestion de projet et peut être utilisé comme modèle générique.
Cent ans de solitude est le chef-d'œuvre de Gabriel Garcia Marquez. La lecture de ce livre commence par l'analyse des relations entre les personnages, qui se concentre sur la famille Buendía et raconte l'histoire de la prospérité et du déclin de la famille, de ses relations internes et de ses luttes politiques, de son métissage et de sa renaissance au cours d'une centaine d'années.
Cent ans de solitude est le chef-d'œuvre de Gabriel Garcia Marquez. La lecture de ce livre commence par l'analyse des relations entre les personnages, qui se concentre sur la famille Buendía et raconte l'histoire de la prospérité et du déclin de la famille, de ses relations internes et de ses luttes politiques, de son métissage et de sa renaissance au cours d'une centaine d'années.
La gestion de projet est le processus qui consiste à appliquer des connaissances, des compétences, des outils et des méthodologies spécialisés aux activités du projet afin que celui-ci puisse atteindre ou dépasser les exigences et les attentes fixées dans le cadre de ressources limitées. Ce diagramme fournit une vue d'ensemble des 8 composantes du processus de gestion de projet et peut être utilisé comme modèle générique.
Comment se déroule le programme ?
1. Processeur du programme : CPU
Il se compose de quatre parties : registre, contrôleur, unité arithmétique et horloge. Utilisez les signaux actuels pour vous connecter.
Registre : stockage temporaire des données et des instructions
Contrôleur : Contrôler la lecture des données et des instructions dans le registre
Horloge : chronométrage du programme
Opérateur : opère sur les données lues dans le registre
Le CPU est une collection de divers registres fonctionnels
Les registres ne peuvent gérer que le langage machine
Le langage machine est compilé à partir d'un langage de programmation de haut niveau
Registre 1 : Compteur de programme
Déterminer l'exécution du programme en exécutant des instructions d'adresse
Registre 2 : Registre des drapeaux
Enregistrer les résultats de l'opération (positif, négatif, zéro, débordement, parité)
appel de fonction
Ceci est réalisé en réglant la valeur du compteur de programme sur l'adresse de stockage de la fonction.
Utilisez la pile pour obtenir l'adresse d'appel et l'adresse de retour
Stockage en baie
Utilisez le registre de base pour stocker le contenu du tableau et le registre d'index pour stocker l'index du tableau.
2. Les données sont représentées en binaire
Pourquoi la représentation binaire est utilisée : à l'intérieur de l'ordinateur, des diodes sont utilisées pour représenter deux situations : la réussite ou l'échec.
La plus petite unité binaire est le bit, qui représente le nombre de bits dans un nombre binaire.
L'unité de base du binaire est l'octet, un octet fait 8 bits
Calculs binaires
Méthode de conversion entre binaire et décimal : Additionner les résultats des puissances des bits binaires pour obtenir le nombre décimal
Le fonctionnement des nombres décimaux dans l'ordinateur est toujours converti en nombres binaires pour le calcul : par exemple, décaler le nombre binaire vers la gauche d'une position équivaut à multiplier le nombre par 2.
La soustraction à l'intérieur de l'ordinateur est implémentée en utilisant l'addition, ici nous utilisons "complément"
Le bit le plus élevé du binaire est le bit de signe, 1 représente un nombre négatif, 0 représente un nombre positif
Lorsque vous représentez des nombres négatifs, vous devez utiliser « complément » pour calculer
Pour trouver un nombre négatif, utilisez d’abord un nombre binaire à 8 chiffres pour représenter le nombre positif, puis inversez les nombres sur tous les chiffres, puis ajoutez 1 au résultat.
Lors du calcul de l'addition, si le bit le plus élevé dépasse la plage de calcul, il débordera et la valeur de dépassement sera automatiquement rejetée par l'ordinateur.
Les types non signés sont des nombres binaires qui sont tous des nombres positifs. Le type signé supprime le bit le plus élevé pour représenter le signe, ne laissant que n-1 bits, donc les valeurs positives et négatives représentent la moitié.
La différence entre le décalage logique vers la droite et le décalage arithmétique vers la droite
Décalage logique vers la droite : cela équivaut à déplacer l'image vers la droite, en remplissant directement la position vacante à gauche avec 0
Décalage arithmétique à droite : les chiffres binaires sont déplacés dans leur ensemble vers la droite et les positions vacantes sont remplies par 0 ou 1
Si la valeur est une valeur négative représentée par son complément, alors en décalant vers la droite et en ajoutant 1 au bit vacant le plus élevé, des opérations numériques telles que 1/2, 1/4, 1/8, etc. peuvent être correctement implémentées. S'il s'agit d'un nombre positif, ajoutez simplement 0 au bit le plus élevé.
Les nombres binaires sont convertis en nombres hexadécimaux et la longueur peut être réduite à 1/4 de l'original, ce qui est plus concis et clair
Tout ce qui commence par 0x représente la valeur hexadécimale.
3. Nombres à virgule flottante
Lorsque vous utilisez le binaire pour représenter un nombre décimal, il est impossible d’obtenir une représentation précise et vous ne pouvez créer un diviseur qu’avec une certaine précision.
La représentation des nombres à virgule flottante est la norme IEEE
Nombre à virgule flottante simple précision (32 bits)
Signe partie 1, exposant partie 8, mantisse partie 23
Nombre à virgule flottante double précision (64 bits)
Signe partie 1, exposant partie 11, mantisse partie 52
Méthode d'expression : expression régulière
Système EXCÈS
Le système EXCESS se comporte de telle manière que les nombres négatifs n'ont pas besoin d'être représentés par un signe en définissant la valeur médiane de la plage représentée par la partie exposant sur 0.
4.Mémoire
Les données peuvent être lues à partir de la mémoire et les informations de mise hors tension disparaissent.
Il y a 8 broches de signal de données, elles peuvent donc représenter 8 bits et 1 octet
Il y a 10 broches de signal d'adresse, qui peuvent représenter 1024 signaux, soit 1K
Différents types de données, même la même valeur, occupent différentes tailles de mémoire (ainsi lors de la définition des types de variables dans le programme, afin de ne pas gaspiller les 8 bits de chaque couche, vous devez ajuster la position des types pour qu'ils soient aussi compacts que possible .en utilisant la mémoire)
aiguille
Un pointeur est également une variable. Ce qu'il représente n'est pas la valeur des données, mais l'adresse de la mémoire où les données sont stockées. En utilisant un pointeur, vous pouvez lire et écrire des données à n'importe quelle adresse spécifiée.
tableau
Stocké à des adresses consécutives en mémoire. Utilisez index pour indiquer l’adresse de chaque donnée.
piles et files d'attente
Les piles et les files d'attente n'utilisent pas d'index pour accéder aux données, mais elles peuvent diviser une zone mémoire sous la forme d'un tableau avec un certain nombre d'éléments pour mettre en œuvre un accès interne.
Pile : premier entré, dernier sorti
File d'attente : premier entré, premier sorti (en utilisant un tampon en anneau, accessible à plusieurs reprises dans une mémoire de taille fixe)
liste chaînée
Il peut être plus pratique d'ajouter, de supprimer, de modifier et de vérifier
Arbre binaire
Recherche facile
Façons d'économiser de la mémoire
Partagez des fichiers DLL pour réduire le stockage en double des fonctions
Réduisez la taille du fichier du programme en appelant _stdcall
5. Disque
Les programmes stockés sur le disque doivent être chargés en mémoire avant de pouvoir être exécutés. Le processeur, qui est responsable de l'analyse et de l'exécution du contenu du programme, doit spécifier l'adresse mémoire via le compteur de programme interne avant de pouvoir lire le programme.
La mise en cache disque accélère l'accès au disque
Mémoire virtuelle : il s'agit en fait d'espace disque, mais cet espace est divisé en plusieurs pages, et le contenu des pages est continuellement lu dans la mémoire lorsqu'une exécution est requise.
Les ordinateurs divisent généralement les disques en secteurs et les stockent en clusters. Quelle que soit la taille d'un fichier, il doit occuper exclusivement un cluster.
6. Compresser les données
Les fichiers sont stockés en octets
Algorithme de compression RLE
Il existe des restrictions. Si la proportion de contenu répété dans le fichier n'est pas importante, le fichier se développera.
Algorithme de Huffman
La clé de l'algorithme de Huffman est que « les données qui apparaissent plusieurs fois peuvent être représentées par un nombre d'octets inférieur à 8 bits, et les données rarement utilisées peuvent être représentées par un nombre d'octets supérieur à 8 bits ».
Utilisez un arbre de Huffman pour organiser les codes de chaque caractère, avec une fréquence élevée dans le bit court et une fréquence basse dans le bit long, et chaque code est utilisé comme nœud feuille de l'arbre binaire.
Compression réversible et compression non réversible
7. Environnement d'exécution du programme
Environnement d'exploitation : système d'exploitation et matériel informatique
Code source->Code natif->Exécuter
Windows surmonte les différences matérielles autres que le processeur, permettant à différents modèles d'être compatibles avec le même programme
Différents processeurs utilisent différents langages machine. Par conséquent, lorsque le même programme est migré vers d'autres processeurs, il nécessite un compilateur de code natif spécifique au processeur pour le recompiler dans le code natif correspondant.
Utiliser des machines virtuelles pour obtenir d'autres environnements de système d'exploitation
Virtual PC pour MAC peut rendre le matériel Macintosh identique à celui d'un ordinateur compatible AT, de sorte que Windows puisse être installé sur le matériel
Machine virtuelle Java
La machine virtuelle Java s'exécute tout en convertissant le byte code Java un par un en code natif.
BIOS
Le BIOS est stocké dans la ROM et est un programme pré-intégré à l'ordinateur hôte
En plus des programmes de contrôle de base tels que le clavier, le disque et la carte graphique, le BIOS a également pour fonction de démarrer le « programme de démarrage »
8. Du fichier source au fichier exécutable
Le code source doit être compilé en code natif pour être exécuté
L'essence du code natif est une séquence de valeurs hexadécimales
Le compilateur est responsable de la traduction du code source en code natif
Le fichier .c devient un fichier .obj après avoir été compilé par le compilateur. À ce stade, le programme ne peut toujours pas s'exécuter.
Le connecteur fusionne plusieurs fichiers cibles pour générer un fichier EXE. Ce processus est appelé liaison. Ce n'est qu'après avoir entré la commande de lien que le fichier .exe peut être généré.
Les fichiers de bibliothèque sont regroupés à partir de plusieurs fichiers cibles. En spécifiant un fichier de bibliothèque lors de la liaison, l'éditeur de liens peut en extraire les fichiers objet requis et les lier avec d'autres fichiers objet pour générer un fichier EXE.
L'API Windows est une interface d'application de programme
L'essence de l'API est une fonction. Le fichier cible de l'API est le fichier de bibliothèque de liens dynamiques (DLL) (il ne stocke pas réellement le fichier cible, mais fournit uniquement le lien vers le fichier cible, qui est utilisé pour obtenir automatiquement le fichier cible lorsque le programme est en cours d'exécution)
Un fichier de bibliothèque qui contient le fichier cible lui-même et peut être directement lié au fichier EXE est appelé bibliothèque de liens statiques.
Des variables et des fonctions sont requises pour exécuter un fichier exécutable
Dans le fichier EXE, les adresses mémoire allouées aux variables et fonctions sont virtuelles. Lors de l'exécution du programme, ces adresses mémoire virtuelles seront converties en adresses mémoire réelles. L'éditeur de liens enregistrera divers emplacements nécessitant une traduction d'adresse mémoire au début du fichier EXE. Ces informations sont appelées informations de relocalisation.
Composition des zones en mémoire : espace variable, espace des fonctions, espace du tas, espace de la pile
La pile est utilisée pour stocker des variables locales dans des fonctions et des paramètres qui doivent être transmis.
L'espace de pile est automatiquement généré ou libéré par le compilateur et ne nécessite aucune opération manuelle.
Le tas est utilisé pour stocker des données arbitraires
L'espace de tas nécessite une allocation et une libération manuelles (malloc et free) (nouveau et supprimé)
9. Système d'exploitation
Nature
Il s'agit d'un programme de surveillance avec la fonction de charger et d'exécuter des programmes.
portabilité
Les langages de programmation de haut niveau utilisent un langage commun lors de l'édition du code source, mais après avoir compilé le code natif dans différents systèmes d'exploitation, le programme appelle les fonctions système au sein du système.
Abstraction matérielle
Les systèmes d'exploitation et les langages de programmation de haut niveau font abstraction du matériel afin que les programmeurs n'aient plus à se soucier des appels système et du matériel.
Caractéristiques du système d'exploitation Windows
Disponible en versions 32 bits et 64 bits
Fournir des appels système via un ensemble de fonctions API
Utilisation de l'interface graphique
Possibilité d'imprimer la sortie au format WYSIWYG
Fournir des capacités multitâches
Fournir des fonctions de réseau et de base de données
Installation automatique du pilote de périphérique via Plug and Play
10. Langue d'assemblage et code natif
Langage d'assemblage
Le langage assembleur utilise des mnémoniques, qui sont des instructions pour le code natif
Le code source écrit en langage assembleur doit être converti en code machine natif avant de pouvoir être exécuté.
Le programme qui convertit le langage assembleur en code natif est un assembleur et le processus de conversion est appelé assembleur.
Vous pouvez également convertir le langage natif en langage assembleur. Le processus de conversion est appelé désassemblage.
Le compilateur du langage C peut également convertir le code source du langage C en code source du langage assembleur.
Il existe deux types d'instructions en langage assembleur
1. Instructions générales qui seront converties en code natif
2. Pseudo-instructions spécifiques à l'assembleur
Les pseudo-instructions sont chargées d'indiquer à l'assembleur la structure du programme et la méthode d'assemblage, elles sont donc également appelées instructions assembleur.
En langage assembleur, les commentaires commençant par le signe # sont
grammaire
code opération
Indique l'action de la commande
opérande
Indique l'objet opération de l'instruction
Lors de l'exécution du programme, un espace de pile sera ouvert dans le registre. Les variables de fonction appelées utiliseront cette pile. L'espace de pile sera vidé une fois le programme terminé.
Fonctions d'appel
Prenez les paramètres de la pile et effectuez l'opération, stockez la valeur de retour dans le registre eax, prenez l'adresse cible de retour de la pile et laissez le processus revenir
variable
variables globales
Déclaré en dehors de la fonction, toutes les fonctions du programme peuvent y accéder
variables locales
Déclaré à l'intérieur d'une fonction, il n'est accessible qu'à l'intérieur de la fonction dans laquelle il est déclaré.
faire du vélo
branche conditionnelle
11. Accéder au matériel
Les programmes accèdent au matériel via le système d'exploitation
Instructions d'entrée et de sortie
Contrôleur d'E/S = port
Stocker temporairement les données d'entrée et de sortie
Utilisez le numéro de port pour distinguer, c'est-à-dire l'adresse d'E/S
Tant que le numéro de port est spécifié dans la commande in et out, vous pouvez accéder au contrôleur d'E/S et effectuer les opérations d'entrée et de sortie.
Gestion des interruptions
Suspendre le programme en cours d'exécution et exécuter d'autres programmes
Le contrôleur d'E/S émet une demande d'interruption et la CPU exécute le traitement d'interruption. Le contrôleur d'interruption est utilisé entre les deux pour la transmettre à la CPU pour le traitement à son tour.
DMLA
Méthode de transmission de données entre des périphériques externes et la mémoire directement sans être transférées par le processeur. Elle est couramment utilisée dans des périphériques tels que les réseaux et les disques.
PIO
La manière dont les données sont transférées entre les périphériques externes et la mémoire via le processeur est appelée PIO.
Afficher des personnages et des images
Stockez les données dans la mémoire vidéo et affichez-les sur le moniteur
La carte graphique dispose d'une mémoire vidéo indépendante et d'un processeur d'image GPU
12. Apprentissage automatique
concept
Les programmeurs écrivent uniquement des programmes pour apprendre. Le contenu de ce programme est de permettre à l'ordinateur de lire une grande quantité de données, puis d'apprendre les caractéristiques de ces données et de générer un modèle de reconnaissance.
enseignement supervisé
L’apprentissage supervisé consiste à fournir à l’ordinateur une grande quantité de données avec des réponses correctes.
étape
(1) Divisez les données d'apprentissage et les données de réponse en données de formation et données de test
(2) Utiliser des algorithmes d'apprentissage pour apprendre les données de formation et générer des modèles
(3) Utiliser les données de test pour évaluer les performances du modèle
Algorithmes d'apprentissage automatique
Machines à vecteurs de support
outil
Langage Python
Des bibliothèques contenant diverses fonctions liées à l'apprentissage automatique sont fournies en Python
Le mode script utilise l'interpréteur Python pour interpréter et exécuter le code source pré-écrit (mode script)
Démarrez directement l'interpréteur Python, saisissez le programme ligne par ligne via le clavier et interprétez l'exécution du mode interactif (mode interactif) (l'apprentissage automatique utilise ce mode)
Validation croisée
La validation croisée est une méthode d'apprentissage automatique qui alterne continuellement les données d'entraînement et de test.
Vous pouvez vérifier si le taux de reconnaissance du modèle d'apprentissage est biaisé en raison du type de données d'apprentissage.