2010-03-13 5 views
1

Je suis en train de lire un livre qui compare deux façons de mettre en œuvre des threads, des threads de middleware et des threads de système d'exploitation. Je ne sais pas ce que le sens de ces phrases sont exactement:.. « Une difficulté du système d'exploitation multithreading, cependant, est en tête des performances Comme il est le système d'exploitation qui est impliqué dans les discussions de commutation, cela implique des appels système Ce sont généralement plus coûteux que les opérations de thread exécutées au niveau de l'utilisateur, où le middleware transactionnel fonctionne. " et Quelle est la relation entre les appels système et les performances?Quelles sont les difficultés du système d'exploitation multithreading?

+0

Quelle est la question? –

+0

Ceci est mis à jour! – ghedas

+0

Voici un * très * large aperçu des différences http://www.cs.cf.ac.uk/Dave/C/node29.html#SECTION002920000000000000000 – zebrabox

Répondre

1

le livre est probablement un peu daté, fils de middleware (fibres aka) étaient populaires abo il y a 10 ans. Oui, les commutateurs de contexte sont relativement chers, entre 2000 et 10 000 instructions CPU. Ils nécessitent une transition du noyau et l'acquisition d'un verrou global. Le thread utilisateur peut éviter une grande partie de ce coût, seul l'état de l'UC doit être changé.

Mais cela ne vient pas gratuitement:

  • Vous devrez créer votre propre planificateur
  • Lorsqu'un thread bloque l'utilisateur sur une opération d'E/S, tous les fils de l'utilisateur bloqueront
  • Un commutateur de contexte utilisateur souffle sur le cache du processeur.

Ce dernier problème est le plus important, le soufflage de la mémoire cache est très coûteux. Les cœurs de CPU sont devenus si rapides par rapport à la mémoire que le coût de la suppression du cache devient comparable à un changement de contexte du système d'exploitation. Et obtenir beaucoup de cœurs de processeur est bon marché.

0

Pour la plupart des systèmes d'exploitation modernes. (Windows, * nix, MAC OS), le noyau du système d'exploitation réside dans un espace d'adressage protégé. Et pour maintenir l'intégrité de cet espace protégé, cet espace ne peut être entré qu'à partir de l'espace utilisateur à des emplacements connus. Il est donc un peu plus coûteux de faire un appel dans le système d'exploitation que de faire un appel de fonction ordinaire dans l'espace utilisateur. http://en.wikipedia.org/wiki/System_call. Le processeur 286 était assez lent pour passer de l'espace utilisateur à l'espace noyau, mais les architectures CPU plus récentes, telles que x86 et IA64 ont des instructions spéciales spécialement conçues pour faire la transition entre l'espace utilisateur et l'espace noyau aussi rapidement que possible. et bien qu'il soit encore plus cher qu'un appel de fonction normal dans l'espace utilisateur, je ne pense pas justifie le niveau de préoccupation que ce livre indique.

0

Comme le texte cité dit, les appels système sont généralement plus coûteux qu'une opération de fil au niveau de l'utilisateur.

Certaines choses qui peuvent faire un appel système coûteux (par rapport à un appel de fonction au niveau utilisateur):

  • sauvegarde/restauration de l'état processeur
  • mise à jour de l'environnement de la mémoire virtuelle pour l'accès à l'espace du noyau
  • lorsque l'appel système est terminé, il peut y avoir un voyage à travers le planificateur OS
+0

pourquoi cela peut-il se produire? "enregistrement/restauration de l'état du processeur" – ghedas

Questions connexes