<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>Posté à l'origine par benR:
Dans ce cas là nous jouons sur les mots....
<HR></BLOCKQUOTE>
peut on dire "le multitache d'os9 est préemptif" ?
Non et tu le sais très bien. C'est une simplification abusive de mes propos. Ne me fais pas dire ce que je n'ai pas dit.
je dis non, parce que s'il fau tse battre pour le mettre en oeuvre, ca craint. osX est préemptif dans le noyau, indépendamment des appli et de l amanière dont elles sont écrites. et ca me semble plus intéressant[
Je vois quand même que tu sembles plus réceptif à mes dires, vu que tu ne mets plus en doute l'existence d'une
possibilité de multitache préemptif sous OS 9. Il y a du progrès
C'est pas parce que tu n'as jamais entendu parlé de quelque chose, ou ne l'a jamais vu, que ca n'existe pas.
Sous OS X, Classic (ancien nom = Blue Box), tourne dans un process Unix, exactement comme une appli. Or OS X est préemptif, d'accord? Est-ce que pour autant Classic
en lui-même est préemptif? Est-ce que tu peux lancer deux applis Classic en même temps? Est-ce si une appli Classic se bloque, les autres applis Classic continuent de tourner? La réponse est non bien sur. T'es toujours d'accord là?
Ben tu vois sous OS 9, c'est devenu pareil: le système tourne dans une
unique tache préemptive (appellée "Blue task": tu reconnais rien, là?) gérée par le kernel en parallèle avec d'autres taches préemptives.
C'est ce qu'explique les technotes.
Alors pourquoi Apple a fait ça sous OS 9? Je suis quasi sur que c'est ce qui permet au système OS 9 standard de tourner dans un process Unix préemptif.
Je vais donc t'apprendre un autre truc
: même sous OS X, si tu veux avoir plusieurs taches préemptives
au sein de ton appli (je parle pas d'applis distinctes), c'est autant la galère que sous OS 9. Pourquoi? Parce que Carbon = Toolbox de MacOS Classic (essentiellement) et la ToolBox n'a jamais été concue pour travailler dans un environnement préemptif.
Alors comment est-ce possible que plusieurs applis Carbon fonctionnent en meme temps dans un environnement préemptif? Simplement parce que
grâce à la mémoire protégée, chaque appli Carbon dispose de sa propre ToolBox!
Tu vois ce que je veux dire?
Par contre, si tu veux plusieurs taches coopératives, pas de problèmes sous OS 9 ou sous OS X.
Pour Cocoa, je sais pas.
Maintenant, sous OS 9, c'est tout à fait possible de mettre une partie du code de ton appli en multitache préemptif, et c'est alors le kernel qui gère son temps processeur. A une condition: qu'elle n'utilise pas la ToolBox. Donc en clair, tu peux pas mettre la partie interface graphique de ton appli dans une tache préemptive (QuickDraw va méchamment planter), par contre tu peux mettre des routines de calcul mathématique ou de compression par exemple.
Je vois d'ici ta question: "Alors pourquoi il n'y a quasiment pas d'applis qui utilisent ça? Ce serait vachement bien si Stuff-it pouvait faire sa compression dans une tache préemptive sous OS 9.". Là je ne peux te répondre que par une théorie (qui est aussi mon cas): les programmeurs MacOS Classic n'ont aucune expérience dans ce domaine de programmation n'ayant toujours fait que du coopératif, aussi ils préfèrent ne rien changer, d'autant plus que ca fonctionne plutot bien comme c'est.
Cela dit, nous attendons toujours tous avec impatience que tu nous expliques ou je me trompe dans l'interprétations des technotes que j'ai cité