IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

Peut on programmer une machine qui n'a pas de système d'exploitation ?


Sujet :

Langages de programmation

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 41
    Par défaut Peut on programmer une machine qui n'a pas de système d'exploitation ?
    Bonjour.

    J'aimerai simplement savoir, s'il serait possible d'exécuter un programme sur une machine neuve (aucun système d'exploitation installé dessus). Si Oui ? En quel langage doit-il etre écrit ?

    Merci.

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Comment crois-tu que les systèmes d'exploitation fonctionnent ? Ce ne sont que des programmes après tout !
    Néanmoins il faut bien comprendre que si tu n'as pas d'OS, tu dois te passer d'un tas de services bien pratique, il faut discuter directement avec le matériel pour faire quoi que ce soit et cela pose énormément de problème dans un monde (PC) où d'innombrables variations sont disponibles. Rien que pour gérer la mémoire tu dois le faire à la main, l'affichage, etc...
    En d'autres termes c'est un monde bien différent de la programmation sous un OS (même en mode kernel).

    N'importe quel langage peut le faire en théorie, bien que certains ne soient pas équipés de base des outils pour communiquer avec la machine à un niveau si rudimentaire ou que leur compilateurs ne sache pas compiler pour un mode non-protégé.

    --
    Jedaï

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 41
    Par défaut
    Merci de ta réponse Jedaï.
    Mais, si par exemple, le langage C sois capable de le faire, y'a t-il un type de compilateur particulier pour ça ?
    Parce qu'en général un compilateur C produit un code compréhensible par le SE sous lequel il est installé(raison pour laquelle un programme compilé sous windows ne marche pas sous linux et vis versa). Lorsqu'il n'y a donc plus de SE, comment la machine fera t-elle pour comprendre le code produit par le compilateur ?

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Par défaut
    Citation Envoyé par Ulrik18 Voir le message
    Merci de ta réponse Jedaï.
    Mais, si par exemple, le langage C sois capable de le faire, y'a t-il un type de compilateur particulier pour ça ?
    Parce qu'en général un compilateur C produit un code compréhensible par le SE sous lequel il est installé(raison pour laquelle un programme compilé sous windows ne marche pas sous linux et vis versa). Lorsqu'il n'y a donc plus de SE, comment la machine fera t-elle pour comprendre le code produit par le compilateur ?
    Non. Un compilateur produit un code compréhensible par la machine. L'OS offre des facilités c'est à dire des morceaux de code « déjà prêt » si tu veux. Ils peuvent être chargés statiquement lors de la compilation ou dynamiquement lors de l'exécution (les DLL sous Windows par exemple). C'est une image assez simple, mais ce qui compte c'est qu'au final tout n'est qu'une suite d'instruction pour le processeur et pourrait donc théoriquement se passer de l'OS.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 41
    Par défaut
    Citation Envoyé par Garulfo Voir le message
    Non. Un compilateur produit un code compréhensible par la machine.
    De Quelle machine s'agit-il? la machine physique (processeur)? Moi je pense que non !
    Un compilateur produit un code compréhensible par l'OS (machine virtuelle).

    Citation Envoyé par Garulfo Voir le message
    Ils peuvent être chargés statiquement lors de la compilation ou dynamiquement lors de l'exécution (les DLL sous Windows par exemple).
    ça c'est l'étape d'édition de liens. si on récupère le fichier produit par la compilation avant d'attaquer cette phase (fichier objet), on se rend compte qu'il est dépendant de l'OS, à partir de lui, impossible de faire l'édition de liens sur un autre OS.

    Citation Envoyé par Garulfo Voir le message
    ... mais ce qui compte c'est qu'au final tout n'est qu'une suite d'instruction pour le processeur et pourrait donc théoriquement se passer de l'OS.
    Je ne pense pas qu'on puisse comme ça se passer de l'OS, parce que c'est lui qui traduit pour le processeur.
    Quand par exemple tu manipules les adresses mémoires à l'aide des pointeurs en C. Un pointeur qui pointe sur une zone mémoire non allouée (par l'os) n'empêche en rien la compilation, mais à l'exécution, accéder (en écriture le plus souvent) à cette zone mémoire au moyen de ce pointeur provoque un bug qui stop le programme!!! C'est le control de l'OS(qui ne traduit rien au processeur qui ne l'arrange pas). le processeur aurait tout bêtement effectuer l'opération.
    C'est aussi l'os qui alloue la mémoire statique, comme dynamique, s'il refuse le programme n'a rien à dire !

    Au final, je pense donc que le compilateur produit un code compréhensible par le SE, et ensuite le SE traduit pour la machine physique.
    Je me demande donc comment on fait pour que sans SE la machine comprenne notre programme.

    Merci !

  6. #6
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Peut-être que tu devrais commencer par écouter la sagesse des anciens (désolé Garulfo ) plutôt que de la refuser si elle ne correspond pas à ta compréhension erroné du sujet...

    Le code objet produit par un compilateur est parfaitement exécutable directement sur le processeur, il n'est pas vraiment spécifique à l'OS à part en cela qu'il se repose sur des services fournis par l'OS. Mais toutes les instructions sont exécutées directement par le processeur.

    ça c'est l'étape d'édition de liens. si on récupère le fichier produit par la compilation avant d'attaquer cette phase (fichier objet), on se rend compte qu'il est dépendant de l'OS, à partir de lui, impossible de faire l'édition de liens sur un autre OS.
    Ce n'est vrai que parce qu'il utilise des librairies spécifique à l'OS, rien à voir avec une quelconque nature intrinsèque du code objet qui différerait d'un OS à l'autre.

    De Quelle machine s'agit-il? la machine physique (processeur)? Moi je pense que non !
    Un compilateur produit un code compréhensible par l'OS (machine virtuelle).
    Un OS n'est pas une VM !!

    Quand par exemple tu manipules les adresses mémoires à l'aide des pointeurs en C. Un pointeur qui pointe sur une zone mémoire non allouée (par l'os) n'empêche en rien la compilation, mais à l'exécution, accéder (en écriture le plus souvent) à cette zone mémoire au moyen de ce pointeur provoque un bug qui stop le programme!!! C'est le control de l'OS(qui ne traduit rien au processeur qui ne l'arrange pas). le processeur aurait tout bêtement effectuer l'opération.
    C'est aussi l'os qui alloue la mémoire statique, comme dynamique, s'il refuse le programme n'a rien à dire !
    Ta compréhension de la gestion de mémoire semble très floue. Un programme n'a pas besoin de consulter l'OS chaque fois qu'il consulte une adresse bien que celle ci ne corresponde pas à une adresse physique réelle en mémoire, c'est le CPU lui-même qui se charge de la traduction (heureusement vu la fréquence d'une telle opération). L'OS se charge effectivement d'allouer de la mémoire, mais cela signifie simplement qu'il modifie les tables de traduction du CPU, pas qu'il s'interpose complètement entre le programme et le CPU. De plus les opérations d'allocation ou désallocation de la mémoire n'ont rien de magique du point de vue du code objet, il s'agit simplement d'appel de fonctions de librairies fournies par l'OS qui elles-même discutent avec le Kernel par l'intermédiaire d'appel système.


    Plutôt que de continuer cette discussion, je te conseille de lire quelques cours système ou de lire le Tanenbaum qui devrait t'éclairer sur le fonctionnement réel des ordinateurs.

    --
    Jedaï

  7. #7
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par Ulrik18 Voir le message
    Quand par exemple tu manipules les adresses mémoires à l'aide des pointeurs en C. Un pointeur qui pointe sur une zone mémoire non allouée (par l'os) n'empêche en rien la compilation, mais à l'exécution, accéder (en écriture le plus souvent) à cette zone mémoire au moyen de ce pointeur provoque un bug qui stop le programme!!! C'est le control de l'OS(qui ne traduit rien au processeur qui ne l'arrange pas). le processeur aurait tout bêtement effectuer l'opération.
    C'est aussi l'os qui alloue la mémoire statique, comme dynamique, s'il refuse le programme n'a rien à dire !
    Quand tu exécutes un programme, il s'exécute dans un mode protégé.
    Ce mode n'est pas lié à une notion dans l'OS, c'est des composants électroniques comme la MMU qui le permettent. Elle gère les tentatives d'accès à la mémoire hors plage avec une interruption. Sous UNIX, cette interruption est traduit en signal SIGSEGV. On peut d'ailleurs très bien intercepter toutes les signaux SIGSEGV et continuer le programme sous UNIX. Si tu fais ton propre OS, à toi de gérer l'interruption en faisant ce que tu veux.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 41
    Par défaut
    Je m'excuse d'avoir voulu jouer au grand savant.
    Je constate que ce qu'il me faut c'est des cours de système d'exploitation, programmation système, je m'y mets de suite.
    S'il vous plait, j'aimerai aussi savoir, si quelqu'un a déja pu écrire un programme C tout simple (qui dit bonjour, calcul une puissance ...) qui fonctionne sans le SE (bootable peut-être). Si oui, j'aimerai être guidé.

  9. #9
    Membre chevronné Avatar de Blackknight
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 214
    Par défaut
    Ben, regardes du côté de RTEMS, MarteOs ou FreeRTOS. Ce sont des exécutifs temps réel de petite taille qui te déchargerons déjà de la partie gestion du boot, des affichages etc...
    Enfin si tu veux te colletiner la gestion de l'affichage à la main (même d'un hello world), je crains qu'il ne te faille faire des bouts d'assembleur quand même.

  10. #10
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 7
    Par défaut
    Une systeme d'exploitation est une programme.

  11. #11
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par iammisc Voir le message
    Une systeme d'exploitation est une programme.
    j'aime les remarques constructives

  12. #12
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 532
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 532
    Par défaut
    Citation Envoyé par Ulrik18 Voir le message
    Bonjour.
    J'aimerai simplement savoir, s'il serait possible d'exécuter un programme sur une machine neuve (aucun système d'exploitation installé dessus). Si Oui ? En quel langage doit-il etre écrit ?
    Merci.
    Oui c'est possible si tu est un gros crack en assembleur x86.
    Le sujet a été abordé dans le forum assembleur.
    De préférence avoir une disquette il faut que tu programmes un boot strap et un "boot loader" qui se charge en mémoire.
    La disquette doit être formatté selon tes propres routines assembleur..

    Citation Envoyé par millie Voir le message
    Quand tu exécutes un programme, il s'exécute dans un mode protégé.
    1-le mode protégé c'est uniquement pour les CPU compatibles avec Intel ( donc AMD et feu Cyrix).
    Avec d'autres types de CPU ( Motorola, IBM..processeurs RISK ) cela n'existe pas ils sont par essence multitaches
    Mais comme c'est Intel qui domine le marché mondialement dans ce domaine..
    2-quand un ordinateur "compatible PC" démarre après la mise sous tension, sans OS normalement à moins de preuve du contraire ,le CPU tourne en mode réel.
    C'est l'OS qui le fait basculer en mode protégé

    Citation Envoyé par Ulrik18 Voir le message
    Merci de ta réponse Jedaï.
    Mais, si par exemple, le langage C sois capable de le faire, y'a t-il un type de compilateur particulier pour ça ?
    Parce qu'en général un compilateur C produit un code compréhensible par le SE sous lequel il est installé(raison pour laquelle un programme compilé sous windows ne marche pas sous linux et vis versa). Lorsqu'il n'y a donc plus de SE, comment la machine fera t-elle pour comprendre le code produit par le compilateur ?
    Re il faut que tu te fasses une disquette de boot avec tes propres routines et que tu charges ce que l'on appelle un "shell" ou interpréteur de commandes en mémoire bref faire un mini-os
    Sinon cela doit être possible de faire un seul programme chargé en mémoire il faut que tu gères par toi-même les allocations mémoires , l'affichage vidéo,les entrées-sorties clavier.
    C'est possible avec les interruptions assembleur genre int10.
    Tu peux même faire un programme en vraies couleurs ( haute résolution ) avec le mode VESA.
    Concernant le mode protégé c'est pour gérer le multitache mais il faut déjà avoir fait ton propre mini-os.
    Un conseil primordial tout de même : exerces-toi sur une vieille machine plutot qu'une machine dernier cri et toute neuve parce que tu risques de détériorer le BIOS si tu fais de mauvaises manips en assembleur

  13. #13
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    2-quand un ordinateur "compatible PC" démarre après la mise sous tension, sans OS normalement à moins de preuve du contraire ,le CPU tourne en mode réel.
    C'est l'OS qui le fait basculer en mode protégé
    Quand j'ai dit, quand tu exécutes un programme, je sous entendais : Quand tu exécutes un programme à partir d'un OS style UNIX/Windows Désolé de pas avoir été plus précis.

  14. #14
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 532
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 532
    Par défaut
    Ok Millie
    Ceci dit peut-être que les machines les plus récentes passent directement en mode protégé je ne sais pas il faut vérifier.

Discussions similaires

  1. Programmer une page qui puisse être personnalisée
    Par nicolas2603 dans le forum Langage
    Réponses: 5
    Dernier message: 23/01/2009, 09h35
  2. Installer WSS sur une machine qui fait Domain Controller.
    Par leon1983 dans le forum SharePoint
    Réponses: 2
    Dernier message: 17/09/2008, 10h20
  3. récupérer l'adresse IP d'une machine qui se connecte en Wifi
    Par ryadh.naouar dans le forum Développement
    Réponses: 2
    Dernier message: 07/08/2007, 15h11
  4. Peut-on executer une fonction qui est dans un iframe ??
    Par miloud dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 19/04/2006, 11h52
  5. [VB.NET] Programmer une Application qui tourne sur un PDA?
    Par Bils dans le forum Windows Forms
    Réponses: 1
    Dernier message: 27/01/2006, 04h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo