Bonjour à tous,
j'ai une question qui peut paraître simple, quels sont les liens entre le logiciel et le matériel? Où est la frontière? Comment passe-t-on du soft au hard?
Je vous remercie d'avance pour vos lumières.
__WIL__
Bonjour à tous,
j'ai une question qui peut paraître simple, quels sont les liens entre le logiciel et le matériel? Où est la frontière? Comment passe-t-on du soft au hard?
Je vous remercie d'avance pour vos lumières.
__WIL__
Tout vient à point qui sait programmer.
Vu du C standard, par le I/O (Entrées/Sorties).Envoyé par bibilolo2
Pas de Wi-Fi à la maison : CPL
Egalement via la mémoire (gestion statique ou dynamique)
Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.
Euh, non. Le C ne dit pas comment atteindre la mémoire physique. Il peut y avoir des extensions plus ou moins complexes. Rien de portable.Envoyé par Bayard
Pas de Wi-Fi à la maison : CPL
OK, mais on peut réserver de la mémoire: c'est un lien.
Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.
De la mémoire physique ? Non, pas à ma connaissance. En tout cas, pas de manière portable.Envoyé par Bayard
Pas de Wi-Fi à la maison : CPL
Pour moi la réponse est beaucoup plus complexe.Envoyé par bibilolo2
Tout est relatif.
Par exemple, en C les entrées et sorties vers un fichier sont du logiciel qui attaque le matériel. Si on descend dans la librairie, on trouve des appels système qui invoquent donc du logiciel. En allant plus bas, l'OS et ses drivers réalisent des IO sur le contrôleur de disques. Ce dernier contient du microcode (firmware) qui déclenche les opérations physiques sur le matériel.
Pour en revenir à la troisième question, le logiciel invoque le matériel au travers de deux mécanismes fondamentaux :
- Il lit ou écrit des zones mémoire qui sont utilisées par le matériel (on appelle cela souvent des registres)
- Il communique avec le matériel (en lecture ou écriture) au travers de zones d'échange que l'on appelle des ports d'entrée/sortie
Enfin, le matériel communique avec le logiciel en utilisant un troisième mécanisme : l'interruption matérielle. Il s'agit d'une impulsion envoyée par le matériel pour temporairement suspendre l'activité logicielle et lui demander de répondre à un événement.
www.iristechnologies.eu
Centre de formation à Paris et Toulouse
Bah, en C, non. C'est bien l'objet de ce forum ? Les choses sont claires, les relations avec l'extérieur (ce qui couvre le matériel) se font via les I/O (FILE*). Point.Envoyé par pascal.barbier
On est plus dans le domaine du C mais dans le système. C'est hors sujet. Bien définir les domaines de compétences fait partie de ce métier...Par exemple, en C les entrées et sorties vers un fichier sont du logiciel qui attaque le matériel. Si on descend dans la librairie,
Oui.on trouve des appels système qui invoquent donc du logiciel.
OK.En allant plus bas, l'OS et ses drivers réalisent des IO sur le contrôleur de disques. Ce dernier contient du microcode (firmware) qui déclenche les opérations physiques sur le matériel.
Euh non. Les registres, ce sont des zones mémoires appartenant à des composants matériels. La façon de les atteindre (mémoire vs port E/S) dépend de l'architecture matérielle.Pour en revenir à la troisième question, le logiciel invoque le matériel au travers de deux mécanismes fondamentaux :
- Il lit ou écrit des zones mémoire qui sont utilisées par le matériel (on appelle cela souvent des registres)
Sur certaines architectures, oui.- Il communique avec le matériel (en lecture ou écriture) au travers de zones d'échange que l'on appelle des ports d'entrée/sortie
OK.Enfin, le matériel communique avec le logiciel en utilisant un troisième mécanisme : l'interruption matérielle. Il s'agit d'une impulsion envoyée par le matériel pour temporairement suspendre l'activité logicielle et lui demander de répondre à un événement.
Bien que ce soit hors-sujet, je profite de ce post pour rétablir quelques vérités...
- Les composants matériels programmables disposent d'une interface logicielle matérialisée par un bus de données (8-bit,16-bit...), un bus d'adresse (0 à n-bit) et des signaux de commande (CS, R/W etc.)
L'adressage permet d'accéder à des zones mémoires appelées registres. Le nombre de fils d'adresse détermine le nombre de registres adressables:
0 : 1 : 0x00
1 : 2 : 0x00-0x01
2 : 4 : 0x00-0x03
...
8 : 256 : 0x00-0xFF
etc.
selon la loi : nb-reg := 2 ^ nb-bit- L'interface des composants logiciels avec le processeur dépend de celui-ci. 2 exemples communs
- Intel 80x86
Bien que les bus soient multiplexés, les espaces mémoires et I/O sont physiquement séparés. Il sont accessibles via des instructions différentes :
Memoire : MOV
I/O : IN / OUT
Le bus mémoire est très large et très rapide :
- Données : 8/16/32/64-bit
- Adresses : 20/24/32/64-bit
- Vitesse : jusqu'à plusieurs centaines de MHz
Le bus I/O est beaucoup plus rustique :
- Données : 8/16-bit
- Adresses : 16-bit
- Vitesse : Limitée à 8 MHz
Les composants matériels sont mappés en I/O.- Freescale 68k ou PowerPC (ex-Motorola)
Il n'existe qu'une seule zone d'adressage accessible par l'instruction MOVE.
- Données : 8/16/32-bit
- Adresses : 24/32-bit
- Vitesse : réglable par zone jusqu'à plusieurs dizaines de MHz (Wait State) ou en mode synchrone (DTACK)
Les composants matériels sont mappés en mémoire avec le câblage qui va bien (synchrone / asynchrone) et les réglages conséquents du gestionnaire de mémoire (MMU).
Pas de Wi-Fi à la maison : CPL
Excellent!! Mes questions sont fondamentalement résolues, c'est ce que je voulais.
Je vous remercie à tous Emmanuel, Pascal, et Bayard, pour votre précision et votre amabilité.
Bonne journée!
Tout vient à point qui sait programmer.
Acquérir des notions en Assembleur par rapport à ton architecture matérielle permet de mieux comprendre le comportement interne de certains composants comme le processeur par exemple, ce n'est jamais du temps de perdu
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Je ferai donc ça Franck.
Merci.
Tout vient à point qui sait programmer.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager