Système et noyau
Message de Arnaud Rolly du 1 Mars 2000
> PAREDE Stéphane a écrit :
> >
> > Bonjour,
> >
> > On a parle recemment de gestionnaires de
> > demarrage (ou boot loader si vous preferez). J'en
> > ai decouvert un par hasard : XOSL (Extended
> > Operating System Loader) qui a l'air tres bien et
> > complet.
>
> A propos j'ai voulu installer GAG (en 20 seconds bien sur), mais les
> problèmes n'ont pas manqués, impossible de booter linux (non support des
> initrd ?), puis comme bien sur je n'ai pas retrouver de disquette
> rescue, j'en ai un peu baver pour réinstaller lilo (qui de plus avait
> été écrasé lors de mes nombreuses tentatives ...).
> Je vais voir avec xosl mais si qqun sait si GAG peut booter sur des
> partition étendues et supporte les initrd je suis preneur de plus
> d'infos.
GAG fonctionne très bien chez moi.
Oui, il supporte le boot sur les partitions étendues.
Le initrd n'est pas géré par le gestionnaire de boot principal. GAG n'est donc
pas en cause.
Pour explication, voiçi ce qui se passe au boot :
Le BIOS charge le gestionnaire de boot (GB) en mémoire.
(le GB est sur la MBR)
Le BIOS donne la main au GB.
Le GB affiche ses infos.
L'utilisateur indique au GB ce qu'il veut lancer <=> L'utilisateur, sans le
savoir, demande au GB de booter sur la partition XXX.
Le GB charge le gestionnaire de boot secondaire (GBS), présent sur la MBR de la
partition XXX (pour simplifier, on peut dire qu'un disque a une MBR générale, et
une MBR par partition.
Le GBS charge l'initrd puis charge le kernel et donne la main au système
d'exploitation.
Pour plus d'infos : man initrd
Avec GAG, on a :
GB = GAG
GBS = LILO
Sans GAG, on a :
GB = GBS = LILO
Donc, pour que GAG puisse fair son boulot, il faut que LILO ne soit pas
installé sur la MBR principale, mais sur la MBR de la partition racine.
Dans /etc/lilo.conf, il faut 'boot=/dev/hdaX' au lieu de 'boot=/dev/hda'
(X étant le numéro de partition root)
=> Ne pas oublier de lancer lilo après avoir modifié les fichiers de conf.
(commande 'lilo')
Attention, il peut y avoir des pbs si le kernel ne se trouve pas dans les
premiers 1024 cylindres du disque dur (pb de BIOS).
Message de Franz Albert VanDenBussche du 1 Mars 2000
Simple complément d'explication.
Se souvenir que l'architecture d'un DD reprend la base de l'architecture
d'une disquette à laquelle on a ajouté un fonction 1 DD= x DK, d'où la
présence du MBR (caque partition étant une "disquette"). Donc l'architecture
est:
Disquette
boot record
espace data
Disque dur
MBR
boot record
table de partition:
adresse partition 1
adresse partition 2
adresse partition 3
adresse partition 4
Partition 1
- BR (boot record)
- espace de data
Partition 2
- BR (boot record)
- espace de data
Partition 3
- BR (boot record)
- espace de data
Partition 4
- BR (boot record)
- espace de data
et est apparue la notion de partition étendue, dans ce cas (prenons la 4 par
exemple)
Partition 4
- BR
adresse partition 1
adresse partition 2
adresse partition 3
adresse partition 4
(et si il y a plus de 4 partition, l'adresse partition 4 renvoie à une
nouvelle table de 4 et ainsi de suite).
Pour en savoir plus (et vérifier que je dis pas de bétises) installez le
source LILO et lire le README.
Message de Pierre Castélla du 25 Juin 2000
Salut à tous,
Bon je sais pas si quelqu'un a répondu à ta question, lors du débat
philosophique qui a suivit la réunion de Samedi, alors je t'envois ces
quelques infos supplémentaires.
Pour répondre à ta question il faut d'abord, répondre à quelques questions
intermédiaires:
1) (Pour ceux qui ne savent pas) Qu'est ce qu'un OS (Operating System ou
système d'exploitation en bon français), c'est un programme qui fait le lien
entre le hardware, c'est à dire tout les composants électroniques et les
périphériques qui composent la machine, et les programmes que doit exécuter
cette machine.
Un OS est donc composé d'un ensemble de fonctions qui permettent:
- D'initialiser l'électronique et les périphériques de la machine.
- De fournir des routines permettant la gestion du matériel (accès aux
périphériques, gestion des ressources ...)
- De lancer d'autres programmes, qui devront faire appel à ses services pour
accéder au hardware.
Voilà donc les bases d'un OS.
2) Qu'est ce le 8, 16 et 32 bits ?
Pour cela, je pense qu'il est bon de regarder ce que sait faire un
microprocesseur puisque c'est lui qui exécute l'OS et les autres programmes.
Dans tout jeu d'instruction d'un micropro. on retrouve au moins les
instructions suivantes:
Opérations arithmétiques: Addition, soustraction, multiplication et division.
Opérations logiques: ET, OU, NON, XOR (ou exclusif).
D'affectations: Met telle valeur X (cste) dans à l'adresse Y, prend le contenu
de l'adresse X et met le à l'adresse Y.
Des test: compare la valeur A à la valeur B.
Des sauts inconditionnels: exécute le code se trouvant à l'adresse X.
Des sauts conditionnels: ces instructions font suite à un test, et peuvent
s'interpréter de la forme, si le résultat du test est l'égalité alors exécute
le code à l'adresse X sinon continue à exécuter le code suivant.
Pour être plus complet il faut coupler ces instructions aux trois formes
d'adressage de base:
L'adressage immédiat: la donnée à manipuler se trouve dans l'instruction elle
même ex: Met 15 dans l'accumulateur (je rappelle au passage que l'accumulateur
est l'organe du microprocesseur qui exécute toutes les fonctions arithmétiques
et logiques, c'est à dire que c'est lui qui effectue toute la partie calcul).
L'adressage direct: la donnée à manipuler se trouve à une adresse qui est
contenue dans l'instruction ex: prend la valeur de la case mémoire 12 et met
la dans l'accumulateur.
L'adressage indirect: C'est de l'utilisation d'un pointeur c'est à dire que
l'instruction contient l'adresse d'une variable qui contient l'adresse de la
donnée à manipuler, ex: met la valeur de la case mémoire pointer par le
registre X dans l'accumulateur.
Voilà donc les fonctions de base que sait faire plus ou moins facilement tout
microprocesseur.
Maintenant définissons ce qu'est un microprocesseur 32, 16 ou 8 bits est quel
est l'intérêt du 32 bits.
Le nombre de bits d'un microprocesseur désigne en fait la taille de son
accumulateur c'est à dire la taille de la plus grosse donnée qu'il peut
manipuler en une seule fois, cela à une très grosse incidence sur la vitesse
d'un microprocesseur, car pour faire l'addition de 2 variables 32 bits par
exemple, il faudra 1 instruction à 1 micropro 32 bits, 3 instructions à 1
micro 16 bits 1 première pour faire l'addition des 16 premiers bits, et
seconde pour ranger le résultat dans une variable temporaire et un 3
troisième pour faire l'addition des 16 derniers bits et ainsi il faudra 7
instructions à un micropro. 8 bits pour faire la même addition, (et cette
augmentation du nombre d'instruction est encore pire dans le cas d'une
multiplication) d'où un premier intérêt pour le 32 bits, (dans le même style
d'idée tu peux facilement t'imaginer le temps gagner par un micro 32 bits
dans la comparaison de chaînes de caractères ou on peut ainsi comparer 4
caractères par instruction).
Mais cette description de l'addition de variables plus grande que
l'accumulateur, a aussi une autre retombée bien plus importante, le calcul des
adresses, et c'est elle qui va nous permettre de comprendre assez facilement
une des différence entre un OS 32 bits et 8 bits, car regardes à l'heure
actuelle les microprocesseur Intel dispose de 32 bits d'adresses soit la
possibilité d'adresser 4 giga de mémoire, dans le cas ou l'OS veut écrire des
données à des adresses consécutives en mémoire, dans ce cas il va charger la
valeur de l'adresse de départ puis va incrémenter celle ci de 1 après chaque
écriture, si l'OS a été écrit avec des instructions 32 bits cela va lui
demander 1 instruction, et 7 s'il a été écrit avec des instructions 8 bits,
ce n'est biensur qu'un exemple assez simple qui permet de comprendre la
différence entre un OS 8 et 32 bits, car plus tu rajoutes des instructions
plus tu rallonges ton programme et sa durée d'exécution, et surtout plus tu
augmente les risques d'erreurs.
On peut donc dire qu'un OS est 32 bits lorsque toutes les fonctions qui le
composent sont écrites avec des instructions 32 bits (en tout cas pour celles
ou cela est nécessaire, certaines fonctions n'ayant pas besoin de traiter des
données sur 32 bits), on se retrouve donc ainsi avec un OS optimiser pour
l'architecture du micro qu'il doit gérer.
Encore un peu juste pour le plaisir:
Car biensur un micro 32 bits sait très bien exécuter des instructions 8 bits,
on pourrai ainsi imaginer un OS destiné à une famille de microprocesseurs qui
aurai garder une compatibilité ascendante sur plusieurs générations, c'est à
dire que les micro actuel 32 bits, pourraient exécuter sans problème des
programmes écrits avec des instructions 8 bits pour les micro 8 bits des
anciennes générations.
Imaginons que dessus tourne un OS qui lui aussi aurai connu toutes les
générations des ces micros et dans lequel pour gagner du temps les
programmeurs feraient cohabiter des anciennes routines 8 bits, avec des
routines 32 bits de nouvelles générations (on pourrait même imaginer, mais
bon là s'est pas possible d'accoucher d'un truc pareil, que pour jeter un peu
de poudre aux yeux, les mecs se soient amuser de créer une sorte d'interface
graphique, entre l'os 8 bits et l'utilisateur, en utilisant des instructions
16 bits), et que maintenant cet l'OS doivent gérer des routines 8 bits pour
les applications d'anciennes générations, des routines 16 bits pour
l'ancienne interface graphique et 32 bits pour les nouvelles fonctions,
imagine un peu le sac de noeuds auquel ça pourrait conduire (car biensur un
truc pareil ne peut pas exister, c'est le contresens même de la logique
informatique), le nouvel OS passerai son temps à jongler avec des données
dans des formats toujours différents, comment dans ces cas là, interconnecter
toutes ces routines pour les faire communiquer entre elles, puisque aucune ne
gère des données dans le même format, cela conduirai à des erreurs de
partout, un tel système planterai tout le temps, et ne pourrai dépasser les
24 heures d'uptime, et tout le monde se refuserai à utiliser un tel système
(je pense même que l'OS pourrai écrire à l'écran d'où provient l'erreur dans
un charabia incompréhensible du style le liste des principaux registres du
micro avec leurs valeurs, le tout sur un joli fond bleu, car il parait que
c'est une couleur qui détend, car après avoir créer un truc pareil on ne
serait plus à ça près, de la part des concepteurs :).
Mais bon faut pas s'en faire un truc pareil ne peut pas exister, sinon
ça se saurait ....
Pierre CASTELLA