|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() passe le balais et l'aspirateur Inscription : mars 2008 Messages : 111 ![]() |
je susi en train d’essayer de develloper un OS multitache, mais j’ai un petit problème de choix d’architecture
dans mon projet toute les Xms l’interruption du compteur se déclenche, les registres courant sont sauvegardé dans la pile, le programme regarde si le temp alloué a la tache courante est dépassé si oui il bascule sur une autre tache si non il restore les registres et le programme continu mon problème vient dans le choix de la position de sauvegarde de tout ces registres, pour les registres courants pas de problème je pense les sauvegarder dans la pile reservé a la tache mais pour ce qui est des registres de segment je sèche 1eme solution chaque tache uttilise des segment de la table global et je sauvegarde a chaque basculement de tache les registre dans une table prévu a cet effet avantage: simple (enfin je trouve) incovénient: je ne sait pas comment organiser le gestionnaire de mémoire qui va avec 2ere solution envisagé: chaque tache a sa propre table de descripeur local a chaque basculement de tache je sauvegarde uniquement la position dans la pile(sp) et le segment du descripteur local (les registre de segment sont alors sauvegardé sur la pile) avantage: chaque tache ne peut pas voir les autres tache et a l’impression de s’executé seul et peut s’organiser de la manière souhaité (seul obligation le registre de segment de pile doit etre fixe) inconvénient: j’en voie pas pour le moment 3eme solution uttiliser les TSS du processeur (mais alors la j’ai rien compris) Qu’est ce que vous en pensez de ces idées? |
|
00
|
|
|
#2 |
|
Membre du Club
![]() Frédéric Inscription : mai 2009 Messages : 36 ![]() |
Bonjour bifur,
Utiliser les TSS est la meilleure solution, puisque c'est le processeur qui s'occupe de tout. Mais, comme tu le dis, c'est pas très simple à mettre en œuvre, surtout si on débute. Si tu fais un OS en mode réel 16-bit, tu ne peux pas utiliser les TSS. La deuxième solution me semble la meilleure. Mieux vaut utiliser la pile pour sauvegarder tes registres, pour éviter d'allouer de la mémoire ailleurs, où si tu n'as pas encore de gestionnaire d'allocation de mémoire. De plus, pas mal d'OS, dont Linux, utilises la pile de la tâche pour sauvegarder l'état des registres. C'est également ce mécanisme que j'utilise dans mon OS. Autre chose, j'ai vu que tu utilises un "temp" avant chaque changement de tâche. Je ne conseille pas vraiment d'utiliser un truc de ce genre, du simple fait que cela diminue la réactivité de l'OS, donc, en gros, sa vitesse. Tommy |
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() passe le balais et l'aspirateur Inscription : mars 2008 Messages : 111 ![]() |
mon (projet d')OS sera en mode protégé(j'en ai deja fait un petit en mode réel Flat mais c'est trop restrictif)donc je pourrait uttiliser les TSS,
Est ce que tu aurait de la doc la dessus? j'ai la doc d'intel et j'aimerait avoir un autre point de vue sinon, c'est pas que j'uttilise un "temp" avant chaque changement de tache mais plutot l'IRQ0 pour actionner le commutateur de tache (dans un premier temps 200 commutation par seconde) |
|
00
|
|
|
#4 | |
|
Membre du Club
![]() Frédéric Inscription : mai 2009 Messages : 36 ![]() |
Citation:
Et puis, si tu désires faire un OS 64-bit par la suite, l'utilisation des TSS est fortement déconseillé, parce qu'en mode 64-bit, les TSS sont encore plus difficile à mettre en place, car leur structure change radicalement. Donc, il vaut mieux garder la pile. Ah! Dans ce cas, je n'ai rien dit. |
|
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() passe le balais et l'aspirateur Inscription : mars 2008 Messages : 111 ![]() |
bon il ne me reste plus qu'as programmer tout ça (je me demande si je vais pas rester sur du flat
|
|
00
|
Copyright © 2000-2013 - www.developpez.com