Question Est-ce que chaque OS a besoin de RAM?


Existe-t-il un système d’exploitation pouvant être utilisé sans RAM, en particulier le type de clé USB que je peux créer et utiliser sur l’ordinateur? Cela devient gênant, car le démarrage consiste essentiellement à charger le système d'exploitation en RAM.

Remarque: Au départ, je voulais savoir sur un système d'exploitation sans RAM pour vérifier si mon ordinateur portable (qui ne démarre pas mais présente un écran vierge) avait mal tourné, mais j'aime la façon dont cette question a fait boule de neige.


77
2017-08-31 08:12


origine


Je ne suis pas sûr si un processeur peut même fonctionner du tout sans RAM, cela peut être une bonne question pour Computer Science.SE. Ce que je sais avec certitude, c'est que vous n'irez nulle part si vous n'arrivez même pas à dépasser le BIOS.
@ AndréDaniel un processeur a un cache qui, du point de vue CS, est également une mémoire vive. Alors en théorie vous n'avez pas besoin de modules de RAM supplémentaires. Mais en pratique Je doute que l'architecture x86 le permette. - Philipp
Tous ces arguments sur l'utilisation du cache du processeur sont d'une validité discutable, car, au moins sur x86, le cache n'est pas une mémoire à laquelle vous pouvez accéder directement. Votre code fait toujours référence à la mémoire vive, mais le processeur gère automatiquement ses caches pour qu'il ne soit pas obligé de récupérer les données de la RAM pour les données les plus fréquemment utilisées. Mais là encore, il n'y a pas d'instructions d'assemblage pour dire "stockez ceci dans le cache" "écrivez ceci dans le cache", il y a des registres et il y a de la mémoire principale (avec tous ses modes d'accès étranges), point. - Matteo Italia
(OTOH, en théorie, vous pourrait exploiter d'autres RAM (par exemple, la RAM vidéo) ou des périphériques mappés dans l'espace d'adressage physique) - Matteo Italia
Les processeurs x86 modernes vous permettent de placer le cache sur puce en mode "Cache as RAM" - je pense que certains MSR doivent être configurés pour cela. Cela peut également s'appliquer à certains processeurs ARM. Le cache sur les processeurs modernes est en plus grande quantité que ce que vos premiers PC pourraient avoir comme mémoire maximale. Sur un PC, le micrologiciel ne démarre toujours pas sans la RAM présente. Vous avez besoin d'un micrologiciel personnalisé ou de quelque chose qui ne soit pas une plate-forme PC. - LawrenceC


Réponses:


Est-ce que chaque OS a besoin de RAM?
Pour le matériel compatible IBM PC, un obligatoire étape du Processus POST du BIOS est de vérifier s'il y a de la RAM pour charger le BIOS dans. Le processus POST vérifie éventuellement les fonctions de votre RAM. Après le processus POST, le BIOS charge le chargeur de démarrage dans la RAM et donne le contrôle au chargeur de démarrage. Donc, la réponse à votre question ("Tous les systèmes d'exploitation ont-ils besoin de RAM?") Est: Oui, chaque matériel compatible IBM PC nécessite au moins une RAM fonctionnelle pour démarrer. Cela est vrai pour tout système d'exploitation qui s'exécute sur ce matériel.

Notez que dans la question originale de l'OP, il y avait une référence à un "ordinateur portable", que j'ai interprété comme: Matériel compatible IBM PC. Pour le reste de cette réponse, je suppose un matériel compatible IBM PC.

Un système d'exploitation peut-il démarrer avec une RAM défectueuse?
Si votre RAM est défectueuse (et pas complètement absente / cassée) ou si vous pouvez remplacer (partiellement) votre RAM, vous pourrez peut-être démarrer avec le BadRAM de BadMEM patchs du noyau. Il vous faut recompiler le noyau (cela semble plus facile que si vous le faites pour la première fois) et vous pouvez redémarrer et dire au noyau où se trouve votre mauvaise mémoire. Une belle explication de l'utilisation de Memtest86/Memtest86 +, BadRAM / BadMEM peut être trouvé ici.

Un système d'exploitation peut-il démarrer sans RAM et utiliser le cache du processeur en tant que RAM?
Autant que je sache, il n'y a aucun moyen d'utiliser le cache de votre CPU en tant que RAM sans aucune mémoire vive présente sur votre système (comme le suggèrent @philipp et autres) dans les commentaires. Si c'est le cas, ce serait bien de l'ajouter ici. Le seul document que j'ai pu trouver sur ce sujet est ce papier qui indique: "Utiliser le cache du processeur en tant que RAM jusqu'à ce que la RAM soit initialisée". Je ne sais pas si (et comment) cela fonctionnera sans pour autant RAM. Pour autant que je sache, il n'y a pas de travail code qui démarre un système d'exploitation sur un PC compatible IBM. Toute référence à la preuve de concept, au code de travail ou à tout autre élément est la bienvenue dans les commentaires et je l’ajouterai à cette réponse.

Puis-je accéder au BIOS?
La question de l'OP est un peu vague si l'ordinateur portable est capable de passer le POST du BIOS. Comme le souligne @Tonny, non OS vous aidera à "accéder au BIOS". Vous entrez dans le BIOS en utilisant le F1 ou F2 ou F10 ou DEL ou ESC clé, en fonction de votre marque de BIOS.

Comment récupérer les données de l'ordinateur portable sans RAM?
En ce qui concerne l'objectif derrière votre question: pourquoi avez-vous besoin d'accéder à votre ordinateur portable? Probablement parce qu'il y a encore des données sur le disque dur que vous voulez récupérer? Si tel est le cas, il est beaucoup plus facile de retirer le disque dur (voir le manuel) et de le connecter à un périphérique de stockage externe ou directement à un PC. Ici est un bon guide pour faire exactement cela.


96
2017-08-31 13:40



En pratique est possible de faire fonctionner une machine avec une RAM quelque peu défectueuse (par exemple, il n'y a qu'une seule banque qui ne fonctionne pas correctement). Si le BIOS ne le remarque pas (ou, s'il le remarque, il peut y avoir la substitution F1 habituelle), vous pouvez toujours exécuter un système d'exploitation comme Linux avec le correctif BadMEM / BadRAM, qui demande au noyau d'éviter les blocs de mémoire spécifiés. - Matteo Italia
@VusP: pour vérifier votre RAM, utilisez un livecd / -usb avec Memtest86 / Memtest86 +, ignorez le test de RAM dans votre BIOS et lancez le memtest depuis le livecd / -usb. - agtoever
Qui a dit que tester la RAM au démarrage est "obligatoire"? Il était courant que les machines aient quelques Mo ou moins, mais sont rapidement devenues facultatives au fur et à mesure que les tailles augmentaient et que le temps devenait prohibitif. - Andrew Medico
@agtoever: Hein? L'astuce cache-as-RAM ne s'arrête pas soudainement lorsque la RAM est initialisée. Il est juste que, à ce stade, il est insensé d'éviter la RAM, donc personne ne tente jamais. Mais le truc n'a rien à voir avec la RAM non initialisée; c'est juste quand c'est utile. - Mehrdad
@ Salut-Angel, il ne peut pas exécuter directement à partir du disque, car le processeur ne peut pas accéder directement au contenu du disque. Il doit pousser des commandes dans le contrôleur de disque et attendre qu'il transfère des blocs de données d'un disque à un autre dans RAM. Seulement à partir de là, le processeur peut exécuter directement des instructions. - psusi


C'est possible en théorie, mais cela serait très lent, car il faudrait utiliser le disque pour tout stockage temporaire qui ne rentre pas dans les caches du processeur. (Les processeurs ont quelques mégaoctets de cache car même la RAM est trop lent pour eux. Pensez-y.) Vous avez donc besoin d'un système d'exploitation plutôt petit.

(Eh bien, systèmes embarqués sur puce pouvez exécuter du code à partir de la mémoire RAM ou de la mémoire Flash interne - le BIOS du PC pourrait en théorie faire de même, mais il ne peut pas exécuter l’ensemble du système d’exploitation.

Mais une autre chose est que le BIOS tourne avant et à l'extérieur tout système d'exploitation installé, et c'est le BIOS qui vous permet de démarrer à partir d'une clé USB ou autre. Donc, si vous ne pouvez pas atteindre le BIOS, alors non d'autres systèmes d'exploitation dans le monde vont vous aider.


33
2017-08-31 12:25



Il se peut qu'un processeur puisse utiliser son propre cache au lieu de la RAM. Cela pourrait être une fonctionnalité utile pour les parties du code BIOS, qui s'exécutent avant le test de la mémoire. Mais faire fonctionner d'autres matériels sans RAM pourrait être difficile. Vous ne seriez pas en mesure de faire du DMA, donc les E / S disque devraient être effectuées différemment. Je suppose que le BIOS n'essayerait même pas de charger un système d'exploitation, si aucune mémoire RAM utilisable n'a été trouvée. La taille du cache pose toutefois moins de problèmes. Un peu de Mo peut ne pas être beaucoup par rapport aux normes modernes, mais un système d'exploitation de l'époque où un Mo de RAM était beaucoup, devrait toujours fonctionner sur les ordinateurs modernes. - kasperd
@kasperd le DEC Alpha a été conçu pour exécuter sa toute première étape d'initialisation à la mise sous tension à partir du cache, préchargée à partir d'une "ROM série". Cela était dû au fait que le processeur ne pouvait pas accéder à la mémoire vive, à la mémoire ROM conventionnelle ou à toute autre ressource mappée en mémoire (qui incluait tous les périphériques E / S, IIRC) jusqu'à l'initialisation des tables de pages. - zwol
@grawity qu'en est-il des SSD? - TechLife
@ TechLife: Encore plus lent que la RAM par plusieurs ordres que la magnitude. Bien que, je suppose, si vous deviez l'utiliser comme RAM ... ce serait juste appelé RAM, donc encore non. - grawity


Vous pourriez, avec un certain effort, concevoir un système ne contenant pas de RAM. Chargez votre logiciel depuis la ROM (ou le stockage) et faites tout dans les registres ou dans le cache. Un tel système aurait une utilisation exceptionnellement étroite et, compte tenu des prix actuels de la RAM, il serait un peu inutile. Un ordinateur portable standard ne fonctionnera pas sans mémoire embarquée.

Votre vraie question est plus probablement "Comment puis-je obtenir des informations d'un ordinateur qui ne démarre pas" et c'est facile. Démontez-le, retirez le lecteur et connectez-le à un boîtier de lecteur externe.

Notez, cependant, que tout ordinateur suffisamment ancien pour que vous ne puissiez pas obtenir seulement 20 $ de RAM de travail aura un lecteur ATA (normal ATA, pas SATA). Cette interface est presque éteinte aujourd'hui, vous devrez donc également trouver un boîtier de disque avec une carte ATA ainsi qu'un adaptateur pleine grandeur. J'en ai un que j'ai acheté en 2000, et je garde quelques vieux cas juste à cet effet.


15
2017-08-31 23:41



D'accord. Pas de RAM signifie pas de pile, ce qui signifie pas la possibilité d'appeler une routine. Tout code qui pourrait fonctionner dans cette situation devrait être soigneusement assemblé à la main. - Loren Pechtel
Vrai. J'ai vu du code qui a fait ça bien. (J'étais la première partie d'une routine du BIOS avant l'initialisation du contrôleur de mémoire). - Hennes
@ LorenPechtel Ce n'est pas tout à fait vrai. La pile peut être (et est souvent) stockée dans la mémoire intégrée. - reirab
@ LorenPechtel pas nécessaire. ARM n'utilise pas de pile pour appeler une routine. - domen
Pour autant que je puisse voir, ces puces ont une mémoire SRAM interne ... qui compte comme RAM. - domen


Si je lis correctement la question, tout le monde ici aboie le mauvais arbre.

Il déclare explicitement "pour accéder au BIOS".

Si l'ordinateur portable est tellement cassé qu'il ne sera même pas entré dans le BIOS, tout le reste est inutile.

Vous ne pouvez pas démarrer ANY OS là-dessus, quelle que soit la situation de la RAM.


10
2017-09-02 07:45





Votre supposition que la mémoire est mauvaise est probablement invalide. Si vous n'obtenez aucun bip ou message à l'écran, la cause principale est presque certainement un processeur défaillant (plutôt improbable) ou une carte mère défaillante (très probable). Les cartes mères tombent en panne avec le temps en raison des joints de brasage à froid, qui étaient fréquents dans les premiers jours du mouvement ROHS et de la nécessité d'utiliser une brasure sans plomb. Les techniques de fabrication ont été optimisées pour l'utilisation de la soudure à base de plomb et l'industrie a mis du temps à comprendre et à résoudre les problèmes. De nombreux fabricants de composants n'étaient pas très disposés à dépenser de l'argent pour mettre à niveau leurs processus. Après tout, les appareils testaient et brûlaient très bien, seulement pour échouer des mois ou des années plus tard, après l’expiration probable de toute garantie. Ce n’est qu’avec un nombre croissant d’échecs et d’intenses réactions négatives des utilisateurs que les fabricants ont commencé à améliorer les choses. Sur un tel ordinateur portable, le fait de faire refaire la carte mère pour rectifier les joints de soudure à froid est presque certainement un coût prohibitif.


8
2017-09-01 10:42



C'est possible, mais la mauvaise mémoire n'est pas une mauvaise idée non plus. J'ai vu de la mauvaise mémoire (et même de mauvaises prises de mémoire) provoquer une défaillance de la POST plusieurs fois auparavant. Bien sûr, la vérification de la mémoire la plus simple consiste généralement à essayer de démarrer avec différentes clés retirées ou à démarrer avec une seule clé connue. Si cela résout les problèmes, il s'agissait soit de la mémoire, des emplacements de mémoire ou du contrôleur de mémoire. - reirab


La plupart des premiers ordinateurs des années 1980 ou environ avaient un type de système d’exploitation (pilotes matériels, prise en charge IO, chargement de programme, interface de ligne de commande très simple, etc.) dans la puce ROM. Il pourrait fonctionner quelque peu même si les puces de mémoire étaient inutilisables. Cette fonctionnalité était utilisée dans les versions de contenu ROM spéciales conçues pour exécuter des tests matériels et communiquait principalement via les voyants du bip et du clavier.

CPU dispose de plusieurs registres pour mémoriser au moins l'adresse de la commande exécutée, mais ceux-ci ne sont normalement pas appelés RAM.

Le code C standard ne peut pas s'exécuter dans un système sans RAM car il utilise la mémoire de la pile pour allouer des variables et la pile est dans la RAM. Lorsqu'un ordinateur récent démarre, une RAM dynamique normale n'est initialement pas disponible, car le dispositif de rafraîchissement de la RAM nécessite une configuration initiale pour fonctionner. Le code d'assemblage s'exécute en premier et effectue l'initialisation de la carte mère. La RAM commence à fonctionner, puis le code C peut s'exécuter.


5
2017-09-02 17:00



Le dernier paragraphe n'est pas tout à fait vrai. La pile ne doit pas nécessairement être en mémoire vive. Il est en fait assez courant que la pile se trouve dans la mémoire intégrée. Même sur des machines normales, la pile du thread en cours d'exécution sera généralement en cache et ne sera transmise à la mémoire DRAM que lorsque le planificateur échange des threads. J'ai écrit du code pour les DSP, cependant, où la pile se trouvait dans une mémoire directement accessible et ne touchait jamais la DRAM. Bien sûr, je suppose que vous pouvez prétendre que la mémoire intégrée est techniquement la RAM dans ce cas. - reirab
En outre, il n'est pas rare que certains paramètres et valeurs de retour soient transmis aux fonctions C à l'aide de registres (plutôt que de la pile). De plus, les compilateurs C stockent généralement les variables locales dans des registres plutôt que dans la pile. Vous pouvez même demander spécifiquement au compilateur de placer une variable particulière dans un registre en utilisant le mot-clé 'register'. Bien sûr, une fois qu'une fonction a besoin de plus de variables locales que vous en avez besoin, vous devrez vous mettre en mémoire, mais c'est une contrainte matérielle qui s'applique quel que soit le langage de programmation. - reirab


Lorsque je suis allé à l’université en 1967, le département informatique avait un Stantec Zebra. La mémoire consistait en un tambour magnétique de 8192 mots. Il y avait aussi 12 registres et deux accumulateurs. Vous pourriez considérer cette RAM mais pas comme nous la connaissons.


4
2017-09-03 08:45





Vous auriez besoin au moins du cache de la puce pour les registres (essentiellement une très petite quantité de RAM sur la puce) afin que l'unité d'exécution du processeur puisse fonctionner. Donc, même votre CPU a 'RAM'.

Aucun système d'exploitation Von-Neumann n'a été conçu sans l'exigence de mémoire, je crois.

Donc non.


3
2017-09-02 11:17





Comme pour toutes les autres personnes ici, je suis d'accord sur le fait que vous avez besoin de RAM et que vous ne pouvez pas travailler sans elle, mais je lis aussi ce qui suit:

(A l'origine, je voulais charger un système d'exploitation sans RAM pour vérifier si la RAM avait   a mal tourné, mais j'aime la façon dont cette question a fait boule de neige.)

Cela existe réellement dans le BIOS, il y a une fonction pour vérifier la RAM en profondeur. Lors du démarrage et de l’introduction dans le BIOS, désactivez l’option «Auto-test de démarrage rapide», qui effectuera une vérification complète de votre RAM. Cette option devrait être située dans les "fonctionnalités avancées du BIOS", quelque chose comme le second choix sur les BIOS AMI.

J'espère que cela vous mettra un peu plus loin. ;-)


3
2017-09-03 05:45