Les principaux composants d'un système informatique comprennent le processeur, la mémoire principale, le disque et les périphériques d'E/S.
Les composants interagissent pour exécuter efficacement les programmes informatiques.
Les applications sont écrites dans des langages de haut niveau qui utilisent un programme pour traduire le langage en programmes de niveau machine que les ordinateurs comprennent.
Cette organisation des systèmes informatiques est globalement la même dans votre tablette ou smartphone que dans les systèmes gigantesques exécutant des services comme Facebook ou Google. Ils ne diffèrent que par la puissance de chaque pièce, le nombre de CPU, la taille de la mémoire et du disque, et ainsi de suite.
Les niveaux allant de la définition du problème au langage d'assemblage sont liés au domaine de l'informatique. Les personnes étudiant l'informatique explorent comment résoudre un problème à l'aide d'un algorithme, comment traduire cet algorithme en un langage de programmation, puis comment traduire ce langage de programmation en un langage que les ordinateurs peuvent comprendre.
Les processeurs informatiques opèrent à différents niveaux d'abstraction, allant du niveau de la logique numérique au niveau de la microarchitecture et au niveau du langage machine. Le niveau d'abstraction le plus élevé pour les programmes d'application est celui obtenu en écrivant des programmes dans un langage de haut niveau. L'utilisation d'un compilateur permet de générer une représentation de ces programmes à un niveau d'abstraction inférieur, connu sous le nom de langage d'assemblage. Cette représentation utilise des instructions qui font partie des architectures de jeu d'instructions (ISA) spécifiques à la famille de processeurs utilisée.
Le système d'exploitation (OS) est le seul logiciel capable d'accéder directement au matériel d'un ordinateur. Tous les autres programmes doivent interagir avec l'OS pour qu'il accomplisse une tâche spécifique de manière sécurisée en ordonnançant le processus correspondant. L'OS stocke les données et les programmes sur disque de manière organisée, en utilisant un système de fichiers, et alloue de la mémoire aux programmes.
Les futures conceptions d'ordinateurs appellent de nouvelles abstractions informatiques qui s'écarteront de la logique binaire traditionnelle. Par exemple, le calcul quantique utilise des qubits et le calcul neuromorphique utilise des neurones matériels.
Les éléments de données les plus fréquemment utilisés sont stockés à l'intérieur d'un ordinateur.
Un entier est un nombre qui n'a pas de virgule flottante ; 7 est un entier mais 3,14 ne l'est pas. Les entiers sont divisés en deux catégories : signés et non signés. Les entiers signés peuvent être positifs, négatifs ou 0. Les entiers non signés sont 0 ou positifs ; par conséquent, ils n'ont pas besoin de signe car ils ne seront jamais négatifs. C'est pourquoi nous les appelons non signés.
Les nombres réels, connus sous le nom de nombres à virgule flottante, sont les nombres qui représentent des fractions. Les entiers ne peuvent pas représenter des nombres comme 3,14 ou –1,25. C'est le rôle des nombres à virgule flottante.
Les caractères et symboles de votre clavier sont représentés à l'intérieur de l'ordinateur par des 1 et des 0. Chaque caractère a son propre code.
La plage de nombres qu'un nombre binaire de n bits peut représenter s'il est interprété comme un entier signé ou non signé vous est utile lorsque vous écrivez un programme, car si vous connaissez les valeurs qu'une variable de votre programme peut prendre, vous pouvez prendre une décision précise concernant le type de cette variable lorsque vous la déclarez.
Un processeur Intel x86-64 utilise une architecture d'ordinateur à jeu d'instructions complexe (CISC). Ce type d'architecture combine de nombreuses instructions simples en une seule instruction complexe. D'autres architectures de processeurs utilisent une architecture de jeu d'instructions réduit (RISC) basée sur des instructions plus simples. RISC V est une ISA RISC relativement nouvelle qui gagne en popularité par rapport au CISC. Toutes les nouvelles entreprises de haute technologie utilisent des jeux d'instructions RISC dans leur matériel. Par exemple, le langage d'assemblage ARM, qui est un langage d'assemblage RISC, est utilisé dans la plupart des appareils portables.
Le langage d'assemblage utilise des instructions de processeur qui font partie de l'architecture de jeu d'instructions (ISA) du processeur utilisé. Ces instructions peuvent être converties en code binaire, appelé code de langage machine, à l'aide d'un assembleur.
Le langage d'assemblage fournit des instructions spécifiques pour effectuer des opérations courantes telles que l'addition et la multiplication d'entiers signés et non signés.
Nous devons utiliser différentes technologies pour construire une mémoire quasi idéale car chaque technologie présente de bonnes caractéristiques et quelques lacunes. Par conséquent, nous utilisons plusieurs technologies pour tirer le meilleur parti de toutes. Divers types de mémoire, tels que la DRAM et la SRAM, sont disponibles et diffèrent par leur vitesse d'accès et les coûts associés.
Ces technologies sont organisées en hiérarchie. Les technologies rapides mais coûteuses se trouvent au sommet de la hiérarchie, mais leur capacité de stockage n'est pas grande. À mesure que nous descendons dans la hiérarchie, la technologie est plus lente mais moins chère ; par conséquent, nous en utilisons beaucoup pour le stockage.
Autrement dit, les caractéristiques de chaque technologie déterminent sa place dans la hiérarchie.
En prêtant attention à la localité lors de l'accès aux données, le programmeur peut obtenir les meilleures performances de la hiérarchie.