154 votes

Comment sont programmées les machines de tous les jours?

Je suis un étudiant de premier cycle CS étudiant, et je suis actuellement en train de prendre mon cours sur les Systèmes d'Exploitation requis. J'ai pensé à l'origine, le matériau devrait être assez sec, mais à ma grande surprise, je suis vraiment intéressé par elle.

Ce que je me demande, comment sont les machines (pas tellement les ordinateurs et les appareils mobiles comme les appareils ménagers, les montres numériques, etc) - il programmé? Ce genre de code va dans la programmation d'un Coca-Cola distributeur automatique? Comment mon bouilloire accepter une pré-programmation du temps et de commencer à brasser un pot de café heures plus tard, lorsque ce moment arrive?

Ces types de machines ont des systèmes d'exploitation à l'intérieur d'eux, ou est-il quelque chose d'encore plus fondamental? Sont-ils écrits en assembleur, C, ou une autre langue?

Et, j'aimerais vraiment trouver une ressource qui répertorie ces systèmes d'exploitation ou des sous-tendent les systèmes de code, peut-être même avec le code source si possible. Si quelqu'un sait de la ressource (la recherche a abouti à rien pour moi), ce serait fantastique.

50voto

chubbsondubs Points 16075

La plupart de ce dont vous parlez, sont intégrés en fonction des systèmes où C est un luxe souvent pas disponibles. Ils n'ont pas le logiciel dans le sens traditionnel du terme. La plupart du temps, le logiciel est écrit en C, assemblée, ou même du code machine. C et ASM exiger que les compilateurs d'être écrite à utiliser pour cette plate-forme. Machine code est écrit en binaire w/o d'un compilateur.

Votre pot de café, et les plus simples comme les systèmes qui ne portent pas d'un système d'exploitation. Ils suffit de charger à partir d'une adresse de départ dans la mémoire et que vous mettez votre code. Souvent, ces systèmes ont leur "code" gravé dans EEPROM qui agissent comme le disque dur du système. Visser le code après la gravure de la proms, jeter les puces loin gravez le code de la puce, et de recommencer. Il y a des nouvelles puces FPGA que la hausse de la fin de l'utilisation de dispositifs pour effectuer des tests, déploiement, etc facile, mais ils sont la même chose.

Coca-cola machines, routeurs, etc. généralement l'utilisation d'un OS temps réel comme QNX, EMBOS, ou parfois RTlinux si vous avez de la chance. La plupart de ces sont la propriété OS vous de licence pour beaucoup d'argent, mais ils ont des compilateurs C, les pilotes de matériel, etc.

http://www.qnx.com/

http://www.segger.com/cms/embos.html

http://www.microsoft.com/windowsembedded/en-us/campaigns/compact7/default.aspx?WT.srch=1&WT.mc_ID=SEARCH

RTLinux

30voto

Hans Passant Points 475940

Ils utilisent des microcontrôleurs, le 8051 est la classique. Ce sont 8-bit ou 16-bit cœurs, ils ont rarement un système d'exploitation. Le programmeur écrit le code pour initialiser les périphériques intégrés et de mettre en œuvre les gestionnaires d'interruption. Les langues utilisées sont l'assemblage et le C. Difficile débogage emplois exigent un émulateur circuit.

Il y a beaucoup de croissance au-delà de cela, avec 32-bit intégré cœurs (de BRAS, c'est du 100 gorille) qui boot une version embarquée de Linux et/ou le Java JVM.

25voto

Justin Ethier Points 57486

Ce sont des systèmes embarqués, et doit être programmé en utilisant un langage de bas niveau comme le C ou le montage. En règle générale, ce système va fonctionner sans un système d'exploitation, bien que certaines nouvelles "machines" comme le blue-ray lecteurs DVD et les routeurs sans fil faire exécuter leur code sur un unix système d'exploitation.


Mise à jour

Le long des lignes de ce que les autres ont dit, beaucoup de modernes systèmes embarqués également exécuter une saveur de windows. Il repose sur l'application. Aussi, il ya une tendance dans de nombreux espaces pour s'exécuter sur une plate-forme plus puissante avec un système d'exploitation pour gérer les cas tels que des lecteurs blu-ray besoin pour exécuter Java, et d'autres cas où l'utilisateur désire plus de fonctionnalités.

18voto

poundifdef Points 6005

Nous allons réfléchir sur le processeur de votre ordinateur de bureau. Il ne fait qu'exécuter les instructions machine, et par lui-même, n'est pas vraiment inquiète des "systèmes d'exploitation" ou "programmes".

Vous allumez votre ordinateur, le processeur de points à la première instruction, et il commence à s'exécuter.

Sur votre bureau, il commence l'exécution du "système d'exploitation". Mais il n'y a aucune raison que vous ne pouvait pas le processeur de l'exécution de toutes les instructions que vous avez choisi. (Cela peut ne pas être très utile, car vous auriez encore envie de sortie des résultats sur l'écran, et que cette fonctionnalité réside dans le système d'exploitation.) En même temps, si vos instructions machine se composait de la droite opcodes de sorte que le processeur serait sortie de la séquence correcte des signaux à peindre une image sur l'écran, tout le meilleur. Pas d'OS nécessaire.

Les postes de travail de faire tellement de trucs que nous avons généralement besoin de l'abstraction d'un OS. Mais à la base, tout le processeur n'est d'exécuter des instructions.

De même pour le processeur de Coke et machines à Café. Il ne fait qu'exécuter les instructions.

Ainsi, l'écriture d'instructions machine bit-par-bit est fastidieux. Ainsi, de même qu'avec les ordinateurs de bureau, en général, nous pouvons écrire le code en C, qui est ensuite compilé en code machine. Que le code machine est chargé dans le processeur embarqué et il fonctionne.

Systèmes embarqués faire si peu qu'ils n'ont pas besoin de sur les Systèmes d'exploitation. Un microcontrôleur pourrait avoir 8 ou 16 broches de la puce par rapport aux scores de broches dans votre socket CPU.

De sorte que le flux de travail est d'écrire un peu de code (en C), le compiler sur votre ordinateur de bureau. Que le compilateur génère du code machine pour la puce intégrée. Alors que le code est chargé sur le microprocesseur (et vous avez besoin de matériel spécial pour ce faire.) Ensuite, vous la puissance de la puce et de commencer à exécuter les instructions. Simple!

12voto

ughoavgfhw Points 28400

De nombreux dispositifs qui exercent une fonction spécifique ne contiennent pas de "code". Ils s'acquittent de leurs fonctions par les propriétés de leurs composants électroniques. Des systèmes plus avancés, ce qui permet d'effectuer de nombreuses fonctions différentes ou doivent être facilement mis à niveau, contient un microcontrôleur et une sorte de "système d'exploitation". Depuis ceux-ci ont toujours des limites à leur fonctionnalité, le système d'exploitation sera simple et spécialement conçu. Encore plus avancé, le périphérique ne contient quelque chose de similaire à un ordinateur. Il sera plus compliqué de système d'exploitation qui peut communiquer avec les différentes parties du système. Enfin, vous arrivez à des dispositifs tels que les téléphones intelligents, qui contient un système d'exploitation complet qui permet d'exécuter le niveau de l'utilisateur code et ont beaucoup plus de la saisie de l'utilisateur que les appareils plus simples. Cependant, même les processeurs modernes sont essentiellement de très grands circuits électriques. Chaque instruction du PROCESSEUR reconnaît va provoquer un circuit différent à être utilisé pour effectuer cette fonction.

Voici quelques pages de Wikipédia, vous pouvez être intéressé par:

http://en.wikipedia.org/wiki/Electrical_engineering
http://en.wikipedia.org/wiki/Integrated_circuits
http://en.wikipedia.org/wiki/Electronic_engineering
http://en.wikipedia.org/wiki/Computer_engineering
http://en.wikipedia.org/wiki/Microcontroller

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X