CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Fonctionnement d'un programme

dognclebsmonpot
dognclebsmonpot
Niveau 5
20 août 2004 à 12:40:35

Je me pose une question concernant le fonctionnement d´un programme : de quelle manière celui-ci est il chargé en mémoire ?

Je m´explique : un programme compilé se présente sous forme de bits ( regroupé en octets sur le disque) qui vont être passé au microprocesseur afin d´être traités par celui-ci.
Mais : tous les bits constituant le programme sont ils intégralement chargés en mémoire à son lancement ou le microprocesseur va il chercher les données au fur et à mesure sur le disque ( par le biais de mécanismes spécifiques), un peu comme on le ferait avec fopen puis fgets ?

LGV
LGV
Niveau 28
20 août 2004 à 14:06:37

c´est plus complique que ca :/
deja t´as plusieurs niveaux de memoire, entre la memoire centrale et les differents caches ( L1, L2, L3), les algos de getion qui vont avec, les canaux DMA au milieu pour gerer les transfert de donnees, les pipelines du CPU pour decoder et executer les instructions, etc. Sans compter les technologies genre multithreading, qui font des echanges au sein meme du CPU...
Je te conseille de regarder deux choses : 1) un bouquin d´archi materielle 2) les specs de prog d´un CPU ( dispo sur le site d´intel par ex)
ca devrait t´eclairer

JeanYvesYves
JeanYvesYves
Niveau 10
20 août 2004 à 14:15:22

pour répondre simplement :

on peut dire que l´executable est chargé entierement en mémoire, mais mémoire virtuelle ! !
c´est a dire que tu imagines une barette de RAM imaginaire, le programme est entierement chargé la dedans au lancement.
( quand je dis programme, ce n´est pas les données ( les images, les modeles, etc...) qui elles sont chargées avec fopen, fgets ou fread comme tu disais.

Alors mémoire virtuelle C quoi donc ?
en gros, l´ordi sait adresser + de mémoire que la RAM. Cette mémoire est pagninée : donc décoposée en plusieurs " pages".
S´il y a assez de RAM, la " page" est posée en RAM, s´il n´y en a plus assez, elle est posée sur le disque dur.
Les pages les plus fréquentes sont laissées en RAM, les autres restent sur le disque :
quand la RAM est saturée, tu vois ton disque dur gratter : on dit qu´il swap :
swap = échange, en gros, il échange une page de la RAM plus utilisée avec une page disque dur dont le prog demande l´acces.

lag-it
lag-it
Niveau 10
20 août 2004 à 19:41:23

Tiens, dans le même genre : comment fonctionne un interpréteur ? ( programme non compilé donc, mais préinterprété : remplacer par exemple la command " input" par un identifiant numérique pour aller plus vite à l´exécution du programme ) ?
Il charge tout le code en mémoire ou le fait il petit a petit au fil de son exécution ? Dans Java par exemple.
Merci :)

JeanYvesYves
JeanYvesYves
Niveau 10
20 août 2004 à 19:44:51

dans java je ne sais pas :
mais dans basic, qui est le langage interprété par excellence :

il lis la ligne de code
il la passe a l´analyseur lexical pour la " compiler" puis la lance
et puis la ligne d´apres, il refait le tout

en gros, tu peux marquer
PLOUF a la ligne 50, il se lance quand meme, fait les lignes du début, et quand il tombe sur le PLOUF, la il te dit : " hu ? "

Un langage interprété est toujours bien moins rapide qu´un langage compilé :)

lag-it
lag-it
Niveau 10
20 août 2004 à 21:13:43

Uhm . .. pourtant il doit y avoir un myen de faire un language interprété ultra rapide.
Imaginons un prgoramme dans ce genre la :

BEGIN;
CLEAR;
DISPLAY " Hello, world ! ";
PAUSE;
END;

Et si, par le biais d´un programme nommé pré-interpréteur, on transforme le code précédent en un truc du genre :

0100 / / BEGIN;
1000 / / CLEAR;
1101 / / DISPLAY chaine contenue dans cha *data[1]
1200 / / PAUSE;
0200 / / END;

Code que l´on lit ensuite grâce à un programme que l´on nomm " executeur", qui pour chaque ligne, lit les 2 premiers chiffres correspondants au code de l´instruction ( les 2 suivat correspondant à la donnée si nécessaire ) et se sert de cette valeur comme indice d´un tableau de pointeur vers des fonctions qui executent le code correspondant, il doit y avoir moyen d´obtenir un code très rapide ( moins qu´en compilé, mais plus qu´en interprété bourrinement :) )

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment