{"product_id":"138573","title":"Les secrets du dessous de l'ordinateur ","description":"\u003ccenter\u003e\u003cdiv style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/tmgdisk01.cafe24.com\/images\/vs\/4172\/sv\/3jXPCfGMKIkpHY8ynfFIDt72eqkJRR.png?v=1765064648\" style=\"max-width:100%;max-height:10px\"\u003e\u003c\/div\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\n\n\u003cdiv style=\"width:95%\"\u003e\n\n\u003cdiv style=\"text-align:center;font-size:30px;font-weight:bolder;line-height:1.6em\"\u003e Les secrets du dessous de l'ordinateur \u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"border-bottom:1px;border-bottom-style:dotted;border-color:;padding-bottom:20px\"\u003e\u003ccenter\u003e\u003ctable align=\"center\" width=\"100%\"\u003e\u003ctbody style=\"border:0px\"\u003e\n\n\u003ctr\u003e\u003ctd align=\"center\" style=\"line-height:1.2em;text-align:center;font-size:18px;color:black;font-weight:bold;padding-bottom:20px;\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\u003ctr\u003e\u003ctd style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/image.yes24.com\/goods\/125299750\/XL\" style=\"max-width:100%;height:auto\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/center\u003e\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;{split_style6}padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e Description \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;word-break:break-all;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eIntroduction au livre\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\u003cdiv\u003e \u003cb\u003eQue se passe-t-il à l'intérieur de votre ordinateur lorsque vous exécutez le code ?\u003cbr\u003e Du système d'exploitation au processeur, en passant par la synchronisation et les principes de mise en œuvre des entrées\/sorties,\u003cbr\u003e Découvrons ensemble les secrets qui se cachent sous le capot de votre ordinateur et qui vont modifier votre code !\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Nous avons tous probablement déjà fait l'expérience de nous demander : « Hein ? Pourquoi ce code ne fonctionne-t-il pas ? »\u003cbr\u003e Même si votre code s'exécute correctement, vous ne savez souvent pas comment il fonctionne, ce qui se passe en interne lorsque votre ordinateur l'exécute, pourquoi divers problèmes surviennent et comment les optimiser. \u003cbr\u003eCe livre s'adresse aux développeurs qui ne se contentent pas de quelques lignes de code s'exécutant sans erreur, mais qui réfléchissent plutôt à ce qui se passe à l'intérieur et à son impact sur le code.\u003cbr\u003e\u003cbr\u003e Ce livre examine la structure d'un système informatique, qui est abstraite couche par couche, une à une.\u003cbr\u003e En commençant par les langages de programmation et les compilateurs, nous examinerons les systèmes d'exploitation et les processus, les threads et les coroutines, la synchronisation, la mémoire et les principes de mise en œuvre des processeurs, des caches et des entrées\/sorties.\u003cbr\u003e Le fonctionnement interne d'un système informatique, qui peut sembler difficile à comprendre, est expliqué à l'aide de diverses métaphores du quotidien et de plus de 300 illustrations, ce qui le rend relativement accessible.\u003cbr\u003e Les développeurs débutants peuvent apprendre les bases de l'informatique de manière systématique et facile, et les développeurs expérimentés peuvent trouver de nouvelles idées tout en organisant leurs connaissances existantes.\u003cbr\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cul\u003e  \u003cli\u003eVous pouvez consulter un aperçu du contenu du livre.\u003cbr\u003e \u003cspan\u003eAperçu\u003c\/span\u003e\n\n\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/div\u003e\n\u003c\/div\u003e \",\"\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eindice\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e \u003cb\u003eChapitre 1 : Du langage de programmation à l'exécution du programme : voici comment cela se passe.\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 1.1 Et si vous inventiez un langage de programmation ?\u003cbr\u003e __1.1.1 Genèse : Le processeur est un idiot intelligent\u003cbr\u003e __1.1.2 Le langage assembleur apparaît\u003cbr\u003e 1.1.3 Détails des couches de bas niveau vs abstractions des couches de haut niveau\u003cbr\u003e __1.1.4 Règles complètes : Le début d’un langage de programmation de haut niveau\u003cbr\u003e __1.1.5 Inception et récursivité : l’essence du code\u003cbr\u003e __1.1.6 Faire comprendre la récursivité aux ordinateurs\u003cbr\u003e __1.1.7 Excellent traducteur : Compilateur\u003cbr\u003e __1.1.8 La naissance des langues interprétées\u003cbr\u003e 1.2 Comment fonctionne un compilateur ?\u003cbr\u003e __1.2.1 Le compilateur est un programme normal, rien de spécial.\u003cbr\u003e __1.2.2 Extraction de chaque jeton\u003cbr\u003e 1.2.3 Ce que le jeton tente d'exprimer\u003cbr\u003e __1.2.4 Existe-t-il des anomalies dans l'arbre syntaxique généré ?\u003cbr\u003e 1.2.5 Génération de code intermédiaire à partir d'arbres syntaxiques  \u003cbr\u003e__1.2.6 Génération de code\u003cbr\u003e 1.3 Le secret inavouable du Linker\u003cbr\u003e __1.3.1 Voici comment fonctionne l'éditeur de liens\u003cbr\u003e 1.3.2 Interprétation des symboles : Offre et demande\u003cbr\u003e __1.3.3 Bibliothèques statiques, bibliothèques dynamiques et exécutables\u003cbr\u003e 1.3.4 Avantages et inconvénients des bibliothèques dynamiques\u003cbr\u003e 1.3.5 Relocalisation : Détermination de l'adresse d'un symbole au moment de l'exécution\u003cbr\u003e 1.3.6 Structure de la mémoire virtuelle et de la mémoire programme\u003cbr\u003e 1.4 Pourquoi l'abstraction est importante en informatique\u003cbr\u003e __1.4.1 Programmation et abstraction\u003cbr\u003e __1.4.2 Conception et abstraction du système\u003cbr\u003e 1.5 Résumé\u003cbr\u003e\u003cbr\u003e \u003cb\u003eChapitre 2 Le programme s'est exécuté, mais je ne sais pas ce qui se passe.\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 2.1 Comprendre les principes fondamentaux des systèmes d'exploitation, des processus et des threads\u003cbr\u003e 2.1.1 Tout commence avec le processeur\u003cbr\u003e 2.1.2 Du processeur au système d'exploitation\u003cbr\u003e __2.1.3 Le processus est très bon, mais reste néanmoins peu pratique.\u003cbr\u003e __2.1.4 Évolution des processus vers les threads\u003cbr\u003e __2.1.5 Multithreading et structure de la mémoire\u003cbr\u003e __2.1.6 Exemple d'utilisation des threads\u003cbr\u003e __2.1.7 Fonctionnement du pool de threads\u003cbr\u003e __2.1.8 Nombre de threads dans le pool de threads  \u003cbr\u003e2.2 Ressources de processus partagées entre les threads\u003cbr\u003e __2.2.1 Ressources réservées aux threads\u003cbr\u003e __2.2.2 Zone de code : Toutes les fonctions peuvent être placées dans des threads et exécutées.\u003cbr\u003e __2.2.3 Zone de données : Tous les threads peuvent accéder aux variables de la zone de données.\u003cbr\u003e __2.2.4 Zone du tas : les pointeurs sont essentiels\u003cbr\u003e __2.2.5 Zone de pile : Données privées au sein d’un espace partagé\u003cbr\u003e __2.2.6 Bibliothèques de liens dynamiques et fichiers\u003cbr\u003e __2.2.7 Stockage réservé aux threads\u003cbr\u003e 2.3 Comment dois-je écrire exactement du code thread-safe ?\u003cbr\u003e __2.3.1 Liberté et contraintes\u003cbr\u003e __2.3.2 Qu'est-ce que la sécurité des fils ?\u003cbr\u003e __2.3.3 Ressources spécifiques au thread et partagées\u003cbr\u003e __2.3.4 Utiliser uniquement les ressources spécifiques au thread\u003cbr\u003e __2.3.5 Ressources spécifiques au thread et paramètres de fonction\u003cbr\u003e __2.3.6 Utilisation des variables globales\u003cbr\u003e __2.3.7 Stockage réservé aux threads\u003cbr\u003e __2.3.8 Valeurs de retour de la fonction\u003cbr\u003e __2.3.9 Appel de code non thread-safe\u003cbr\u003e __2.3.10 Comment implémenter du code thread-safe ?  \u003cbr\u003e2.4 Comment les programmeurs doivent-ils comprendre les coroutines ?\u003cbr\u003e __2.4.1 Fonctions générales\u003cbr\u003e __2.4.2 Des fonctions régulières aux coroutines\u003cbr\u003e __2.4.3 Explication intuitive des coroutines\u003cbr\u003e __2.4.4 Les fonctions ne sont qu'un cas particulier de coroutines\u003cbr\u003e __2.4.5 Historique des coroutines\u003cbr\u003e __2.4.6 Comment les coroutines sont-elles implémentées ?\u003cbr\u003e 2.5 Comprendre parfaitement les fonctions de rappel\u003cbr\u003e __2.5.1 Tout commence par l'exigence suivante :\u003cbr\u003e 2.5.2 Pourquoi les rappels sont nécessaires\u003cbr\u003e __2.5.3 Rappels asynchrones\u003cbr\u003e __2.5.4 Les rappels asynchrones ouvrent la voie à une nouvelle approche de la programmation\u003cbr\u003e __2.5.5 Définition de la fonction de rappel\u003cbr\u003e __2.5.6 Deux types de rappel\u003cbr\u003e __2.5.7 Le problème des rappels asynchrones : l’enfer des rappels\u003cbr\u003e 2.6 Comprendre parfaitement les concepts synchrones et asynchrones\u003cbr\u003e __2.6.1 Programmeur travailleur\u003cbr\u003e __2.6.2 Passer des appels téléphoniques et envoyer des courriels\u003cbr\u003e __2.6.3 Appel synchrone\u003cbr\u003e __2.6.4 Appels asynchrones\u003cbr\u003e __2.6.5 Opérations synchrones et asynchrones sur les serveurs Web\u003cbr\u003e 2.7 Ah oui ! Il existe des modes bloquants et non bloquants.\u003cbr\u003e __2.7.1 Blocage et non-blocage  \u003cbr\u003e2.7.2 Le problème fondamental du blocage : E\/S\u003cbr\u003e 2.7.3 E\/S non bloquantes et asynchrones\u003cbr\u003e 2.7.4 Analogie avec la commande d'une pizza\u003cbr\u003e __2.7.5 Motivation et blocage\u003cbr\u003e __2.7.6 Asynchrone et non bloquant\u003cbr\u003e 2.8 Mise en œuvre d'un serveur à haute concurrence et hautes performances\u003cbr\u003e __2.8.1 Multitraitement\u003cbr\u003e __2.8.2 Multithreading\u003cbr\u003e __2.8.3 Bouclage d'événements et pilotage par événements\u003cbr\u003e __2.8.4 Premier problème : Sources d’événements et multiplexage des E\/S\u003cbr\u003e __2.8.5 Deuxième problème : Boucles d’événements et multithreading\u003cbr\u003e __2.8.6 Fonctionnement d'un café : le modèle du répondant\u003cbr\u003e __2.8.7 Cycle d'événements et entrées\/sorties\u003cbr\u003e __2.8.8 Fonctions asynchrones et de rappel\u003cbr\u003e __2.8.9 Coroutines : Programmation asynchrone avec des méthodes synchrones\u003cbr\u003e __2.8.10 Processeur, Threads, Coroutines\u003cbr\u003e 2.9 Parcours d'un système informatique : des données, du code, des rappels et des fermetures aux conteneurs et aux machines virtuelles\u003cbr\u003e __2.9.1 Code, données, variables, pointeurs\u003cbr\u003e __2.9.2 Fonctions de rappel et fermetures\u003cbr\u003e __2.9.3 Technologie des conteneurs et des machines virtuelles\u003cbr\u003e 2.10 Résumé\u003cbr\u003e \u003cbr\u003e\u003cb\u003eChapitre 3 : Hiérarchies de bas niveau ? Commençons par le casier appelé mémoire.\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 3.1 La nature de la mémoire, des pointeurs et des références\u003cbr\u003e __3.1.1 Quelle est la nature de la mémoire ? Casiers, bits, octets et objets.\u003cbr\u003e 3.1.2 De la mémoire aux variables : que signifient les variables ?\u003cbr\u003e 3.1.3 Des variables aux pointeurs : Comprendre les pointeurs\u003cbr\u003e __3.1.4 Le pouvoir et la destruction des pointeurs : capacités et responsabilités\u003cbr\u003e 3.1.5 Du pointeur à la référence : masquage des adresses mémoire\u003cbr\u003e 3.2 À quoi ressemble un processus en mémoire ?\u003cbr\u003e 3.2.1 Mémoire virtuelle : ce que vous voyez n’est pas toujours ce que vous obtenez\u003cbr\u003e 3.2.2 Pages et tables de pages : du virtuel au réel\u003cbr\u003e 3.3 Zone de pile : Comment les appels de fonction sont-ils implémentés ?\u003cbr\u003e __3.3.1 Outils pour programmeurs : Fonctions\u003cbr\u003e 3.3.2 Suivi de l'activité d'appel de fonction : Pile\u003cbr\u003e 3.3.3 Cadres et zones de pile : une perspective macro\u003cbr\u003e __3.3.4 Comment les sauts et les retours de fonction sont-ils implémentés ?\u003cbr\u003e __3.3.5 Comment le passage des paramètres et les valeurs de retour sont-ils implémentés ?  \u003cbr\u003e__3.3.6 Où sont les variables locales ?\u003cbr\u003e __3.3.7 Sauvegarde et restauration des registres\u003cbr\u003e __3.3.8 Dressons un tableau d'ensemble, où en sommes-nous maintenant ?\u003cbr\u003e 3.4 Zone de tas : Comment l'allocation dynamique de mémoire est-elle implémentée ?\u003cbr\u003e 3.4.1 Pourquoi avons-nous besoin d'espace mémoire ?\u003cbr\u003e 3.4.2 Implémentation directe de l'allocateur de mémoire malloc\u003cbr\u003e 3.4.3 Du parking à la gestion de la mémoire\u003cbr\u003e 3.4.4 Gestion des fragments de mémoire libre\u003cbr\u003e 3.4.5 Suivi de l'état d'allocation de mémoire\u003cbr\u003e 3.4.6 Comment choisir une zone de mémoire libre : stratégie d’allocation\u003cbr\u003e 3.4.7 Allocation de mémoire\u003cbr\u003e 3.4.8 Libération de la mémoire\u003cbr\u003e 3.4.9 Fusion efficace des fragments de mémoire libre\u003cbr\u003e 3.5 Que se passe-t-il au niveau le plus bas lors de l'allocation de mémoire ?\u003cbr\u003e __3.5.1 État d'exécution du processeur Ciel, Terre et Humain\u003cbr\u003e 3.5.2 État du noyau et état de l'utilisateur\u003cbr\u003e __3.5.3 Portail : Appels système\u003cbr\u003e __3.5.4 Bibliothèque standard : Masquer les différences entre les systèmes\u003cbr\u003e 3.5.5 Lorsque la zone de tas est saturée en mémoire\u003cbr\u003e __3.5.6 Demande de mémoire au système d'exploitation : brk  \u003cbr\u003e__3.5.7 Sous l'iceberg : la mémoire virtuelle est le boss final\u003cbr\u003e 3.5.8 L'histoire complète de l'allocation de mémoire\u003cbr\u003e 3.6 Comment le pool de mémoire est-il implémenté pour les serveurs hautes performances ?\u003cbr\u003e 3.6.1 Pools de mémoire vs. allocateurs de mémoire à usage général\u003cbr\u003e 3.6.2 Principes de la technologie de pool de mémoire\u003cbr\u003e 3.6.3 Implémentation d'un pool de mémoire très simple\u003cbr\u003e 3.6.4 Implémentation d'un pool de mémoire légèrement plus complexe\u003cbr\u003e __3.6.5 Problèmes de sécurité des threads avec les pools de mémoire\u003cbr\u003e 3.7 Bogues courants liés à la mémoire\u003cbr\u003e 3.7.1 Retourner un pointeur vers une variable locale\u003cbr\u003e 3.7.2 Mauvaise compréhension de l'arithmétique des pointeurs\u003cbr\u003e __3.7.3 Déréférencement d'un pointeur problématique\u003cbr\u003e 3.7.4 Lecture de la mémoire non initialisée\u003cbr\u003e 3.7.5 Référencement d'une mémoire déjà libérée\u003cbr\u003e __3.7.6 Les indices des tableaux commencent à 0\u003cbr\u003e __3.7.7 Stack Overflow\u003cbr\u003e __3.7.8 Fuite de mémoire\u003cbr\u003e 3.8 Pourquoi les SSD ne peuvent-ils pas être utilisés comme mémoire ?\u003cbr\u003e 3.8.1 Différence entre la lecture\/écriture en mémoire et la lecture\/écriture sur disque\u003cbr\u003e __3.8.2 Limites de mémoire virtuelle\u003cbr\u003e __3.8.3 Problèmes liés à la durée de vie des SSD\u003cbr\u003e 3.9 Résumé\u003cbr\u003e \u003cbr\u003e\u003cb\u003eChapitre 4 : Des transistors aux processeurs : Rien n'est plus important que cela.\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 4.1 Ce petit jouet s'appelle un CPU.\u003cbr\u003e 4.1.1 Grande invention\u003cbr\u003e 4.1.2 Conjonction logique, conjonction logique et négation logique\u003cbr\u003e __4.1.3 Le Tao donne naissance à un, un donne naissance à deux, deux donne naissance à trois, et trois donne naissance à toutes choses.\u003cbr\u003e __4.1.4 D’où provient la puissance de calcul ?\u003cbr\u003e 4.1.5 Capacité de mémorisation exceptionnelle\u003cbr\u003e 4.1.6 La naissance des registres et de la mémoire\u003cbr\u003e 4.1.7 Matériel ou logiciel ? Appareils à usage général\u003cbr\u003e 4.1.8 Technologie matérielle de base : Instructions machine\u003cbr\u003e 4.1.9 Interface logiciel-matériel : Jeu de commandes\u003cbr\u003e 4.1.10 Les circuits nécessitent des conducteurs\u003cbr\u003e __4.1.11 Une grande réussite, le processeur est né !\u003cbr\u003e 4.2 Que fait le processeur lorsqu'il est inactif ?\u003cbr\u003e __4.2.1 Quel est le taux d'utilisation du processeur de votre ordinateur ?\u003cbr\u003e 4.2.2 Gestion et planification des processus\u003cbr\u003e 4.2.3 Vérification de l'état de la file d'attente : une meilleure conception\u003cbr\u003e 4.2.4 Tout retourne au processeur\u003cbr\u003e 4.2.5 Processus inactifs et états de faible consommation du processeur  \u003cbr\u003e__4.2.6 Rompre la boucle infinie : les interruptions\u003cbr\u003e 4.3 Comment le processeur reconnaît-il les nombres ?\u003cbr\u003e __4.3.1 Le nombre 0 et les entiers positifs\u003cbr\u003e __4.3.2 Entiers signés\u003cbr\u003e 4.3.3 Ajouter un signe moins à un nombre positif donne immédiatement le nombre négatif correspondant : représentation signe-magnitude\u003cbr\u003e 4.3.4 Inversion de la représentation signe-magnitude : complément à 1\u003cbr\u003e 4.3.5 Addition de deux nombres qui ne sont pas simples\u003cbr\u003e 4.3.6 Représentation conviviale pour ordinateur : le complément à deux\u003cbr\u003e __4.3.7 Le processeur connaît-il vraiment les chiffres ?\u003cbr\u003e 4.4 Lorsque le processeur rencontre une instruction if\u003cbr\u003e 4.4.1 La naissance de la technologie des pipelines\u003cbr\u003e __4.4.2 Processeur : Méga-usine et pipeline\u003cbr\u003e 4.4.3 Si le pipeline rencontre un pipeline\u003cbr\u003e 4.4.4 Prédiction de branchement : Faire en sorte que le processeur devine correctement autant que possible.\u003cbr\u003e 4.5 Quelle est la relation entre le nombre de cœurs du processeur et le nombre de threads ?\u003cbr\u003e __4.5.1 Recettes et code, sautés et fils de discussion\u003cbr\u003e 4.5.2 Partitionnement du travail et blocage des E\/S\u003cbr\u003e 4.5.3 Multicœur et multithreading\u003cbr\u003e 4.6 Évolution des processeurs (Partie 1) : La naissance des jeux d’instructions complexes\u003cbr\u003e __4.6.1 Le processeur vu par les programmeurs  \u003cbr\u003e4.6.2 Capacités du processeur : Jeu d’instructions\u003cbr\u003e 4.6.3 Abstraction : Moins, c'est plus\u003cbr\u003e 4.6.4 Le code occupe également de l'espace de stockage\u003cbr\u003e 4.6.5 La naissance d'un jeu d'instructions complexe inévitable\u003cbr\u003e 4.6.6 Problèmes liés à la conception du microcode\u003cbr\u003e 4.7 Évolution des processeurs (2e partie) : La naissance du jeu d’instructions réduit\u003cbr\u003e 4.7.1 De la complexité à la simplicité\u003cbr\u003e 4.7.2 Philosophie de l'ensemble de commandes réduit\u003cbr\u003e 4.7.3 Différence entre les jeux d'instructions complexes et réduits\u003cbr\u003e __4.7.4 Pipeline de commandes\u003cbr\u003e 4.7.5 Devenir mondialement connu\u003cbr\u003e 4.8 Évolution du processeur (Partie 2) : Contre-attaque en cas de crise\u003cbr\u003e 4.8.1 Si vous ne pouvez pas les battre, rejoignez-les : CISC, c'est la même chose que RISC\u003cbr\u003e __4.8.2 L'hyperthreading est une technique redoutable\u003cbr\u003e 4.8.3 Tirer parti des points forts et compenser les faiblesses : Intégrer CISC et RISC\u003cbr\u003e 4.8.4 La technologie ne fait pas tout : la guerre commerciale entre CISC et RISC\u003cbr\u003e 4.9 Maîtriser le processeur, la pile et les appels de fonction, les appels système, le changement de thread et la gestion des interruptions\u003cbr\u003e __4.9.1 Inscription\u003cbr\u003e __4.9.2 Pointeur de pile\u003cbr\u003e __4.9.3 Registre d'adresse d'instruction  \u003cbr\u003e__4.9.4 Registre d'état\u003cbr\u003e 4.9.5 Informations situationnelles\u003cbr\u003e __4.9.6 Imbrication et piles\u003cbr\u003e 4.9.7 Appels de fonctions et pile d'exécution\u003cbr\u003e __4.9.8 Appels système et pile d'état du noyau\u003cbr\u003e 4.9.9 Interruptions et pile de fonctions d'interruption\u003cbr\u003e __4.9.10 Changement de thread et pile d'état du noyau\u003cbr\u003e 4.10 Résumé\u003cbr\u003e\u003cbr\u003e \u003cb\u003eChapitre 5 : Obtenir de grands résultats avec de petites choses, l’argent\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 5.1 Cache, l'omniprésent\u003cbr\u003e 5.1.1 Différences de vitesse entre le processeur et la mémoire\u003cbr\u003e 5.1.2 Bibliothèque, Bureau, Cache\u003cbr\u003e 5.1.3 Rien n'est gratuit : actualisation du cache\u003cbr\u003e 5.1.4 Rien n'est gratuit : cohérence du cache multicœur\u003cbr\u003e 5.1.5 Utilisation de la mémoire comme cache disque\u003cbr\u003e __5.1.6 Mémoire virtuelle et disques\u003cbr\u003e __5.1.7 Comment le processeur lit-il la mémoire ?\u003cbr\u003e 5.1.8 Prise en charge du stockage distribué\u003cbr\u003e 5.2 Comment écrire des programmes compatibles avec le cache ?\u003cbr\u003e 5.2.1 Principe de localisation du programme\u003cbr\u003e __5.2.2 Utilisation des pools de mémoire\u003cbr\u003e __5.2.3 Relocalisation de la structure struct\u003cbr\u003e 5.2.4 Séparation des données chaudes et froides\u003cbr\u003e __5.2.5 Structures de données optimisées pour le cache  \u003cbr\u003e5.2.6 Parcours d'un tableau multidimensionnel\u003cbr\u003e 5.3 Inhibiteurs de performance multithread\u003cbr\u003e 5.3.1 L'unité de base de l'interaction entre le cache et la mémoire : la ligne de cache\u003cbr\u003e __5.3.2 Premier facteur de perte de performance : problèmes de rebond du cache\u003cbr\u003e 5.3.3 Deuxième facteur de dégradation des performances : le problème du faux partage\u003cbr\u003e 5.4 Le Bonghwaheejehu et la barrière de la mémoire\u003cbr\u003e 5.4.1 Exécution non séquentielle des instructions : Compilateurs et OoOE\u003cbr\u003e 5.4.2 Le cache doit également être pris en compte\u003cbr\u003e 5.4.3 Quatre types d'obstacles à la mémoire\u003cbr\u003e 5.4.4 Sémantique d'acquisition et de libération\u003cbr\u003e __5.4.5 Interfaces fournies par C++\u003cbr\u003e __5.4.6 Processeurs différents, natures différentes\u003cbr\u003e 5.4.7 Qui devrait se soucier du réordonnancement des instructions : Programmation sans verrouillage\u003cbr\u003e 5.4.8 Programmation avec et sans verrouillage\u003cbr\u003e __5.4.9 Débat sur la réorganisation des commandes\u003cbr\u003e 5.5 Résumé\u003cbr\u003e\u003cbr\u003e \u003cb\u003eChapitre 6 : Existe-t-il un ordinateur sans entrée\/sortie ?\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 6.1 Comment le processeur gère-t-il les opérations d'entrée\/sortie ?\u003cbr\u003e 6.1.1 Manipulation professionnelle : Instructions de la machine d’entrée\/sortie\u003cbr\u003e 6.1.2 Mappage mémoire entrée\/sortie  \u003cbr\u003e6.1.3 Nature du fonctionnement du processeur en lecture et en écriture du clavier\u003cbr\u003e 6.1.4 Sondage : Continuez à vérifier\u003cbr\u003e 6.1.5 Traitement des commandes et des annulations de livraison de repas\u003cbr\u003e 6.1.6 E\/S pilotées par interruption\u003cbr\u003e __6.1.7 Comment le processeur détecte-t-il les signaux d'interruption ?\u003cbr\u003e 6.1.8 Différence entre la gestion des interruptions et les appels de fonction\u003cbr\u003e 6.1.9 Sauvegarde et restauration de l'état d'exécution d'un programme suspendu\u003cbr\u003e 6.2 Que fait le processeur lorsque le disque gère les E\/S ?\u003cbr\u003e __6.2.1 Contrôleur de périphérique\u003cbr\u003e __6.2.2 Le processeur doit-il copier les données directement ?\u003cbr\u003e 6.2.3 Accès direct à la mémoire\u003cbr\u003e 6.2.4 Résumé de l'ensemble du processus\u003cbr\u003e 6.2.5 Implications pour les programmeurs\u003cbr\u003e 6.3 Que se passe-t-il pour un programme lorsqu'il lit un fichier ?\u003cbr\u003e 6.3.1 Entrées\/sorties du point de vue de la mémoire\u003cbr\u003e __6.3.2 Comment la fonction read lit-elle un fichier ?\u003cbr\u003e 6.4 Le secret d'une forte concurrence : le multiplexage des E\/S\u003cbr\u003e __6.4.1 Descripteur de fichier\u003cbr\u003e __6.4.2 Comment gérer efficacement plusieurs entrées et sorties ?\u003cbr\u003e 6.4.3 Me faire appeler à la place de l'autre personne  \u003cbr\u003e6.4.4 Multiplexage des entrées\/sorties\u003cbr\u003e 6.4.5 Les Trois Mousquetaires : sélectionner, sondage, sondage électronique\u003cbr\u003e 6.5 mmap : Traitement des fichiers par lecture et écriture en mémoire\u003cbr\u003e 6.5.1 Fichiers et mémoire virtuelle\u003cbr\u003e __6.5.2 Système d'exploitation Magician\u003cbr\u003e __6.5.3 mmap vs. fonctions de lecture\/écriture traditionnelles\u003cbr\u003e 6.5.4 Gestion des fichiers volumineux\u003cbr\u003e 6.5.5 Bibliothèques de liens dynamiques et mémoire partagée\u003cbr\u003e __6.5.6 Manipulation directe de mmap\u003cbr\u003e 6.6 Quel sera le délai dans chaque partie d'un système informatique ?\u003cbr\u003e __6.6.1 Convertir en indicateur de temps\u003cbr\u003e 6.6.2 Convertir en indicateur de distance\u003cbr\u003e 6.7 Résumé\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e \",\"\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eImage détaillée\u003c\/b\u003e \u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cdiv\u003e\u003cimg src=\"https:\/\/image.yes24.com\/momo\/TopCate4436\/MidCate006\/443550867.jpg\" border=\"0\" alt=\"Image détaillée 1\"\u003e\u003c\/div\u003e\u003c\/div\u003e \",\"\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eDans le livre\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e En 1984, lorsque j'ai commencé à programmer, les ordinateurs 8 bits commençaient tout juste à arriver sur le marché coréen, mais en réalité, aux États-Unis, le 80386 était déjà en plein développement après le 80286.\u003cbr\u003e On peut donc affirmer sans risque d'erreur que l'écart entre le marché informatique national et le marché informatique étranger était alors largement supérieur à 10 ans. \u003cbr\u003eComme je l'explique également dans ce livre, à l'époque, la programmation était un domaine accessible seulement à un très petit nombre de personnes, et la conception et la structure du matériel étaient, bien entendu, une connaissance approfondie.\u003cbr\u003e Ainsi, même s'il était extrêmement difficile de trouver des documents connexes, c'était une époque où je devais me procurer des livres étrangers un par un par divers canaux ou en faire des copies et les diffuser.\u003cbr\u003e L'un des livres étrangers que je possédais à l'époque était Inside the IBM PC de Peter Norton, connu pour les utilitaires Norton.\u003cbr\u003e Ce livre explique en détail comment le PC, autrefois considéré comme une machine étrange, est structuré, quel processus interne suivent les frappes au clavier avant d'être affichées à l'écran, et ce qui se passe en interne entre-temps.\u003cbr\u003e Étonnamment, j'ai encore ce livre.\u003cbr\u003e Même maintenant, il m'arrive de le ressortir et de le lire. \u003cbr\u003eC'est un livre tellement amusant, et on y découvre de nouvelles choses à chaque fois qu'on le lit.\u003cbr\u003e On a l'impression de répéter sans cesse la même histoire, mais il y a 30 ans, utiliser un ordinateur et programmer étaient pratiquement synonymes.\u003cbr\u003e Ainsi, chaque utilisateur d'ordinateur était un développeur potentiel de logiciels et de matériel.\u003cbr\u003e De nos jours, nous vivons dans un monde où les gens n'ont peut-être pas de télévision à la maison, mais ils possèdent au moins quelques ordinateurs.\u003cbr\u003e La plupart des utilisateurs d'ordinateurs mènent une vie qui n'a rien à voir avec la programmation.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Mais si vous tenez ce livre entre vos mains, vous avez assurément déjà fait un pas dans le monde de la programmation. \u003cbr\u003eAinsi, plutôt que de me contenter des quelques lignes de code qui s'exécutent sans erreur, je pense que réfléchir à ce qui se passe à l'intérieur et à son impact sur mon code m'a offert une opportunité de développement supplémentaire.\u003cbr\u003e Je suis fier de dire que ce livre est l'un des rares qui peuvent vous aider à faire le premier pas vers ce type de développement.\u003cbr\u003e Ce livre offre une approche systématique et une compréhension conceptuelle à ceux d'entre vous qui sont lassés de parcourir des informations éparpillées sur Internet ; il sert également de guide et éveille la curiosité pour un monde que vous n'avez jamais connu auparavant.\u003cbr\u003e Si ce livre peut vous aider à écrire un code ne serait-ce qu'un peu meilleur et plus pertinent, ce sera une grande récompense pour moi, qui ai travaillé si dur à sa traduction.\u003cbr\u003e\n\n\u003c\/div\u003e\n\u003cdiv\u003e --- Note du traducteur\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e \",\"\u003cdiv\u003e  \u003ch5\u003e\u003cb\u003eAvis de l'éditeur\u003c\/b\u003e\u003c\/h5\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e \u003cb\u003eFacile à apprendre grâce aux analogies et aux images\u003cbr\u003e L'essence des systèmes informatiques\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Comprendre le fonctionnement interne d'un ordinateur permet de modifier son code.\u003cbr\u003e Une compréhension approfondie des principes et des mécanismes des systèmes informatiques peut améliorer la lisibilité et la maintenabilité du code que vous écrivez.\u003cbr\u003e De plus, il permet d'optimiser efficacement les performances des programmes et de détecter et résoudre rapidement les erreurs d'exécution de code ou les comportements anormaux du système.\u003cbr\u003e Acquérir une compréhension approfondie des principes des systèmes informatiques.\u003cbr\u003e Nous allons disséquer la structure d'un système informatique, qui est abstraite couche par couche, une par une, en commençant par les langages de programmation et les compilateurs, puis en apprenant le système d'exploitation, les processus, les threads et les coroutines, la synchronisation et la mémoire.\u003cbr\u003e Vous découvrirez également les principes de mise en œuvre des processeurs, des caches, des entrées\/sorties, des systèmes de fichiers, des réseaux et des communications, de la sécurité et du chiffrement, ainsi que du calcul parallèle.\u003cbr\u003e\n\n\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e \"]\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;padding-top:20px;padding-bottom:20px\"\u003e\n\n \u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003eSPÉCIFICATIONS DES PRODUITS \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eDate d'émission :\u003c\/strong\u003e 11 mars 2024\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e \u003cstrong\u003eNombre de pages, poids, dimensions :\u003c\/strong\u003e 480 pages | 858 g | 183 × 235 × 20 mm\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN13 :\u003c\/strong\u003e 9791140708819 \u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cspan\u003e\u003c\/span\u003e\n\n\u003c\/center\u003e\n\n\n\u003c\/center\u003e","brand":"LIBRAIRIE COREENNE","offers":[{"title":"Default Title","offer_id":43893259567146,"sku":"138573","price":43.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0683\/2750\/5962\/files\/3ceb91ab74596fcb91dba9eec3703af9.jpg?v=1765394423","url":"https:\/\/librairie.coreenne.fr\/products\/138573","provider":"LIBRAIRIE COREENNE","version":"1.0","type":"link"}