2010-08-08 6 views
2

comme vous le savez, il y a deux types de processus, i/o lié et cpu lié ...Ne jamais mettre fin à programme c lié cpu

i besoin d'un programme lié cpu qui se termine jamais ...

par exemple; est-ce que je voulais?

while(1){ 

    for(int i=0;i<1000; i++); 

} 
+0

Sur un seul noyau, peut-être. Multicore, certainement pas. – spender

Répondre

2

D'abord, pourquoi voulez-vous un programme lié CPU ne se terminant?

Et oui, cela fonctionnerait, mais vous n'avez pas vraiment besoin de la boucle interne. La boucle while s'exécutera indéfiniment (en supposant que le compilateur ne l'optimise pas).

+0

je vais faire un module noyau qui se concentre sur ce programme ne se termine jamais ... donc si je ne mets pas de boucle interne, ne devrait-il pas être "programme lié E/S" ??? – user414100

+0

Cela ne serait pas une optimisation valide puisque le flux de contrôle serait autorisé à quitter. – tster

+0

@tstr: Il pourrait penser à l'endroit où une référence de variable est utilisée dans la clause de boucle while. La recherche de variables pourrait être optimisée, en fonction d'une forme d'analyse statique. –

3

for(;;); devrait le faire!

+0

Nice et au point. À propos aussi concis que jmp $. – siride

0

Il n'y a pas que deux types de processus. Même si vous considérez quelle ressource limite la performance, il y en a plus de deux. Les autres classiques sont la bande passante, la mémoire, les connexions à la base de données - toute ressource limitée ou bloquante peut être un goulot d'étranglement. Mais, oui, votre processus est lié au processeur - vous pouvez le voir en regardant votre gestionnaire de tâches (Windows) ou Moniteur d'activité (Mac) ou en haut (Linux) et en voyant qu'il prend 100% de votre processeur.

0

Ces programmes ne sont probablement pas liés à l'UC. Je suggère la mise en œuvre du tamis des ératosthènes, ou quelque chose comme ça. Que diriez-vous d'un programme qui prend un nombre (disons 42), le divise par Pi 1000 fois, le multiplie par Pi 1000 fois, soustrait le résultat du nombre original, l'ajoute à une variable et incrémente un compteur. Puis répétez cela indéfiniment. Je suppose que vous pourriez déborder l'une des valeurs numériques, mais cela devrait être réparable/évitable.

+0

Vous pouvez également créer une bombe à fourche, mais si vous utilisez un processeur, il se peut que votre ordinateur plante/devienne inutilisable. – Slartibartfast

+0

Pourquoi pensez-vous que son programme n'est pas lié au processeur? –

+0

Exécution d'un tel programme sur ma machine pousse l'utilisation du processeur jusqu'à 100% (pour le noyau, il fonctionne). Semble assez CPU lié à moi. – siride

Questions connexes