Précédent   Forum du club des développeurs et IT Pro > Autres langages > Assembleur > Programmation d'OS
Programmation d'OS Programmation de systèmes d'exploitation
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 07/12/2010, 09h06   #1
bifur
Membre habitué
 
passe le balais et l'aspirateur
Inscription : mars 2008
Messages : 111
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : passe le balais et l'aspirateur

Informations forums :
Inscription : mars 2008
Messages : 111
Points : 126
Points : 126
Par défaut multi coeur, multi processeur

bonjour,
je suis en train d'essayer de créer un mini système d'exploitation et je me demander comment on fait pour executer deux programme en parallèle sur un ordinateur multi coeur/processeur, je me doute que chaque processeur doit avoir un jeu indépendant de registre (surtout cs:eip)
est ce que l'un des processeur est maitre et commande aux autres?
est ce qu'on uttilise un système d'intteruption? (avec des tables d'interruption spécifique a chaque processeur)
au démarrage on est en mode protégé, seul l'un des processeur doit etre actif et les autres en sommeil, comment faire pour les activer?

si quelqu'un a une bonne doc sur le sujet je suis preneur
bifur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 23h26   #2
Aesgar
Invité régulier
 
Inscription : juillet 2009
Messages : 4
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : juillet 2009
Messages : 4
Points : 9
Points : 9
Salut,

Rendre ton OS multi-core n'est pas extrêmement complexe, mais il faut être assez rigoureux. Comme tu l'as deviné, chaque processeur possède son jeu de registre.

Bon, je suis pas un expert là dessus mais en gros :

Les processeurs peuvent être détecté dans la table ACPI.

Il faut les démarrer (en leur envoyant une sequence d'interruption) puis les passer en mode protégé, charger la GDT, l'IDT, Le TSS (puisque ce soit des registres différents) pareil pour la pagination.

Je sais pas exactement comment ça marche mais tu as des interruptions inter-core.

Ensuite, tous les processeurs sont à égalité (pas de maitre/esclave), ils travaille en collaboration. Tu dois avoir un kernel thread-safe (et pas qu'un peu ). Pour ça il faut utiliser des instructions atomiques (avec le prefixe LOCK: ).

Pour la doc, j'ai du mal à trouver, mais voilà un tuto pas trop mal :
http://www.cheesecake.org/sac/smp.html

J'espère t'avoir éclairer un peu. Si tu as des questions n'hésite pas
Pour mon propre OS, j'en suis pas encore là, mais j'ai une question : Quel VM tu utilises pour simuler plusieurs coeurs ?
Aesgar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/02/2011, 14h45   #3
bifur
Membre habitué
 
passe le balais et l'aspirateur
Inscription : mars 2008
Messages : 111
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : passe le balais et l'aspirateur

Informations forums :
Inscription : mars 2008
Messages : 111
Points : 126
Points : 126
merci pour la doc, pour ce qui est de la VM j'en uttilise pas, j'ai un pc complet dédié aux test, mais c'est un vieux pentium2 alors il ne supporte pas le multicoeur,

pour le moment j'ai pas d'os multitache, il n'est qu'au stade du dos like en "flat real mode" je voulait savoir comment ça marchait grosso modo avant de définir le fonctionnement de la version multitache

il va falloir que je me renseigne a fond sur l'APIC avant de continuer
bifur est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h58.


 
 
 
 
Partenaires

Hébergement Web