Tout d'abord, il est important de se rappeler que, quelle que soit la langue de votre choix, à la fin de la compilation produit est en langage d'assemblage (ou, plus exactement, le code machine). Même les interprètes (comme la disponible interprète) sont, à la fin de la traduction de vos scripts en code machine.
Mais c'est sans doute trop technique et manque le cœur de votre question:
"Puis-je écrire un système d'exploitation dans un langage de niveau plus élevé?"
Les réponses sont à la fois personnelles et techniques.
Tout d'abord, le côté personnel: si vous ne savez pas encore comment écrire un système d'exploitation dans un mélange de langage assembleur et C, alors vous n'avez absolument pas d'essayer votre main à l'OS de la conception.
Souvent ceux qui sont nouveaux à la programmation de ces sortes de questions, parce qu'ils veulent faire quelque chose d'aussi cool que l'écriture d'un nouveau système d'exploitation sans tous les apprentissages nécessaires à même de tenter un tel projet. Ils se demandent si les langages de niveau supérieur peut être un moyen de contourner tout ce qui malpropre étude.
Donc, si, dans votre cœur-des-cœurs, ce qui est ce que vous êtes après, arrêter maintenant. Stop, stop, stop. Devenir bon à quelque chose est difficile de travailler. Il n'y a pas de raccourcis. Être prêt à retrousser vos manches et préparez-vous certains le syndrome du canal carpien.
Qui n'empêche toutefois pas à la suite d'un chemin de l'éventuelle OS design! Si c'est votre passion, alors commencer par le haut et de travailler votre chemin vers le bas. Obtenir des livres sur les protocoles réseau, la gestion de la mémoire, de filetage, etc, à s'attaquer à chacun des principaux sous-système et d'obtenir de bien la connaître. Vous ne pouvez pas écrire un nouveau si vous ne pouvez pas utiliser un ancien!
Ensuite lu des livres sur le système d'exploitation de conception et de mise en œuvre jusqu'à ce que vous rêvez processus de méthodologies de gestion.
Suffit de garder à l'esprit, la somme de connaissances nécessaires (et pas seulement des opérations de l'ordinateur, mais des constructions sociales comme APIs) est immense. C'est un long voyage et gratifiant. Si on aime vraiment ce métier comme je le fais, vous serez heureux que vous avez pris le temps même si vous n'avez jamais réellement écrire un OS.
Maintenant, la réponse technique. Vous allez avoir besoin d'un chargeur de démarrage, et qui doit être écrit en langage d'assemblage. Après tout, votre processeur ne sait pas C#. Passé le chargeur de démarrage de la phase, vous pouvez écrire votre système d'exploitation code dans n'importe quelle langue que vous voulez et ça va fonctionner, en supposant que votre langue peut compiler en code machine binaire (et non de pseudo-code binaire!)
Cependant, même dans nos "surabondance de cycles" environnement informatique, un système d'exploitation doit être simple et efficace et c'est presque impossible à réaliser dans un langage de plus haut niveau, d'autant plus dans un langage interprété.
Les Chances sont, vous aurez besoin d'écrire votre propre compilateur/interpréteur de ce langage donné comme une composante essentielle de votre système d'exploitation. De base compilateur serait susceptible de permettre uniquement un sous-ensemble restreint de la langue (et que vous ne souhaitez bootstrap par la rédaction d'un plus robuste compilateur dans le cadre limité de sous-langage). Sinon, les performances seront insondable.
Mais tout cela est horriblement complexe et une vraie discussion de ces questions exige une connaissance approfondie, vous avez probablement manque actuellement. Mais si vous avez le lecteur à faire, vous pouvez facilement changer cela, et puis je serais heureux de débat approches toute la journée!
Si il vous fait vous sentir mieux, je ne connais pas assez pour écrire un système d'exploitation, et encore je suis assis autour de la rêverie, à essayer de comprendre comment beaucoup d'un OS pourrais-je sortir avec écrit en python. 😉
16
Oui. L'utilisation de l'assembleur. Je voudrais l'utiliser de Suite. Genres était un os fait par symbolics** codé en Lisp. C est principalement utilisé car il est digne de confiance, on sait comment cela fonctionne. Et il existe des compilateurs c pour chaque CPU dans l'univers. Les compilateurs c sont simples à construire.
** Symbolics inscrit le premier domaine sur l'internet. (fait intéressant)
14
Sûr. Vous pouvez utiliser pure en assembleur ou en choisir un autre langage de haut niveau.
Mais vous ne voulez pas. Parce que la quantité de code assembleur nécessaire dans un système d'exploitation moderne est plutôt faible. La plupart du code dans un OS n'a pas besoin à ce faible niveau.
C donne un beau niveau intermédiaire d'abstraction qui permet encore à l'écriture, plutôt au code de bas niveau, tandis que ne pas avoir à traiter avec tous les détails que l'assembleur développeurs doivent faire face.
Edit: une fois que vous retirez de l'assemblée de l'équation, il devient beaucoup plus compliqué. La configuration d'un décent système d'exploitation nécessite l'exécution de plusieurs instructions de code qui ne sont tout simplement pas représentés dans les langages de haut niveau (parce qu'ils sont très, très spécifique à la machine). Vous pourrait théoriquement produire du code machine pur dans un blob binaire et de sauter à cet endroit depuis un langage de haut niveau, mais je considère que la tricherie, comme vous pouvez vous en sortir avec ce blob binaire en premier lieu.
10
Oui, MenuetOS est un exemple d'un système d'exploitation écrit en utilisant uniquement de l'assembleur.
Que vous ne semblent pas être intéressés par l'assembleur voir aussi JNodeun système d'exploitation écrit en Java, et Singularitéun système d'exploitation écrit en C#.
8
Il y a de nombreuses tentatives pour créer du matériel de mise en œuvre de la JVM. Bien sûr, un système d'exploitation pour ce matériel serait écrit en Java.
Voir par exemple: http://www.jopdesign.com/
Aussi Nokia S40 semble être surtout développée en Java.
4
Sûr. Code C/C++ est compilé en code ASM, mais il y a beaucoup d'autres langues, vous pouvez utiliser de la même manière.
Vous pourriez ne pas être en mesure d'utiliser le Java ou le C# car elles reposent sur une Machine Virtuelle et qui pourrait être écrit en C.
En fait, je crois qu'il y avait un projet de création d'un système d'exploitation basé sur le langage LISP, mais il a échoué.
3
Sûr. Tant qu'il y a un compilateur disponible qui peut produire la machine de code, n'importe quelle langue va faire.
2
Découvrez http://common-lisp.net/project/movitz/. C'est un OS entièrement écrit en Lisp. Je pense qu'il a sa propre assmebler les, par exemple Lisp en code machine traducteur.
J'aime l'idée d'OS sans C/C++ et surtout basé sur Lisp.
1
Oui. Évidemment, tout est possible dans l'assemblage, mais souvent pas pratique. Il y a eu quelques tentatives de rendre les systèmes d'exploitation en code managé (.NET, Java) avec des degrés variables de succès.
1
Si tu le voulais vraiment, alors oui, vous pouvez écrire tout un système d'exploitation sans l'aide de l'Assemblée, en C ou en C++, mais je recon c'était juste une taille de temps. Vous pourriez obtenir un éditeur binaire et le programme complet de la langue en Binaire ou en Hexadécimal si vous voulez, il prendrait des lustres, mais c'est tout à fait possible.
0
vous pouvez l'écrire dans code machine? bu c'est juste binaires. vous pouvez l'écrire dans l'assemblage, mais cela a une structure complexe. vous devriez probablement l'écrire en C, car il se traduit directement en code machine lorsqu'il est compilé, il est plus rapide que le C#/C++ et plus simple que l'assemblée
Oui et non.
Tout d'abord, il est important de se rappeler que, quelle que soit la langue de votre choix, à la fin de la compilation produit est en langage d'assemblage (ou, plus exactement, le code machine). Même les interprètes (comme la disponible interprète) sont, à la fin de la traduction de vos scripts en code machine.
Mais c'est sans doute trop technique et manque le cœur de votre question:
"Puis-je écrire un système d'exploitation dans un langage de niveau plus élevé?"
Les réponses sont à la fois personnelles et techniques.
Tout d'abord, le côté personnel: si vous ne savez pas encore comment écrire un système d'exploitation dans un mélange de langage assembleur et C, alors vous n'avez absolument pas d'essayer votre main à l'OS de la conception.
Souvent ceux qui sont nouveaux à la programmation de ces sortes de questions, parce qu'ils veulent faire quelque chose d'aussi cool que l'écriture d'un nouveau système d'exploitation sans tous les apprentissages nécessaires à même de tenter un tel projet. Ils se demandent si les langages de niveau supérieur peut être un moyen de contourner tout ce qui malpropre étude.
Donc, si, dans votre cœur-des-cœurs, ce qui est ce que vous êtes après, arrêter maintenant. Stop, stop, stop. Devenir bon à quelque chose est difficile de travailler. Il n'y a pas de raccourcis. Être prêt à retrousser vos manches et préparez-vous certains le syndrome du canal carpien.
Qui n'empêche toutefois pas à la suite d'un chemin de l'éventuelle OS design! Si c'est votre passion, alors commencer par le haut et de travailler votre chemin vers le bas. Obtenir des livres sur les protocoles réseau, la gestion de la mémoire, de filetage, etc, à s'attaquer à chacun des principaux sous-système et d'obtenir de bien la connaître. Vous ne pouvez pas écrire un nouveau si vous ne pouvez pas utiliser un ancien!
Ensuite lu des livres sur le système d'exploitation de conception et de mise en œuvre jusqu'à ce que vous rêvez processus de méthodologies de gestion.
Suffit de garder à l'esprit, la somme de connaissances nécessaires (et pas seulement des opérations de l'ordinateur, mais des constructions sociales comme APIs) est immense. C'est un long voyage et gratifiant. Si on aime vraiment ce métier comme je le fais, vous serez heureux que vous avez pris le temps même si vous n'avez jamais réellement écrire un OS.
Maintenant, la réponse technique. Vous allez avoir besoin d'un chargeur de démarrage, et qui doit être écrit en langage d'assemblage. Après tout, votre processeur ne sait pas C#. Passé le chargeur de démarrage de la phase, vous pouvez écrire votre système d'exploitation code dans n'importe quelle langue que vous voulez et ça va fonctionner, en supposant que votre langue peut compiler en code machine binaire (et non de pseudo-code binaire!)
Cependant, même dans nos "surabondance de cycles" environnement informatique, un système d'exploitation doit être simple et efficace et c'est presque impossible à réaliser dans un langage de plus haut niveau, d'autant plus dans un langage interprété.
Les Chances sont, vous aurez besoin d'écrire votre propre compilateur/interpréteur de ce langage donné comme une composante essentielle de votre système d'exploitation. De base compilateur serait susceptible de permettre uniquement un sous-ensemble restreint de la langue (et que vous ne souhaitez bootstrap par la rédaction d'un plus robuste compilateur dans le cadre limité de sous-langage). Sinon, les performances seront insondable.
Mais tout cela est horriblement complexe et une vraie discussion de ces questions exige une connaissance approfondie, vous avez probablement manque actuellement. Mais si vous avez le lecteur à faire, vous pouvez facilement changer cela, et puis je serais heureux de débat approches toute la journée!
Si il vous fait vous sentir mieux, je ne connais pas assez pour écrire un système d'exploitation, et encore je suis assis autour de la rêverie, à essayer de comprendre comment beaucoup d'un OS pourrais-je sortir avec écrit en python. 😉
Oui. L'utilisation de l'assembleur. Je voudrais l'utiliser de Suite. Genres était un os fait par symbolics** codé en Lisp. C est principalement utilisé car il est digne de confiance, on sait comment cela fonctionne. Et il existe des compilateurs c pour chaque CPU dans l'univers. Les compilateurs c sont simples à construire.
** Symbolics inscrit le premier domaine sur l'internet. (fait intéressant)
Sûr. Vous pouvez utiliser pure en assembleur ou en choisir un autre langage de haut niveau.
Mais vous ne voulez pas. Parce que la quantité de code assembleur nécessaire dans un système d'exploitation moderne est plutôt faible. La plupart du code dans un OS n'a pas besoin à ce faible niveau.
C donne un beau niveau intermédiaire d'abstraction qui permet encore à l'écriture, plutôt au code de bas niveau, tandis que ne pas avoir à traiter avec tous les détails que l'assembleur développeurs doivent faire face.
Edit: une fois que vous retirez de l'assemblée de l'équation, il devient beaucoup plus compliqué. La configuration d'un décent système d'exploitation nécessite l'exécution de plusieurs instructions de code qui ne sont tout simplement pas représentés dans les langages de haut niveau (parce qu'ils sont très, très spécifique à la machine). Vous pourrait théoriquement produire du code machine pur dans un blob binaire et de sauter à cet endroit depuis un langage de haut niveau, mais je considère que la tricherie, comme vous pouvez vous en sortir avec ce blob binaire en premier lieu.
Oui, MenuetOS est un exemple d'un système d'exploitation écrit en utilisant uniquement de l'assembleur.
Que vous ne semblent pas être intéressés par l'assembleur voir aussi JNodeun système d'exploitation écrit en Java, et Singularitéun système d'exploitation écrit en C#.
Il y a de nombreuses tentatives pour créer du matériel de mise en œuvre de la JVM. Bien sûr, un système d'exploitation pour ce matériel serait écrit en Java.
Voir par exemple: http://www.jopdesign.com/
Aussi Nokia S40 semble être surtout développée en Java.
Sûr. Code C/C++ est compilé en code ASM, mais il y a beaucoup d'autres langues, vous pouvez utiliser de la même manière.
Vous pourriez ne pas être en mesure d'utiliser le Java ou le C# car elles reposent sur une Machine Virtuelle et qui pourrait être écrit en C.
En fait, je crois qu'il y avait un projet de création d'un système d'exploitation basé sur le langage LISP, mais il a échoué.
Sûr. Tant qu'il y a un compilateur disponible qui peut produire la machine de code, n'importe quelle langue va faire.
Découvrez http://common-lisp.net/project/movitz/. C'est un OS entièrement écrit en Lisp. Je pense qu'il a sa propre assmebler les, par exemple Lisp en code machine traducteur.
J'aime l'idée d'OS sans C/C++ et surtout basé sur Lisp.
Oui. Évidemment, tout est possible dans l'assemblage, mais souvent pas pratique. Il y a eu quelques tentatives de rendre les systèmes d'exploitation en code managé (.NET, Java) avec des degrés variables de succès.
Si tu le voulais vraiment, alors oui, vous pouvez écrire tout un système d'exploitation sans l'aide de l'Assemblée, en C ou en C++, mais je recon c'était juste une taille de temps. Vous pourriez obtenir un éditeur binaire et le programme complet de la langue en Binaire ou en Hexadécimal si vous voulez, il prendrait des lustres, mais c'est tout à fait possible.
vous pouvez l'écrire dans code machine? bu c'est juste binaires. vous pouvez l'écrire dans l'assemblage, mais cela a une structure complexe. vous devriez probablement l'écrire en C, car il se traduit directement en code machine lorsqu'il est compilé, il est plus rapide que le C#/C++ et plus simple que l'assemblée