Ca correspond a quoi le taux d'utilisation d'un cpu?

Ca correspond a quoi le taux d'utilisation d'un cpu? - Divers - Programmation

Marsh Posté le 11-10-2002 à 22:30:38    

Le pross n'est-il pas censé tourner en permanence? Comment cette valeur est-elle calculée? A-t-elle un sens dans un environnement non-multitache?


Message édité par Ace17 le 11-10-2002 à 22:31:58
Reply

Marsh Posté le 11-10-2002 à 22:30:38   

Reply

Marsh Posté le 11-10-2002 à 22:36:23    

Ace17 a écrit a écrit :

Le pross n'est-il pas censé tourner en permanence? Comment cette valeur est-elle calculée? A-t-elle un sens dans un environnement non-multitache?



On peut voir l'OS (multitache) comme une boucle dans ce genre là :
 
while (True) {
  if (quelque_chose_a_faire)
    le_faire;
}
 
L'inactivité, c'est toute les fois où quelque_chose_a_faire est faux :D

Reply

Marsh Posté le 11-10-2002 à 22:43:29    

:lol:
 
Quand c'est Windows t'as oublié d'ajouter :
 

Code :
  1. while (True) {
  2. if (quelque_chose_a_faire)
  3.    if (truc_tres_important)
  4.      doError();
  5.    else
  6.    {
  7.      if (j_ai_de_la_chance)
  8.        le_faire;
  9.      else
  10.        doError();
  11.    }
  12. }


 
:D

Reply

Marsh Posté le 11-10-2002 à 22:45:09    

t'as oublié un bout:
 
if(swap_pas assez_utilisé && déjà_des_trucs_en_cours)
{
  swapper un bon coup
  faire un autre truc dont on a pas besoin maintenant
}


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 11-10-2002 à 22:47:41    

Ca ça va, depuis que j'ai 1 Go de RAM sous 2K, j'ai plus de problème de SWAP :)

Reply

Marsh Posté le 11-10-2002 à 22:50:19    

même avec 512 Mo j'ai pas de problèmes


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 11-10-2002 à 22:56:00    

Ouais mais des fois je suis méchant, je lui demande des gros trucs ;)
 
Là, en utilisation normale sans rien d'ouvert (IE + Winamp) j'ai 420 Mo de RAM...
 
Mais bon, y'a une chiée d'outils serveurs qui tournent derrière aussi ;)
 
En tout cas, un coup j'ai fait un beau pic à 960 Mo :sol:

Reply

Marsh Posté le 12-10-2002 à 10:45:27    

mrbebert a écrit a écrit :

 
L'inactivité, c'est toute les fois où quelque_chose_a_faire est faux :D  




 
Ouais mais comment cela peut-il arriver? A partir du moment ou un programme est lancé il y a toujours quelque chose a faire non?

Reply

Marsh Posté le 12-10-2002 à 13:32:35    

Ben non.
 
Plus exactement, un soft qui utilise les évènement est managé par un eventhandler qui est celui de windows. et quand il se produit qqchose, alors l'eventhandler indique au prog concerner qu'un évènement s'est produit, ce qui lance un traîtement.
 
Mais s'il ne se produit rien et que les programmes n'ont rien à faire, l'eventhandler récupère 100% du temps CPU.
 
Et c'est le temps processur utilise par l'eventhandler qui correcpond au taux d'innocupation.
 
Et l'eventhandler est un peu ce qu'on t'as décrit là-haut en écrivant du code à 2 balles.
 
Il tourne en rond en attandant une action utilisateur ou logicielle. Et dès qu'une action se produit il recherche à quel logiciel c'est destiné et voilà.

Reply

Marsh Posté le 12-10-2002 à 14:52:28    

Ok je commence a saisir!
Mais n'y a-t-il pas dans chaque programme windows une pompe a messages qui tourne en permanence?

Reply

Marsh Posté le 12-10-2002 à 14:52:28   

Reply

Marsh Posté le 12-10-2002 à 14:59:42    

oui
chaque programme a une boucle de ce genre
Par ex un programme Delphi a dans sa procédure application.Run :

Code :
  1. repeat
  2.         try
  3.           HandleMessage;
  4.         except
  5.           HandleException(Self);
  6.         end;
  7.       until Terminated;


(Terminated est un booléen qui se met à true quand on quitte le programme)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-10-2002 à 16:23:22    

Dans ce cas la , pourquoi la pompe n'utilise-t-elle pas 100% du cpu?

Reply

Marsh Posté le 12-10-2002 à 17:30:21    

Parce que :


procedure TApplication.HandleMessage;
var
  Msg: TMsg;
begin
  if not ProcessMessage(Msg) then Idle(Msg);
end;


 
Si y a pas de message en attente, alors on ne fait rien :)
La procédure Idle fait, entre autres, un appel à la fonction de l'API "WaitMessage", qui pause le thread jusqu'à ce qu'il y ait un nouveau message.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-10-2002 à 18:19:09    

Ok je vois! Dans ce cas, si je fais un programme qui tourne sans boucle de messages il occupera toujours le maximum possible?

Reply

Marsh Posté le 12-10-2002 à 19:45:41    

Ace17 a écrit a écrit :

Ok je vois! Dans ce cas, si je fais un programme qui tourne sans boucle de messages il occupera toujours le maximum possible?



Oui. C'est généralement le cas des de jeux qui bouclent sans faire de pause. C'est pour ca que le framerate dépend de la puissance du processeur.
 
Ce n'est pas le cas des applications bureautiques qui attendent les "instructions" (click de souris, appui d'une touche....) et les traitent quand elles arrivent.

Reply

Marsh Posté le 13-10-2002 à 04:45:52    

en fait dans un systeme d'exploit digne de ce nom c'est plutot:
 
on attribue a chaque processus du temps processeur.
 
chaque process a le droit a sa tranche
quand le temps imparti est ecoule, on passe au suivant.
 
Si aucun processus ne requiert de temps processeur, on fait tourner le process 'idle' qui est la pour consommer le temps processeur inutile en ne faisant rien.
 
Et pour repondre a ta question, un processeur tourne en permanence oui, d'ou le process idle
 
sur les portables, on reduit la vitesse du proc par acpi(bios) quand il a rien a faire pour economuiser les batteries

Reply

Marsh Posté le 15-10-2002 à 17:54:16    

Et qu'en est-il des programmes qui font baisser la temperature du CPU (livre avec le carte mere d'hab) a l'aide de l'instruction halt du proc ?
Quand est-ce qu'ils declenchent cette instruction ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 15-10-2002 à 19:49:28    

HelloWorld a écrit a écrit :

Et qu'en est-il des programmes qui font baisser la temperature du CPU (livre avec le carte mere d'hab) a l'aide de l'instruction halt du proc ?
Quand est-ce qu'ils declenchent cette instruction ?


Je suppose qu'ils prennent la priorité "idle" (exécuté seulement lorsque l'OS n'a aucune autre tâche à exécuter).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed